
애니메이션은 FSM (유한 상태 기계)로 관리 및 변경한다.
- Idel ↔ Walk
- Walk ↔ Run

Parameters를 통해 상태를 변경한다.
ex)
| 타입 | 예시 |
|---|---|
float | MoveSpeed 이동속도 |
bool | IsDead 죽어있는지 체크 |
int | Enum을 int로 변환하여 사용가능 |
Trigger | Attack 공격 |
| (트리거는 주로 일회성 애니메이션에 사용) |

⭕ : 애니메이션에 포함된 위치 값으로 위치가 지정됨
❌ : 스크립트에 의해 위치가 지정됨 | Rigidbody, Transform
Normal : 게임시간 영향 받음
Unscaled Time : 게임시간 무시
ex) 시간이 멈춰도 움직이는 UI에서 사용

Humanoid or Generic으로 변경시 Avatar 파일이 생성된다.

실선은 필수 뼈대, 점선은 추가 뼈대
모델의 뼈대를 Animator가 인식하고 제어할 수 있게 하는 데이터다.
애니메이션 = 움직일 행동
아바타 = 그 행동을 할 뼈대를 유니티가 인식하게 하는 정보
모델과 애니메이션이 같아야 동작한다.
Humanoid 모델 + Humanoid 애니메이션은 동작
ex) 인간 캐릭터, SD 캐릭터같이 모델의 크기가 달라도 애니메이션이 호환된다.
Generic 모델 + Generic 애니메이션도 동작하지만,
모델의 전용 애니메이션이 필요하다.

아바타의 특정 부위만 움직이게할 때 사용한다.
예를 들어
칼을 휘두를 때 상체는 팔이 움직이지만,
하체는 앉아있거나 서있거나 걷거나 점프 중일 수도 있다.
이럴 때 상체만 팔을 움직여 공격하는 애니메이션을 재생하고,
하체는 다른 애니메이션을 유지할 수 있다.

Base Layer 에서 걷거나 뛰는 움직이는 애니메이션을 재생하고
Upper Layer 에서 상체만 다른 애니메이션을 실행하는 방식이다.
Weight는 가중치로 최종 애니메이션에 얼마나 적용될지 정한다.
0이면 해당 레이어의 애니메이션이 적용되지 않고
0.5면 50%만 섞여서 재생된다.
1이면 해당 레이어의 애니메이션이 재생된다.
2D 애니메이션만 다뤄보다가 3D는 처음 해봤는데
복잡하고 옵션들이 많아서 어려워 보이는데
확실히 시각적인 만족감이 제일 커서 재밌는 것 같다.