[27]ボーナスコインBOXを作る

下から突き上げると、コインが何枚も出てくる箱を作ってみます。

今回の「ロジック(考え方)」はこうです。

・ボールと箱が「ぶつかる」たびにコインを発生させる。

・コインが発生した瞬間に音を出す。

・発生したコインはまたすぐに消えるようにする。

では、まずはスクリプトから作成しましょう。

(1)スクリプトの作成

・C#スプリプトを1つ作成しましょう。

・名前は「CoinBox」に変えておきます。

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

*コードの意味を考えながら書いてみましょう!

using UnityEngine;
using System.Collections;

public class CoinBox : MonoBehaviour {

	// ★変数の定義
	public GameObject coinPrefab;
	public AudioClip coinSound;
	public float coinSpeed;


	// ★命令ブロック
	void OnCollisionEnter(Collision col){
		if(col.gameObject.CompareTag("Player")){

			// 新たにコインを発生させる。
			GameObject coin = Instantiate(coinPrefab, transform.position, Quaternion.Euler(90,0,0)) as GameObject;
			Rigidbody coinRigidbody = coin.GetComponent<Rigidbody>();
			coinRigidbody.AddForce(new Vector3(0,1,0) * coinSpeed);

			// 効果音を発生させる。
			AudioSource.PlayClipAtPoint(coinSound, transform.position);

			// 発生したコインを削除する。
			Destroy(coin, 0.2f);
		}
	}
}

・スクリプトが作成できたらいつものようにチェック!

次に、スクリプトをくっつけるオブジェクトを作成します。

(2)オブジェクトの作成

・「Hierarchy」で「cube」オブジェクトを1つ作成してください。

・名前は「CoinBox」に変えましょう。

*「色」や「大きさ」は自分の好きなように設定してください。

・オブジェクトが作成できたら、これに「CoinBox」スクリプトをドラッグ&ドロップしましょう。

スクリーンショット 2016-04-15 14.08.49

「Coin Sound」(コインが発生した時になる音「Coin Speed」(コインが発生する時のスピード)は自分の好みで設定しましょう。

・あとは「Coin Prefab」が空欄で残っていますので、ここに入れる物を次に作成します。

(3)CoinPrefabを作成する。

(復習)「Hierarchy」で新しくコインオブジェクトを1つ作成しましょう。

・名前は「Coin2」に変更しておきます。

・「Coin2」の「Inspector」の中を見て、

「Capsule Collider」のチェックを外しましょう。

「Rigidbody」のコンポーネントを加えてください。

スクリーンショット 2016-04-15 14.22.04

・ここまで出来たら、「Coin2」オブジェクトを「Prefab」フォルダの中にドラッグ&ドロップしましょう。

スクリーンショット 2016-04-15 14.18.57

これで「Coin2」プレファブの完成です。

画面にある「Coin2」オブジェクトは「Delete」で削除しておきましょう。

「CoinBox」オブジェクトを選択→「Coin Prefab」の空欄に、「Coin2」プレファブをドラッグ&ドロップして設定しましょう。

スクリーンショット 2016-04-15 14.34.32

これで準備完了です。

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

ボールで箱を下から突き上げると、そのたびに

*コインが発生。音が鳴る。コインが消える。

これが全て出来ていたら成功です。

(ポイント)

コインが上に飛び出さないで下に落ちる場合には、下記の場所の「真ん中の数字」「20」に変えてみましょう。

スクリーンショット 2016-06-22 19.06.06