Unity5学習の際の覚え書き。

Navigationを使えば簡単にできるらしい。

NavMeshを設定する

Navigation機能を使うには、床や壁などの地形をゲーム中に移動しないものとして指定し、移動できる範囲を事前に計算して、NavMeshとして保存することが必要。

1. Navigation Staticを指定する

1. 床や壁などをcommandを押しながら複数選択する。
2. インスペクターの右上にある「Static」と表示してあるラベルの右側の「▼」を押して、「Navigation Static」を選択する。
※この際、子を含んでいるゲームオブジェクトを選択していた場合、「Change Static Flags」というダイアログが表示される。
 子にも「Navigation Static」を適用する場合は「Yes, change children」を選択する。

2. Navigationビューを表示する

Window -> navigation

3. NavMeshを作成する

Navigationビューの右下の「Bake」ボタンをクリックして、NavMeshを作成する。
Navigationビューを開いている状態でSceneビューを見ると、移動できる範囲が薄い水色で覆われている。

作成したNavMeshは、シーンファイルがある場所に、シーン名フォルダが作成され、その中に「NavMesh.asset」という名前でファイルとして保存されている。

※NavMeshの更新

NavMeshの作成に使用されるのは、Navigation Staticが設定されているゲームオブジェクトだけが対象。
また、「Bake」ボタンをクリックした時の状態が保存されている。
よって、壁などのゲームオブジェクトを新しく追加したり移動したりした場合は、再度「Bake」ボタンをクリックしてNavMeshを更新する必要がある。

NavMeshAgentを設定する

1. NavMeshAgentコンポーネントを追加する

移動できる範囲を表したのがNavMesh。
そのNavMeshに沿って移動するためのコンポーネントがNavMeshAgent。
NavMesh上を動かしたいゲームオブジェクトに対して、NavMeshAgentコンポーネントを追加する。

ゲームオブジェクトを選択 -> Component -> Navigation -> Nav Mesh Agent

2. スクリプトを作成する

public class Enemy : MonoBehaviour {

	// targetには、Unity画面から追いかけたい対象のゲームオブジェクトを設定する
	public GameObject target;
	NavMeshAgent agent;
	Animator animator;

	void Start () {
		agent = GetComponent<NavMeshAgent> ();
		animator = GetComponentInChildren<Animator> ();
	}
	
	void Update () {
		// NavmeshAgentのdestinationに位置を設定すれば、自動的にその位置に向かって移動するようになる。
		agent.destination = target.transform.position;
		animator.SetFloat ("Speed", agent.velocity.magnitude);
	}
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】
Wiki記法ガイド

リンク

ゲームバー大阪心斎橋

ゲームバー大阪梅田

ゲームバー大阪心斎橋

ダーツ&ダイニングバー大阪梅田

メニュー

Unity


スマホ操作

Unity - GameObject

Unity - 3DCG

メンバーのみ編集できます