유니티 C# 벡터의 각도 구하기 예시 코드 작성

반응형

유니티 C# 벡터의 각도 구하기 예시 코드 작성

using UnityEngine;

public class VectorAngle : MonoBehaviour
{
    void Start()
    {
        // 두 벡터 정의
        Vector3 vectorA = new Vector3(1, 0, 0);  // 예시 벡터 A
        Vector3 vectorB = new Vector3(0, 1, 0);  // 예시 벡터 B

        // 벡터 사이의 각도 구하기
        float angle = CalculateAngleBetweenVectors(vectorA, vectorB);

        // 결과 출력
        Debug.Log("두 벡터 사이의 각도: " + angle + "도");
    }

    // 두 벡터 사이의 각도 구하는 함수
    float CalculateAngleBetweenVectors(Vector3 A, Vector3 B)
    {
        // 두 벡터의 내적 계산
        float dotProduct = Vector3.Dot(A, B);

        // 벡터의 크기(길이) 계산
        float magnitudeA = A.magnitude;
        float magnitudeB = B.magnitude;

        // 코사인 값을 구하고 각도(라디안)를 계산
        float cosTheta = dotProduct / (magnitudeA * magnitudeB);
        
        // 코사인의 역함수를 사용해 라디안 값을 도로 변환
        float angleInRadians = Mathf.Acos(cosTheta);

        // 라디안을 도 단위로 변환
        float angleInDegrees = angleInRadians * Mathf.Rad2Deg;

        return angleInDegrees;
    }
}
반응형