うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】二次元ベクトルから角度を求めたり、角度から二次元ベクトルを求める処理

/// <summary>
/// 角度から単位ベクトルを取得
/// </summary>
public static Vector2 AngleToVector2(float angle)
{
    var radian = angle * (Mathf.PI / 180);
    return new Vector2(Mathf.Cos(radian), Mathf.Sin(radian)).normalized;
}

/// <summary>
/// ベクトルから角度を取得
/// </summary>
public static float Vector2ToAngle(Vector2 vector)
{
    return Mathf.Atan2(vector.y, vector.x) * Mathf.Rad2Deg;
}

サンプル

AngleToVector2(0); // (1.0, 0.0)
AngleToVector2(45); // (0.7, 0.7)
AngleToVector2(90); // (0.0, 1.0)
AngleToVector2(180); // (-1.0, 0.0)
AngleToVector2(270); // (0.0, -1.0)
AngleToVector2(360); // (1.0, 0.0)

Vector2ToAngle(new Vector2(1.0f, 0.0f)); // 0
Vector2ToAngle(new Vector2(0.7f, 0.7f)); // 45
Vector2ToAngle(new Vector2(0.0f, 1.0f)); // 90
Vector2ToAngle(new Vector2(-1.0f, 0.0f)); // 180
Vector2ToAngle(new Vector2(0.0f, -1.0f)); // -90
Vector2ToAngle(new Vector2(1.0f, 0.0f)); // 0