Environment Query System (EQS) では、 コンテキスト が使用されるすべての テスト または ジェネレータ の基準となる枠組みを提供します。コンテキストは、 Querier (テストの実行者) のように単純な場合もあれば、All Actors of a Type のように複雑な場合もあります。 Points: Grid などのジェネレータは、複数の位置またはアクタを返すコンテキストを使用できます。これにより、(定義したサイズと密度の) グリッドが各コンテキストの位置に作成されます。エンジンで提供されているコンテキストの他、 EnvQueryContext_BlueprintBase クラスを使用してブループリントで、または C++ コードを使用して、カスタム コンテキストを作成できます。
EnvQueryContext_Item
アイテム はジェネレータで生成されます。EQS Testing Pawn を使用している場合、アイテムはエディタに表示される球体です。EnvQueryContext_Item は位置 (FVector) またはアクタ (AActor) のいずれかです。
EnvQueryContext_Querier
Querier は、この Environment Query を呼び出している Behavior Tree を実行している AI コントローラーによって現在所有されているポーンです。コンテキストとして Querier を使用する可能性のある例として、AI キャラクターが使用できるアイテムについて AI キャラクターの周囲の環境を検索したい場合や、プレイヤーからのカバーを提供する場所を探したい場合、または単に AI がクエリを実行している現在の位置を特定したい場合が挙げられます。
[Generator (ジェネレータ)] タイプの [Details (詳細)] パネルでは、次のプロパティのコンテキストとして Querier を割り当てることができます。
ジェネレータ |
プロパティ |
---|---|
Actors of Class |
Search Center (検索センター)
|
Current Location |
Query Context (クエリ コンテキスト)
|
Points: Circle |
Circle Center (円の中心)
|
Points: Cone |
Center Actor (Center アクタ)
|
Points: Donut |
Center (中心)
|
Points: Grid |
Generate Around (周りに生成)
|
Points: Pathing Grid |
Generate Around (周りに生成)
|
EnvQueryContext_BlueprintBase
ブループリントで EnvQueryContext_BlueprintBase クラスを使用して、カスタム コンテキストを作成できます。このクラスでは、オーバーライド可能な 4 つの関数が提供されるため、クエリのテストで使用する独自のカスタム コンテキストを追加できます。
カスタム コンテキストを使用するには、次の手順を実行します。
EnvQueryContext_BlueprintBase クラスの新規のブループリントを作成します。
EnvQueryContext_BlueprintBase で、[Override (オーバーライド)] をクリックして、使用する関数のタイプを選択します。
各関数のオーバーライドの説明については、次の表を参照してください。
関数 |
説明 |
---|---|
Provide Single Location (単一の位置を提供) |
単一の位置 (ベクター) を返します。この位置は任意の方法で生成することができます。例えば、次の関数は、Querier から 1500 cm 以内で検出されたランダムなアクタ (Pawn、Vehicle など、DesiredObjectType 配列で検出されるアクタ) のトレース ヒット位置を返します。 |
Provide Single Actor (単一のアクタを提供) |
単一のアクタを返します。このアクタは任意の方法で検出することができます。この例では、関数が Player 0 で制御されたアクタを返します。 |
Provide Locations Set (一連の位置を提供) |
位置 (ベクター) の配列を返します。これらの位置は任意の方法で生成できます。この例では、関数が、環境上でのヒットを返しながら、半径が 1500 ユニットの円上で均等に間隔をあけて 16 の位置からトレースします。 |
Provide Actors Set (一連のアクタを提供) |
アクタの配列を返します。これらのアクタは任意の方法で取得できます。この例では、Get All Actors of Class ノードを使用して、返すアクタとして指定したクラスを取得します。 |