Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Box2d奇怪的ApplyLinear脉冲_Java_Box2d - Fatal编程技术网

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()));