(今回はこんなことを学びます)
・ある物体と他の物体が「ぶつかった」ときの処理方法
・「音」を出す方法。
・タグ(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がぶつかった瞬間に「効果音」が鳴れば成功です。