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

删除box2d中的b2body是否正确?

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

最佳答案

如果您试图在世界的 Step() 函数中(例如在联系人监听器中)执行此操作,它将无法工作,因为世界仍在处理实体。您需要记下要销毁的实体,然后在世界时间步长完成后销毁它们。

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

关于box2d - 不能破坏 body (Box2d),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8687029/

10-09 04:34