我去过这个网站,试图解决我的汽车运动问题。 http://www.helixsoft.nl/articles/circle/sincos.htm
由于我使用的 sin 和 cos,我一直在将汽车绕圈移动时遇到问题我认为我已经正确地完成了它,尽管该站点确实使用定点数并且我想使用 float 。
这是我的代码
if(myEngine->KeyHeld(Key_W))
{
length -= carSpeedIncrement;
}
if(myEngine->KeyHeld(Key_S))
{
length += carSpeedIncrement;
}
if(myEngine->KeyHeld(Key_A))
{
angle -= 0.01f;
}
if(myEngine->KeyHeld(Key_D))
{
angle += 0.01f;
}
carVolocityX = length * (sin(angle));
carVolocityZ = length * (cos(angle));
carPositionX += carVolocityX;
carPositionZ += carVolocityZ;
car[0]->MoveX((carPositionX * sin(angle)) * frameTime);
car[0]->MoveZ((carPositionZ * cos(angle)) * frameTime);
我乐于接受有关如何进行此运动的新想法,但它必须使用 vector 。任何人都可以看到我哪里出了问题。
感谢任何帮助。
最佳答案
根据您所说的有关 MoveX 和 MoveZ 的内容,我认为问题在于您试图将绝对位置传递给需要速度的函数。尝试
car[0]->MoveX(carVolocityX * frameTime);
car[0]->MoveZ(carVolocityZ * frameTime);
关于c++ - 汽车在我的游戏 C++ 中不能正确移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10034166/