在Update函数内,如果有两个物体发生碰撞,我想要将它们移除(或标记为需要移除的物体,并在时间步结束时移除)。我该如何实现这一点?
我尝试在Update函数中:
var bodyA = this.m_fixtureA.m_body;
...
bodyA.m_world.DestroyBody(bodyA);
然而,它们并没有被删除。似乎当我试图删除它们时,this.IsLocked() 被设置为 true。
在Update函数内,如果有两个物体发生碰撞,我想要将它们移除(或标记为需要移除的物体,并在时间步结束时移除)。我该如何实现这一点?
我尝试在Update函数中:
var bodyA = this.m_fixtureA.m_body;
...
bodyA.m_world.DestroyBody(bodyA);
//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;
}
while( destroy_list.length ) world.DestroyBody(destroy_list.pop());
- user5051092