如何从ArrayList中获取特定对象

问题描述:

在我目前正在制作的游戏中,我需要检查两个敌人是否相互碰撞,如果它们只碰撞那两个敌人而不是每个存在的敌人。因此,我需要在ArrayList碰撞时从ArrayList中获取两个敌人,以便只有它们会受到影响。我会怎么做呢?如何从ArrayList中获取特定对象

这是增加了敌人到ArrayList

zombie.add(new Zombie(randomXSpawn,randomYSpawn)); 

检查代码是否互相我目前使用此代码colided敌人

Zombie z = (Zombie) zombie.get(i); 
Rectangle r2 = z.getBounds(); 
if(r2.intersects(r2)){ 
    //Code goes here 
} 
+0

'if(r2.intersects(r2))...'看起来不正确。我认为你需要发布更多的代码。你需要两个不同物体的边界来检查它们的交点。 – 2013-04-25 17:51:09

+0

你需要澄清你的问题。发布更多**相关**代码。到目前为止,这一切都非常神秘。 – 2013-04-25 17:56:07

你将需要检查每一对僵尸,看看它们是否发生了碰撞。做此项检查最简单的方法是这样的:

for (int i = 0; i < zombie.size(); i++) { 
    Rectangle r1 = zombie.get(i).getBounds(); 
    for (int j = i+1; j < zombie.size(); j++) { 
     if (r1.intersects(zombie.get(j).getBounds())) { 
      // Code goes here 
     } 
    } 
} 

注意j没有从每一次从零开始。这使得只要每个僵尸在列表中只有一次,你就不会再检查同一对两次,而且你也不会检查僵尸。

此外,作为一般的编程技巧,将列表名称更改为zombies。这有点更清楚了,养成为变量使用好名字的习惯会在以后节省您的头痛。

此外,如果您还没有这样做,你可能想创建一个围绕在僵尸不能(房屋,障碍等)

罗布的回答界限是非常好的,但。