我正在尝试制作这个简单的Android游戏,其中玩家射击子弹来杀死敌人。我有一个子弹的ArrayList和一个敌人的ArrayList
问题是,当子弹击中敌人时,应用程序冻结(并非每次发生碰撞)大约秒。我可以想象,从列表中移除死敌并重新摧毁其他人会消耗大量内存。但我不确定那是不是原因!我得到了碰撞方法:
public boolean collision(GameObject a, GameObject b) {
if(Rect.intersects(a.getRectangle(), b.getRectangle()))
{
return true;
}
return false;
}
而不是在这样的更新方法中使用它:
//loop through every enemy and check collision and remove
int i ;
for ( i = 0; i < enemys.size(); i++) {
//update enemy
Enemey e = enemys.get(i)
e.update();
for (int j = 0 ; j < bullets.size() ; j++ ){
Bullet b = bullets.get(j) ;
b.update();
if (collision(e , b)){
enemys.remove(i); // When this
bullets.remove(j); // and this are commented ,its all ok
break;
}
}
//remove enemy if it is way off the screen
if (enemys.get(i).getX() < -300) {
enemys.remove(i);
break;
}
}
}
是否有更好,更有效的方法来检查碰撞? 感谢