【UNITY】[NAVMESH 2] ナビメッシュで障害物やジャンプポイントなどを設定する
障害物の作成
キャラクターがよけて通る場所(障害物)を作りっていこう。ここではCUBEを使って作ってみた。
CUBEにAdd Component > Nav Mesh Obstacle(ナビメッシュオブスタクル:ナビメッシュ障害物)を追加します。
その際にCarveにチェックを入れましょう。障害物周りの経路が正しくエージェントに認識されます。
段差の行けるいけないを調整する
こんどはどのくらいの段差まで通れるようにするかを調整しよう。
図だとこの階段は通れなくなっています。それでは階段ではないので通れるようにナビメッシュを調整していこう。
ナビメッシュの段差の調整
ナビメッシュで階段など、どのくらいの高さの段差まで通れるかを調整するのには「Step Height」(ステップハイ:段の高さ)を変更します。
1.「Step Height」の数値を変える
2. 「Bake」ボタンをおす
その他、NavMeshのBake時の各項目の説明です。項目の値を変えたらその都度「Bake」ボタンをクリックしてNavMeshの再構成が必要です。
うまく調整できると図のように階段も通れるようになるぞ。
ジャンプできる場所をつくる
ナビメッシュマップ内でジャンプさせたいときがあると思う。そんなときは「Off Mesh Link」コンポーネント を利用するといいぞ。
ジャンプして渡るための離れたNavMeshを作る
ジャンプして渡るような離れたNavMeshエリアを作りましょう。
1. Create > 3D Object > Plane で地面を作る。
2. 図ようにはなれた場所に移動する。
3. 追加したPlaneを選択し、Navigation > Object >「Navigation Static」をチェックする
4. Navigation > Bake >「Bake」ボタンをクリックする
追加したエリアもNavMeshに追加されればOKだ
1. ジャンプリンクのジャンプさせたい場所、着地させたい場所にそれぞれCylinderなどのオブジェクトを作る
2. 作ったCylinderひとつにAdd Component > Off Mesh Link を追加する
3. 作った「Off Mesh Link」のStart(始点)、End(終点)にそれぞれジャンプ場所と着地場所にあるCylinderを設定する
4. すると図のようにオフメッシュリンクが設定される
5. Cylinderは見えている必要がないため見えないようにする
各シリンダーの「Mesh Renderer」と「Capsule Collider 」のチェックを外しておこう
6. リンクの高さがあっていない場合は高さを調整しよう
図のようにリンクの黒い丸がしたすぎたり、もしくは上すぎたりしている場合はなおそう。キャラクタの行動がおかしくなるためだ。
調整すると図のように表示される
最後に再生してみて実際に渡れるかどうかをみよう
最後にリンクのあるところからしかジャンプできないためリンクは動きが不自然にならないように複数設置することをおすすめする。必要ならななめジャンプのリンクもつけるとより自然な動きになる