以下の内容はhttps://hacchi-man.hatenablog.com/entry/2021/07/24/220000より取得しました。


【Unity】2つの単位ベクトル間の角度を取得する

単位ベクトルから、角度を取得するメソッドが欲しくて作成すると以下になる

using UnityEngine;
 
public class Utility
{
    /// <summary>
    /// 2つの単位ベクトル間の角度を取得
    /// </summary>
    public static float SignedAngle(Vector2 a, Vector2 b)
    {
        // dot(a, b) = cos(b - a)
        var dot = Vector2.Dot(a, b);
        // 行列式を利用して外積 (sin(b - a)を取得)
        var sin = a.x * b.y - a.y * b.x;
        // Atan2 で sin, con を利用して角度を取得 
        return Mathf.Atan2(sin, dot) * Mathf.Rad2Deg;
    }
}

しかし、Vector2 にすでに関数が存在していたため、こちらを利用したほうが早い

    /// <summary>
    ///   <para>Returns the signed angle in degrees between from and to.</para>
    /// </summary>
    /// <param name="from">The vector from which the angular difference is measured.</param>
    /// <param name="to">The vector to which the angular difference is measured.</param>
    public static float SignedAngle(Vector2 from, Vector2 to) => Vector2.Angle(from, to) * Mathf.Sign((float) ((double) from.x * (double) to.y - (double) from.y * (double) to.x));



以上の内容はhttps://hacchi-man.hatenablog.com/entry/2021/07/24/220000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14