私が作っているゲームでは、ゾンビ同士がすれ違うことができないようにしています。私はこのコードでこれを行いました。
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);
}
}
}
ゾンビ移動メソッドは次のようになります。
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 倍の速さで移動するため、最初の 2 体のゾンビは、より多くのゾンビと接触しているため、後に来るゾンビよりもはるかに速く移動します (移動するときの速度は設定できません)。お互いの接触が少なくても、お互いの中にいることができ、ゾンビがすでに行っていることよりも速く移動したくないためです)。
このエラーを修正する簡単な方法はありますか?