2014-12-06 73 views
0

我正在開發使用LibGDX和Box2D的遊戲。我想在兩個物體發生碰撞時獲得力量或衝動,但是我無法找到正確的方法來做到這一點,我如何使用接觸監聽器來獲得這種衝動或力量?我無法使用postSolve方法中的ContactImpulse參數獲取衝動。誰能幫我 ?Box2D聯繫人監聽器,LibGDX

 new ContactListener() { 

    @Override 
    public void preSolve(Contact contact, Manifold oldManifold) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void postSolve(Contact contact, ContactImpulse impulse) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void endContact(Contact contact) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void beginContact(Contact contact) { 
     // TODO Auto-generated method stub 

    } 
}; 

回答

2

preSolve(Contact contact, Manifold manifold)方法中,您可以查詢兩個碰撞物體的速度。使用contact.getFixtureA()contact.getFixtureB(),您可以獲取每個燈具的主體,並使用body.getLinearVelocity()。

preSolve方法在box2D實際上解決了碰撞之前調用,所以在碰撞瞬間碰撞速度仍然可以訪問。

由於手冊規定:「前解決事件也是一個不錯的地方,確定點狀態和碰撞的接近速度」

你可以使用在preSolve提供的信息,比如如何沉重身體和他們移動的速度有多快,以決定它會如何影響你的對象。

+0

好的,我會試試看,謝謝 – 2014-12-06 19:27:54