소소한 나의 하루들

플레이어 이동 구현 : Sub-State Machine 활용(Animator) 본문

개발/게임개발

플레이어 이동 구현 : Sub-State Machine 활용(Animator)

소소한 나의 하루 2025. 1. 23. 18:09

이번 글은 Top-down view 게임의 기본적인 첫 단계 '플레이어 이동'에 대해 작성해본다. 본격적으로 0부터 1까지 다 설명하는 방식은 아니고 개발중에 깨닫고 느낀 것을 기록하는 개발일지 개념의 글이다. 아무튼 원래대로라면, 지난 여름방학까지 진행됐던 플레이어 이동 부분에 대해 먼저 다뤄보지 않을까 싶었는데 조금 늦어졌다.

 

그리고 지금 개발중인 시스템에 대해 작성중인 비공개 글도 여럿 있다. (적절한 시점에 공개할 것이다) 아무래도 프로젝트 관리에 대한 노션 탬플릿을 구성하는 것은 한번 시간을 내서 하거나, 아니면 프로토타입 구현 후 + 글도 어느정도 작성이 됐을 때 노션에 프로젝트 관리 탬플릿을 만들 생각이다.


다른 Top-down view 프로젝트의 Animator 화면

이전에 진행했던 다른 Top-down View 프로젝트의 Animator 화면이다. 위에서 볼 수 있듯 하나의 레이어에 플레이어의 Walk와 Idle 애니메이션이 상/하/좌/우로 구성되어있는데 단순히 8개의 state만으로도 상당히 복잡하고 state 간 전환도 한눈에 알아보기 힘든 것을 볼 수 있다.

 

이게 내 첫 프로젝트였고, 내가 알고있는 방식이 저런 방법밖에 없어서 이번 프로젝트 때도 같은 방식으로 하나의 레이어에 여러 state를 전부 배치하는 방식으로 진행하려고 했었다. 그나마 위의 경우 Any State를 활용하여 상/하/좌/우 구분 후 Walk 애니메이션 발생→Idle 애니메이션 발생하는 식으로 깔끔하게 state를 배치한 편인데, 따라서 이번에도 Any State를 활용하지 않으면 굉장히 복잡하게 얽혀있는 state의 그물망을 만들어버리는 문제가 있었다.

이렇게 하면 state 간 전환도 알아보기 힘들 뿐 아니라 Transition 설정도 조금 번거롭게 만든다.


Sub-State Machine을 활용하여 배치한 Animator 화면

이런 내 고민을 친한 형의 조언 덕분에 깔끔하게 Sub-State Machine을 활용하여 배치하여 해결할 수 있었다. 당시에 이것을 구현하는데 약 3~4일 정도 고민하고 이것저것 해보느라 시간만 보냈던 기억이 있는데, 조언이 없었다면 아직까지도 복잡한 state의 그물망을 갖고 개발을 진행하고 있었을 것이다. 머리붙잡고 고민하고 시간은 꽤 소모했지만 정말 의미있었던 과정이었다. 애니메이션을 재생하는 오브젝트가 플레이어 뿐만 아니라 몬스터 등 여러 오브젝트들이 있을 것인데 이것들을 무작정 하나의 Animator 레이어에 모든 State를 배치한다고 생각했으면 지금도 아찔하다.

 

그리고 아직 Animator 창의 Parameters 탭 옆의 Layers탭은 활용해보질 못했는데 Sub-State Machine에 의한 레이어와 개념이 다른 레이어 기능인 것 같다. 예상해보건대, 다른 Scene이나 상황(걷기/헤엄치기 등)에 따른 레이어 구분이 아닐까 싶다. 이 기능은 나중에 활용해볼 일이 충분히 있을 것 같다.

Comments