ここではナビメッシュ(NavMesh)の作り方ついて説明します。
※この記事で使用しているUnityのバージョン:Unity2019.1
ナビメッシュ(NavMesh)とは
ナビメッシュは、簡単に言うとナビメッシュエージェント(=自動移動するキャラクター)が経路探索できる範囲のことです。
Unityのナビゲーション機能を使ってキャラクターを自動移動させるためには、あらかじめナビメッシュを生成しておく必要があります。
ナビメッシュの作り方
ではナビメッシュの作り方を見ていきましょう。手順は次の通りです。
- 適当なステージを作る
- 地形や障害物などを「静的」にする
- ナビメッシュをベイクする
適当なステージを作る
まずはキャラクターを移動させるステージを作ります。例として今回は下の図のようなステージを作りました。
地形や障害物などを「静的」にする
次に、ステージの地面や障害物は動かないので、これを「ナビゲーション的に静的にする」必要があります。一体何を言ってるのかよく分からない表現ですが…要するに、「このゲームオブジェクトは動きませんよ」ということを明確にする必要があるのです。
やり方は簡単で、各ゲームオブジェクトをインスペクターで開いたとき右上にある「静的」というチェックボックスの下矢印を押して「ナビゲーションを静的にする(Navigation Static)」を選択すればOKです(下図)。
ナビメッシュをベイクする
最後にナビメッシュをベイク(生成)します。
メニューバーの「ウィンドウ」→「AI」→「ナビゲーション」からナビゲーションウィンドウを開き、「ベイク」タブで必要な項目を設定して右下の「Bake」をクリックしてください(下図)。
なお設定項目については次の通りです。
- エージェントの半径:
ナビメッシュエージェントの半径を指定します。これによってベイクされるナビメッシュの領域が変化します。 - エージェントの高さ:
ナビメッシュエージェントの高さを指定します。こちらもベイクされるナビメッシュの領域に影響します。 - 最大傾斜:
エージェントがどのくらいの傾斜まで登れるかを指定します。 - ステップの高さ:
エージェントがどのくらいの高さの段差まで登れるかを指定します。 - 落下の高さ・ジャンプの距離:
オフメッシュリンクを自動生成するときに必要な値です。詳しくは「オフメッシュリンク(OffMeshLink)の作り方」をご覧ください。
「Bake」を押すとすぐにナビメッシュが生成されてシーンビューで青く表示されます(下図)。
これでナビメッシュを作ることができました。