언리얼 엔진에서 AI 는 Behavior Tree 와 Blackboard 를 이용해 AI 의 행동 규칙을 정의 및 구현한다.
parallel : 조건에 맞는 태스크 실행
sequence : 여러 개의 태스크 순차적으로 실행
parallel : 여러 개의 태스크 한번에 실행
task : 실제 행동 (e.g. 캐릭터의 이동)
decorator : 태스크 실행에 있어 조건 및 기능 추가
service : 태스크가 실행되는 동안 일정시간마다 실행 (주로 데이터 갱신에 사용)
언리얼 엔진에서 AI는 비헤이비어 트리 Behavior Tree 와 블랙보드 Blackboard 를 이용해 구현된다.
Behavior Tree
위에 보면 "invalid" 라고 되어 있는데, Move To 의 대상이 될 위치를 설정해주어야 한다.
이런 key 값을 Blackboard 이용해 설정할 수 있다.
Move To 가 받을 TargetPosition 벡터 Key 를 생성해 주었다.
그럼 이제 Behavior Tree 에서 Move To 가 이 블랙보드에서 방금 만든 TargetPosition 값을 쓸 수 있도록 해야겠죠?
BTD_IsNearPlayer
플레이어가 가까운지 조건을 판단 및 타겟 위치를 정하는 Decorator - Target Position 을 플레이어의 위치로 정하고 태스크 실행 (return true)
AI Character 클래스에 대해 시야 (Sight - cone component) 오버랩 체크 - 오버랩된 액터가 플레이어 폰인 경우 - 블랙보드의 target position 변수 값을 플레이어 폰의 위치로 set - return true
BTS_FindingRandom
플레이어가 가깝지 않은 경우 실행되는 Service - 랜덤 위치 계속 갱신
AI 활성화 되었을 때 - Nav 로 설정된 범위에서 랜덤 로케이션 - target position 으로 set
AI Tick 마다 - 타겟 포지션과의 거리가 10보다 작으면 현재 위치로부터 radius 범위에서 랜덤 로케이션 - target position 으로 set
To be continued...
'언리얼_엔진_게임개발_공부 > 언리얼 블루프린트' 카테고리의 다른 글
[언리얼/블루프린트] 레벨 스트리밍 - 레벨을 로드 load & 언로드 unload 하기 (0) | 2025.01.09 |
---|---|
[언리얼/블루프린트] 충돌 감지 (overlap / hit), 시선 상 충돌 감지 (line trace / sweep) (2) | 2025.01.07 |
[언리얼/블루프린트] 플레이어 캐릭터 클래스 (0) | 2024.12.19 |
[언리얼/블루프린트] 애니메이션 & 사운드 - 강의 메모 (1) | 2024.12.18 |
[언리얼/블루프린트] 구구단, 슈팅 게임, 가위바위보 로직 구현 (1) | 2024.12.18 |