Java Box2d奇怪的ApplyLinear脉冲
我有两个充满活力的身体。在每一步中,我都尝试为这些物体设置常数速度。 存在三种变体如何做到这一点:Java Box2d奇怪的ApplyLinear脉冲,java,box2d,Java,Box2d,我有两个充满活力的身体。在每一步中,我都尝试为这些物体设置常数速度。 存在三种变体如何做到这一点: body.applyLinearImpulse(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition()); 或 或 其中config.getLinearVelocity()返回值V用于第一个实体,返回值1.5*V用于第二个实体 如果我在每一步上调用setLinear
body.applyLinearImpulse(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition());
或
或
其中config.getLinearVelocity()
返回值V
用于第一个实体,返回值1.5*V
用于第二个实体
如果我在每一步上调用setLinearVelocity
,那么物体通常会以自己的速度移动。但是如果我在每一步上调用其他函数,物体以相同的速度移动,其速度是使用setLinearVelosity
时的几倍。
为什么?您只需调用applyLinearImpulse一次,因为当您调用此函数时,移动将被分解为多个步骤。例如,如果要让玩家跳跃,只需在其身体上调用applyLinearImpulse()一次(例如,当您触摸屏幕时),box2d将增加反速度,然后重力将降低反速度 另一方面,setLinearVelocity将仅为世界当前的步伐设置速度
body.applyForce(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition());
body.setLinearVelocity(Helper.getVec(config.getLinearVelocity(), body.getAngle()));