不能破坏身体(Box2d)

时间:2011-12-31 07:47:50

标签: box2d

- for (var bb1:b2Body= world.GetBodyList(); bb1; bb1 = bb1.GetNext())
  {
     if (bb1.GetUserData() is Sprite)
     {
         world.DestroyBody(bb1);
     }
  }
  world=null;

在box2d中移除b2body是否正确?

但我仍然看到舞台上的物品。

2 个答案:

答案 0 :(得分:8)

如果你试图在世界的Step()函数中(例如在一个联系人监听器中)这样做,它将无法工作,因为世界仍在处理身体。你需要记下你想要销毁哪些尸体,然后在世界时间步骤结束后销毁它们。

另外,我不确定你使用的语言是什么,但是这个循环会破坏一个主体然后在你刚刚销毁的东西上调用GetNext()似乎有点奇怪。

答案 1 :(得分:0)

Box2D AS3端口有bug,与DestroyBody功能相连。 错误修复是here(俄语)。

麻烦在联系人池中。 并且你必须在世界的时间步长完成后删除