Unityの入門書で通称”ヒヨコ本”として親しまれている”Unity5入門 最新開発環境による簡単3D&2Dゲーム制作
今回はChapter3の作例にボタンクリックの効果音やオブジェクトが衝突した際の効果音を追加してみたいと思います。
あらかじめ効果音を用意しておきましょう。今回はアセットストアから無料の効果音アセットFREE Casual Game SFX Pack を使用します。
Unityのプロジェクトにインポートして[Projectウィンドウでみるとこんな感じ。50個のオーディオファイルとライセンスのPDFファイルがあります。
スクリプトを編集する前に効果音を割り当てる変数と関数を考えて下記のようになりました。
というわけで、プレイヤー操作で再生する効果音の制御と、ボールの物理挙動に応じて再生する効果音の制御を別々のスクリプトに分けることにしました。
まずは効果音管理用のスクリプトを作成します。こちらの記事で作成したサウンド管理用オブジェクトにスクリプトを作成してアタッチします。
[Hierarchy]ウィンドウ > SoundManager を選択。[Inspector]ウィンドウ > [Add Component]ボタン > New Scriptを選択して下記の通り入力。[Create and Add]ボタンをクリック。下記の通りコードを入力します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SfxManager : MonoBehaviour
{
// "AudioSource"コンポーネントを格納する変数
private AudioSource audioSource;
// ボタンをクリックした時に再生するオーディオクリップを格納する変数
public AudioClip buttonSfx;
// ゲームの初期化
void Start()
{
// "AudioSource"コンポーネントを変数"audioSource"に格納する
audioSource = GetComponent<AudioSource>();
// オーディオファイルを再生する
audioSource.Play();
}
// ボタンをクリックした時に効果音を再生する処理
public void ButtonSfx()
{
// オーディオファイルを再生する
audioSource.PlayOneShot(buttonSfx);
}
}
スクリプトを保存したらコンポーネントの変数フィールドにオーディオクリップを割り当てます。今回は下記の通りになりました。
ここでいったん動作確認をしておきましょう。前回の記事の手順でミュートボタンを配置しているのでゲームを再生したらチェックボックスをオンにします。
スタートボタンとリトライボタンをクリックして音が鳴っていればOKです。
今回は[Project]ウィンドウからボールPrefabを選択してスクリプトを作成します。
[Project]ウィンドウ > Ball を選択。[Inspector]ウィンドウ > [Add Component]ボタン > New Scriptを選択して下記の通り入力。[Create and Add]ボタンをクリック。下記の通りコードを入力します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlaySfx : MonoBehaviour
{
// ボールが衝突する時に再生するオーディオクリップを格納する変数
public AudioClip hitSfx;
// "AudioSource"コンポーネントを格納する変数
private AudioSource audioSource;
// ボールオブジェクトの"Rigidbody"コンポーネントを格納
private Rigidbody rigid;
// ゲームの初期化
void Start()
{
// "AudioSource"コンポーネントを変数"audioSource"に格納する
audioSource = GetComponent<AudioSource>();
}
// オブジェクトが接触した時の処理
void OnCollisionEnter(Collision collision)
{
// ボールが衝突した時のサウンドを再生
audioSource.PlayOneShot(hitSfx);
}
}
スクリプトが完成したらコンポーネントの変数フィールドにオーディオクリップを割り当てます。[Project]ウィンドウからオーディオクリップをドラッグ&ドロップ。
最後に、オブジェクト”Ball”にオーディオファイルを再生するためのAudio Sourceコンポーネントを追加します。
[Hierarchy]ウィンドウ > SoundManagerを選択。[Inspector]ウィンドウ > [Add Component]ボタン > Audio > Audio Source を選択。
ここまでの内容をWebGLビルドしてみました。ボールの衝突音が付いただけでも雰囲気が変わりますね。
unityroom で公開しているゲームファイルもあわせて更新しました。