# StateMachine의 필요성
1. Animation Blending 코드 작업의 문제점 해결 가능
Animation Blending을 이전에 배운 방식대로
코드에서 일일이 다 하드코딩 하는 것은 다소 비효율적이고 유지보수가 어렵다
2. boolean 상태의 문제점 해결 가능
boolean 상태로 상태관리를 하는 경우에는
상태가 많아질수록 유지보수가 어렵다
# StateMachine의 단점
동시에 2가지 이상 상태를 가질 수 없다
ex. Moving + Skill01Casting
# StateMachine 예시
public enum PlayerState
{
Die,
Moving,
Idle,
}
PlayerState _state = PlayerState.Idle;
void Update()
{
switch(_state)
{
case PlayerState.Die:
UpdateDie(); break;
case PlayerState.Moving:
UpdateMoving(); break;
case PlayerState.Idle:
UpdateIdle(); break;
}
}
# State와 Animation의 상관관계
결국 Animation 자체가 State에 따라 재생이 되기에
이 둘은 밀접한 관련이 있다
# 코드에서의 Transition vs 툴에서의 Transition
상태 전환을 코드에서 진행하는 경우에는
다소 복잡해진다
반면, 툴에서 StateMachine(Animator)을 사용하는 경우에는
훨씬 작업하기 편하고 유지 보수가 쉬워진다

# Animation Transition 관련 설정
- Transition Blend
보라색 부분을 늘릴수록 블랜딩 시간이 증가하면서
부드럽게 전환된다

- Has Exit Time
현재 애니메이션이 끝나면 자동으로 다음 애니메이션으로 넘어갈지 설정하는 부분이다

- Transitions
Transitions에 있는 여러 상태 전환들에
우선순위를 설정할 수 있다

- Fixed Duration
true로 하면, 시간을 의미하고
false로 하면, 퍼센트를 의미한다

# 애니메이션 에셋 Loop 여부
애니메이션 파일 설정의 Loop Time 옵션에 따라서
반복 재생 or 한번 재생되는 것이기에
Loop 기능 적용 및 미적용 등 예상치 못한 문제가 발생한다면
해당 부분을 확인하고 원인을 파악하면 된다

# Parameters를 이용한 Transition의 Conditions 작성
Parameters에 추가한 인자들을
아래와 같이 애니메이션 Transition에서 Condition으로 활용할 수 있다
float은 참고로 equal이 거의 불가능하기에
Greater/Less 만 설정 가능하다

# Layers 기능
해당 기능은 상, 하의 구분 애니메이션 등 다양하게 활용된다

# StateMachine vs 따로 관리
StateMachine: 이동, 점프, 수영 등과 같은 기본적인 필수 애니메이션
따로 관리: 스킬,…
'게임 엔진 - 유니티 > [루키스] 유니티' 카테고리의 다른 글
| [유니티 Note] 섹션 8-1 (0) | 2025.07.07 |
|---|---|
| [유니티 Note] 섹션 7-3 (0) | 2025.07.05 |
| [유니티 Note] 섹션 7-1 (0) | 2025.07.05 |
| [유니티 Note] 섹션 6-3 (0) | 2025.07.02 |
| [유니티 Note] 섹션 6-2 (0) | 2025.07.02 |