続いて、Destroyer.csを修正し、耐久力やSEなどを追加します。
Destroyer.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Destroyer : MonoBehaviour {
public int point; // 得点
public GameObject masterObj; // "Master"という名前のゲームオブジェクト用
public int initHp; // 耐久力の最大値 <- ここから
private int currentHp; // 耐久力の現在値
public AudioClip hitSE; // 破壊されない場合のSE
public AudioClip destroySE; // 破壊された場合のSE
void Start ()
{
// Boxの耐久力を初期化します。(現在値=最大値にする)
this.currentHp = initHp;
}
private void OnCollisionEnter(Collision collision)
{
// ボールが接触するたびに、耐久力を1ずつ減らします。
this.currentHp -= 1;
// 壊れる場合
if (this.currentHp <= 0)
{
// 破壊されるSEを再生
AudioSource.PlayClipAtPoint(DestroySE, transform.position);
// 残りのブロック数を1つ減らす
masterObj.GetComponent<GameMaster>().boxNum--;
// スコアを加算する
FindObjectOfType<Score>().AddPoint(point);
// このゲームオブジェクト(ブロック)を破壊する
Destroy(this.gameObject);
}
// まだ壊れない場合
else
{
// ボールを跳ね返すSEを再生
AudioSource.PlayClipAtPoint(hitSE, transform.position);
} < - ここまで
}
}
publicで用意した変数が多いので、数値の入力やSE音源ファイル用のコンポーネントを追加して、アサインしておいてください。
また、SEについては、Destroyer スクリプト内に HitPlaySound の機能(破壊時と非破壊時で分岐が発生するため)を追加してありますので、
先程アタッチしたHitPlaySound.csは不要です。Boxよりアタッチを解除しておきます。
Prefabs内のBoxを選択し、インスペクターのスクリプトを選んでRemove Componentをしてください。
Destroyer スクリプトが付いている他のBoxについても、同じように Remove Compnent をおこなってください。