【Unity】サクッとNavmeshを実装する手順


UnityでサクッとNavmeshを実装する手順


応用とか置いといて、Navmeshのスタートアップ(経路生成して、ゴールまでエージェントが自動で移動する)までの手順(よく忘れるので…。)

※ Unity 2019.3.11 を使用しています。

1.ステージを作ります


適当でOK

Navmesh_1

2.Navigationウィンドウを開きます


Window → AI → Navigation (バージョンによって違うかも)

Navmesh_2

3.ステージのオブジェクトをNavigation Staticに


子要素もまとめて変更できるようにゲームオブジェクトを階層化しておくと◎
離れてる足場があるならOff Mesh Link Generation も選択(むかしは無かった気がする…)

Navmesh_4

4.Bakeします


Navigationウィンドウの Bakeタブの「Bakeボタン」をポチー

Navmesh_3

これで経路情報の生成は完了(青と赤が生成された経路情報)
Navmesh_5

5.エージェントの作成その1


エージェントとは、経路情報を頼りに目的地まで移動するオブジェクト
作り方は適当なゲームオブジェクトを用意して Nav Mesh Agent コンポーネントを入れるだけ!(簡単)
※ エージェントは焼きこまれた経路情報しか信用してないので、コライダーとかガン無視して移動するから注意!

Navmesh_5

6.エージェントの作成その2


エージェントをゴールに向かって進ませるには、スクリプト(名前は適当)をアタッチして以下を記述。

 

using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour {

	public Transform goal;

	void Update() {
		NavMeshAgent agent = GetComponent<NavMeshAgent>();
		agent.destination = goal.position;
	}
}

goal変数には目的地にしたい任意のゲームオブジェクトをD&Dで紐づければOK

7.シーンを再生してみよう


エージェントは経路上に配置してシーンを再生してみよう。
目的地に向かって自動で進んでいけば成功だ!

8.(ちょっとだけ応用)Navmesh的障害物を置こう


エージェントは通常のコライダーとかガン無視しちゃうので、経路上に普通のCubeとか置いても意味なし!
エージェントを邪魔したければ Nav Mesh Obstacle コンポーネントを入れよう!

Navmesh_7

 

  • このエントリーをはてなブックマークに追加

PAGE TOP