1. 비헤이비어 트리 서비스 블루프린트
(1) 블루프린트 클래스 생성
BTService_BlueprintBase를 부모로하는 블루프린트를 생성한다.
이 클래스는 C++용이 아닌 블루프린트에서 구현하는 클래스이다.
(2) 블루프린트 디테일
이 BT서비스를 이용하여 가장 가까운 플레이어를 찾게 할 것이다.
간격은 몇 초마다 틱을 발동할 것인지 설정한다.
랜덤 편차를 통해 간격에 해당 값을 더하거나 뺀 시간 이후에 작동하게 한다.
(0.4 ~ 0.6)
2. 블랙보드 키 생성
(1) 블랙보드 키
블랙보드 키를 사용하면 비헤이비어 트리가 작동하는데에 필요한 맴버 변수를 저장할 수 있다.
BT서비스 블루프린트에서 변수를 만들어 오른쪽의 눈 모양을 클릭한 후 컴파일하면 비헤이비어 트리의 디테일에서 해당 키를 지정할 수 있게 된다.
(2) 블랙보드 키를 블루프린트로 가져오기
Get Blackboard Value as 노드들을 이용하면 블랙보드 키에 할당된 것을 블루프린트에 가져올 수 있게 된다.
(3) 블랙보드에 새로운 키 추가하기
몬스터가 대상을 따라다니도록 하기 위해 따라다닐 대상과 대상과의 거리를 블랙보드 키로 생성한다.
3. 태그로 플레이어 파악하기
(1) 각 블루프린트에 태그 추가
게임플레이 태그가 아닌 언리얼에서 기본적으로 제공되는 Tag를 사용하여 해당 클래스에 이름표를 붙일 수 있다.
예를 들어, BP_EnemyBase에 태그를 지정할 수 있다.
BP_AuraCharacter에 대해서도 태그를 추가한다.
이제 블루프린트에서 액터의 태그를 확인할 수 있다.
(2) Actor Has Tag
Actor Has Tag 함수를 사용하여 AI가 Player Tag를 가진 액터를 찾고 Player로 표시한다.
4. 가장 가까운 플레이어 찾기 - 기본적인 길 찾기 알고리즘
(1) Best Case
가장 가까운 플레이어를 찾기 위해 Best Case를 저장하는 ClosestDistance를 매우 큰 값으로 지정한다.
(2) 거리 계산
Player 태그를 가진 Actor를 대상으로 Each Loop를 돌아서 대상과의 거리를 구해 Best Case의 거리와 비교한다.
거리가 더 짧으면 짧은 값을 Best Case로 대치한다.
가장 가까운 액터를 멤버 변수로 지정한다.
(3) 찾은 값을 블랙보드 키로 저장하기
루프가 끝나면 찾은 Best Case를 블랙보드 키로 저장한다.
새로 저장한 블랙보드 키의 눈 아이콘을 클릭한다.
서비스의 변수들이 노출되어 위의 블루프린트의 블랙보드 키를 비헤이비어 트리 내의 블랙보드의 키으로 지정할 수 있게 되었다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
13-5. AI - (5) 비헤이비어 트리 데코레이터, 피격 반응, 원거리/근거리 몬스터의 이동 (0) | 2024.12.27 |
---|---|
13-4. AI - (4) 부드럽게 돌리기, 몬스터에 이펙트 액터(물약 등) 적용 여부 (0) | 2024.12.27 |
13-2. AI - (2) 커스텀 AI 컨트롤러, 비헤이비어 트리와 블랙보드 생성 (0) | 2024.12.27 |
13-1. AI - (1) 몬스터 AI 설정 계획 (0) | 2024.12.27 |
12-10. 멀티플레이어 디버깅 (0) | 2024.12.27 |