▣ Add Service에서 Set Default Focus를 추가하여 BehaviorTree에서 Ai에 Focus를 변경할 수 있습니다.
▣ 서비스(Services)는 컴포짓(Composite) 또는 태스크(Task) 노드에 어태치 되며, 분기가 실행 중인 동안 정의된 빈도로 실행됩니다. 보통 블랙보드의 확인과 업데이트에 사용됩니다. 이 노드는 다른 비헤이비어 트리 시스템에서 전통적인 병렬(Parallel) 노드를 대체합니다.
▣ Default Focus는 AI 컨트롤러(AI Controller)의 포커스를 설정하여 블루프린트 및 코드의 액터에 액세스 하는 바로가기를 생성합니다. AI 컨트롤러의 포커스를 액터로 설정하면 블랙보드 키에 액세스 하지 않고 AI 컨트롤러에서 직접 액세스 할 수 있습니다.
▣ 이번에는 Service를 직접 생성해 보겠습니다. Blackboard포함된 Base로 생성하겠습니다.
▣ c++ 코드로 가서 BTService.h를 살펴보면 4가지 함수들이 있습니다.
그중에 TickNode() 함수를 사용합니다.
▣ TickNode() : 서비스가 활성화된 경로에 있으면 항상 업데이트를 받습니다.
▣ 먼저 h 헤더파일로 가서 생성자와 TickNode() 함수를 선언합니다.
▣ TickNode() 함수에서 BlackboardKey 값을 조절하는 코드를 작성합니다.
컴파일 후
▣ BehaviorTree에서 Add Service를 누르면 아까 생성한 NodeName으로 Service가 나오고 이걸 선택하여 추가한 다음에 플레이를 해보면 Location에 대한 세팅이 적용되는 걸 확인할 수 있습니다.
▣ 하나의 데이터값을 조절할 수도 있고 위에 있는 코드처럼 AiController에 Tick() 함수에 있는 조건문을 가지고 와서 조건문 형식으로도 사용할 수 있습니다.
▣ 저장 및 컴파일 후 플레이를 해보면 생성한 Service에 따라 조건이 바뀌는 걸 확인할 수 있습니다.
블랙보드 키(Blackboard Key) 서비스가 결과를 작성할 블랙보드 키입니다. FVector나 액터일 수 있습니다.
간격(Interval) 서비스의 후속 틱 사이에 걸리는 시간을 정의합니다.
랜덤 편차(Random Deviation) 서비스의 간격 값에 랜덤 범위 값을 추가합니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 c++ CalculateDirection (0) | 2024.05.05 |
---|---|
언리얼엔진5 c++ CharacterMovement (0) | 2024.05.04 |
언리얼엔진5 c++ BehaviorTree(BTTask 생성 및 Character 호출) (0) | 2024.04.29 |
언리얼엔진5 c++ BehaviorTree(Decorator, Selector, 플레이어 발견, 원위치로) (0) | 2024.04.28 |
언리얼엔진5 c++ BehaviorTree(Blackboard Set, Ai Move) (0) | 2024.04.27 |
댓글