【#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コンポーネント」と「音を鳴らすためのスクリプト(先ほどのソースコードファイル)」を付けます。
これで実行して効果音が鳴るように設定したキーを押すと効果音が鳴ります。
参考にしたサイトは以下です。
この記事が気に入ったらサポートをしてみませんか?