1. 개요
플레이어 캐릭터가 좌, 우로 움직일때 전방으로 움직이는 애니메이션이 출력되는데 rotation이 변경되니 어색한 부분이 있다. rotation이 변경되면 원심력에 휘어져 걷거나 달리는 애니메이션을 출력하자.
2. 아이디어
그렇다면 언제 옆으로 살짝 누운 애니메이션을 실행해야 될까? 캐릭터의 rotation이 변경될때가 캐릭터의 전방벡터와 컨트롤러의 전방벡터가 다를때다.(Z는 무시한다.) 따라서 캐릭터와 컨트롤러의 전방벡터 관계에 따라 애니메이션을 출력할 수 있다.
2.1. 벡터간 관계
벡터들 끼리 내적을 통해 컨트롤러의 rotation의 상대 방향을 정의할 수 있다.
- 좌우 정의
- 캐릭터의 right vector와 내적을 통해 좌,우를 판별
- 내적값이 0보다 크다면 우
- 내적값이 0보다 작다면 좌
- 앞뒤 정의
- 캐릭터의 전방 벡터와 내적을 통해 좌,우를 판별
- 내적값이 0보다 크다면 전
- 내적값이 0보다 작다면 후
2.2. Rotation값으로 설정
- (right vector와 내적한 값)*0.5
- 전방벡터와 내적값이 0보다 작다면
- 0.5를 더하거나 뺌
- 플레이어 캐릭터 왼쪽을 바라보는 각이 크다면 -1에 가까움
- 플레이어 캐릭터 오른쪽을 바라보는 각이 크다면 +1에 가까움
- 해당값을 사용하는 blend animation을 생성해 anim blend