[7]コインをゲットしよう

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

・2つのオブジェクトが「ぶつかった」ときの処理方法

・「音」を出す方法。

・タグ(Tag)を設定する方法

(1)オブジェクトがぶつかった時のコード

・前回書いた「Ballスクリプト」をダブルクリックしましょう。

・下記のお手本通りにコードを追加してみましょう。(★印の部分)

*「public」で定義したものは、後で「Inspector」で操作することができます。

using UnityEngine;
using System.Collections;

public class Ball : MonoBehaviour {


	public float move_speed;
	private Rigidbody rb;

	// ★↓この一行を追加(変数の定義)
	public AudioClip coinGet;


	// Use this for initialization
	void Start () {

		rb = GetComponent<Rigidbody>();

	}

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

		float moveHorizontal = Input.GetAxis("Horizontal");
		float moveVertical = Input.GetAxis("Vertical");

		Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
		rb.AddForce(movement * move_speed);
	}

	// ★↓下記のメソッド(命令ブロック)を追加
	void OnTriggerEnter(Collider other){

		if(other.CompareTag("Coin")){
			Destroy(other.gameObject);

			AudioSource.PlayClipAtPoint(coinGet, transform.position);
		}
	}
	// ここまで
}

(ここがポイント!)

・大文字、小文字に注意しよう。

・「OnTriggerEnter」=>「On」と「Trigger」と「Enter」の3つの単語の先頭は全部大文字

{}は必ずセットと覚えておこう。

・「始まりの波カッコ{」と「終わりの波カッコ}」がセットになっていないとエラーになる!

・コードを新しく追加したら、必ず「セーブ」すること。

(コードを読んでみよう!)

「OnTriggerEnter」は、他のオブジェクトと「ぶつかった時」に呼び出される命令ブロックです。

「if」(イフ)は、「もしも〜」という意味です。「もしも、ある条件が揃ったとき、あることを実行する。」という具合に使います。

・if(ここに書いた条件が揃ったら){
ここに書いてあることを実行する
}
・今回の場合は、

「もしも、ぶつかったオブジェクトのTagにCoinという名前が書いてあったら、」(条件)

「ぶつかったオブジェクトを破壊する」(実行すること1)

「その場でcoinGetの音を出す」(実行すること2)

となります。

(2)Tag(タグ)の設定方法

では、「Tag(タグ)」を設定しましょう。

今回は、「Coinオブジェクト」に「Coin」という名前の「Tag」を設定します。

・「Hierarchy」で「Coin」を選択

・「Inspector」で「Tag Untagged」をクリック

スクリーンショット 2015-10-15 14.56.55

・「Add Tag….」をクリック

スクリーンショット 2015-10-15 14.59.04

・「+」をクリック

スクリーンショット 2015-10-15 15.00.57

・Tagに名前をつける・・・>今回は「Coin」。大文字、小文字に注意しよう。

・これで「Coin」という名前のTagが「登録」されました。

スクリーンショット 2015-10-15 15.03.06

・もう一度、「Hierarchy」で「Coin」を選択して「Tag Untagged」をクリック

・「Coin」を選択してクリック

スクリーンショット 2015-10-15 15.06.22

・これで「Coin」という名前のタグの設定が完了しました。

スクリーンショット 2015-10-15 15.06.26

(ここがポイント!)

・最後に、「is Trigger」にチェックを入れましょう。

「OnTrigger」系の命令ブロックは、「is Trigger」にチェックを入れることで実行されるようになります。

スクリーンショット 2015-10-15 15.13.33

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

Ballを矢印で動かして、Coinとぶつけてみてください。

ぶつかった時に、Coinが消えたら成功です。

(3)効果音の設定方法

次は、音を出してみましょう。

BallがCoinとぶつかった時に、効果音を出すようにします。

・まずはUnityのAssetsの中に「音データ」を「インポート」します。

「Assets」「右クリック」してください。

「Import New Asset….」を選択してクリック。これでパソコン内にある「音データ」をUnityの中にインポート(取り込む)ことができます。

スクリーンショット 2015-10-15 15.27.06

・今回は「coin_get」という名前の音データをUnityにインポートしました。

スクリーンショット 2015-10-15 15.31.54

・「Hierarchy」で「Ball」を選択

・インポートした音データを「Coin get」にドラッグ&ドロップする。

スクリーンショット 2015-10-15 15.34.46

・これで「効果音」の設定は完了です。

スクリーンショット 2015-10-15 15.37.24

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

BallとCoinがぶつかった瞬間に「効果音」が鳴れば成功です。

(4)BGMの設定方法

せっかくなので、今度は、BGMも鳴らしてみましょう。

*今回は「Main Camera」にBGMを再生する機能を追加します。(Main Camera以外に追加しても構いませんが、常時画面上に存在するオブジェクトにしておくのがポイントです。)

*効果音と同じ要領で、事前に使いたい音源を「Import New Asset….」でインポートしておきましょう。

・まず「Hierarchy」の「Main Camera」を選択した状態で、

・「Add Component」をクリック。

・次に「Audio」をクリック。

スクリーンショット 2015-10-15 15.42.36

「Audio Source」をクリック。

スクリーンショット 2015-10-15 15.44.29

・「Main Camera」に「Audio Source」の機能が追加されたことを確認する。

スクリーンショット 2015-10-15 15.46.09

・インポートしておいたBGM用の音データを「Audio Clip」にドラッグ&ドロップする。

スクリーンショット 2015-10-15 15.49.07

・最後に「Loop」にチェックを入れる。ここにチェックを入れることで、BGMが無限にループ再生されるようになります。

スクリーンショット 2015-10-15 15.51.22

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

ゲームスタートと同時にBGMが鳴りだしたら成功です。