(23)敵を破壊するとランダムにアイテムが出現する

敵を破壊すると各種アイテムをゲットできる機能を作ります。

1)アイテムをプレファブ化する

まずは全てのアイテムを「プレファブ化(製造工場)」しましょう。

「何かの条件」が揃った時に、「この工場からアイテムを作成する」というのが仕組みです。

スクリーンショット 2016-04-28 14.08.48

2)ランダムにアイテムを作るスクリプトの作成

・今回は、「敵を破壊するとアイテムが画面に出現する。」

・しかも、「ランダムに出現する。」

という仕組みを作っていきます。

「EnemyHealth」スクリプトをダブルクリックしましょう。

・そこに下記のコードを追加してください(★★★の部分)

(ポイント)

今回は「配列」というものを使います。

これは、「複数のデータ」を入れることのできる「仕切りの付の箱」をイメージしましょう。

using UnityEngine;
using System.Collections;

public class EnemyHealth : MonoBehaviour {

	public GameObject effectPrefab1;
	public GameObject effectPrefab2;
	public int enemyHP;

	// ★★★配列の定義(複数のデータを入れるための箱を作る)
	public GameObject[] ItemPrefab;


	public void OnTriggerEnter(Collider other){
		if(other.CompareTag("Shell")){
			enemyHP -= 1;

			Destroy(other.gameObject);

			if(enemyHP > 0){
				GameObject effect1 = Instantiate(effectPrefab1, transform.position, Quaternion.identity) as GameObject;

				Destroy(effect1, 1.0f);
			} else {
				GameObject effect2 = Instantiate(effectPrefab2, transform.position, Quaternion.identity) as GameObject;

				Destroy(effect2, 1.0f);

				Destroy(gameObject);

				// ★★★敵が破壊された瞬間にプレファブからアイテムをランダムに作成する。
				// まずはランダム機能の実装
				GameObject dropItem = ItemPrefab[Random.Range(0,ItemPrefab.Length)];

				// ★★★アイテムの出現位置を調整する(少し上に出現させる)
				Vector3 pos = transform.position;
				pos.y = 0.5f;
				transform.position = pos;

				// ★★★アイテムを出現させる
				Instantiate(dropItem, transform.position, Quaternion.identity);
			}
		}
	}
}

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

「Item Prefab」をクリックして開く。

スクリーンショット 2016-05-24 13.30.22

・「Size」「3」を入れてリターンキーで確定

スクリーンショット 2016-05-24 13.30.32

・「Element0」「Element1」「Element2」に「各種アイテムのプレファブ」をドラッグ&ドロップで設定する。

スクリーンショット 2016-05-24 13.30.50

・全ての敵に同じように設定しましょう。

・ここまでできたら「再生ボタン」を押して敵を破壊してください。

・破壊した時に、ランダムにアイテムが出現したら成功です。