본문 바로가기
유니티 일기

유니티의 정규화 벡터 2탄 nomalized

by 아이론느 2021. 10. 25.

 

 

더보기

"유니티 방향 벡터"

"유니티 노말라이즈드"

 

오브젝트 균일한 이동을 위하여 벡터의 정규화가 필요합니다.

그 이유는 모든 방향의 벡터 길이가 1 이어야 방향에 따른 이동 속도가 같아지기 때문이지요.

 


magnitude(벡터의 길이를 변환)를 통해 예시를 보겠습니다.

 

VectorDebuger.cs

1
2
3
4
5
6
7
8
9
10
11
public class VectorDebuger : MonoBehaviour {


    private void Start() {
        Vector2 upwardDir = new Vector2(0, 1);
        Vector2 diagonalDir = new Vector2(1, 1);


        Debug.Log(upwardDir.magnitude);
        Debug.Log(diagonalDir.magnitude);
        Debug.Log(upwardDir.normalized.magnitude);
        Debug.Log(diagonalDir.normalized.magnitude);
    }
}
Colored by Color Scripter
cs

 

실행한 값입니다.

 

정규화하지 않은 대각선 벡터에서만 1.414214... 의 값이 나옵니다.

만약 정규화하지 않고 이동을 적용했다면 대각선 이동이 1.414... 배 더 빠르게 이동하게 되는 것입니다.

참고로 대각 방향의 벡터는 (0.7071068..., 0.7071068...)로 변환됩니다.

 

또 하나의 예시로 적은 값의 벡터도 길이를 1로 변환해줍니다.

(0.5, 0).normalized => (1, 0) : → 방향

(0.2, 0.2).normalized => (0.7071068, 0.7071068) : ↗ 방향

 

우리는 이렇게 정규화된 벡터를 방향 벡터라고 부릅니다.

 

-보통 'Direction(방향)'을 줄인 'dir'을 붙여 변수명으로 입력합니다.

 

 

출처 - [유니티/Unity] 물체 이동 (tistory.com)

댓글