(14)敵を作る③(サーチ機能で発見したら発射)

「2種類目の敵」を作ります。

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

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

*ここでは「EnemyB」という名前をつけています。

*この敵にも「EnemyShotShell」オブジェクトを「子供として付けて」おいてください。名前は「EnemyShotShell2」に変更しましょう。


今回は「プレーヤーが攻撃範囲内に入ったら感知する機能(サーチ機能)」を作ります。

そして、「サーチ機能でプレーヤーを発見したら砲弾を発射」するようにします。

発想としては、これまで何度も登場してきた「OnTrigger系」のメソッドを使えば実現できます。

(重要ポイント)

「当たり判定」を行うためには、「それぞれのオブジェクト」に「Collider」(コライダー)のコンポーネント(機能)が付いている必要があります。


1)Box Colliderを付ける。

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

「Add Component」を使って、「EnemyShotShell2」オブジェクトに「Box Collider」を加えてください。

・Box Colliderの「Center」「Size」を調整して、前方に長細い長方形の枠を作りましょう。

「この枠にプレーヤーが触れたら砲弾を発射する仕組み」となります。

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

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

次はスクリプトを作成します。


2)EnemyShotShell2スクリプトの作成

「C# Script」を1つ作成。

・名前は「EnemyShotShell2」に変更してください。

・ダブルクリックして、下記のコードを記載しましょう。

using UnityEngine;
using System.Collections;

public class EnemyShotShell2 : MonoBehaviour {

	// 変数を定義する(データを入れるための箱を作る)
	public GameObject enemyShellPrefab;
	public float shotSpeed;
	public AudioClip shotSound;
	private int timeCount = 0;


	void Update () {

		timeCount += 1;
	}

	// 「OnTriggerStay」になっているのがポイント!
	void OnTriggerStay(Collider other){
		if(other.gameObject.CompareTag("Player")){

			if(timeCount % 20 == 0){
				EnemyShot();

				AudioSource.PlayClipAtPoint(shotSound, transform.position);
			}
		}
	}

	void EnemyShot(){

		GameObject enemyShell = (GameObject)Instantiate(enemyShellPrefab, transform.position, Quaternion.identity);

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

		enemyShellRigidbody.AddForce(transform.forward * shotSpeed);

		Destroy(enemyShell, 1.0f);
	}
}

(重要ポイント)

「OnTriggerEnter()」メソッドは、Collider同士が「触れた瞬間に」実行するものです。

「OnTriggerStay()」メソッドは、Collider同士が「触れている間ずっと」実行するものです。

「%」「割った余り」という意味です。

「==」「左右が等しい」という意味です。

(考えてみよう!)

*では、今回の「timeCount % 20 == 0」はどういう意味でしょうか?


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

「EnemyShotShell2」オブジェクトにドラッグ&ドロップしましょう。

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

*「Enemy Shell Prefab」等を設定しておきましょう。

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


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

プレーヤーを敵に近づけてください。

敵の攻撃範囲内に入った時「敵の攻撃」が始まったら成功です。

*(注意!)

・Tank(プレーヤー)に「Player」タグが付いているか確認しましょう。

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

ここまでで2種類の敵が完成しました。

1種類目の敵=>一定時間ごとに砲弾を自動発射

2種類目の敵=>プレーヤーが攻撃範囲内に入ったら砲弾を発射

これらの敵を自分の世界の中に自由に配置しましょう。