Contents Drawer에서 우클릭->Artificial Intelligence로 가면 Behavior Tree, Black Board 등등이 있다.
Behavior Tree와 Black Board를 생성.
Behavior Tree이다. Black Board에서 정의한 상태에 따라 순찰(Patrol)을 할 것인지 추적(Chase)를 할 것인지를 결정하게 된다. 결정조건은 Player를 Detected(bool) 을 통해서 정해지고 이 값은 BP_Character의 perception을 통해서 결정된다.
Player를 Detected하지 못했다면 왼쪽 트리로 내려와 위의 블루프린트를 호출하게 된다
가장먼저 캐스팅되는 Patrol Path는 순찰포인트들을 담고 있는 배열이고 이 좌표로 "AI Move To"함수를 통해서 이동하게 된다. 이동이 끝난뒤에는 인덱스값을 올려주고 Finish Excute를 호출하게 된다.
"Finish Excute"는 그다음 행동패턴에 대해서 신호를 주는 함수로 다음 패턴이 없다면 굳이 필요하지는 않다.
AIController에서 "Run Behavior Tree" 함수를 통해 둘을 연동시킬 수 있다.
플레이어를 인식하기 위해서는 AI에 "AI Perception" Components를 추가해야 하고 추적당하는 대상은 "Interception Component"가 필요하다. 인식방법은 여러가지지만 기본적으로는 AI Sight config를 통해서 시야에 들어온 대상을 인식한다. 시야는 아마 Arrow Component가 아닐까 싶다.
AI가 Player를 인식하여 BlackBoard의 Player Detected Key를 활성화시켜주는 함수다.
Behavior트리가 바뀌기 위해서는 기존에 실행중이던 Patrol 행동이 Excute되고나서도 PlayerDetected Key가 1이여야 비로소 플레이어를 추적할 수 있게된다. 즉 순찰포인트에 도착하기 전까지는 플레이어를 추적하지 않는다.
내가 해야할 행동트리는
1. 플레이어가 레벨에 들어오면 자동으로 추적, 이동
2. AI가 공격반경까지 접근했다면 공격 이후 잠시 딜레이
3. 딜레이 이후 다시 접근
4. 반복
여기서 추가할만한 행동으로는
1. n개의 공격패턴을 가지고 랜덤수를 통한 공격 또는 페이즈를 통한 공격
2. 피격시 잠시 딜레이
3. 공격이 시작될시 딜레이없음(무적상태)
4. 항상 무적공격은 안되니 무적이 되는 공격패턴과 안되는 공격패턴 나누기.
'UE5' 카테고리의 다른 글
언리얼 Monster AI 구현(1): 전투 (0) | 2025.04.15 |
---|---|
C++ Behavior Tree (0) | 2025.04.08 |
AI (1) (0) | 2025.04.01 |
Chat Base Ball 과제물 (1) | 2025.03.28 |
Delegate, Mode-State-Instance (0) | 2025.03.05 |