위치를 프레임마다 바꾸거나 Rigidbody를 쓰는 그런 방법이 아니라
입력이랑 여러 변수들, 상태를 관리하는 방식이 궁금해서 글 올려봄
일단 나 같은 경우에는 2D를 기준으로 말해보자면
입력을 관리하는 스크립트랑 상태 관리하는 스크립트를 따로 만들어서
연결한 후, 이벤트로 스탠딩, 달리기, 점프, 공격 같은 상태를 왔다갔다 하도록 만듦
상태 왔다갔다는 PlayerState로 상태 진입, 프레임, 상태 나가기
이 3개를 인터페이스에 함수로 구현한 후, 인풋 매니저가 호출한 이벤트에
따라 미리 선언된 상태들을 전환하는 방식으로 구현 함.
이렇게 하면 이동할 때마다 패시브를 발동하는 것처럼
다른 캐릭터들과 다른 특이한 놈이 있더라도 이벤트에 추가하거나
기존 동작의 클래스를 상속시킨 후 해당 함수만 수정해주면 되서
여러 캐릭터 만들기도 편했었음
일단 내 것부터 먼저 말하는게 맞는 것 같아서
조금만 찾아보면 나오는 상태머신이지만, 간단하게라도 설명해봄
more if
if문을 많이 쓴다는 거임?
나도 메인은 상태머신이고 비즈니스로직과 데이터 구분에 집착한거 기억남
상태가 너무 많다 싶으면 비헤이비어트리~
오, 이런것도 있구나 확실히 FSM을 쓸 때는 대쉬하다가 공격하거나 점프할 때, 그냥 멈출 때 등등등 상태끼리 상호작용하는 동작이 많을 수록 구현하기 힘들었는데, 이러면 이런 문제는 많이 줄겠네
각각 장단점이 있으니 살펴보고~ FSM이 구현이 쉽긴 함.
그냥 ACharacter 갖다씀
그렇게 만들면 나중에가면 버그생김
어떻게 만들어도 버그는 생겨 근데 내가 만드는 것보단 에픽 게임즈가 제작한 수천 수만 줄의 이동 동기화 시스템을 사용하는 편이 낫지