(この記事の使用環境: Unity5.4.2f2 Personal、Windows10


今回はアニメーションに合わせて音声を再生してみます。プロ生ちゃんの音声使用許諾が取れたので、プロ生ちゃんで。
全画面キャプチャ 20170111 200522

こんな感じ。音が出ます(小さいかも・・・)。


Unityのプレイモード開始時と、プロ生ちゃんのしゃがみ、ジャンプにあわせてそれぞれ音声を再生させています。

※ プロ生ちゃん(暮井 慧)の音声は、許諾を得て利用しています。当作品以外での利用(音声の抽出、加工、公開などの行為)を禁止します。プロ生ちゃん音声を利用したい方は、プロ生ちゃん公式Webサイトで利用ガイドラインをご確認の上、申請を行い、許諾を得てください。



さて解説。今回もシンプルに。まずは使用する音声ファイルをProjectビューにインポートしておきます。ドラッグアンドドロップでOKです。
全画面キャプチャ 20170111 222019

次にスクリプト。今回はモデルを動かすスクリプト内に追記しています。
(※今回はオリジナルのスクリプトに直接追記していますが、スクリプトファイルを「MyThirdPersonUserControl」などのように別名保存してから編集するほうがベターかと思います。スクリプトファイル名を変更したら、それにあわせてクラス名も変更してください)

まずは変数の宣言。再生したい音声のハコを用意しておきます。各AudioClipはpublic変数とし、音声ファイルをインスペクタから指定できるようにしておきます。

    public class MyThirdPersonUserControl : MonoBehaviour
    {
        // --------------------------------------- ここから追記(音声再生用の変数)-----------------------------------

        public AudioClip startSE;       // とりあえず最初に再生される音声
        public AudioClip crouchSE;      // しゃがんだときの再生される音声
        public AudioClip jumpSE;        // ジャンプしたときに再生される音声

        AudioSource aud;

        // --------------------------------------- ここまで追記(音声再生用の変数)-----------------------------------


次にStart()内で、AudioSourceコンポーネントの取得と、起動時に再生する音声の指定と再生を行っています。

        private void Start ()
        {
            // --------------------------------------- ここから追記-----------------------------------

            aud = GetComponent<AudioSource> ();

            aud.clip = startSE;                     
            aud.Play ();

            // --------------------------------------- ここまで追記-----------------------------------


あとはUpdate()内で、しゃがみ/ジャンプと同じキーを押したときにそれぞれの音声を指定し再生する処理です。

        private void Update ()
        {
            if (!m_Jump)
            {
                m_Jump = CrossPlatformInputManager.GetButtonDown ("Jump");   // スペースキーを押すとジャンプする
            }

            // --------------------------------------- ここから追記-----------------------------------

            if (Input.GetKeyDown (KeyCode.C))               // しゃがむと同時に音声再生
            {
                aud.clip = crouchSE;
                aud.Play ();
            }

            if (Input.GetKeyDown (KeyCode.Space))           // ジャンプと同時に音声再生
            {
                aud.clip = jumpSE;
                aud.Play ();
            }

            // --------------------------------------- ここまで追記-----------------------------------
        }

        // Fixed update is called in sync with physics
        private void FixedUpdate ()
        {
            // read inputs
            float h = CrossPlatformInputManager.GetAxis ("Horizontal");      // 左右キーまたはA・Dキーで左右に動く


AudioSourceコンポーネント自体にはAudioClipを指定するハコは1つしかありませんが、このようにスクリプトから複数指定し、切り替えて再生することができます。AudioSourceコンポーネントでは、Volumeの調整をしておきましょう。
全画面キャプチャ 20170111 223440

今回は以上です。