【问题标题】:Problem in C++ (bouncing ball and particle explosion)C++ 中的问题(弹跳球和粒子爆炸)
【发布时间】:2019-02-14 13:30:03
【问题描述】:

我是一个 C++ 的初学者,我有一个作业要做,可以请我帮忙吗?

所以我的项目包括使用 GLM 创建一个弹跳球、粒子爆炸和人走路,所有这些都是 3D 的。我必须使用重力和所有这些东西,但我不明白如何实现它。 这是我的弹跳球代码:

 glm::mat4 mv_matrix_sphere =
glm::translate(glm::vec3(-2.0f, 0.5f + t, 0.0f)) *
glm::rotate(-t, glm::vec3(0.0f, 1.0f, 0.0f)) *
glm::rotate(-t, glm::vec3(1.0f, 0.0f, 0.0f)) *
glm::mat4(1.0f);
mySphere.mv_matrix = myGraphics.viewMatrix * mv_matrix_sphere;
mySphere.proj_matrix = myGraphics.proj_matrix;
if (t == 0.5) {
    while (t != 0) {
        t -= f; // increment movement variable
    }
}
t += 0.01f; // increment movement variable

当我执行时,函数正在工作(球在移动但它没有停止) 所以这意味着球永远不会回来(不会反弹) 这里是我的粒子爆炸:

void particles() {
    vel = new glm::vec3[numParticles];

    for (int i = 0; i < numParticles; i++) {
        vel[i] = glm::normalize(glm::vec3((rand() % 1500 - 750) / 10000.0f, (rand() % 1500 - 750) / 10000.0f, (rand() % 1500 - 750) / 10000.0f));
    }
}

我在互联网上找到了这段代码,但它不起作用,我不明白为什么。

如果你们能帮助我,我将不胜感激。 非常感谢!

【问题讨论】:

  • 你的问题到底是什么?
  • “我在互联网上找到了这个代码,但它不起作用”然后不要使用它?!?在不了解其详细功能的情况下从互联网上获取随机代码不是一个好主意。
  • 当我学习 C++ 的时候,“一个完全的 C++ 初学者”通常需要 2-3 年的时间来学习语言的基础知识:继承、模板、C++ 库等...... C++11,它使现代 C++ 比以前大了 3-5 倍,也更复杂了。我认为“一个完整的 C++ 初学者”needs to spend several years with a good C++ book 在深入研究这样的主题之前。
  • ""一个完整的 C++ 初学者" 需要花几年时间阅读一本好的 C++ 书籍,然后才能深入研究这样的主题" 我不认为要等上几个年确实是必要的,但我同意“我在互联网上找到此代码,请修复它”不是要走的路。
  • 我没有触发它,但是作为第一个在某个方向发表评论的人,我想给它一个轻微的积极转折..当然可以看看你在网上找到的代码,它似乎您正在尝试了解它的作用,这很好。但是,我们无法知道您的知识水平如何,因此当您说“我不明白”或“请帮助”之类的话时,我们根本不知道您的问题到底是什么。试着问一个具体的具体问题。向您解释一个完整的初学者需要充分理解代码过于宽泛而无法在此处介绍的每一个细节

标签: c++ visual-studio video game-physics


【解决方案1】:

我想我记得我刚开始时做过这样的事情。使用提供的代码,我会说您可能需要添加一个值为 -1 或 1 的方向属性,以帮助确定球需要朝哪个方向移动。我认为这就是这段代码想要做的,但我会对你的 if 语句进行一些修改。根据您希望球最初移动的方向,然后修改结束。

if (t >= 0.5) {
    d = -1;
}
else if (t <= 0){
    d = 1;
}
t += 0.01f * d; // increment movement variable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-07
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多