FSM쓰다가 행동트리도 한번 써보려고 행동트리 어제 부터 공부하기 시작했는데 좀 복잡네
내가 글을 못 써서 챗지피티한테 내가 궁금한거 정리해서 써달라하고 그대로 올렸어
이게 내가 지금 딱 궁금한거임 미리 감사합니다.


Behavior Tree를 사용할 때 특정 상태에서 다른 상태로 전환할 때마다 이전 상태를 깔끔하게 종료해야 할 때가 있습니다. 예를 들어 attack, hit, die 상태가 있고, 이 상태들이 다음과 같은 우선순위를 가지고 있다고 가정해 봅시다:

  1. die - 가장 높은 우선순위
  2. hit - 중간 우선순위
  3. attack(공격) - 가장 낮은 우선순위

이제 적이 공격하고 있는 상태(attack)에서 적이 공격을 받고 hit 상태로 전환될 때, 원래는 attack 상태를 종료(예를 들어 attack 애니메이션을 false로 바꾼다던지)하고 hit 상태로 들어가야 하는데, Behavior Tree는 이걸 자동으로 처리하기가 어렵습니다. 특히, 우선순위가 높은 상태가 개입될 때 기존 상태를 어떻게 종료할지 제어하는 것이 까다롭습니다.

문제 요약:

  • Behavior Tree에서 상태 전환 시, 이전 상태의 onExit 처리가 자동으로 이루어지지 않음
  • 우선순위가 높은 상태(hit, die)로 전환할 때 낮은 우선순위의 상태(attack)가 종료되지 않고 남아있을 수 있음

이런 문제 상황을 해결하기 위해 Behavior Tree 구조를 어떻게 개선할 수 있을까요?