Java 以最有效的方向旋转

Java 以最有效的方向旋转,java,Java,我在游戏中有两个对象,一个敌人和一个玩家,敌人朝着指向玩家的角度旋转。问题是,当玩家以0度的角度越过线时,目标角度会从正变为负,导致敌人一路掉头,而不是向相反方向掉头几度。这是我的密码: l.velX=-Math.cos(Math.toRadians(l.angle)); l.velY=-Math.sin(Math.toRadians(l.angle)); m.x+=l.velX; m.y+=l.velY; if(Math.toRadians(l.angle)<Math.atan2((m.

我在游戏中有两个对象,一个敌人和一个玩家,敌人朝着指向玩家的角度旋转。问题是,当玩家以0度的角度越过线时,目标角度会从正变为负,导致敌人一路掉头,而不是向相反方向掉头几度。这是我的密码:

l.velX=-Math.cos(Math.toRadians(l.angle));
l.velY=-Math.sin(Math.toRadians(l.angle));
m.x+=l.velX;
m.y+=l.velY;
if(Math.toRadians(l.angle)<Math.atan2((m.y-p.y),(m.x-p.x)))
   l.angle+=i.gameSpeed;
else l.angle-=i.gameSpeed; 
l.velX=-Math.cos(Math.toRadians(l.angle));
l、 velY=-Math.sin(Math.toRadians(l.angle));
m、 x+=l.velX;
m、 y+=l.V;

如果(数学半径(l角度)使用叉积的z分量的符号:

l.angle+=Math.signum(l.velX*(p.y-m.y)-l.velY*(p.x-m.x))*i.gameSpeed;

(如果它转向错误的方向,请使用
-=
,我还没有真正考虑清楚)

使用
Math.abs
进行角度比较?检查向左旋转所需角度的绝对值是否小于向右旋转所需角度的绝对值?如果转向角度大于180°,则使用角度-360°,敌人逐渐转向。
Math.atan2()
始终在-pi和pi之间返回,因此转角永远不会大于180。在图中,转角当前为180,目标角度为-150左右。