我正在为Android开发一个由Andengine开发的游戏。游戏:有一个身体(比如说小盒子)。我想:玩家和它相撞,玩家会跳下去。它是跳跃,但不是跳到相同的高度(在我的代码100 is )在每次碰撞!我的密码在这里:
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);
发布于 2013-12-09 03:04:55
施加冲量并不一定会给出相同的高度跳跃,因为身体的现有速度可能是不同的。您可以使用SetLinearVelocity设置身体的垂直速度,以确保每次启动速度都是恒定的。
当然,就像Singhak所说的,你也应该确保在身体上没有其他的影响(比如碰撞),它会破坏你想要的速度。
发布于 2013-12-09 02:03:57
而不是施加冲动,你可以逐步改变身体,直到你想要的高度。
在你的例子中,身体不是以同样的高度跳跃,因为当物体碰撞时,许多力都施加在它身上。力的一些时间值是相同的,而有些时间是不同的。
https://stackoverflow.com/questions/20467340
复制