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