プロ生ちゃんの音声ファイルを追加する
前回の記事ではタイムトライアル機能を追加してゲーム性を強化しました。時間を競うという要素が加わることでゲームらしくなってきましたが、
プロ生ちゃんの音声は声優の上坂すみれさんが担当
プロ生ちゃんの音声ファイルは無償公開されています。非商用・
プロ生ちゃんの音声ファイルのCVは、
プロ生ちゃん音声ファイルをダウンロードしてUnityに取り込む
以下のURLにアクセスして
ゲーム内で使用する音声ファイルをUnityに取り込みます。UnityのProjectにSoundsフォルダを作成します。Projectの


先ほどダウンロードしたkei_

これでProjectのSoundsフォルダに4つのmp3ファイルが取り込まれました。その4つのファイルの3Dサウンドを無効化します。3DサウンドについてはDay3で説明しているので、

同様の手順をその他の3つのファイルについても行ってください。
音声ファイルを再生して台詞を確認してみる
先ほど取り込んだ4つのmp3ファイルを再生して台詞を確認してみましょう。ProjectのSoundsフォルダのkei2_

kei2_
ファイルと台詞の対応表が以下のURLに公開されているので、
音声をプログラムから再生する仕組みを作る
MonoDevelopを起動してSoundManager.
public AudioClip startVoiceAudio;
public AudioClip fireVoice1Audio;
public AudioClip fireVoice2Audio;
public AudioClip endVoiceAudio;
private AudioSource voiceAudioSource;
void Start() {
this.voiceAudioSource = gameObject.AddComponent<AudioSource>();
}
public void PlayStartVoice() {
voiceAudioSource.PlayOneShot(startVoiceAudio);
}
public void PlayFireVoice1() {
voiceAudioSource.PlayOneShot(fireVoice1Audio);
}
public void PlayFireVoice2() {
voiceAudioSource.PlayOneShot(fireVoice2Audio);
}
public void PlayEndVoice() {
voiceAudioSource.PlayOneShot(endVoiceAudio);
}
Day3ではUnity上でSoundManagerオブジェクトのInspectorにAudioSourceを追加しましたが、
private AudioSource voiceAudioSource;
void Start() {
this.voiceAudioSource = gameObject.AddComponent<AudioSource>();
}
音声を再生する用のAudioSourceをvoiceAudioSourceフィールドとして定義してStartメソッドの中でAudioSourceコンポーネントを設定しています。
それから今回取り込んだ4つの音声ファイルを参照するための変数を定義しています。
public AudioClip startVoiceAudio;
public AudioClip fireVoice1Audio;
public AudioClip fireVoice2Audio;
public AudioClip endVoiceAudio;
これらの音声を再生するためのpublicメソッドをPlay~という名前で4つ定義しています。
Unityに戻って、

これでコード上から音声ファイルを参照することができるようになりました。続いて、
ゲーム開始時に音声を再生させる
GameControl.
SoundManager.Instance.PlayStartVoice();
これでゲーム開始時に
バズーカ発射時に掛け声を再生させる
Bazooka.//追加コード
から//追加コード
を追加します。
void Update ()
{
if (animator)
{
animator.SetFloat("Aim", load ? 1 : 0, .1f, Time.deltaTime);
float aim = animator.GetFloat("Aim");
float fire = animator.GetFloat("Fire");
if (Input.GetButton("Fire1") && fire < 0.01 && aim > 0.99)
{
animator.SetFloat("Fire",1);
//追加コード(ここから)
if (UnityEngine.Random.Range(0, 2) == 0) {
SoundManager.Instance.PlayFireVoice1();
} else {
SoundManager.Instance.PlayFireVoice2();
}
//追加コード(ここまで)
追加したのはバズーカ発射時に音声を再生するコードです。
if (UnityEngine.
で0~1を乱数生成させて0の場合と1の場合で再生する音声を切り分けています。これによりバズーカを発射する度に
ゲームクリア時に音声を再生させる
GameControl.
bool playedEndVoice = false;
GameControl.//追加コード
から//追加コード
を追加します。
void OnGUI() {
GUI.Label(scoreRect, "スコア " + score, style);
GUI.Label(timerRect, "タイム " + elapsedTime, style);
if (FinishedGame()) {
//追加コード(ここから)
if (playedEndVoice == false) {
SoundManager.Instance.PlayEndVoice();
playedEndVoice = true;
}
//追加コード(ここまで)
ゲームクリア時にスコア表示する箇所に
それではゲームを実行してみましょう!

いかがだったでしょうか? プロの声優さんの音声を追加することでゲームの雰囲気が華やかになり、
次回は敵とプレイヤーの位置関係を映すレーダー画面を追加していきたいと思います。お楽しみに!