作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在 Update 函数内部,如果 2 个物体发生碰撞,我想将它们移除(或将它们标记为需要移除,并在时间步长结束时移除它们)。我将如何做到这一点?
在更新函数中我尝试
var bodyA = this.m_fixtureA.m_body;
...
bodyA.m_world.DestroyBody(bodyA);
但是,它们不会被删除。似乎当我试图删除它们时,this.IsLocked() 被设置为 true。
最佳答案
如果 world.IsLocked() 函数返回 true,世界将不会移除物体。world.IsLocked() 将在世界处于一步时返回 true。在步骤中移除实体可能会导致问题,因此在碰撞后销毁实体的正确方法是将它们注册到变量中,然后在步骤完成后销毁它们。
//Pseudo code:
var destroy_list = [];
// Your contact listener
var listener = function () {
// Push the body you wish to destroy into an array
destroy_list.push(body);
}
// The game interval function
var update = function () {
// Destroy all bodies in destroy_list
for (var i in destroy_list) {
world.DestroyBody(destroy_list[i]);
}
// Reset the array
destroy_list.length = 0;
}
关于javascript - 碰撞后如何在 Box2dWeb 中移除物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14308991/
我是一名优秀的程序员,十分优秀!