Unityでオーディオクリップをキー入力で切り替えるスクリプトを書いた!OVRLipSyncも動いた

Unity

バーチャル3Dクリエイター神部まゆみです(*^-^*)

 

今日は動画作成用に、unityでオーディオクリップを切り替えるスクリプトを書いたよ。

自分用のやつだけど、誰かの参考になるかもしれないから公開しておきます。

作成と動作確認したバージョンはunity 2020.1.1です。

■PR■

現在、ファンタジーゲーム制作に使える人気unityアセットが50%オフで買える unityファンタスティックファンタジーセールをやってるみたいです。

unityファンタスティックファンタジーセール 50%オフ

欲しいアセットはこの機会に買っておくと良いかも。

 
 

 

 

キー入力でオーディオクリップを切り替えて再生するスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class AudioSelect : MonoBehaviour
{
     public AudioClip audioClip1;
     public AudioClip audioClip2;
     public AudioClip audioClip3;
     public AudioClip audioClip4;
     public AudioClip audioClip5;
     
     private AudioSource audioSource;

     //呼び出し時に実行される関数
     void Start () {
          audioSource = gameObject.GetComponent<AudioSource>();
     }
 
     // Update is called once per frame
     void Update ()
     {
          //Qキーが押されたらオーディオクリップ1を再生
          if (Input.GetKeyDown(KeyCode.Q))audioSource.PlayOneShot(audioClip1);
          //Wキーが押されたらオーディオクリップ2を再生
          if (Input.GetKeyDown(KeyCode.W))audioSource.PlayOneShot(audioClip2);
          //Eキーが押されたらオーディオクリップ3を再生
          if (Input.GetKeyDown(KeyCode.E))audioSource.PlayOneShot(audioClip3);
          //Rキーが押されたらオーディオクリップ4を再生
          if (Input.GetKeyDown(KeyCode.R))audioSource.PlayOneShot(audioClip4);
          //Tキーが押されたらオーディオクリップ5を再生
          if (Input.GetKeyDown(KeyCode.T))audioSource.PlayOneShot(audioClip5);

     }
}

使い方

オーディオソースコンポーネントがあるオブジェクトにこのスクリプトをアタッチして、AudioClip1~5に音声ファイルを読み込めば準備OK。

Q、W、E、R、Tキーにそれぞれ対応してるから、実行画面でキーを押せばPlayOneShotで再生されます。

キー割り当てを変えたい場合は、unityのキーコードを見て変えてね。

KeyCode - Unity スクリプトリファレンス
Key codes returned by Event.keyCode. These map directly to a physical key on the keyboard.

実際に動かしたところ OVRLipSyncもちゃんと動いた

※音が出るので音量注意!

唇が動いてるのは、OVR LipSyncを入れてるからです。

OVR LipSyncのオーディオソースがあるオブジェクトにアタッチすれば、こうやって使えますよ(*^-^*)

 

OVR LipSyncはこちらの頭のいい先輩のページを参考にして導入したよ。

OVRLipSync(Oculus Lipsync Unity)を使って音声に合わせて口の動かす(リップシンクさせる)【Unity】 - (:3[kanのメモ帳]
この記事でのバージョン Unity 2018.4.20f1 OVRLipSync 1.43.0 はじめに 今回はOVRLipSync(Oculus Lipsync Unity)という物を使って、音声に合わせてキャラクターの口の動かすつまりリップシンクを実装するという話です。 イメージとしては以下のような感じ。 Ocul...

 

 

 

2021/01/15追記: 前の音声をストップさせて切り替えたい場合は、 audioSource.Stop(); を使う

上のスクリプトだと、次の音声に切り替えても前の音声が再生されたままになってしまう。

短い音声ならあまり問題にはならないけど、長い音声だと被っちゃってうるさい感じになっちゃいます( ̄▽ ̄;)

前の音声をストップさせて次の音声を再生したい場合は、audioSource.Stop(); を使うと良いです。

 

全文は載せないけど、

//Qキーが押されたらオーディオクリップ1を再生

if(Input.GetKeyDown(KeyCode.Q))

{

    audioSource.Stop();

    audioSource.PlayOneShot(audioClip1);

}

 

みたいな。

PlayOneShotの前で、オーディオソースを一旦ストップさせればOKってこと。

ただ停止させてから再生まで若干ラグがある感じ?まぁそこまで気にならないレベルではあるけど。

 

 

参考にできるところがあれば参考にしてね。

 

タイトルとURLをコピーしました