유한 상태 머신을 만들면서 작동하는 모습을 좀더 큰 그림으로 그려보고 싶었다.
UML을 잘 그리는 편은 아니지만 일단 만들어져있는 코드를 StarUML로 작성했다.
다시 살펴보니 놀랐던 점은 Player Base State
가Player State Machine
을 상속받지 않고 선언을 해서 사용했다는 점이다.
땅에 붙어있는 상태, 공격하는 상태, 공중에 떠있는 상태로 세개로 나눈 뒤에
해당 상태에서 일어날 수 있는 상태로 또 파생된다.
걷기, 뛰기, 기본상태 3가지로 존재한다.
상태 머신은 필요 하다면 여기서 하나 더 상태를 늘릴 수 있다는 게 장점이다.
공격은 콤보 어택으로도 발전할 수 있고,
Player Air State는 떨어지는 상태와 점프 상태가 존재해서 구현하면 된다.
모든 State를 보면 Enter() 함수와 Exit()함수가 존재한다.
Enter()함수에서는 AddInputActionsCallback()
와
StartAnimation(애니메이션 해쉬값)
이 들어간다.
Exit()함수에서는 RemoveInputActionsCallbacks()마찬가지로
StopAnimation(애니메이션 해쉬값)
이 들어간다.
가장 마지막 전의 노드에서는 마지막 노드로 가기 위한 메서드가 있다.
예를 들어 OnJumpStart()
메서드가 있고
그 안에 ChangeState(해당 상태)
로 진입하는 형태이다.