在 Box2D 中,我如何聆听添加到世界或从世界中移除的实体?我想用它们进行调试。
问问题
140 次
2 回答
1
Box2D 中没有这样的功能。对于关节和固定装置,有“破坏侦听器”,这是为了方便,因为破坏一个物体会导致多个关节和固定装置被破坏。但是对于实体,每次调用 DestroyBody 只会销毁一个实体,并且您知道 DestroyBody 调用的位置,因此您不妨将任何“侦听器”类型的处理放在同一个地方。
我想你可以像这样包装 DestroyBody 调用:
// before
world->DestroyBody( body );
// after
myDestroyBody( world, body );
// where myDestroyBody is
void myDestroyBody( b2World* world, b2Body* body ) {
... do processing for body about to be destroyed ...
world->DestroyBody( body );
}
如果这看起来并没有真正取得多大成就,那是因为它没有:)
于 2014-02-24T09:36:25.507 回答
1
最简单的方法是在任何时候都拥有你所有身体的数组。
只需在每一帧将数组与自身进行比较。那里:你知道添加了什么,破坏了什么。
于 2014-03-18T10:07:20.937 回答