方向旋转最有效

时间:2017-10-07 22:07:07

标签: java

我在游戏中有2个物体,敌人和玩家,敌人朝向指向玩家的角度旋转。问题是当玩家在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; 

这是一张粗略绘制的图表:crudely drawn diagram

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

使用叉积的z分量的符号:

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

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