유니티(Unity)/2D 게임 만들기

2D 게임 만들기 (3) 유한 상태 머신, 전이(Transition) 설정

Whiny 2021. 5. 1. 15:07

이번 포스팅에서는 전이(Transition) 조건을 설정해보겠습니다.

 

몇 가지 매개 변수(Parameter)들을 준비해봅시다.

 

Animator 창에서 Parameters 탭 -> + 버튼을 누르고,

 

5가지 Parameter를 만들어봅시다.

 

IsMove - Bool / 캐릭터가 움직이는지, 움직이지 않는지 판별해서 애니메이션을 전환하려고 합니다.

 

OnAir- Bool / 캐릭터가 공중에 떠있는지, 지상을 밟고있는지 판별하려고 합니다.

 

IsUp - Bool / 캐릭터가 점프 중인지, 추락 중인지 판별해서 전환하려고 합니다.

 

Hurt - Trigger / 공격당할 경우 바로 피격 애니메이션을 재생하려고 합니다.

 

Land - Trigger / Jump_Down 상태에서 착지할 경우 바로 Idle 애니메이션으로 전환하려고 합니다.

 

애니메이터의 Parameter에서

 

Bool지속적으로 값을 확인하며 애니메이션을 재생할 때 적합하고,

Trigger특정 사건, 상황에 애니메이션을 재생할때 적합합니다.

 

이제 Idle -> Run Transition을 선택하고 인스펙터 창을 확인해봅시다.

 

파란색이면 현재 선택된 것

 

인스펙터 창 최하단에 Conditions가 있다. + 버튼을 눌러 IsMove(Bool)을 눌러 True 상태로 설정해주자.

 

Conditions에는 아까 만들었던 Parameter를 설정해 Transtion에 조건을 만들어준다.

 

이제 우리의 캐릭터는 Idle 상태에서 IsMove가 True로 바뀌면 Run 상태로 전이된다.

 

나머지 Transition은 다음과 같이 설정해보자.

 

Idle->Run : IsMove / True

Run->Idle : IsMove / False

AnyState->Jump : OnAir / True , IsUp / True 

-------------------------------------------------------------

AnyState->Jump_Down : OnAir / True , IsUp / False 

※수정된 부분 - 제작하다보니 점프하지않고, 그냥 추락하는 경우를 생각하지 못해서 이후에 추가하였습니다.

-------------------------------------------------------------

여기까지는 Bool 값을 지정해주고, 이후에는 Trigger를 지정해준다. Trigger는 값을 정해주지 않는다.

 

Jump_Down -> Idle : Land

AnyState->Hurt : Hurt

 

Hurt-> Idle: 조건 없음(애니메이션 종료시 바로 전환)

 

 

최종적인 Animator의 상태입니다.


이제 캐릭터 애니메이션 준비는 완료되었습니다.

 

이후에는 직접 Component를 프로그래밍해서, 키 입력을 받아 지금까지 만든 유한 상태 머신의 Parameter들을 바꾸며, 캐릭터를 움직여보도록 하겠습니다.