如何从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
}
答
你将需要检查每一对僵尸,看看它们是否发生了碰撞。做此项检查最简单的方法是这样的:
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
。这有点更清楚了,养成为变量使用好名字的习惯会在以后节省您的头痛。
答
此外,如果您还没有这样做,你可能想创建一个围绕在僵尸不能(房屋,障碍等)
罗布的回答界限是非常好的,但。
'if(r2.intersects(r2))...'看起来不正确。我认为你需要发布更多的代码。你需要两个不同物体的边界来检查它们的交点。 – 2013-04-25 17:51:09
你需要澄清你的问题。发布更多**相关**代码。到目前为止,这一切都非常神秘。 – 2013-04-25 17:56:07