강의를 들으며 게임 제작을 하던 중에, 플레이어 객체가 상하좌우 단일 이동은 문제가 없으나 대각선 이동을 할 때 스피드가 평소보다 빠른 문제가 발생했다.
오랜만에 보는 피타고라스(그림판)
가령 스피드가 1이라고 치면, x나 y축으로 이동 할 때의 스피드는 1이지만, 둘을 함께 입력하여 대각선 이동을 할 때는 루트2의 속도(1.414)로 나아가게 된 것.
VectorN.normalized
활용 예시)
public void OnMove(InputValue value)
{
//Debug.Log("OnMove" + value.ToString());
Vector2 moveInput = value.Get<Vector2>().normalized;
CallMoveEvent(moveInput);
}
이동 입력이 감지될 때 호출되는 OnMove 메서드가 있다.
두번 째 줄을 살펴보면, 메소드가 Vector2 객체로 입력 데이터를 검색하고 있으며 Vector2는 2차원 벡터와 점을 나타낸다.

그 다음에는 normalized 속성을 설정해준다.
이는 동일한 방향을 가지지만 크기(magnitude)가 1인 벡터를 반환한다.
입력을 정규화함으로써, 모든 방향에서의 이동 속도가 일관되게 유지시킬 수 있다.
이를 벡터의 정규화라고 한다.
다만 2D 게임에서는 Z축을 사용하지 않기 때문에 Z축을 0으로 만들어주어야 벡터의 정규화를 할 때 오류가 발생하지 않는다.