如何使box2d正文遵循正弦曲线

时间:2013-04-23 22:51:33

标签: c++ box2d trigonometry path-finding sprite

我想使用SetVelocity(x,y)函数使精灵跟随sin曲线的路径。起初这对我来说似乎很简单,我创建了一个函数,它返回我想要运行的函数的导数,即对于sin(x)函数返回该x的余弦。问题是我在这个等式中使用Time(c ++ time_t)作为“x”。当我从这个等式返回一个结果时,我有一个X和一个Y,我使用trig函数得到比率,即

    float newY = velocityResults->getVelocityFromLua(x, functionToCall);

    float angle = std::atan2(newY,newX);
    float velocityX = cos(angle);
    float velocityY = sin(angle);
    velocityX*=PLAYER_SPEED;
    velocityY*=PLAYER_SPEED;
    player->getPhysicalProperties()->setVelocity(velocityX,velocityY);

问题在于随着时间的推移,时间越来越长,经过进一步检查,这是实现目标的一种可怕方式,因为它根本不起作用。时间不断,x越来越大,所以它取代了一切。我知道有一种更简单的方法可以做到这一点,但它完全逃脱了我。

(原因我这样做:我正在制作一个数学游戏,让玩家沿着不同的功能路径前进以达到目标)

1 个答案:

答案 0 :(得分:0)

使用b2MouseJoint并将其目标更新为曲线