[UE] Behavior Tree(2)

GamzaTori·2024년 4월 29일
0

UE4 Blueprint C++

목록 보기
19/19

타겟이 있으면 추적하고, 없으면 정찰하면서 돌아다니는 로직을 구현하기 위해 행동트리에 Selector 추가

  • 1~2초 마다 무언가를 반복하게 하는 Service
  • Selector 우클릭 후 추가

BTService를 상속받은 C++ Class 추가

  • 생성자에서 Interval을 초기화해 1초마다 실행되도록 할 수 있다
  • 주기적으로 발생하는 TickNode 함수 추가

블랙보드에 Object 타입의 Target 키 추가

  • Target 키의 Object base class를 추적대상인 Character C++ Class로 설정

TickNode 함수 구현

  • 몬스터를 기준으로 특정 반경으로 Sphere 형태로 탐색한다.
  • 반경에 MyCharacter 클래스가 탐색되었으면 블랙보드의 Target을 해당 클래스로 초기화한다.
  • 없다면 nullptr로 초기화한다.
  • DrawDebugSphere를 통해 탐색 반경을 표시한다.

행동트리의 Selector에 C++ 클래스에서 추가한 SearchTarget 서비스 추가

새로운 Selector를 만들고 Blackboard Decorator 추가

  • 블랙보드 Key를 Target으로 변경
  • Sequence에는 TargetOff로 Decorator를 똑같이 추가한다. 단, Key Query를 Is Not Set으로 설정.

공격할 수 있는지 여부를 판단하는 BTDecorater를 상속받은 C++ Class 추가

공격 범위안에 Target이 있는지 확인하는 CalculateRawConditionValue 함수 추가

행동트리에 CanAttack 데코레이터를 추가하여 공격이 가능하면 공격하고 불가능하면 타겟을 따라가도록 한다.

  • not 조건은 Inversion Condition을 체크해주면 된다.

공격하는 기능을 수행할 BTTaskNode를 상속받은 C++ Class 추가

ExecuteTask에 공격 기능 구현

공격이 끝났음을 알리기 위해 캐릭터에 델리게이트 추가


  • 공격이 끝나면 Broadcast를 통해 알린다.

공격을 수행하는 TaskNode에서 콜백 등록

행동트리에 타겟을 찾으면 공격하도록 만들어둔 Attack 노드 추가

profile
게임 개발 공부중입니다.

0개의 댓글