- for (var bb1:b2Body= world.GetBodyList(); bb1; bb1 = bb1.GetNext())
{
if (bb1.GetUserData() is Sprite)
{
world.DestroyBody(bb1);
}
}
world=null;
在box2d中移除b2body是否正确?
但我仍然看到舞台上的物品。
答案 0 :(得分:8)
如果你试图在世界的Step()函数中(例如在一个联系人监听器中)这样做,它将无法工作,因为世界仍在处理身体。你需要记下你想要销毁哪些尸体,然后在世界时间步骤结束后销毁它们。
另外,我不确定你使用的语言是什么,但是这个循环会破坏一个主体然后在你刚刚销毁的东西上调用GetNext()似乎有点奇怪。
答案 1 :(得分:0)
Box2D AS3端口有bug,与DestroyBody功能相连。 错误修复是here(俄语)。
麻烦在联系人池中。 并且你必须在世界的时间步长完成后删除。