旋转的方向效率最高

问题描述:

我在游戏中有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

我该如何解决这个问题?

+0

使用'数学。 abs'的角度比较? – daniu

+0

检查向左旋转所需度数的绝对值是否小于向右旋转所需度数的绝对值? – Fureeish

+0

如果转弯角度大于180°,则使用角度360° – AJNeufeld

使用叉积的z分量的正负号:

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

(如果事实证明朝着错误的方向,使用-=,我还没有真正想通了)

+0

像魅力一样工作,谢谢! –