0

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

    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 变得越来越大,所以它超越了一切。我知道有一种更简单的方法可以做到这一点,但它完全逃脱了我。

(我这样做的原因:我正在制作一个数学游戏,玩家沿着不同的函数路径旅行以实现目标)

4

1 回答 1

0

使用b2MouseJoint和更新它的目标是在你的曲线上

于 2013-04-24T06:49:22.607 回答