TIL

플레이어 상태 머신

박민혁_kog 2023. 10. 23. 21:32

유니티 FSM: 유한 상태 머신 (Finite State Machine)

유한 상태 머신(Finite State Machine, FSM)은 게임 에이전트에게 환상적인 지능을 부여하기 위한 선택 도구로 사용되어왔다.
다시 말해, 유한 상태 머신은, 주어지는 모든 시간에서 처해 있을 수 있는 유한개의 상태를 가지고 주어지는 입력에 따라 어떤 상태에서 다른 상태로 전환하거나 출력이나 액션이 일어나게 하는 장치 또는 그런 장치를 나타낸 모델이다.

상태(State): 게임에 정의된 여러 동작, 적 캐릭터뿐만 아니라 게이머에게도 적용될 수 있다.

  • Idle, Run, Attack, ... , 공격할 수 없는 상태, 캐릭터의 마나가 없어 마법 공격할 수 없는 상태 등
  • 한 상태에서 다른 상태로 전화할 수 있고, 동시에 여러 상태를 실행할 수는 없다.

전이(Transition): 한 상태에서 다른 상태로 전화하는 것

  • 각 상태 로직 또는 외부에서 전이 조건에 의해 전이될 수 있다.


장점

  • AI 개념을 프로그래머 외에 기획자 또는 제 3자가 쉽게 확인/설계 할 수있다.
  • 직관적이다.

단점

  • 확장이 힘들다. (FSM의 상태를 계속 추가하다 보면 다시 연결하기가 머리 아프다.)

 

유니티 상태 머신을 조금 적어뒀던적이 있는데 착각하고 있던게 있어서 좀더 적었다 

 

바로 상태 =/ 애니메이션 라는것 난 지금까지 걷는상태니까 걷는애니메이션

가만히 있으니 가만히 있는애니메이션 등등 인줄 알았는데

움직이면서 공격하는상태는 움직이는상태 공격상태가 공존하기에 문제가 있었다

 

그 결과 이동상태지만 애니메이션이 반드시 움직이는애니메이션 필요는 없다는것 

애니메이션 오버레이로 공격상태더라도 하체를 움직이게 하면 되는것 

그러나 이경우 무브 상태 인지 공격상태 인지 애매하기 때문에 무빙어택 상태를 만드는게 좋다