Version: 2022.1
言語: 日本語
ナビゲーションシステムの内部的なしくみ
NavMesh ビルドコンポーネント

ナビメッシュの作成

レベルのジオメトリ (地形) から NavMesh (ナビメッシュ) を作成することを NavMesh Baking と呼びます。このプロセスは、Navigation Static としてマークされているすべてのゲームオブジェクトのレンダーメッシュと Terrains (地形) を収集し、それらを処理して、レベルの歩行可能な表面にほぼ等しいナビゲーションメッシュを作成します。

Unityでは、NavMesh (ナビメッシュ) の生成は Navigation ウィンドウ (Window > AI > Navigation) で処理されます。

シーンに必要なナビメッシュの作成は、4つの簡単な手順で行えます。

  1. ナビゲーションに影響を与えるシーンジオメトリ (歩行可能サーフェスと障害物) を 選択 します。
  2. Navigation Static チェックボックスにチェックを入れ、選択されたオブジェクトがナビメッシュのベーキング処理に含まれるようにします。
  3. ベイクの設定をエージェントのサイズに合わせて調整します。
    • Agent Radius は、エージェントの中心が壁などにどの程度近づけるか設定します。
    • Agent Height は、空間内でエージェントの手がとどく高さ (低さ) です。
    • Max Slope は、エージェントが登れる斜面の角度です。
    • Step Height は、エージェントが踏むことができる障害物の高さです。
  4. Bake をクリックするとナビメッシュが作成されます。

生成されたナビメッシュは、シーン内では、Navigation ウィンドウが開いていて表示されている状態の時に、ステージのジオメトリ上を覆う青いオーバーレイとして表示されます。

上の図で気づくように、生成されたナビメッシュの歩行可能領域はやや小さめに表示されます。ナビメッシュは、エージェントの中心が移動できる領域を表します。概念的には、エージェントを縮小されたナビメッシュ上の点と見なすか、フルサイズのナビメッシュ上の円と見なすかは関係ありません。なぜなら、この 2 つは同じことだからです。しかし、点とみなす方がランタイムの効率が良く、デザイナーは半径を気にせずエージェントがすき間を通り抜けることができるかをすぐに知ることができます。

Another thing to keep in mind is that the NavMesh is an approximation of the walkable surface. This can be seen for example in the stairs which are represented as a flat surface, while the source surface has steps. This is done in order to keep the NavMesh data size small. The side effect of the approximation is that sometimes you will need to have a little extra space in your level geometry to allow the agent to pass through any tight spots.

ベーキングが完了すると、そのナビメッシュが属するシーンと同じ名前のフォルダー内にナビメッシュアセットファイルが作成されます。例えば、Assets フォルダー内にある First Level というシーンの場合、ナビメッシュの場所は Assets > First Level > NavMesh.asset になります。

ベイクするオブジェクトのその他の生成方法

Navigation ウィンドウ上でオブジェクトを 静的ゲームオブジェクト として作成する方法の他に、インスペクター上部の Static メニューも使用できます。Navigation ウィンドウが開かれていない時にはこれが便利です。

Additional resources

ナビゲーションシステムの内部的なしくみ
NavMesh ビルドコンポーネント