-
State Machine유니티 2022. 2. 5. 12:01
1. 상태 패턴
이전에 상태 패턴을 이용하여 코드를 구현하는 것을 보았다.
https://codaitsme.tistory.com/96
상태(State) 패턴 with Unity
1. 상태 패턴 상태 패턴은 객체에 상태를 정해서 상태에 맞는 로직을 수행하는 디자인 패턴이다. 사용하는 이유 if와 else로만 구현을 하게되면 스파게티 코드가 될 수 있기 때문에 객체의 상태로
codaitsme.tistory.com
애니메이터는 이러한 상태패턴을 그래픽으로 유저에게 제공하는데 우리가 애니메이터를 클릭하면 보이는 화면이 사실 상태패턴으로 정의되어 있는 것이다.
2. State Machine
WAIT과 RUN객체를 상태로써 바라볼 수 있고 WAIT은 기다리는 상태 RUN은 달리는 상태로 생각하면 된다.
그리고 상태가 바뀔 때는 화살표를 통해서 상태 전환이 가능한데 화살표는 트랜지션이라고 부른다.
트랜지션을 클릭해보면 인스펙터 창에 다음과 같이 뜬다.
RUN 트랜지션 Has Exit Time : 활성화 되어 있으면 애니메이션이 끝나고 자동 다른 상태로 넘어감. 비활성화 되어있으면 Loof여부에 따라 애니메이션을 반복하거나 1번 재생하고 파라미터값에 따라 애니메이션이 끝나거나 다른 상태로 넘어감.
Settings : Has Exit Time과 애니메이션 블랜딩에 관한 세부적인 설정, Blend Tree를 사용하지 않아도 그래프를 통해 애니메이션을 부드럽게 넘길 수 있음.
Conditinons : 파라미터에 따라 트랜지션의 로직을 결정함.
파라미터 창 예전에도 했었지만 파라미터는 자료형에 따라 값을 추가하거나 제거할 수 있다.
인스펙터창의 Condition을 보면 speed Greater 1이라고 되어있다. 실시간으로 파라미터 값이 변하는데 파라미터 값에 의해 객체는 트랜지션을 따라서 움직인다.
만약 코드상에서 speed가 1이상이 되면 트랜지션을 따라서 RUN객체가 실행이 될 것이다.
이렇게 애니메이터는 유니티 자체에서 상태 패턴형식으로 만들어져있기 때문에 코드에서 모든걸 구현할 필요가 없어진다. 그저 우리는 SetFloat("speed", 5.0f)와 같이 코드에서 파라미터 값만 변경시키면 애니메이터가 알아서 파라미터에 맞는 애니메이션을 실행시킬 것이기 때문이다.
'유니티' 카테고리의 다른 글
UI기초 with Button (0) 2022.02.05 KeyFrame Animation (0) 2022.02.05 상태(State) 패턴 with Unity (0) 2022.02.04 애니메이션(Animation) (0) 2022.02.04 마우스 클릭을 통한 플레이어 이동 (0) 2022.02.04