언리얼 엔진 본캠프 20주차-7 언리얼 엔진 C++ : AI(Advanced) - Behavior Tree

정재훈·2025년 5월 5일
0

unreal engine

목록 보기
42/45

Behavior Tree

비헤이비어 트리 : 어떤 행동을 해야할지 정의해놓은 규약, 이 규약에 따라 이동/행동함

  • 데이터는 가지고 있지 않고, 규약/체계만 가지고 있음
    (Behavior Tree, Blackboard, AIController, AICharacter)가 한 세트

AI Controller는 데이터를 조사를 함, 그리고 이 값을 Blackboard로 넘겨줌

Blackboard는 Controller에게서 받은 데이터를 Behavior Tree가 사용하도록 제공함

BTTask

  • Find Task : 가장 가까이 있는 Interactive Object들 찾는 Task
  • Interact Task : Find Task가 찾은 Interactive Object와 상호작용하는 Task
    • AnimNotify를 만들어서 Montage가 재생될 때 트리거 시켜서 상호작용

BTService : BTTask와 달리 백그라운드에서 실행, 실행 중 다른 노드를 재생시킬 수 있음(Tick 같은 느낌, Interval을 조절해서 실행 간격 조절 가능)


상호작용 Interface

UFUNCTION()의 BlueprintImplementableEvent / BlueprintNativeEvent 지정자를 사용하면

  • _Implementation 을 붙여서 함수를 구현해야 함
  • BlueprintImplementableEvent : 블루프린트에서만 구현 가능
  • BlueprintNativeEvent : C++, 블루프린트 모두에서 구현 가능

다른 클래스에서 해당 함수를 호출할 때는 Execute_ 를 붙여야함

  • Execute_@@@(실행 액터, 매개변수)

MoveTo Task의 BlackboardKey에 Object가 안보인다면 Blackboard의 해당 Key의 Details 창에서 KeyType 드롭다운 -> Base Class = Actor 설정


감각 부여

  • 시각
  • 청각

시각 감지는 AI의 시야각 + SightRadius 안에 들어오기만 하면 감지를 하지만
청각은 소리를 내야하는데, 플레이어가 듣는 소리와 AI가 시스템상 듣는 소리는 별개임
=> 두 개의 소리를 만들어야 함(플레이어 전용, 시스템 전용)

  • 플레이어 전용은 애니메이션에서 Add Notify -> Play Sound로 구현해봄
  • 시스템 전용은 UPawnNoiseEmitterComponent::MakeNoise()







참조 사이트
1. 블루프린트에 게임플레이 요소 노출1
2. 블루프린트에 게임플레이 요소 노출2
3. 언리얼 인터페이스1
4. 언리얼 인터페이스2
5. enum class VS UserDefinedEnum

profile
드가자

0개의 댓글