본문 바로가기
게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 7-2

by 묻공러 2025. 7. 5.

# 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