게임개발/Unreal 블루프린트

[Unreal_블루프린트]#30_Behavior Tree, Tracing

Hardii2 2022. 10. 5. 19:29

 

[Unreal_블루프린트]#30_Behavior Tree, Tracing

Unreal 블루프린트 개발 중 "Behavior Tree" 구현을 진행합니다.

"블루 프린트" 활용에 대한 내용입니다.

 


 

Behavior Tree

1. 세팅

 

[Unreal]#16_Behavior Tree Setting

[Unreal]#16_Behavior Tree Setting Unreal 개발 중 "AI Controller"에 대해 알아보겠습니다. "Simple Shooter Game"의 AI Player 개발 내용입니다. Setting 1. Behavior Tree + Bloackboard 블루프린트 생성 2...

webddevys.tistory.com

 

[Unreal]#17_Behavior Tree

[Unreal]#17_Behavior Tree Unreal 개발 중 "AI Controller"에 대해 알아보겠습니다. "Simple Shooter Game"의 AI Player 개발 내용입니다. Sequence 1. 화면 2. 기능 컴포짓 노드(합성 노드)입니다. 왼쪽에서 오..

webddevys.tistory.com

  • Behavior Tree의 기본 세팅과 각 노드의 기능들은 위 링크를 참조해주세요!

 

2. Blackboard 키 세팅

BB_AI 내부 키 세팅

  1. Player -> 월드 내 BP_Player 객체
  2. Location -> BP_Player 객체가 인지 범위 안에 없을 시 AI가 이동할 무작위 위치

 

3. AI Controller 클래스

AIController 블루프린트 화면

  • AIController 유형의 블루프린트 클래스를 생성합니다.
  • AI Perception 컴포넌트를 추가합니다.

 

4. AI Controller::AIPerception 설정

AIController의 AIPerception 컴포넌트 설정

  1. Sense Config 배열 추가
  2. Perception을 수행할 매개체를 지정합니다(Hearing, Sight, Touch,...)
  3. Detection By Affiliation 설정을 Detect Neutrals로 설정합니다.

 

5. AIPerception::On Perception Updated 이벤트 구현

  • AIPerception::Get Currently Perceived Actors : AIPerception 컴포넌트를 통해 현재 인식되는 Actor 배열 반환

  • Get Currently Perceived Actors가 반환하는 배열 항목 중 "BP_Player"에 캐스팅되는 값들을 Key값에 설정합니다.
  • Set Value As Object : Blackboard에서 미리 생성한 Player 키 값(BP_Player 객체)을 설정합니다.

 

6. 결과 화면

  • Debugging을 위해 플레이 중 " ' "를 누르고, 숫자 패드 4번을 눌러줍니다.
  • AIPerception 컴포넌트를 통해 AI가 인식하는 BP_Player 객체 위에 "구체"가 렌더링 됩니다.

 

커스텀 서비스

1. BTService_Trace

 

2. BTService_Trace::Receive Tick AI 함수

  1. Max Radius 값과 AI < -> BP_Player 간의 거리 비교를 통해 추적 여부를 결정합니다.
  2. BP_Player가 Max Radius 범위 안에 없을 시 Player 키 값을 설정하지 않습니다!
  3. Get Random Point Navigable Radius를 통해 Max Radius 안에 존재하는 무작위 위치를 Location 키에 저장합니다.

 

BTTask_TraceAttack

1. BTTask_TraceAttack::Receive Execute AI 함수

  • Montage Play: 활성화 시 재생할 Anim Montage를 설정합니다. 

 

Behavior Tree

1. Tracing 예제 구현

  • Selector + BTService_Trace: Player 키 + Location 키 설정 여부를 체크
  • Sequence + Decorator(Blackboard): Player 키 값의 설정 여부에 따라서 수행되는 컴포짓 노드
  • Attack(BTTask_TraceAttack): 해당 노드 활성화 시 BTTask_TraceAttack 테스크가 활성화됩니다.

 

결과 화면