色々な感想とネタバレとIT

自分が面白いと思った事をまとめます。

UnityでJavaScriptを使って効果音を付ける方法

     - IT, Unity

スポンサーリンク

自分が今使っている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ですと、輪唱のようになります。

 - , , , , ,