我有Box2D
World
,其中包含10 Bodies
1 Body
是STATIC
,这是地面,其余都是DYNAMIC
。它们都是Rectangle
s,具有不同的尺寸
1 Rectangle
充当Player
,当您向左/向右按下身体移动时,您可以使用空格键跳转。
所有对象都有restitution
0.3f
,我认为这是现实的
当Player
跳跃后落地时,它们逐渐失去速度并保持在地面上,就像它们站立一样。如果Player
落在bodies
中的任何其他World
上,则会出现这种情况。
我希望能够定义一个新对象Spring
。
当Player
跳过它时,它们以相同的力量投射到空中,例如使用1.0f
的恢复原状。
但是,如果Spring
从悬崖上掉下来,我就不希望它反弹。
实施此方法的合适方法是什么?
答案 0 :(得分:0)
最后使用它..
public void preSolve(Contact contact, Manifold oldManifold) {
if (contact.getFixtureA().getBody().getUserData() instanceof Spring){
float impulse = contact.getFixtureB().getBody().getMass() * impulseToApply;
contact.getFixtureB().getBody().applyLinearImpulse(
new Vec2(0, impulse),
contact.getFixtureB().getBody().getWorldCenter() );
}else if (contact.getFixtureB().getBody().getUserData() instanceof Spring){
float impulse = contact.getFixtureA().getBody().getMass() * impulseToApply;
contact.getFixtureA().getBody().applyLinearImpulse(
new Vec2(0, impulse),
contact.getFixtureA().getBody().getWorldCenter() );
}
}