[UE5] Smart Enemy AI - Part 1 :: Behavior Trees (1)

chooha·2025년 4월 3일

UE5

목록 보기
1/3
post-thumbnail

< BP_EnemyBase >

◼️ 캐릭터 설정

캡슐 컴포넌트와 메쉬 컴포넌트의 Collision 세팅을 Custom으로 바꾸고, Camera의 Collision을 Ignore로 설정해줌
→ 플레이어 캐릭터의 카메라와 충돌을 일으키지 않게 하기 위함

◼️ Event Graph

  • ChasePlayer : 플레이어를 쫓는 이벤트

  • BeginPlay

플레이어를 쫓는 로직인데 위와 같이 적용했을 때 아직 아무 일도 일어나지 않음
AI에게 영역을 지정해 주어야 함

◼️ AI 영역 지정

NavMeshBoundsVolume을 이용해 영역을 지정해 줌
이 상태에서 P를 누르면

움직일 수 있는 영역을 알 수 있음
이렇게 되면 위의 로직이 정상적으로 작동 됨

◼️ 공격 모션 추가하기

플레이어에게 다가간 후 공격을 하는 동작을 플레이하게 만듦

◼️ LegIK 이슈 해결

현재 공격 모션은 잘 동작하지만, 강의에 나온 휘두르기 동작처럼 뭔가 이상하게 동작하는 애니메이션들이 있음
이건 IK설정 때문인데 FootIK라고 한다면, 발이 지면과 붙어있게 만드는 것

해당 캐릭터의 AnimGraph에서 설정할 수 있음
일단, 해당 몽타주에서 IK 커브를 설정해줘야 함

강의에서 문제된 부분은 다리 부분이므로 DisableLegIK 커브를 만들어 줌

생성된 커브를 더블클릭하면 그래프가 나오는데 이것을 우클릭해서 AddKey를 눌러줌
Value를 0~1로 설정

캐릭터의 AnimGraph로 가서 Control Rig의 알파값을 설정해줌

◼️ Behavior Tree, Blackboard

위의 블루프린트 로직을 Behavior Tree로 바꿔보려고 함

Behavior Tree, Blackboard 생성

  • Selector : 어떤 작업을 할지 선택할 수 있는 노드
    ex) 세가지의 노드가 연결되어 있다면, 왼쪽부터 확인하여 셋 중에 하나를 실행시킴

  • Sequence : 여러개의 작업을 순서대로 실행하는 노드, 하나의 작업이 성공해야 다음 작업으로 넘어갈 수 있음

왼쪽 블루프린트와 오른쪽 Behavior Tree는 똑같은 동작을 함
이 때, Behavior Tree의 Move To 노드에 Detail 부분을 설정해줘야하는데

생성한 Blackboard에서 타겟이 될 오브젝트를 생성해줌

생성된 오브젝트 변수의 Detail 패널에서 Base Class를 Actor로 설정

그리고 다시 Behavior Tree로 돌아와서 MoveTo 노드의 Blackboard Key를 방금 생성한 AttackTarget 액터로 설정하고, Radius도 블루프린트 노드와 똑같이 설정해줌

◼️ AI Controller

위의 Behavior Tree를 사용하려면 AI Controller를 만들어서 사용해야 함

Run Behavior Tree 노드에서 우리가 생성한 BT_EnemyBase를 지정해주고, Set Value as Object 노드를 통해 Blackboard에 생성한 AttackTarget 변수를 지정해줘야 함

이때, Player Character가 생성되기 전에 이것이 실행되면 오류가 생기므로,

이벤트가 실행됐을 때 딜레이를 걸어줘서 캐릭터가 먼저 생성되도록 함

그리고 BP_EnemyBase로 돌아가서 AI Controller Class를 방금 만든 AIC_EnemyBase로 바꿔줌

0개의 댓글