見出し画像

【#Vtuber】AI Vtuberを作りたい 第4回(Unityで効果音を鳴らす)

はじめに

前回の記事はこちらです。

「AI Vtuberを作りたい」シリーズのマガジンになります。

今回は配信する際の効果音として出力できるように、
Unityで効果音を鳴らす機能
について書いていこうと思います。

Unityで使用できる音声ファイル形式

使用できる音声ファイルは「.aif」/「.wav」/「.mp3」/「.ogg」です。
(他にもありますが知っているところだとこんな感じです。)

効果音素材

効果音を鳴らすにはもととなる素材が必要になります。
フリー効果音素材のサイトもあるのでご参考までに記載します。
個人的には「効果音ラボ」さんがおすすめです。

Unityで効果音を鳴らすまでの解説

1. ソースコード

効果音を鳴らすためのソースコードの説明になります。
まずソースコード全体はこちらです。

using UnityEngine;

public class SoundEffectSettings : MonoBehaviour
{
    [SerializeField]
    private AudioClip[] soundEffects;
    AudioSource audioSource;

    // Start is called before the first frame update
    void Start()
    {
        //Componentを取得
        audioSource = GetComponent<AudioSource>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[0]);
        }

        if (Input.GetKeyDown(KeyCode.W))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[1]);
        }

        if (Input.GetKeyDown(KeyCode.E))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[2]);
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[3]);
        }

        if (Input.GetKeyDown(KeyCode.T))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[4]);
        }

        if (Input.GetKeyDown(KeyCode.Y))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[5]);
        }

        if (Input.GetKeyDown(KeyCode.U))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[6]);
        }

        if (Input.GetKeyDown(KeyCode.I))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[7]);
        }

        if (Input.GetKeyDown(KeyCode.O))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[8]);
        }

        if (Input.GetKeyDown(KeyCode.P))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[9]);
        }
    }
}

変数については、
効果音をいくつか自分で設定できるように[SerializeField]のprivateにしてAudioClip配列を用意しています。
また、音を鳴らすにはAudioSourceコンポーネントを使用するのでそのための変数も用意します。

    [SerializeField]
    private AudioClip[] soundEffects;
    AudioSource audioSource;

Startメソッドでは、AudioSourceコンポーネントを取得します。

// Start is called before the first frame update
    void Start()
    {
        //Componentを取得
        audioSource = GetComponent<AudioSource>();
    }

Updateメソッドでは、実際にキーを押したら効果音が鳴るように処理を記述します。
ポイントは以下の2点です。

  • Input.GetKeyDownメソッド
    「キーボードのキーを押下した瞬間」をトリガーにするために使用します。

  • AudioSource.PlayOneShotメソッド
    効果音の再生に適しているので使用します。(BGMを再生するのにはAudioSource.Playメソッドが適しています。)
    音を重ねて再生できるのと引数で音量の調節ができる(0~1の範囲)のが特徴です。

// Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[0]);
        }

        if (Input.GetKeyDown(KeyCode.W))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[1]);
        }

        if (Input.GetKeyDown(KeyCode.E))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[2]);
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[3]);
        }

        if (Input.GetKeyDown(KeyCode.T))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[4]);
        }

        if (Input.GetKeyDown(KeyCode.Y))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[5]);
        }

        if (Input.GetKeyDown(KeyCode.U))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[6]);
        }

        if (Input.GetKeyDown(KeyCode.I))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[7]);
        }

        if (Input.GetKeyDown(KeyCode.O))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[8]);
        }

        if (Input.GetKeyDown(KeyCode.P))
        {
            //音を鳴らす
            audioSource.PlayOneShot(soundEffects[9]);
        }
    }

2. 空のオブジェクトへのアタッチ

空のオブジェクトに「AudioSourceコンポーネント」と「音を鳴らすためのスクリプト(先ほどのソースコードファイル)」を付けます。

これで実行して効果音が鳴るように設定したキーを押すと効果音が鳴ります。

参考にしたサイトは以下です。


この記事が気に入ったらサポートをしてみませんか?