在我正在制作的游戏中,我需要检查两个敌人是否相互碰撞,如果它们只是碰撞,那么两个敌人应该受到影响,而不是每个敌人都存在。因此,我需要在它们碰撞时从ArrayList中获取两个敌人,这样只有它们才会受到影响。我该怎么做?
这是将敌人添加到ArrayList
的代码zombie.add(new Zombie(randomXSpawn,randomYSpawn));
要检查敌人是否彼此合并,我目前使用此代码
Zombie z = (Zombie) zombie.get(i);
Rectangle r2 = z.getBounds();
if(r2.intersects(r2)){
//Code goes here
}
答案 0 :(得分:2)
你需要检查每对僵尸,看看他们是否发生了碰撞。执行此检查的最简单方法是:
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
。它有点清晰,养成为你的变量使用好名字的习惯,可以避免以后的麻烦。
答案 1 :(得分:0)
此外,如果你还没有这样做,你可能想要在僵尸不能到达的地方(房屋,障碍物等)创建边界。
罗布的答案非常好。