Box2d奇怪的applyLinearImpulse

时间:2017-05-01 21:13:15

标签: java box2d

我有两个动态的身体。在每一步,我尝试为这些物体设置const速度。 存在三种变体如何:

body.applyLinearImpulse(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition());

body.applyForce(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition());

body.setLinearVelocity(Helper.getVec(config.getLinearVelocity(), body.getAngle()));

其中config.getLinearVelocity()为第一个正文返回值V,为第二个正文返回1.5*V

如果我在每一步上调用setLinearVelocity,那么身体通常会移动,每个都有自己的速度。但是如果我在每一步上调用其他函数,则物体以相同的速度移动,因为它们的速度比使用setLinearVelosity时高几倍。 为什么呢?

1 个答案:

答案 0 :(得分:0)

你必须只调用一次applyLinearImpulse,因为当你调用这个函数时,mouvement将分多步分解。例如,如果你想让一个玩家跳跃,你只需要在其身体上调用applyLinearImpulse()一次(当你触摸屏幕时),而box2d会增加速度,然后重力会降低它。

另一方面,setLinearVelocity将仅为当前世界步骤设置速度