在Box2D中,我如何收听添加到世界或从世界中删除的实体?我想用它们进行调试。
答案 0 :(得分: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 );
}
如果这看起来并没有真正实现太多,那是因为它没有:)
答案 1 :(得分:1)
最简单的方法是在所有身体上随时拥有一个阵列。
只需将数组与每帧的自身进行比较即可。在那里:你知道添加了什么,以及销毁了什么。