게임개발/Unreal 블루프린트

[Unreal_블루프린트]#31-2_Environmental Querying System(EQS), EnvQueryContext

Hardii2 2022. 10. 10. 12:54

 

[Unreal_블루프린트]#31_Environmental Querying System(EQS)

Unreal 블루프린트 개발 중 "Behavior Tree" 구현을 진행합니다.

"블루 프린트" 활용에 대한 내용입니다.

 


 

목표
  • AI가 Player 기준으로 "왼쪽" 혹은 "오른쪽"으로 비켜 지나갈 위치를 구현합니다.
  • 이때, 기준이 될 위치 혹은 Actor를 EnvQueryContext로 생성해서 재료로 삼고, 최종 목표 위치를 찾아보겠습니다.

 

EnvQuery_Context

1. EnvQuery_Context_StrafeLeft

  • 종합적으로, AI가 Player를 바라보는 방향을 기준으로 "왼쪽" 방향으로 특정 거리만큼 떨어진 위치를 구합니다.

 

2. EnvQuery_Context_StrafeRight

  • EnvQuery_Context_StrafeLeft의 반대 방향으로 떨어진 위치를 구합니다.

 

 

세팅

1. OnCircle Generator

  • 원 중앙을 특정 Context로 지정하여, 해당 Context 중심으로 원을 생성합니다.

2. 테스트 추가 : Dot Product

  • Dot은 두 벡터의 내적을 구합니다.
  • 자세하게 말하자면, Line A와 Line B를 설정하고 두 벡터의 내적 결과 값에 따라서 Scoring을 수행합니다.

 

3. Dot Product 테스트 세부 설정

  • 내적을 수행할 두 벡터의 시작 점과 끝점 설정을 통해 Scoring이 정해집니다.
  • 만약 (StrafeRight -> Player) * (StrafeLeft -> Items) 라면, Player 기준 오른쪽 Item이 Best Item이 될 확률이 높습니다.
  • 반대로, (StrafeLeft -> Player) * (StrafeRight -> Items)라면, Player 기준 왼쪽 Item이 되겠죠!
  • 여기서, Item은 Player 기준으로 생성되는 Circle 상의 구체들을 의미합니다!

 

결과 화면

 

1. (StrafeRight -> Player) * (StrafeLeft -> Items) 

 

2. (StrafeLeft -> Player) * (StrafeRight -> Items)