【UNITY】[NavMesh 1] 障害物をよけて目的地まで進むには
![](https://digilab.tech/materials/wp-content/uploads/2018/06/Create@2x.png)
![](https://digilab.tech/materials/wp-content/uploads/2018/07/スクリーンショット-2018-07-12-19.52.00.png)
キャラクターを経路に沿わせて移動させたり、障害物を避けながら目的地に移動させるには「NavMesh」を使うと便利です。今回は「NavMesh」(ナビメッシュ)の使い方を説明していきます。
地面の追加
1.Hierarchy>Create>Planeで経路を作ります。
2.Hierarchy>Create>Capsuleでキャラクターの代わりを作成します。
![](https://digilab.tech/materials/wp-content/uploads/2018/07/A02.png)
→のように配置できましたか?オリジナルのマップをつくっても大丈夫です。
![](https://digilab.tech/materials/wp-content/uploads/2018/07/A03.png)
マップに動けるエリア(NavMesh)を指定する
キャラクターが歩くことのできるエリア(NavMesh)を作っていきます。※青く表示されているところが歩くことが可能なエリアです。
![](https://digilab.tech/materials/wp-content/uploads/2018/07/A04.png)
歩かせたいオブジェクトすべてを選択します。ここでは3つのPlaneを選択します。
![](https://digilab.tech/materials/wp-content/uploads/2018/07/A05.png)
オブジェクトのNavigationに設定する
選択した状態で、Navigationタブ > Object を表示させて、「Navigation Static」にチェックをいれます。また、「Navigation Area」がWalkable(歩行可能)になっているかどうがを確認します。
NavMeshを作成(ベイク)する
![](https://digilab.tech/materials/wp-content/uploads/2018/07/more@2x.png)
NavMeshのBake時の各項目の説明です。項目の値を変えたらその都度「Bake」ボタンをクリックしてNavMeshの再構成が必要です。
NavMeshを使うキャラクターの設定
![](https://digilab.tech/materials/wp-content/uploads/2018/07/more@2x.png)
NavMeshのBake時の各項目の説明です。項目の値を変えたらその都度「Bake」ボタンをクリックしてNavMeshの再構成が必要です。
![](https://digilab.tech/materials/wp-content/uploads/2018/06/Coding@2x.png)
マウスでクリックした座標にキャラクターが進むようにスクリプトを設定します。
1.キャラクターにアタッチしたNavMeshAgentを取得
2.マウスでクリックしたゲーム上の座標を取得
3.キャラクター(Agent)を座標まで移動させる
応用
オリジナルの経路を作ってNavMesh作成になれよう。角度や段差のある3Dオブジェクトを作るとNavMeshの挙動をよく理解できるはずだ。
BlenderなどのモデリングソフトやUnityでオリジナル経路を作成してみよう。
![](https://digilab.tech/materials/wp-content/uploads/2018/07/A_main.png)
![](https://digilab.tech/materials/wp-content/uploads/2018/06/Point@2x.png)
今回マウスでクリックした位置を算出するのにRayCastを使っている。そのためオリジナル3Dモデルを使った場合、必ずColliderを追加しよう。Colliderがないと座標が割り出せなくてキャラクターは動かないよ。