Box2D:如何倾听添加到世界或从世界中移除的物体?

时间:2014-02-23 17:42:56

标签: box2d box2dweb

在Box2D中,我如何收听添加到世界或从世界中删除的实体?我想用它们进行调试。

2 个答案:

答案 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)

最简单的方法是在所有身体上随时拥有一个阵列。

只需将数组与每帧的自身进行比较即可。在那里:你知道添加了什么,以及销毁了什么。

相关问题