NavMeshを今さら勉強したお話
先日読み進めていたお本にてNavMeshの項目があった。以前のUnity1weekでもNavMeshを使ったゲームがあり、面白そうだなと思っていたのでこの機会に勉強するぞい
↓ めちゃんこ参考にさせて頂いたサイトなど
docs.unity3d.com
www.youtube.com
www.urablog.xyz
NavMeshってなんぞ?
Unity標準のナビゲーションシステムで経路探索をしてキャラクターを目的地まで移動させることができるなんかすごいやつ。障害物を設定したりもできるぞ!
主に経路探索(NavMesh)とキャラクターの移動(Agent)の2つの機能の組み合わせでつくるみたいだ。
物は試しということで触ってみる
Window → AI → NavigationでNavigationウィンドウを開きます
色々設定できるプロパティはあるんですが詳しくは公式のドキュメントを見ましょう。画面右下のベイクを押してみます。
すると青色のオーバーレイとして進行できる領域が表示されました!
オブジェクトがこのベイキング処理に含まれるようにするにはオブジェクトをNavigation Staticにする必要があります。↓のどちらかの方法で設定しましょう。
目的地へ移動させる
実際にオブジェクトを動かすにはNavMeshAgentコンポーネントをつける必要があります。今回は黄色いボールをプレイヤーとしてAgentをつけ、ゴールのシリンダーまで動かしてみよう。
プレイヤーオブジェクトにNavMeshAgentコンポーネントとPlayerControllerをアタッチ。これはAgentに目的地の座標を指定する必要があるため。
PlayerControllerのスクリプトはこちら。至ってシンプル。
using UnityEngine; using UnityEngine.AI; public class PlayerController : MonoBehaviour { [SerializeField] private Transform target; void Start() { NavMeshAgent agent = GetComponent<NavMeshAgent>(); agent.destination = target.position; } }
これで準備はオッケー。動かしてみよう!
~たぶん続く~