投稿

1月, 2014の投稿を表示しています

[Unity]ナビメッシュでの経路探索の使い方と注意点

イメージ
Unity で簡単に経路探索を実装するにはナビメッシュが便利です。 今回は、基本的な使い方と、使ってみた上での注意点などを書いていきます。 基本 ナビメッシュを使うと、こんな感じで障害物を避けて目的地まで移動させることができます。 (日本語マニュアル) ナビメッシュおよび経路探索 - Unity Manual (英語マニュアル) Unity - Navigation Meshes 現時点で日本語マニュアル(ちょっと古い?)には Pro のみと書いてありますが、英語マニュアルには書いていないので使えるみたいです。 (多分。英語でもページによって Pro only と書いてあったりします。  Unity - Pathfinding  とか  Unity - NavMesh Layers  とか。Free 版での動作は未確認。) とりあえず移動させるだけなら シーンに床や障害物を置く それらを Navigation Static にする(インスペクタ右上。Static チェックで OK、下三角マークで詳細) メニュー -> Window -> Navigation -> Bake タブ -> Bake ボタンで通れる場所を焼き込み 移動させたいオブジェクトに NavMeshAgent コンポーネントをつける 自前のスクリプトで、移動させたいオブジェクトの NavMeshAgent を取得して目的地を  SetDestination  で指定する と簡単です。 さらに、 メッシュ上は離れてしまっている経路を結ぶ オフメッシュリンク - Unity Manual 地形ごとの移動コストを設定する(川は渡れるけど好まない等) ナビメッシュレイヤー - Unity Manual 固定でない障害物を避けて移動する(人や自動ドアなど) ナビメッシュ障害物 - Unity Manual といったこともできます。 注意点 ここから注意点などです。 微調整が効かない Bake したナビメッシュ自体の手動調整はできません Bake 時の設定やナビメッシュレイヤー、Navigation Static のオンオフ、果てはオブジェクト自体の位置を微調