[13]追いかけてくる敵を作ろう

(今回はこんなことを学びます)

・敵が自動的に追いかけてくる機能の作成

「Nav Mesh Agent」について

(1)スクリプトを作成する

・まず、「Hierarchy」で「Create」→「3D Object」→「Sphere」で新たにオブジェクトを1つ作成してください。

・オブジェクトの名前は「Enemy」に変更しておきます。

・「大きさ」と「色」は自由に設定しましょう。

・「位置」はBallと離れた所にセットします。

・次に、「C# Script」を作成し、こちらの名前も「Enemy」に変更します。

・「Enemy」スクリプトには下記のコードを記載しましょう。

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {

	// ★変数を定義する(データを入れるための箱を作る)
	public GameObject target;
	private NavMeshAgent agent;

	// Use this for initialization
	void Start () {

		// ★定義した変数(箱)の中にデータを入れる
		agent = GetComponent<NavMeshAgent>();

	}

	// Update is called once per frame
	void Update () {

		// ★このコードを記載する
		agent.destination = target.transform.position;

	}
}

・スクリプトが作成できたら、「Hierarchy」の「Enemy」オブジェクトにドラッグ&ドロップします。

・「Enemy」オブジェクトを選択し、「Target」に「Ball」をセットします。

スクリーンショット 2015-10-16 1.04.13

(2)Nav Mesh Agentの設定

スクリプトの設定までは完了しましたが、まだこの段階では「再生ボタン」を押しても、敵はTarget(Ball)を追いかけません。

次に、「敵が移動できる場所の設定」「追いかける機能の追加」を行います。

(敵が移動できる場所の設定)

・「Hierarchy」で「Floor」オブジェクトを選択

・「Inspector」で「Static」にチェックを入れる。

スクリーンショット 2015-10-16 1.08.24

・「Floor」を選択した状態で「Window」をクリック。

「Navigation」を選択してクリック。

スクリーンショット 2015-10-16 1.10.51

「Bake」をクリック

スクリーンショット 2015-10-16 1.13.22

すると「Floor」の上に「ブルーで囲まれた部分」が出現します。

この部分が敵が移動できる場所となります。

スクリーンショット 2015-10-16 1.13.31

(追いかける機能の追加)

次に、敵に追いかける機能を追加します。

・「Hierarchy」で「Enemy」オブジェクトを選択

・「Inspector」で「Add Component」をクリック

「Navigation」を選択してクリック

スクリーンショット 2015-10-16 1.18.21

「Nav Mesh Agent」をクリック

スクリーンショット 2015-10-16 1.21.19

これで「Enemy」に追いかける機能が追加されました。

スクリーンショット 2015-10-16 1.23.09

・「再生ボタン」を押してみましょう。

EnemyがBallの方に寄ってくれば成功です。