벡터의 정규화(Normalization)
Normalization(정규화) : 각 축의 길이와 대각선의 길이를 같게 해준다 라고 생각하면 쉬울 것 같다.
이론
좌표에서 x축으로 1, y축으로 1만큼 순차적으로 움직이면 총 이동거리가 2가 되는데,
대각선으로 움직이면 거리가 피타고라스의 정리에 따라 √(1^ + 1^) = √2가된다.
√2 = 1.414141..로,
좌우 앞뒤 한방향 이동을 할 때는 m_fSpeed * 1이 되는데
대각선으로 이동할때는 m_fSpeed * 1.41414가 된다.
따라서 이동속도가 빨라지게 되는 것이다.
이것을 √2를 1로 변환하여 연산을 하게 해주는 것이 normalized(정규화)다.

프로젝트에서 문제
탑뷰 슈팅게임의 움직임을 만들다 버그가 하나 생겼다.
monster오브젝트에 player를 따라오는 AI를 구현하고,속도를 둘다 5f로 맞춘 상태에서
한방향으로 움직일 때는 몬스터와 플레이어의 속도가 같아일정한 거리가 유지가 됐는데,
대각선으로 움직이니 몬스터가 따라오질 못했다.
원인
transform.position += transform.forward * m_fSpeed * Time.deltaTime;
을 사용하니 W와 A키를 동시에 눌렀을때 연산이 이중처리되서,
대각선으로 움직일때 속도가 더 빨라졌다.
transform.forward에 normalized를 붙혀도 아무런 효과가 없었다.
이유는 어차피 각각의 키의 방향에 normailzed를 붙히고 순차적으로 작업이 이루어 지기 때문에
연산이 이중처리 되는 것을 막을 수 는 없었다.

따라서 키입력을 축으로 받고vDir이라는 벡터에 해당 축 값을 넣어줬다.
축 이름은 각각 Horizontal,Vertical 이지만
- Horizontal은 D키를 눌렀을때 +1, A키를 눌렀을때 -1을 반환한다.
- Vertical은 W키를 눌렀을때 +1, S키를 눌렀을때 -1을 반환한다.
A,D는 좌우 움직임 이므로, x축을 움직이게 해야해서 vDir의 x축에 넣어주고
W,S는 앞뒤 움직임 인데 3D에서는 z축이 앞뒤 움직임이라 vDir의 Z축에 넣어줍니다.
그리고 이동을 구현할때 vDir에 .normalized를 넣어주어 정규화된 백터를 만든 후 속도를 곱해
대각선 움직임에서도 대각선의 길이가 정규화된 벡터를 만들었다.
