c++ - 汽车在我的游戏 C++ 中不能正确移动

标签 c++ game-physics trigonometry

我去过这个网站,试图解决我的汽车运动问题。 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/

相关文章:

C++11 析构函数 = 删除

javascript - Box2D 引擎 javascript 端口 Prismatic Joint 的奇怪行为

algorithm - 如何在特定时间内按特定因素改变速度,同时在不同的帧率下保持一致?

math - 打砖 block 物理(射弹物理模拟)

java - Java 中的正弦波声音发生器

c++ - 不透明引用而不是 PImpl。是否可以?

c++ - 从两个不同线程同时首次访问单例类

c++ - zeroMQ:zmq_recv() 不起作用

c++ - 一次计算正弦和余弦

javascript - 如何在知道前两个点和到下一个点的距离的情况下获得下一个点的坐标