오늘 배운 내용
- 애니메이션과 FSM
1. FSM(유한 상태 머신) 무엇인가?
- 객체가 한 번에 하나의 상태만 가질 수 있도록 제어하는 모델.
[구조]
현재 상태(State) + 조건(Parameter) -> 상태 전이(Transition)
Idle <-> Walking <-> Running
2. Unity Animation 구성 요소
2-1. 컴포넌트
1. SkinnedMeshRenderer 컴포넌트
- 뼈의 움직임에 따라 변형되는 메쉬(Mesh) 를 화면에 그리는 컴포넌트
2. Animator 컴포넌트
- 애니메이션 설계도(Controller)를 읽어 뼈(Bone)을 실제로 움직이는 엔진
3. Animator Controller
3-1. State (노드)
- 캐릭터가 취할 수 있는 각각의 행동 단위

3-2. Transition (상태 전이 표시, 화살표)
- 상태(State)<->상태(State) 를 잇는 통로


3-3. Parameter
Conditions
-
Transition이 일어나기 위한 조건문(Float, Int, Bool, Trigger)
- Float: 이동 속도처럼
부드러운 변화
- Int: 무기 스왑이 필요한 것들
- Bool: 상태 체크
- Trigger: Attack처럼 단발성 이벤트
-
개발자는 위 4가지 Parameter들로 스크립트로 제어하여 State(노드)간 Transition(상태 전이)를 제어한다.
3. 추가 속성 기능
- Loop Time
- Animation Type
- 인간형이라면 반드시 Humanoid로 설정해야 다른 캐릭터의 애니메이션을 재사용 가능
- Avator (Configure)
- 유니티가 캐릭터의 관절(머리, 팔, 다리)을 올바르게 인식하도록 지도를 매핑하는 단계
- Any State
- 현재 어떤 상태에 있든 즉시 특정 액션(공격, 피격)으로 이동하는 만능 통로
- Has Exit Time
- 체크하면 현재 애니메이션이 끝날 때까지 기다렸다가 이동하고, 해제하면 즉시 이동한다.
- Can Transition To Self
- 공격 중에 다시 공격 신호를 받았을 때 처음부터 다시 재생할지 결정
- Any State 활용 시 무한 루프 방지를 위해 반드시 해제
- Transition Duration
- 두 동작이 섞이는 순간
- 반응 속도를 높이려면 이 값을 0.1 정도로 줄이기(보통 0.1~0.25가 적당)
- Transition Priority
- 멈춤(Idle)과 걷기(Walking) 조건이 동시에 만족될 때, 어떤 화살표를 먼저 검사할지 결정하는 리스트 순서
1. Blend Tree
- 한 노드 안에 여러 클릭을 넣고 수치에 따라 실시간으로 적용시킴 (블렌딩)
Parameter
- 1D Blend Type: 주로 이동(속도)과 같은 카테고리로 제어할 때 사용
- Threshold (임계값): float형 수치로 조절해서 두 동작 사이 전환 가능
- 2D Simple Directional (2D 단순 방향)
- 상하좌우(위, 아래, 왼쪽, 오른쪽)와 같은 방향성 애니메이션
- 사용 사례: 4방향 혹은 8방향 걷기/달리기
- 2D Freeform Directional (2D 자유 형식 방향)
- 방향은 같지만 속도(걷기/달리기)가 다른 애니메이션을 혼합할 때 유용
- 사용 사례: 같은 방향으로의 걷기/달리기 속도 차이가 있는 경우
2. Avatar Mask
- 애니메이션이 영향을 미칠 '부위' 를 선택하는 필터

2-1. 실사용 예시
[Base Layer: Idle, Move(Walk, Run)]

[Shiled Layer: 다리 부분을 제외 -> 방패막기와 방패밀치기 Animation]
![]()
[Avator Mask: Base Layer 기반 -> Upper Layer Override/Additive]
