UE4

[UE4] BehaviorTree - 데코레이터(Decorator)의 종류

Honey Badger 2023. 4. 12. 21:31

1. Blackboard

블랙보드 노드는 지정된 블랙보드 키에 값이 설정되어 있는지 확인한다. 

 

 

 

2. Check Gameplay Tag Condition

  이 데코레이터는 게임 플레이 태그를 검사하고 해당 태그가 존재하는지 여부에 따라 실행 여부를 결정한다. 

 

 

 

3. Compare BBEntries

  두 블랙보드 키의 값을 비교하고 결과가 동일한지 여부에 따라 노드의 실행을 차단하거나 허용한다. 

 

 

 

4. Composite

컴포짓 데코레이터 노드를 사용하면 언리얼이 기본으로 제공하는 노드보다 고급 논리를 설정할 수 있지만 전체 블루프린트만큼 복잡하지는 않다. 노드에 컴포짓 데코레이터를 추가하게 되면 컴포짓 데코레이터를 두 번 눌러 컴포짓의 그래프를 가져올 수 있다. 그래프 영역을 마우스 오른쪽 버튼으로 클릭하면 데코레이터 노드를 독립 실행형 노드로 추가한 다음 AND, OR, NOT노드를 통해 연결하여 보다 고급 논리를 만들 수 있다.

다음과 같이 마치 블루프린트처럼 로직을 구성할 수 있지만, Composite Decorator를 사용하는 것은 메모리와 성능에 안좋은 영향을 미친다. 따라서 데코레이터를 C++에서 구성하는 것이 더 효율적인 방법이다. 

 

 

 

5. Conditional Loop

  Conditional Loop Decorator는 특정 조건이 충족될 때까지 자식 노드를 반복해서 실행하는 데 사용된다. 

 

 

 

6. Cone Check

Cone Check Decorator는 세 가지 벡터 키를 사용한다. 첫 번째는 Cone을 시작할 위치, 두 번째는 Cone이 가리키는 방향을 정의하는 위치, 세 번째는 Cone 내부에 있는지 확인하는 위치이다. Cone Half Angle 프로퍼티를 사용하여 원뿔의 각도를 정의할 수 있다.

 

 

 

7. Cooldown

Cooldown 노드는 지정된 시간동안 노드 또는 분기의 실행을 잠근다. 

 

 

 

8. Custom Decorators

  위의 버튼을 클릭하여 새로운 로직을 가지는 데코레이터를 만들 수 있다.

 

 

 

9. Does Path Exist

 Does Path Exist 노드는 두 벡터사이의 경로를 만들 수 있는지 확인한다.

 

 

 

10. Force Success

 Force Success 데코레이터는 노드의 결과를 성공으로 강제 변경한다. 

 

 

 

11. Is At Location

Is At Location 데코레이터 노드는 AI가 컨트롤하고 있는 폰이 주어진 특정 위치에 자리하고 있는지 검사한다.

 

 

 

12. Is BBEntry Of Class

지정된 블랙보드 키가 지정된 클래스에 속하는지 여부를 확인하기 위해 이 노드를 사용한다. 

 

 

 

13. Keep in Cone

관찰된 위치가 여전히 원뿔 내부에 있는지 여부에 따라 조건을 결정하는 노드이다. 원뿔의 방향은 노드가 처음 관련되었을 때로부터 계산된다.

 

 

 

14. Loop

루프 데코레이터는 노드 혹은 분기를 주어진 횟수만큼, 혹은 무한히 루프시킨다.

 

 

 

15. Set Tag Cooldown

얼마나 Cooldown할지를 정해 Gameplay Tag로 set해줄 수 있다. 

 

 

 

16. Tag Cooldown

게임플레이 태그의 쿨다운 타이머가 만료되었는지 검사하는 노드입니다.

 

 

 

17. Time Limit

  Time Limit 데코레이터는 분기 또는 노드에 제한 시간을 정해 그 시간 내에 완료되지 못하면 실패한 것으로 간주합니다. 타이머는 해당 노드가 포커스를 얻을 때마다 재설정됩니다.