プレイヤーに当たったら音が出るブロックを作る方法を紹介します。
完成動画
やり方
1.シーンに各オブジェクトを配置
1-1.以下のようにプレイヤーに見立てた赤いBall(Circle)と、青いSquarePlayAudio(Square)を配置
2.赤いBall(Circle)の設定
2-1.Ballが落ちるように”Rigidbody 2D”、当たり判定を行うために”Circle Collider 2D”をアタッチし、Tagを”Player”にする
3.SquarePlayAudioの設定
2-1.Ballが落ちるように”Rigidbody 2D”をアタッチ
3-2.AudioPlay.csという名前のスクリプトを作成して、以下のコードを記載する。
using UnityEngine;
//AudioSourceコンポーネントが存在していない場合はアタッチされるようにする
[RequireComponent(typeof(AudioSource))]
public class PlayAudio : MonoBehaviour
{
// 音データの再生装置を格納する変数
private AudioSource audioSource;
// 音データを格納する変数(Inspectorタブからも値を変更できるようにする)
[SerializeField]
private AudioClip audioClip;
// Start is called before the first frame update
void Start()
{
// ゲームスタート時にAudioSource(音再生装置)のコンポーネントを加える
audioSource = gameObject.GetComponent<AudioSource>();
}
/// <summary>
/// 衝突したとき
/// </summary>
/// <param name="collision"></param>
private void OnCollisionEnter2D(Collision2D collision)
{
// 当たった相手のタグがPlayerかどうか判定
if (collision.gameObject.tag == "Player")
{
// 音(sound)を一度だけ(PlayOneShot)再生する
audioSource.PlayOneShot(audioClip);
}
}
}
3-3.作成したAudioPlay.csをSquarePlayAudioにアタッチ
※Audio SourceコンポーネントはスクリプトにRequireComponentで定義しているので自動でアタッチされる
3-4.InspectorタブのPlay Audio(Script)のAudio Clipに好きな音データを入れる
完成
これでプレイヤーが音が出るGameObject(SquarePlayAudioオブジェクト)にぶつかると、音が出る。
コメント