Как обнаружить столкновения с помощью Box2D в C ++ - PullRequest
2 голосов
/ 07 февраля 2011

Я учусь тому, как использовать box2d, но я вообще не понимаю, как работают коллизии. Может кто-нибудь дать подробное объяснение того, как они работают. Я просмотрел документацию для контактных слушателей, но я только смутно понимаю их и не знаю, как их использовать

1 Ответ

2 голосов
/ 07 февраля 2011

Идея заключается в том, что вы можете реализовать свой собственный слушатель, наследуя от b2ContactListener .Например:

class MyListener : public b2ContactListener {
    virtual void Add (b2ContactPoint *point);
    virtual void Persist (b2ContactPoint *point);
    virtual void Remove (b2ContactPoint *point);
    virtual void Result (b2ContactPoint *point);
};

MyListener должен определить эти функции.Для начала вы можете просто распечатать отладочный текст.Затем вы сообщаете Box2D, что хотите использовать этот слушатель, например:

MyListener listener;
yourB2World->SetContactListener(&listener);

Теперь слушатель получит обратный вызов для каждого столкновения со всей информацией о нем в b2ContactPoint .

...