我正在学习如何使用box2d,但我不明白碰撞是如何工作的。有人可以深入解释它们的工作原理。我查看了联系人听众的文档,但我只是模糊地理解它们,并且不知道如何实际使用它们。
答案 0 :(得分:2)
这个想法是你可以通过继承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中获取有关它的所有信息。