Generator
위치 또는 액터인 아이템을 생성함.(디버그형로는 구형)
EQC
EnvQueryContext_Item
디버그용 구 형태의 위치/액터
EnvQueryContext_Querier
BT를 실행하는 본인 자신 Pawn
EQC를 Custom으로 만들어서 지정해 줄 수도 있다.
Test
Filter Only : 제거
Score : 가장 높은 값/ 낮은 값
Score에 의해 BlackBoard에 반환할 수 있는 값이 설정된다.
| 테스트 목적(Test Purpose) | 테스트에 적용할 수 있는 추가 옵션과 테스트의 용도를 정의합니다.
|
테스트 방식
Distance
아이템과 선택한 Context와의 거리
ex) 아이템과 플레이어와의 거리
Dot
두 벡터의 내적.
ex) 무언가가 다른것을 향하고 있는지
Gameplay Tag
Overlap
프로퍼티로 정의한 bound(범위) 내에 아이템이 있는가
PathFinding
Context로 오거나 가는 경로의 존재 여부.
PathFinding Batch
Project
Trace
트레이스의 히트 여부. Bool값을 이용.
Context : Trace의 반대 쪽 끝
ex) 플레이어의 존재 여부
EQS 사용 과정.
1. 무엇을 만들 것인지 고민한다.
ex1) 플레이어의 근처 주변 위치로 이동하게 만들자.
ex2) 플레이어의 시야 밖으로 만들자.
2. 아이템이 필요하므로 제너레이터를 생성하여 어떤 것으로 할지 고른다.
ex1) Points of Circle를 통해, 원형 아이템을 생성한다.
ex2) Actor Of Class로 특정 클래스를 대상으로 한다.
3. 어떤 아이템을 골라 반환할지 필요하므로 Test를 설정한다.
ex1) 플레이어의 근처를 이용 할 것이므로 Test는 Distance, EQC는 PlayerActor가 된다.
Filter Type은 Range로 적당한 값을, Scoring Factor 는 -1,
반환해서 돌려 줄 값이 Vector가 되므로, BlackBoard에 TargetVector 변수를 하나 만들어서 거기에 값을 준다. Move To에 TargetVector를 설정해준다.
ex2) 플레이어의 시야를 이용할 것이므로, Test는 Trace, EQC는 PlayerActor가 된다.
EQS 다중 Test 사용 예시
우리가 만들고자 하는 것은, 플레이어의 시야밖에 있는 엄폐물로 '적'이 피하도록 만드는 것이다. 여기서 이 EQS를 실행하는 것은 '적'이라는 것에 주의하자.
1. '적'은 엄폐물 근처로 이동하여야 한다.
2. 플레이어의 시야에 들어오지 않아야한다.
3. 플레이어와는 멀어야하고, '적'과는 가까워야 한다.
제너레이터를 이용해서 이동할 위치를 설정한다. 이 위치/액터들을 Item이라 부른다.
여기서의 Context를 플레이어 기준으로 할 수도 있고, Querior 자신으로 할 것 인가는 설정하는 사람 마음이다. 맵의 크기에 따라서는 플레이어를 기준으로 전체 맵의 범위로 아이템을 생성할 수도 있을 것이고, 이는 많은 메모리 낭비가 될 수도 있다. 여기서는 '적'을 기준으로 한다.
Trace
설정한 Context를 기준으로, 설정한 TraceChannel을 Shape의 형태로 발사한다.
여기서, Trace를 맞고 난 후 다음 Item(구체)에 값이 들어가게 된다.
Trace Visibility를 사용하였는데, Block되는 물체를 특정화하고 싶다면. 자체적인 TraceChannel을 생성하여 판단해주는 것이 좋을 것이다.
겹침을 판단하는 것으로, 해당 Ovelap은 설정한 Overlap Channel과 OvelapShape, Data에 해당하는 XYZ크기로 설정된다. Item의 해당 위치에 이 Ovelap이 생성되어서, 겹침이 발생 하였을 경우, 점수를 주게 된다.
위의 경우 Overlap WeaponFireTrace로 설정하여 Enemy의 주변 위치에도 점수를 받게 되므로, 가능하면 다른 TraceChannel을 만들고, ObjectType 엄폐벽을 하나 만들어서 해당 채널에 대한 엄폐벽만 Overlap 또는 Block하게 설정하자.

Distance
Distance
역할은 거리에 따른 점수를 주는 것이다.
Context의 위치를 기준으로 Scoring Factor에 따라 가까우면(-1, 음수)를 또는 멀수록 (1또는 양수)를 점수로 할 수 있다.
Filter를 이용하면 거리에 범위 값을 설정 할 수 있다.
첫번째의 경우 Context가 Querier로 자신으로부터 가까울 수록 점수를 주게 하였다.
두번째의 경우 Context가 Player로 플레이어로부터 멀 수록 점수를 주게 하였다.