C 的问题(弹跳球和粒子爆炸)

Problem in C++ (bouncing ball and particle explosion)

本文关键字:粒子 问题      更新时间:2023-10-16

我是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));
    }
}

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

,如果你们能帮助我,我真的很感激。非常感谢!

我想我刚开始时记得这样做的事情。使用代码,我会说您可能需要添加一个方向性属性,值为-1或1,以帮助确定球需要哪个方向。我认为这就是该代码正在尝试做的事情,但我会对您的IF语句进行一些修改。取决于您希望球的方向,然后修改末端。

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