Arraylist碰撞的元素导致游戏冻结。寻找更好的方法?

时间:2016-11-27 22:17:16

标签: java android arraylist

我正在尝试制作这个简单的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;
        }
    }
}

是否有更好,更有效的方法来检查碰撞? 感谢

0 个答案:

没有答案