2017-10-07 8 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

チャームのように働いて、ありがとう! –

関連する問題