2017-10-07 82 views
1

我在遊戲中有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

回答

3

使用叉積的z分量的正負號:

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

(如果事實證明朝着錯誤的方向,使用-=,我還沒有真正想通了)

+0

像魅力一樣工作,謝謝! –