在我正在制作的游戏中,我已经做到了僵尸无法互相穿过。我用这段代码做到了这一点。
for(int i = 0; i < zombies.size(); i++){
Zombie z = (Zombie) zombies.get(i);
zombieMovement();
for(int j = i + 1; j < zombies.size(); j++){
Zombie z2 = (Zombie) zombies.get(j);
Rectangle r1 = z.getBounds();
Rectangle r2 = z2.getBounds();
if(r1.intersects(r2)){
z.setX(z.getX() - 1);
z.setY(z.getY() - 1);
z2.setX(z2.getX() + 1);
z2.setY(z2.getY() + 1);
}
}
}
ZombieMovement 方法看起来像这样。
public void zombieMovement(){
for(int i = 0; i < zombies.size(); i++){
Zombie z = (Zombie) zombies.get(i);
if(z.getY() > player.getY()){
z.setY(z.getY() - .01);
}
if(z.getY() < player.getY()){
z.setY(z.getY() + .01);
}
if(z.getX() > player.getX()){
z.setX(z.getX() - .01);
}
if(z.getX() < player.getX()){
z.setX(z.getX() + .01);
}
if(z.isAlive()){
z.move();
}else{
zombies.remove(i);
}
}
}
因为僵尸相互接触时的移动速度是僵尸的 10 倍,所以前几个僵尸的移动速度比后来的僵尸快得多,因为它们接触的僵尸更多(我无法设置它们移动时的移动速度)彼此的接触更少,因为那样他们仍然可以在彼此内部,我不希望僵尸的移动速度比他们已经在做的更快)。
有什么简单的方法可以解决这个错误吗?