Language:
Page Info
Engine Version:

12.FindHidingSpot EQS を作成する

このステップでは、さらに複雑な Environment Query を作成します。ポイントのグリッドを作成し、NavMesh 上に投影します。次に、一連のテストを実行し、隠れるための「一番良い」ポイントを見つけます。あるテストでは、例えば、プレイヤーのキャラクターから見えるものなど完全に不適切な位置を選別します (Trace)。他のテストでは、NavMesh (PathFinding) で到達可能かどうかに基づき隠れるスポット候補にウェイトをかける、またはプレイヤー キャラクターの前のポイントがどの程度か (Dot Product (内積)) に基づきウェイトをかけます。

以下は簡単な覚書です。

  • Generator は、Context に関連して Item を作成します。

  • Item は多くの場合、 Context (Item X は Context Y からどれくらい離れているか) に関連して Test で使用されます。

  • Item は Test 結果に基づき選別またはスコアリングされます。

ステップ

  1. はじめに、コンテンツ ブラウザ にある FindHidingSpot Environment Query アセットを ダブルクリック します。

    findHide.png

  2. Simple Grid Generator を作成し、それを Root ノードに接続します。

    simpleGrid.png

  3. Simple Grid Generator を選択し、その [Details (詳細)] パネルで以下のプロパティを設定します。

    gridProp.png

    • Grid Size = 2000.0

    • Space Between = 150.0

    • Navigation Filer = RecastFilter_UseDefaultArea

    • Project Down = 2048.0

    • Post Projection Vertical Offset = 32.0

    こうした Grid Generator の設定では、かなりの数であるものの管理可能な Query のテスト対象のアイテムを作成します。Project DownProject UpPost Projection Vertical Offset のプロパティの変更は、それよりも上または下にある何かを見つける必要がある AI を持っている場合に特に役立ちます。

  4. Simple Grid ノードを 右クリック して、 Tests arrow_button.png Distance を選択して 2 つの Distance テストを追加します。

    addDistance.png

  5. 1 つめを選択して [Details] パネルで以下のプロパティを調整します。

    distanceProps.png

    • Distance To = Player Context

    • Test Purpose = Score Only

    この Distance テストは、プレイヤーから より離れた場所にある Item により高いスコアを付けるものです。

  6. 2 つめを選択し、 [Details] パネルで、以下のプロパティを調整します。

    distanceProps2.png

    • Test Purpose = Score Only

    • Scoring Equation = Inverse Linear

    • Scoring Factor = 2.0

    この Distance テストは、AI により近いアイテムにより高いスコアを与えるものです。このテストは、この前の Distance Test よりも大きなウェイトを持ちます。つまり、AI により近い方を優先するもののプレイヤーから離れたものを選択します。

  7. Simple Grid ノードを 右クリック して Tests arrow_button.png Trace を選択して 2 つの Trace テストを追加します。

    addTrace.png

  8. Trace テストのひとつを選択し、その [Details] パネルで、Context を PlayerContext に変更します (このクイックスタートの前の方で作成したContext)。

    traceProps.png

    ここではプレイヤーのポーンまたは AI のポーンの視界に入るアイテムがあれば取り除きます。このテストが多くの Distance テストの後に行われることに懸念を抱かれるかもしれませんが大丈夫です。Environment Query はここでの順序に関係なく最初に Trace テストを実行するからです。もうひとつの Trace では、追加のセットアップは不要です。

  9. Simple Grid ノードを 右クリック して Tests arrow_button.png Dot を選択して Dot テストを追加します。

    addDot.png

  10. Dot テストを選択し、 [Details] パネルで、以下のプロパティを調整します。

    dotProps.png

    • Line A - Rotation = PlayerContext

    • Line B - Line From = PlayerContext

    • Absolute Value = True

    • Test Purpose = Score Only

    • Scoring Factor = -1.0

    これからは少し難しくなります。大まかにいうと、「プレイヤーのポーンの横にあるアイテムを優先する」ということですが、その仕組みは少々変わっています。Dot Product (内積) 関数は、1.0 (全く同じ) から -1.0 (完全に逆) のスケールで 2 つのベクターがどれくらい「似ている」かを戻します。従って、プレイヤーの回転ベクターとプレイヤーからアイテムまでのベクターとの間の Dot Product の Absolute Value を取得すると、プレイヤーの前または後ろにあるポイントを優先します。しかし、 Scoring Factor を -1.0 に設定すると、プレイヤーの側面を優先します。

  11. Simple Grid ノードを 右クリック し、Tests arrow_button.png PathFinding を選択して、 PathFinding テストを追加します。

    addPath.png

  12. PathFinding テストを選択し、 [Details] パネルで、Test Purpose (テスト目的)を Score Only に調整します。

    pathProps.png

    編集に関してはこれで終わりです。最終的に Environment Query はこのような感じになっているはずです。

    final.png