まず、2点間の座標を示すベクトルを作成します。ベクトルは、1つ目の点から2つ目の点への差分を表します。以下のように表されます:
Vector2 point1 = new Vector2(x1, y1);
Vector2 point2 = new Vector2(x2, y2);
Vector2 direction = point2 - point1;
次に、ベクトルのノルム(長さ)を計算します。ノルムは、ベクトルの大きさを表します。Unityでは、magnitude
プロパティを使用してベクトルのノルムを取得できます。
float magnitude = direction.magnitude;
ユニティ角は、2つのベクトルの内積を使用して計算されます。内積は、2つのベクトルの方向の類似性を示し、-1から1までの範囲の値を取ります。ユニティ角は、内積の逆余弦(Mathf.Acos
関数)を取得することで計算されます。
float dotProduct = Vector2.Dot(direction.normalized, Vector2.right);
float unityAngle = Mathf.Acos(dotProduct) * Mathf.Rad2Deg;
Vector2.right
は、x軸の正の方向を表す単位ベクトルです。内積の結果を逆余弦に渡す前に、ベクトルを正規化することを忘れないでください。
以上の手順により、2点間のユニティ角を計算することができます。これを使用して、ゲームオブジェクトの回転やオブジェクトの方向指定など、さまざまな応用が可能です。
この記事では、Unityで2点間のユニティ角を計算する方法とコード例を紹介しました。これを活用して、ゲームやグラフィックス処理の開発に役立ててください。