我在游戏中有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;
我该如何解决这个问题?
答案 0 :(得分:3)
使用叉积的z分量的符号:
l.angle+=Math.signum(l.velX*(p.y-m.y)-l.velY*(p.x-m.x))*i.gameSpeed;
(如果转向错误的方向,请使用-=
,我还没有真正考虑过它)