下から突き上げると、コインが何枚も出てくる箱を作ってみます。
今回の「ロジック(考え方)」はこうです。
・ボールと箱が「ぶつかる」たびにコインを発生させる。
・コインが発生した瞬間に音を出す。
・発生したコインはまたすぐに消えるようにする。
では、まずはスクリプトから作成しましょう。
(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」スクリプトをドラッグ&ドロップしましょう。
・「Coin Sound」(コインが発生した時になる音)と「Coin Speed」(コインが発生する時のスピード)は自分の好みで設定しましょう。
・あとは「Coin Prefab」が空欄で残っていますので、ここに入れる物を次に作成します。
(3)CoinPrefabを作成する。
・(復習)「Hierarchy」で新しくコインオブジェクトを1つ作成しましょう。
・名前は「Coin2」に変更しておきます。
・「Coin2」の「Inspector」の中を見て、
↓
★「Capsule Collider」のチェックを外しましょう。
★「Rigidbody」のコンポーネントを加えてください。
・ここまで出来たら、「Coin2」オブジェクトを「Prefab」フォルダの中にドラッグ&ドロップしましょう。
これで「Coin2」プレファブの完成です。
画面にある「Coin2」オブジェクトは「Delete」で削除しておきましょう。
・「CoinBox」オブジェクトを選択→「Coin Prefab」の空欄に、「Coin2」プレファブをドラッグ&ドロップして設定しましょう。
これで準備完了です。
再生ボタンを押してみましょう。
ボールで箱を下から突き上げると、そのたびに
*コインが発生。音が鳴る。コインが消える。
これが全て出来ていたら成功です。
(ポイント)
コインが上に飛び出さないで下に落ちる場合には、下記の場所の「真ん中の数字」を「20」に変えてみましょう。