Unity
Behavior Tree 개념 / 적용해 보기
(ꐦ •᷄ࡇ•᷅)
2025. 1. 24. 14:10
Behavior Tree는 시스템의 의사 결정 및 행동 관리를 구조화하고 계층화된 방식으로 표현하는 모델이다.
복잡한 행동을 논리적으로 설계하고, 확장성을 제공하는 데 유용하다.
구조
Behavior Tree는 트리 형태의 계층 구조로 이루어져 있으며, 트리의 각 노드는 특정 의사 결정 또는 행동 수행을 나타낸다.
1. Root Node
- 트리의 최상위 노드이며, 행동의 시작점이다.
2. Composite Node
- 여러 하위 노드를 포함하며, 트리의 흐름을 제어한다.
- 예로 Selector, Sequence가 있다.
3. Decorator Node
- 특정 조건을 추가하거나 노드의 결과를 수정한다.
- 조건 충족 시에만 실행 등
4. Leaf Node (Action Node)
- 실제로 행동을 수행하거나 조건을 평가한다.
- 행동: 캐릭터의 공격, 이동 등
- 조건: 플레이어와의 거리가 5m 이내인지? 확인
핵심 노드 유형
1. Selector (Composite Node)
- 여러 하위 노드 중 하나라도 성공하면 성공으로 간주
- 왼쪽에서 오른쪽으로 노드를 탐색하며, 첫번째 성공 노드를 선택.
- 용도: 여러 대체 행동 중 하나를 실행.
Selector:
- 방어 가능? → 방어 실행
- 플레이어 근접? → 회피
- 기본 행동 실행
2. Sequence (Composite Node)
- 여러 하위 노드를 순차적으로 실행하며, 모든 노드가 성공해야 성공으로 간주
- 왼쪽에서 오른쪽으로 노드를 탐색하며, 하나라도 실패하면 즉시 실패로 간주
- 용도: 순차적인 행동을 설계
Sequence:
- 플레이어와의 거리 확인 (조건).
- 이동 경로 설정 (행동).
- 접근 실행 (행동).
3. Decorator
- 하위 노드의 실행 결과를 평가하거나 조건을 추가
- 용도: 조건부 행동 설계
플레이어가 공격 중일 때만 방어 행동 실행
4. Leaf
- 트리의 끝에 위치하며, 실제 행동 또는 조건 검사를 수행
행동: "캐릭터가 근접 공격을 실행."
조건: "체력이 50% 미만인가?"
Behavior Tree의 작동 방식
- 트리는 루트 노드에서 시작해 왼쪽에서 오른쪽으로 탐색한다.
- 각 노드는 Success, Failure, Running 중 하나의 결과를 반환한다.
- 트리는 결과를 상위 노드에 전달하며, 최종적으로 루트 노드에서 결과가 도출된다.
- DFS