最近自己在弄Android的box2d手机小游戏开发,在这过程中碰到的最纠结的问题就是遍历body来删除body,总是会出现意外停止等问题,弄了很久才发现了问题,这个把自己的心得和大家分享下,希望对和我一样的新手有点用,嘻嘻~~~:
遍历body列表删除body时要注意两点:
1.一定再放在物理模拟后面,即删除代码写在world.step(timeStep,iterations)后面。
2.要知道当删除body时,body.m_next指针会出现异常,返回的是垃圾,所以删除时一定要事先保存
Body b=world.getBodyList();
for(int i=1;i<world.getBodyCount();i++){
if(`````````){ //当满足删除条件时,先保存next,再删除
Body b1=b.m_next;
world.destroyBody(b);
b=b1;
}else{ //不满足删除条件则遍历下一个body
b=b.m_next;
}
}