読者です 読者をやめる 読者になる 読者になる

渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きく慣れるように。。。 ※所属団体とは一切関係がありません

Unity NavMesh始めました


f:id:esakun:20150730215258g:plain

環境

  • Unity5.5.0p4

Unityを始めて早3年。
今まで一度も NavMesh を使ったことがなかったので、とりあえず触ってみるという記事です。

NavMeshとはナビゲーション情報をメッシュに書き込んだメッシュで、それを使って知的に動くキャラクターを作成したり、経路探索が出来るようになります。

今回はプレーヤーが障害物を避けてゴールまで辿り着くという、最小限の構成でNavMeshを使ってみるということに焦点を合わせています。

まずはリファレンスを見ながらやってみます。
↑この辺りを参考にいたしました。

1.NavMeshの準備

NavMeshを生成するためのステージを作ります。

f:id:esakun:20170120161627p:plain

  • 地面
  • 障害物
  • プレーヤー
  • ゴール

このようなシンプルな4つのGameObject構成です。

プレーヤーがゴールを目指して動くわけですが、障害物に当たあらないように設定をします。

2.NavMeshの設定

f:id:esakun:20170120161821p:plain

メニュー > Window > Navigation でNavigationウィンドウを表示させ、Objectタブをクリックします。

地面のGameObject(Ground)を選択します。

Object, Bake, Areasと3種のタブからObjectをクリックします。

Navigation Staticチェックボックスにチェックを入れ、Navigation Areaプルダウン からWalkableを選びます。

f:id:esakun:20170120161525p:plain

次に障害物GameObject(Obstacle)を選択し、同様にNavigation Staticチェックボックスにチェックを入れます。Navigation Areaプルダウン ではNot Walkableを選びます。

3.設定情報を元にNavMesh生成

f:id:esakun:20170120162009p:plain

BakeボタンをクリックしてNavMeshを生成します。

f:id:esakun:20170120162030p:plain

シーンビューで確認するとナビゲーション用の水色のメッシュが生成されます。青い部分が移動可能な範囲ということになります。

経路探索動作確認

f:id:esakun:20170120165153p:plain

このようにPlayerのGameobjectに NavMeshAgentコンポーネントをアタッチしておきます。 リファレンスをサラ読みする限り、この NavMeshAgentコンポーネントがプレーヤーの挙動を調整するもののようです。
※本記事では割愛します。

そして下記のNavMeshPlayerコンポーネントもアタッチしgoal変数にゴールのGameObjectを割り当てて再生します。

gist.github.com

f:id:esakun:20170120162623g:plain

するとこのように、障害物を迂回してプレーヤーがゴールに辿り着くようになりました。

今回は最小構成のNavMeshを実装してみました。

  • Bake部分
  • NavMeshAgent

結構細かく設定ができそうな感じなので次回はその辺を深掘って行ければと思います

あわせてどうぞ

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info