(今回はこんなことを学びます)
・ある物体と他の物体が「ぶつかった」ときの処理方法
・「音」を出す方法。
・タグ(Tag)を設定する方法
・「Ballスクリプト」をダブルクリックしましょう。
・下記のお手本通りにコードを「追加」してみましょう。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Ball : MonoBehaviour { public float speed; private Rigidbody rb; // ★追加 public AudioClip sound; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { float moveH = Input.GetAxis("Horizontal"); float moveV = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveH, 0, moveV); rb.AddForce(movement * speed); } // ★追加 private void OnTriggerEnter(Collider other) { if(other.CompareTag("Coin")) { Destroy(other.gameObject); AudioSource.PlayClipAtPoint(sound, transform.position); } } }
(復習!)
*「public」に記載したものは、後で「Inspector」で操作することができます。
(ここに注意しよう!)
・大文字、小文字に注意しよう。
・「OnTriggerEnter」=>「On」と「Trigger」と「Enter」の3つの単語の先頭は全部大文字!
・{}は必ずセットと覚えておこう。
・「始まり{」と「終わり}」がセットになっていないとエラーになる!
・コードを新しく追加したら、必ず「セーブ」すること。
(コードを読んでみよう!)
・「OnTriggerEnter」は、他の物体と「ぶつかった時」に呼び出される命令ブロックです。
・「if」(読み方;イフ)は、「もしも〜」という意味です。「もしも、ある条件が揃ったとき、あることを実行する。」という具合に使います。
・if(ここに書いた条件が揃ったら){
ここに書いてあることを実行する
}
・今回の場合は、
「もしも、ぶつかった相手(物体)のタグにCoinという名前が書いてあったら、」(条件)
「ぶつかった相手(物体)を破壊する」(実行すること1)
「音を出す」(実行すること2)
となります。
(タグの設定方法)
では、「タグ」を設定しましょう。
今回は、Coin(物体)に「Coin」という名前の「タグ(Tag)」を設定します。
・「Hierarchy」で「Coin」を選択して、「Untagged」をクリック
・「Add Tag….」をクリック
・「+」をクリック
・Tagに名前をつけてSaveを押す・・・>今回は「Coin」。大文字、小文字に注意しよう。
・もう一度、「Hierarchy」で「Coin」を選択して「Untagged」をクリック
・「Coin」を選択してクリック
・これで「Coin」という名前のタグの設定が完了しました。
(ここがポイント!)
・最後に、「Is Trigger」にチェックを入れる。
・「OnTriggerEnter」の命令ブロックを書いた場合には、必ず「Is Trigger」にチェックを入れること。
ここまでできたら「再生ボタン」を押して実行してみましょう。
Ballを矢印で動かして、Coinとぶつけてみてください。
ぶつかった瞬間に、Coinが消えたら成功です。
↓
(効果音の設定方法)
次は、音を出してみましょう。
BallがCoinとぶつかった時に、効果音を出すようにします。
・まずは「Assets」の余白で右クリックしてください。
・「Import New Asset….」を選択してクリック。これでパソコン内にある「音データ」をUnityの中にインポート(コピーする)ことができます。
・今回は「CoinGet」という名前の音データをUnityにインポートしました。
*音は自由です。
・Ballオブジェクトを選択
・インポートした音データを「Sound」の空欄にドラッグ&ドロップする。
・これで「効果音」の設定は完了です。
「再生ボタン」を押して実行してみましょう。
BallとCoinがぶつかった瞬間に「効果音」が鳴れば成功です。