1인 개발 게임 (Unity)/UNITY

[UNITY] 벡터의 크기만 가져가오는 법 (magnitude)

Z46 2024. 8. 8. 15:55

안녕하세요, 인친님들!

오늘은 벡터 연산에서 매우 유용한 속성인 Vector2.magnitude,Vector3.magnitude에 대해 알아보겠습니다. 이 속성은 게임 개발에서 자주 사용되며, 특히 거리 계산이나 속도 측정 등에 활용됩니다.

 

Magnitude란?

Magnitude는 벡터의 '크기'를 나타내는 값입니다. 이는 Vector2와 Vector3 모두에 적용됩니다. 벡터의 방향은 무시하고 오직 그 길이만을 나타냅니다.

수학적으로 표현하면:

  • Vector2의 경우: magnitude = √(x² + y²)
  • Vector3의 경우: magnitude = √(x² + y² + z²)

여기서 x, y, z는 각각 벡터의 x, y, z 좌표입니다.

 

Unity에서의 사용

Unity에서는 Vector2Vector3 클래스 모두 magnitude 속성을 가지고 있습니다.

예를 들어 보겠습니다:

// Vector2 예제
Vector2 v2 = new Vector2(3, 4);
float size2 = v2.magnitude;
Debug.Log("Vector2의 크기: " + size2);  // 출력: Vector2의 크기: 5

// Vector3 예제
Vector3 v3 = new Vector3(3, 4, 5);
float size3 = v3.magnitude;
Debug.Log("Vector3의 크기: " + size3);  // 출력: Vector3의 크기: 7.071068

실제 사용 예제

두 점 사이의 거리를 Vector3를 사용해 계산해 보겠습니다:

Vector3 point1 = new Vector3(2, 4, 1);
Vector3 point2 = new Vector3(3, 0, 5);

Vector3 difference = point2 - point1;
float distance = difference.magnitude;

Debug.Log("두 점 사이의 거리: " + distance);

이 코드는 3D 공간에서의 두 점 사이의 거리를 계산합니다.

 

Vector2와 Vector3의 차이점

  • Vector2는 2D 게임이나 UI 작업에 주로 사용됩니다.
  • Vector3는 3D 게임이나 3D 공간에서의 위치, 회전, 크기 등을 나타낼 때 사용됩니다.
  • 둘 다 magnitude 속성을 가지고 있지만, Vector3의 경우 z축 값도 계산에 포함됩니다.

 

주의사항

  • Magnitude는 항상 양수입니다. 벡터의 방향은 고려하지 않습니다.
  • 성능이 중요한 경우, magnitude 대신 sqrMagnitude를 사용할 수 있습니다. 이는 제곱근 계산을 하지 않아 더 빠릅니다.