Android Box2d车身设置LinearimPulse()函数稳定性

Android Box2d车身设置LinearimPulse()函数稳定性,android,box2d,andengine,game-physics,Android,Box2d,Andengine,Game Physics,我正在为安卓开发一款游戏。 游戏:有一个身体(比如说小盒子)。我想:玩家和它碰撞,玩家会跳。在每次碰撞中,它都在跳跃,但不是跳跃相同的高度(在我的代码100px中)!我的代码如下: if (footFake.collidesWith(this)) { player.getBody().applyLinearImpulse(new Vector2(0, 100/PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT), player.getBod

我正在为安卓开发一款游戏。 游戏:有一个身体(比如说小盒子)。我想:玩家和它碰撞,玩家会跳。在每次碰撞中,它都在跳跃,但不是跳跃相同的高度(在我的代码100px中)!我的代码如下:

if (footFake.collidesWith(this))
{  

     player.getBody().applyLinearImpulse(new Vector2(0, 100/PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT), player.getBody().getWorldCenter());

}
而箱体的特点是:

final FixtureDef fixtureDef = PhysicsFactory.createFixtureDef(0, 0, 0);
this.body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, this, BodyType.StaticBody, fixtureDef);
this.body.setUserData("jumpBox");
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(this, this.body, true, true)); 
和玩家:

final FixtureDef fixtureDef = PhysicsFactory.createFixtureDef(0, 0, 0.1f);
this.body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, this, BodyType.DynamicBody, fixtureDef);

你们不需要施加冲动,你们可以将身体逐渐转化到你们想要的高度


在你们的例子中,物体并没有在同一高度跳跃,因为当物体碰撞时,施加在它身上的许多力。力的某些时间值是相同的,而某些时间值是不同的。

施加冲量并不总是产生相同的高度跳跃,因为物体的现有速度可能不同。您可以使用SetLinearVelocity设置身体的垂直速度,以确保每次的起始速度都是恒定的

当然,正如辛格哈克所说,你也应该确保身体上没有其他影响(比如碰撞)会扰乱你想要的速度