在Box2D中,一个导致玩家反弹的身体,但物体不会反弹

时间:2014-05-11 13:52:16

标签: box2d game-physics

我有Box2D World,其中包含10 Bodies 1 BodySTATIC,这是地面,其余都是DYNAMIC。它们都是Rectangle s,具有不同的尺寸 1 Rectangle充当Player,当您向左/向右按下身体移动时,您可以使用空格键跳转。

所有对象都有restitution 0.3f,我认为这是现实的 当Player跳跃后落地时,它们逐渐失去速度并保持在地面上,就像它们站立一样。如果Player落在bodies中的任何其他World上,则会出现这种情况。

我希望能够定义一个新对象Spring
Player跳过它时,它们以相同的力量投射到空中,例如使用1.0f的恢复原状。 但是,如果Spring从悬崖上掉下来,我就不希望它反弹。

实施此方法的合适方法是什么?

1 个答案:

答案 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() );
        }
    }