“知性” あるエージェントを再現するため,経路探索システムは開始地点から目的地点までの最適経路を見つけるように設計されています。通常は最短経路が最適経路となりますが,現実世界でも単純でないケースがあります。例えば二つの地点間の最短経路が厚い雪で覆われていて,たとえ距離は長くても雪のない経路の方が早いかもしれません。また時間以外の要素もあります。夜は暗い通りではなくて少し遠くとも明るい経路を安全面で選ぶでしょう。それぞれの経路には Cost (コスト)がある,と解釈することで整理できます。コストは地形の難易度やリスク,その他に考えられる要素を表現します。最適経路はコストが総合的にもっとも低いものであり,最短であるとは限りません。
Unity では Navmesh Layer を通してそれぞれのナビメッシュの箇所にコストを割り当てます。もし Navigation ウィンドウの Layers タブを選択すると 32 種類の利用可能なレイヤーが表示され,そのうち 3 つは Unity により “ビルトイン” で予約されています。ユーザ レイヤーのどれかを展開すると名前およびコストの値を割り当て出来ます
Object タブへ移動して Navigation Layer ポップアップをみると,メニューに割り当てされた任意のユーザ レイヤーをみることが出来ます。ナビメッシュ オブジェクトからレイヤーを選択するとエージェントが移動する距離にもコストを割り当てます。これによりレベルデザイナーがシーンを複数のナビメッシュに分割して異なる通過コストを表現できます。
コストを使用するときに意識すべきことは通過コストが低い長い距離のほうが,通過コストの高い短い距離よりも優先される場合があることです。思わぬ結果につながる場合があり,キャラクターが暗い通りを少し遠くて明るい経路より優先してしまうかもしれません。しかし動作は “合理的” であっても現実的でない場合もあるでしょう。道路の通過コストを下げることで車が優先して選択させることが出来ますが,ヘアピンカーブをさけるために家の敷地を通るのはおかしいでしょう。コストを慎重に設定してテストすることが必要な場合がありレベルを設計しなおすたほうが複雑にナビメッシュのコストで混乱するほうが良い場合もあります。
状況によってはマップの大部分が “普通” で,いくつかのエリアを通過すると有利な場面があります。例えば,動く歩道または斜面を使用するほうが同じ距離を歩くより優先する場合があります。コストをより低く設定するのでも問題ありませんが,負の値を使用すべきではありません。エージェントは最も低いコストの経路を探索するため,負の値があるとそのエリアを通過するたびにコストが減少するため彷徨うかもしれません。もしゲームの大部分が普通のマップで僅かに有利なマップを用意したい場合には普通のレイヤーを 1 より大きい値を使用して “有利な” レイヤーに低い値を使用すべきです。
経路のコストは曖昧な概念であり,要素は様々あるかもしれませんが,使用例としては次のような場合があります: