2014-05-11 25 views
0

我有Box2DWorld其中包含10 Bodies
STATIC,這是在地面上,其餘全部都是DYNAMIC。他們都是Rectangle s,具有不同的尺寸。
充當Player,當您按下左/右是身體動作,你可以使用空格鍵跳躍。
在Box2D中,導致玩家反彈的物體,但物體不會自我反彈

所有對象都有restitution0.3f,我覺得這是現實的。
跳時,他們逐漸鬆動的速度和留在當地,好像他們是站在後Player土地。這是行爲,如果Player土地上的任何在World其他bodies的。

我還想能夠定義一個新的對象,Spring
Player跳上它時,它們會以與它相同的力投射到空中,例如使用恢復原狀1.0f
但是,如果Spring掉下懸崖,我不希望它反彈。

什麼是實現這個合適的方式?

+0

當玩家專門打那種彈跳的對象可以是玩家對象給予ApplyForce的.. –

回答

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