2014-12-06 7 views
0

Я развиваю игру, используя LibGDX и Box2D. Я хочу получить силу или импульс, когда сталкиваются два тела, но я не могу найти правильный способ сделать это, как я могу использовать контакт-слушатель для получения этого импульса или силы? Я не могу получить импульс, используя параметр ContactImpulse в методе postSolve , Кто может мне помочь ?Box2D Contact Listener, 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

ОК, я попробую, спасибо –