(15)敵を作る④(サーチ機能で発見したらプレーヤーの方を向いて発射)

次は、「3種類目の敵」を作成します。

*オブジェクトで自分の好きなように3種類目の敵を作りましょう。

スクリーンショット 2016-07-08 12.57.37

*この敵に「EnemyShotShell3」オブジェクトを「子供として付けて」おいてください。

スクリーンショット 2016-07-08 12.59.37*2種類目の敵をコピーして、必要な箇所を修正してもいいです。

今度は、「サーチ機能でプレーヤーを発見したら、プレーヤーの方向に向いて砲弾を発射」するようにします。

これによって、プレーヤーが背後から近づいて来た場合でも攻撃できるようになります。

1)「Sphere Collider」を付ける。

・今度は「EnemyShotShell3」オブジェクトに「Sphere Collider」を付けます。(*Box Colliderが付いている人は、「Remove Component」で外しておきましょう。)

スクリーンショット 2016-07-08 13.02.16

「Radius」の数字を変えてみましょう。

「Radius」とは「半径」という意味です。この数字を大きくすると「円」の大きさが広がり、より「遠く」のプレーヤーまで察知できるようになります。

「Is Trigger」にもチェックを入れておきましょう。

スクリーンショット 2016-07-08 13.02.17

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

・C#スクリプトを1つ作成。

・名前を「EnemyShotshell3」に変更。

・この中に下記コードを記載してください。

using UnityEngine;
using System.Collections;

public class EnemyShotShell3 : MonoBehaviour {

	public GameObject enemyShellPrefab;
	public float shotSpeed;
	public AudioClip shotSound;
	private int count = 0;

	// 親のデータを入れるための箱を作る
	private GameObject parent;

	// ターゲットの位置情報を入れるための箱を作る
	public Transform target;


	void Update () {

		count += 1;

	}

	void OnTriggerStay(Collider other){
		if(other.gameObject.CompareTag("Player")){

			// 親の情報を「parent」という箱の中に入れる。
			parent = transform.root.gameObject;

			// 親をターゲットの方向に向かせる
			parent.transform.LookAt(target);

			if(count % 10 == 0){
				GameObject enemyShell = Instantiate(enemyShellPrefab, transform.position, Quaternion.identity) as GameObject;

				Rigidbody enemyShellRigidbody = enemyShell.GetComponent<Rigidbody>();

				enemyShellRigidbody.AddForce(transform.forward * shotSpeed);

				AudioSource.PlayClipAtPoint(shotSound, transform.position);

				Destroy(enemyShell, 1.0f);
			}
		}
	}
}

・コードが書けたらチェック。

・スクリプトを「EnemyShotshell3」オブジェクトにドラッグ&ドロップする。

・「Target」欄には「Tank」オブジェクトをドラッグ&ドロップ

スクリーンショット 2016-07-08 13.12.52

ここまでできたら再生ボタンを押してみましょう。

・適のサーチエリア内に入ったら、敵がプレーヤーの方向に向いて、攻撃を開始したら成功です。