ナビメッシュ(NavMesh)の作り方

ここではナビメッシュ(NavMesh)の作り方ついて説明します。


※この記事で使用しているUnityのバージョン:Unity2019.1

ナビメッシュ(NavMesh)とは

ナビメッシュは、簡単に言うとナビメッシュエージェント(=自動移動するキャラクター)が経路探索できる範囲のことです。

Unityのナビゲーション機能を使ってキャラクターを自動移動させるためには、あらかじめナビメッシュを生成しておく必要があります。

ナビメッシュの作り方

ではナビメッシュの作り方を見ていきましょう。手順は次の通りです。

  1. 適当なステージを作る
  2. 地形や障害物などを「静的」にする
  3. ナビメッシュをベイクする

適当なステージを作る

まずはキャラクターを移動させるステージを作ります。例として今回は下の図のようなステージを作りました。

ステージの例

地形や障害物などを「静的」にする

次に、ステージの地面や障害物は動かないので、これを「ナビゲーション的に静的にする」必要があります。一体何を言ってるのかよく分からない表現ですが…要するに、「このゲームオブジェクトは動きませんよ」ということを明確にする必要があるのです。

やり方は簡単で、各ゲームオブジェクトをインスペクターで開いたとき右上にある「静的」というチェックボックスの下矢印を押して「ナビゲーションを静的にする(Navigation Static)」を選択すればOKです(下図)。

「静的」のチェックボックスの位置

ナビメッシュをベイクする

最後にナビメッシュをベイク(生成)します。

メニューバーの「ウィンドウ」→「AI」→「ナビゲーション」からナビゲーションウィンドウを開き、「ベイク」タブで必要な項目を設定して右下の「Bake」をクリックしてください(下図)。

ナビメッシュのベイク設定

なお設定項目については次の通りです。

  • エージェントの半径:
    ナビメッシュエージェントの半径を指定します。これによってベイクされるナビメッシュの領域が変化します。
  • エージェントの高さ:
    ナビメッシュエージェントの高さを指定します。こちらもベイクされるナビメッシュの領域に影響します。
  • 最大傾斜:
    エージェントがどのくらいの傾斜まで登れるかを指定します。
  • ステップの高さ:
    エージェントがどのくらいの高さの段差まで登れるかを指定します。
  • 落下の高さ・ジャンプの距離:
    オフメッシュリンクを自動生成するときに必要な値です。詳しくは「オフメッシュリンク(OffMeshLink)の作り方」をご覧ください。

「Bake」を押すとすぐにナビメッシュが生成されてシーンビューで青く表示されます(下図)。

ベイクされたナビメッシュの例

これでナビメッシュを作ることができました。