2012-01-21 2 views
4

Может кто-нибудь объяснить, каким образом работает обнаружение столкновения с помощью box2d для Android. Я не могу понять, каким образом работает BBContactListener.Обнаружение столкновений с использованием Box2d (для Android)?

BBContactListener listener = new BBContactListener(); 
world = new BBWorld(gravity, doSleep); 
world.SetContactListener(listener); 

Как пользоваться этим слушателем? Должен ли я расширять стандарт, чтобы создать свою собственную или как?

ответ

1

Я не использовал box2d для Android, но я думаю, что идея там же. Вы должны внедрить методы обработки контактов. Это способ сделать это на C++.

class ContactListener : public b2ContactListener 
{ 
public: 
    ContactListener(); 
    ~ContactListener(); 

    void BeginContact(b2Contact *contact) {...} 
    void EndContact(b2Contact *contact) {...} 
    void PreSolve (b2Contact *contact, const b2Manifold *oldManifold) {...} 
    void PostSolve (b2Contact *contact, const b2ContactImpulse *impulse) {...} 
}; 

Затем просто пройти этот класс `b2World»

+0

Итак, как я понимаю, у меня есть создать свой слушатель, реализовать методы, чем я должен создать myb2World свойство в слушателе, активизируют слушателя (myb2World.SetContactListener (это)). Итак, все манипуляции (столкновения, импульсы и т. Д.) С визуальными объектами будут реализованы в этих четырех методах? – GeorgeBuron

+0

@GeorgeBuron: Эти методы будут автоматически вызваны b2World для каждого столкновения. Обратите внимание, однако, что вы не можете делать все, что захотите, в этих методах, потому что они вызывается во время выполнения функции b2World :: Step. Таким образом, вы не можете, например, создавать или удалять тела в этих функциях. – Andrew

+0

Так как я вижу эти методы, они должны воспринимать отражения или что-то вроде этого. И где я должен удалять объекты во время контакта? p.s.thank вы действительно за информацию bacause не могли найти ничего) – GeorgeBuron

Смежные вопросы