在Box2D中,我如何监听添加到世界或从世界中移除的实体?我想用它们来调试。
发布于 2014-02-24 17:36:26
Box2D中没有这样的功能。对于关节和夹具,有“破坏监听程序”,这是为了方便,因为破坏一个身体可能会导致多个关节和夹具被破坏。但是对于body,每次对DestroyBody的调用都只会销毁一个body,而且您知道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-03-18 18:07:21
要做到这一点,最简单的方法是在任何时候都有一个包含所有身体的数组。
只需在每一帧将数组与其自身进行比较。这里:您知道添加了什么,又销毁了什么。
https://stackoverflow.com/questions/21971898
复制相似问题