NavGraph を作成する

カスタム NavGraph を追加することで、地形用に作成した NavMesh を拡張することもできます。多くの場合、これらの NavGraph の配置は、ゲームレベルのデザインで暗黙的に使用されます。この場合、NavGraph は NavData 生成処理中に生成されます。これは通常、レベル用の NavMesh を生成した後に実行する後処理フェーズになります。ただし、実行時に動的に NavGraph を作成してスポーンすることもできます。たとえば、ゲーム内の NPC が任意の場所に移動できるはしごを使用できるようにするには、この方法を使用しなければならないことがあります。

NavGraph を作成する

次のように、NavGraphBlobBuilder オブジェクトを使用して NavGraph を作成できます。

  1. NavGraphBlobBuilder クラスの新しいインスタンスを作成し、頂点とエッジを追加するために、そのメソッドを使用します。
  2. NavGraph を保持するために、新しい NavData オブジェクトを作成します。
  3. NavData::AddNavGraph() メソッドを呼び出し、パラメータとして NavGraphBlobBuilder を渡すことで、新しい NavGraph を NavData に追加します。

同じ NavData オブジェクトに複数の NavGraph を追加することができます。ただし NavGraph は、NavMesh を既に含んでいる NavData オブジェクトに追加したり、Database に既に追加されている NavData オブジェクトに追加することはできません。

データの生成時に作成する

データ生成のプロセスの中で NavGraph を作成する場合は、データ生成システムで自動作成された NavData オブジェクトに対して行う方法と同じように、新しい NavData オブジェクトをパッケージ化する必要があります。

実行時に作成する

NavGraph を実行時に動的に作成する場合、事前生成されたデータが含まれている NavData オブジェクトの場合と同じ方法で、DatabaseNavData オブジェクトを追加できます。

NavData::AddToDatabaseImmediate() または NavData::AddToDatabaseAsync() を呼び出します。

サンプル

データ生成処理の後処理フェーズ中に NavGraph を作成する方法を示すコード サンプルについては、Tutorial_Generation_postProcess.cpp ファイルを参照してください。

NavGraph をオンザフライで作成し追加する方法を示すコード サンプルについては、Tutorial_NavTag.cpp ファイルを参照してください。