こんにちは、エンジニアのオオバです。
Unityを始めて早3年。
今まで一度も NavMesh
を使ったことがなかったので、とりあえず触ってみるという記事です。
NavMeshとはナビゲーション情報をメッシュに書き込んだメッシュで、それを使って知的に動くキャラクターを作成したり、経路探索が出来るようになります。
今回はプレーヤーが障害物を避けてゴールまで辿り着くという、最小限の構成でNavMeshを使ってみるということに焦点を合わせています。
まずはリファレンスを見ながらやってみます。
ナビメッシュの作成 - Unity マニュアル
↑この辺りを参考にいたしました。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
1.NavMeshの準備
NavMeshを生成するためのステージを作ります。
- 地面
- 障害物
- プレーヤー
- ゴール
このようなシンプルな4つのGameObject構成です。
プレーヤーがゴールを目指して動くわけですが、障害物に当たあらないように設定をします。
2.NavMeshの設定
メニュー > Window > Navigation
でNavigationウィンドウを表示させ、Objectタブをクリックします。
地面のGameObject(Ground)を選択します。
Object
, Bake
, Areas
と3種のタブからObject
をクリックします。
Navigation Static
チェックボックスにチェックを入れ、Navigation Areaプルダウン
からWalkableを選びます。
次に障害物GameObject(Obstacle)を選択し、同様にNavigation Static
チェックボックスにチェックを入れます。Navigation Areaプルダウン
ではNot Walkableを選びます。
3.設定情報を元にNavMesh生成
Bakeボタン
をクリックしてNavMeshを生成します。
シーンビューで確認するとナビゲーション用の水色のメッシュ
が生成されます。青い部分が移動可能な範囲ということになります。
経路探索動作確認
このようにPlayerのGameobjectに NavMeshAgentコンポーネントを
アタッチしておきます。
リファレンスをサラ読みする限り、この NavMeshAgentコンポーネント
がプレーヤーの挙動を調整するもののようです。
そして下記のNavMeshPlayerコンポーネントもアタッチしgoal変数にゴールのGameObjectを割り当てて再生します。
するとこのように、障害物を迂回してプレーヤーがゴールに辿り着くようになりました。
今回は最小構成のNavMeshを実装してみました。
- Bake部分
- NavMeshAgent
結構細かく設定ができそうな感じなので次回はその辺を深掘って行ければと思います
この記事が気に入ったらフォローしよう
- Unity5.5.0p4