EQS를 지정하여 플레이어를 기준으로 AI를 어떤식으로든 활동하도록 한다.
비헤이비어 트리
EQS를 통해 현재 필드의 데이터를 탐지하고, 해당 데이터를 활용해서 컨트롤러가 캐릭터의 동작을 컨트롤하게 할 것 이다.
시퀀스 동작을 통해 모든 동작을 순차적으로 진행하게 할 것 이다.
1번 동작은, 현재 시야를 통해 PlayerActor가 무엇인지 확인하고, 지정하는 동작이다.
2번 동작은 PlayerActor가 찾아졌을 경우, 해당 객체를 참조하여 일정 동작을 수행하고, 이동할 Location을 반환한다.
3번 동작은 Location이 유효할 경우, 해당 위치로 Move To를 통해 이동시킨다.
EQS Query는 다음과 같이 생성 가능하다.
내부 데이터 구조이다.
ActorsOfClass는, 지정된 범위 내의 Trace를 쏘아서, 충돌한 객체를 전부 참조, 참조한 객체들이 지정된 Class인지 확인하고 지정된 Class를 전부 배열형태로 반환한다.
Test추가를 통해 반환된 객체들을 검사한다.
검사한 객체들은, 채널을 통해, 현재 필드에서 보이는 중인지 확인하고, 보인다면, 해당 Querier를 전부 반환해서 모든 객체를 참조하게 된다.
EQS_HideInPlayer
위 EQS를 통해 탐색된 Player객체에 대해 숨을 수 있다.
PlayerActor가 참조되었다면, 참조된 객체를 기준으로 일정 범위의 좌표를 전개한다.
위와같은 식으로 전개된다.
전개된 객체들을기준으로, 점수를 판별한다. 점수의 기준은 지정된 Player객체에서 가장 먼 곳을 기준으로 잡는다.
열참조 의 Env는 위와같다. 위의 기준으로 객체를 탐색한다.
그리고, 패스파인딩을 통해 도달 불가능한 곳인지 아닌지 판별한다. 도달 불가능한 곳이라면, 버린다.
점수를 추가한다. 자기자신을 기준으로 가장 가까운 점이 점수가 높도록 점수를 추가해준다.
모든 과정이 완료되면, 가장 큰 점수를 가진 점 위치를 반환해준다.
그리고, Location 위치를 기준으로 Move를 하게된다.
테스트
'서울게임아카데미 교육과정 6개월 국비과정' 카테고리의 다른 글
20240419 129일차 언리얼 C++ 데이터 테이블 (1) | 2024.04.19 |
---|---|
20240416 127일차 언리얼 C++ 캐릭터 조작 (0) | 2024.04.16 |
20240408 122일차 언리얼 블루프린트 AI (0) | 2024.04.08 |
20240402 120일차 언리얼 C++ 함수 오버라이드 (0) | 2024.04.03 |
20240402 120일차 언리얼 C++ 델리게이트2 (0) | 2024.04.02 |