我想使用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越来越大,所以它取代了一切。我知道有一种更简单的方法可以做到这一点,但它完全逃脱了我。
(原因我这样做:我正在制作一个数学游戏,让玩家沿着不同的功能路径前进以达到目标)
答案 0 :(得分:0)
使用b2MouseJoint
并将其目标更新为曲线