无法销毁物体(Box2d)

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

在box2d中删除b2body是正确的吗?

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

2个回答

8
如果你试图在世界的Step()函数中执行此操作(例如在接触侦听器中),它将无效,因为世界仍在处理物体。您需要记下要销毁的物体,然后在世界时间步骤完成后销毁它们。
另外,我不确定您使用的是什么语言,但这个循环似乎有点奇怪,因为它会销毁一个物体,然后调用刚刚销毁的东西的GetNext()函数。

ContactListener 是我的案例。 - damienix

0

Box2D AS3的端口存在问题,与DestroyBody函数有关。 故障修复在此处(俄语)。

问题出现在接触池中。 并且您必须在您的世界时间步骤完成之后删除物体。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接