게임 개발/Unreal Engine 5

Unreal Engine 5) State Machine

UniCoti(유니코티) 2025. 4. 10.

State Machine이란 어떤 값에 따라서 애니메이션 상태를 쉽게 변경하도록 하는

장치이다. 물론 유니티에도 있었던 기능인데, 언리얼에서의 이것을 설명해 보겠다.

 

예시

이렇듯 일단 Character를 생성했어야 한다. 그 안쪽을 보면 Animation 탭에 Animation Mode라는 게 있는데,

여기서 Use Animation Blueprint를 선택하고, Content Drawer에서 적용시킬 Anim Class를 생성해야 한다.

 

경로

대충 이런 경로로 만들 수 있다. Animation -> Animation Blueprint

이제 더블클릭해서 열어보자.

 

AnimGraph
검색법

이렇듯 AnimGraph에서 New State Machine을 만들어주자. 아니 근데 대체 왜 노드 이름이랑

검색할 때 필요한 이름이 다른 것인가? 저 작게 나와있는 게 검색 시 이름인가 아직 헷갈린다.

 

아무튼 해석을 해보면 StateMachine에서 처리되어 결과로 나온 애니메이션이 결과로

표시되는 형태이다. StateMachine은 아직 아무것도 없다. 더블클릭해서 편집해 보자.

 

연결 방식

뭐 대충 이런 식으로 만들면 된다. 빈 공간을 클릭하고 New State를 통해서 노드를 만들 수 있다.

그리고 테두리를 클릭해서 드래그하면 서로 연결이 가능하다.

 

애니메이션 짜듯이 뭐 일반적으로 idle에서 퍼져나가는 형태대로 만들어주자.

반대로도 연결해 줘서 애니메이션을 넘나들 수 있게 하자.

이제 각 노드를 편집할 때다.

 

idle

이건 idle 노드의 안쪽이다. 간단하다. 그냥 idle 애니메이션을 연결했다.

Walk도 마찬가지로 연결해 주면 된다.

 

통과 조건

조건을 설정해야 한다. idle에서 Walk로 갈 수 있다는 건 알겠는데, 어떤 상황에서 가야 하는지에 대한 것이다.

여기선 간단히 bool값으로 구현해 보겠다. 실제 상황이라면 속도의 절댓값을 비교한다거나 하면 된다.

마찬가지로 저 아이콘을 더블클릭하면 편집이 가능하다.

 

조건 안쪽

Flag라는 변수가 True면 통과하도록 해줬다. 이 정도는 설명 안 하겠다.

반대쪽도 마찬가지로 False일 때 통과하도록 했다.

여기까지 하면 완성된다.

 

Flag = false

이렇게 FlagFalse일 때는 멈춰서 있다. idle 노드가 작용한 결과라고 보면 된다.

 

Flag = true

이건 Flagfalse인 경우이다. 사진으로 보면 별 차이가 없어 보이긴 하지만 분명히

걷고 있는 상태이다. 마찬가지로 walk 노드가 작용한 결과이다.


이상으로 도움이 되었길 바라며,

 

끝.

댓글