Java 敌人';跟随运动员时的速度

Java 敌人';跟随运动员时的速度,java,angle,motion,Java,Angle,Motion,我之前有一段代码,这段代码显然非常熟悉。它当前将我添加到arraylist中的所有僵尸移向我的玩家,但是如果僵尸是玩家的正数(向右),那么僵尸的移动速度比左边快。你知道这是怎么解决的吗 for (Zombie zombie : zombies) { zombie.distX = Game.player.x - zombie.x; zombie.distY = Game.player.y - zombie.y; zombie.angle = Math.atan2(zomb

我之前有一段代码,这段代码显然非常熟悉。它当前将我添加到arraylist中的所有僵尸移向我的玩家,但是如果僵尸是玩家的正数(向右),那么僵尸的移动速度比左边快。你知道这是怎么解决的吗

for (Zombie zombie : zombies) {
    zombie.distX = Game.player.x - zombie.x;
    zombie.distY = Game.player.y - zombie.y;

    zombie.angle = Math.atan2(zombie.distY, zombie.distX);

    zombie.x += Math.cos(zombie.angle) * zombie.speed;
    zombie.y += Math.sin(zombie.angle) * zombie.speed;
}
编辑:我做了这些改变,使它正常化,现在它工作了!谢谢

zombie.angle = Math.sqrt(Math.pow(zombie.distX, 2) + Math.pow(zombie.distY, 2));
zombie.distX /= zombie.angle;
zombie.distY /= zombie.angle;

zombie.x += zombie.distX * 2;
zombie.y += zombie.distY * 2;

你需要规范化僵尸向量。谢谢,这很好用!你需要规范化僵尸向量。谢谢,这很好用!