UnityでJavaScriptを使って効果音を付ける方法
自分が今使っているUnityが5のPersonal Editionですので他のバージョンでも紹介する方法で可能か検証していません。
Audio Sourceを追加する
方法1
効果音を出したい物に直接、用意した音声ファイルをドラッグ&ドロップする。
すると「Inspector」の欄に「Audio Source」の項目が追加されます。
方法2
「Inspector」の欄の一番下にある「Add Component」→「Audio」→「Audio Source」を選択して追加する。
次にAudio ClipにSEを追加します。
「Inspector」の欄に「Audio Source」の項目が追加されていると思います。
「Audio Source」の中の「Audio Clip」の右にある○をクリックします。
そうすると「Select Audioclip」と言うウィンドウが新しく開かれるのでそこから音声ファイルを選択します。
「方法1」のように音声ファイルを「None (Audio Clip)」と書かれているところにドラッグ&ドロップでも大丈夫です。
「方法1」では「Audio Clip」の追加は不要です。
共通
どちらの方法でもデフォルトでは「Play On Awake」にチェックが入っています。
これはSEの読み込みが完了したときに一度再生すると言う物なので、消しておいたほうがいいと思います。
スクリプトで制御する
今回は例として[Aキー]が押されたときに、効果音を鳴らすスクリプトをJavaScrptで書いていきます。
方法1
単純に音を発生させたい場合
GetComponent(AudioSource).Play();
この命令文だけで可能です。
プログラム全体で見ると↓のようになります。
#pragma strict function Start () { } function Update () { if(Input.GetKey(KeyCode.A)){ GetComponent(AudioSource).Play(); } }
しかしこの方法では一度「Aキー」を押し、SEが鳴っている間にもう一度「Aキー」を押すと、SEが初めから再生されてしまいます。
ですので「方法2」ではSEが最後まで流れる方法を紹介します。
方法2
音を最後まで流す方法
public var SE : AudioSource; SE=GetComponent(AudioSource); SE.PlayOneShot(SE.clip);
↑を使います。
「SE」は好きな名前に変更して大丈夫です。
プログラム全体で見ると↓のようになります。
#pragma strict public var SE : AudioSource; function Start () { } function Update () { if(Input.GetKey(KeyCode.A)){ SE=GetComponent(AudioSource); SE.PlayOneShot(SE.clip); } }
この方法では、「Aキー」を一度押すとSEが鳴り始め、もう一度「Aキー」を押すと新たにSEが鳴り始めます。
長いSEですと、輪唱のようになります。