본문 바로가기
유니티 공부/Unity

Unity - Animation State 패턴, State Machine

by 코딩하는 돼징 2023. 2. 14.
반응형

1. State 패턴으로 Animation실행하기

01 상태 정의

PlayerController.cs

public enum PlayerState
{
    Die,
    Moving,
    Idle,
}
PlayerState _state = PlayerState.Idle;

02 상태에 따라 Switch

void Update()
{
    switch (_state)
    {
        case PlayerState.Die:
            UpdateDie();
            break;
        case PlayerState.Moving:
            UpdateMoving();
            break;
        case PlayerState Idle:
            UpdateIdle();
            break;
    }
}

enum으로 상태들을 정의하고, switch문으로 실행한다. 그러므로 동시에 두 가지 상태를 가질없지만 꼬이지 않는다는 장점도 있다.


2. State Machine

어떤 상태이냐에 따라 재생새킬 애니메이션이 다르다. State Machine에서 하나의 State는 하나의 Animation 클립에 대응

다른 상태로 바뀌는 전이 -> 화살표로 이어주기만 하면 된다.


01 Transition

RUN과 RUN사이 밑에 WAIT이 블랜딩 된 것을 확인할 수 있다. 이는 파란색 범위로 조절할 수 있다. 만약 블랜딩을 안시킨다음 애니메이션을 설정하면 뚝 끊기는 것 거처럼 보인다.

Has Exit Time 애니메이션 재생 종료 후 다음 전이로 이동한다. 만약 이를 설정하지 않으면 애니메이션이 종료가 안된다.

 

Transition Duration : 몇 초 동안 겹쳐질 것인가

Exit Time : 얼마정도 기다렸다가 넘어갈 것인

Fixed Duration : 체크가 되어 있으면 그 시간 후에 넘어간다. 그니까 0.68초 후에 넘어간다.

체크가 안되어있으면 애니메이션의 0.6875%가 완료되었으면 넘어간다.


02 파라미터 사용


WAIT -> RUN

void UpdateMoving()
{
    anim.SetFloat("speed", _speed);
}

 


RUN - > WAIT

void UpdateIdle()
{
    anim.SetFloat("speed", 0);
}

 

 

 

 

 

 

 

 

참고 :  본 내용은 MMORPG  PART3 강의를 수강하여 작성하였습니다.

https://www.inflearn.com/course/mmorpg-%EC%9C%A0%EB%8B%88%ED%8B%B0/dashboard

 

반응형

댓글