所以我对Box2D很新,我想弄清楚如何使用b2ContactListener。
您是否可以为一个世界设置多个联系人听众?我想是的。但是当设置两个联系人听众时:
world.SetContactListener(listener);
world.SetContactListener(listener2);
它的行为类似listener2
是唯一的一套。这是为什么?
当我改变我如何设置监听器的顺序时:
world.SetContactListener(listener2);
world.SetContactListener(listener);
然后它的行为类似listener
是唯一的联系人侦听器集并忽略listener2
。
我认为为什么会出现这种情况的唯一原因是因为两个侦听器都覆盖了BeginContact
和EndContact
方法,所以它很混乱。
顺便说一句,我正在使用Box2D的JavaScript端口(Box2DWeb)。但是,如果您知道Objective-C或C ++中的问题解决方案,那就很好,因为我知道这些语言。
答案 0 :(得分:3)
提示名称为“Set”而不是“Add”。这意味着只支持一个侦听器。如果需要,请更新侦听器类以分派到多个方法。
您似乎对重写方法的含义感到困惑。在多个对象上覆盖相同的方法不会导致任何混淆。问题是只有一个听众可以立即注册(因为有很多听众会减慢速度 - 它会被调用很多)