【Unity 2D】プレイヤーに当たったら音が出るブロックを作る

スポンサーリンク

プレイヤーに当たったら音が出るブロックを作る方法を紹介します。

完成動画

やり方

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オブジェクト)にぶつかると、音が出る。

コメント

タイトルとURLをコピーしました