atan2関数(アークタンジェント)の戻り値早見図
atan2はベクトル(x,y)とx軸のなす角度を返すものです。結果としてはラジアンで-π~πが返されます。
ここではざっくりこれを0°~360°に変換する方法をご紹介します。
ラジアンから度への変換ですが、青字の正の部分は180/πを掛けるだけで終わりです。
例 3π/4 * 180/π = 135°
赤字部分は結果が負になります。その場合は2πを加算してから180/πを掛けます。
例 (-2π/4 + 2π) * 180/π = 3π/2 * 180/π = 270°
ここからsinΘやcosΘなどに適用することができます。
また、(0,0)についてはエラーになる処理系もあるようなので、安全に組みたいのであれば事前にチェックをした方がよいでしょう。
C#でプレイヤーに向けて弾を撃つコード
double rad = (2 * System.Math.PI) + System.Math.Atan2(enemy.y - player.y, enemy.x - player.x); double angle = rad * (180.0 / System.Math.PI); ammo.speed.x = 5.0f * System.Math.Cos(angle); ammo.speed.y = 5.0f * System.Math.Sin(angle);