今回はUnityで敵登場時に効果音を鳴らしてみようと思います。
敵が登場した時に効果音が鳴ると敵が出てきたことがわかりやすくなりゲームをプレイする人に心の準備をさせることが出来ます。
前回は敵キャラクター出現時にエフェクトを表示しましたが、
例の如く(龍が如く・・・・)Asset Storeで効果音を探してみます。
カテゴリでオーディオ→効果音→その他効果音→Fantasy Sfx
をインポートしてみました。
Fantasy Sfx→Mp3→Spell_01を敵キャラ出現時に鳴らしてみます。
↑のような感じで敵キャラクターが登場した時に効果音が鳴ってわかりやすいですね。(^^)/
効果音の鳴らし方
効果音を鳴らすには
- インスペクタにAudio Sourceのコンポーネントを追加し、そこにAudioClipを設定して鳴らす方法
- インスペクタにAudio Sourceのコンポーネントを追加し、スクリプトからAudioClipを鳴らす方法
- スクリプトでAudio Sourceのコンポーネントを追加し、スクリプトからAudioClipを鳴らす方法
があります。
今回は敵キャラが登場時に鳴らすだけなので、1番上の方法を取ります。
効果音の追加と設定
敵キャラのプレハブにAdd ComponentからAudio→Audio Sourceをクリックします。
上のようにAucio Clipに鳴らしたい音声を指定し、Play On Awakeにチェックを入れます。
Play On Awakeはこのオブジェクトが登場した時に鳴らすという意味です。
その下のLoopのチェックは外します。登場時だけ鳴らしたい為、繰り返し再生されるのを防ぎます。
敵の位置で音声を鳴らしたい場合はSpatial Blendを3Dの方にドラッグします。
ただし3D音声になるので2Dと違い敵の場所で音声が再生され、場合によっては遠くて聞こえない場合もあります。
これで敵キャラ出現時に効果音を鳴らす事が出来ます。
Unityのプレイボタンを押して試してみましょう。
これで完成ですが・・・、あまりに早く終わってしまったので、後々の事も考えてスクリプトから効果音を鳴らす方法もやっておきましょう。
スクリプトから効果音を鳴らす
スクリプトからAudio Sourceの追加をし効果音を鳴らすので、さきほど追加したAudio Sourceのコンポーネントを削除します。
AppearSEというスクリプトを作り敵キャラクターのプレハブに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using UnityEngine; using System.Collections; public class AppearSE : MonoBehaviour { private AudioSource audioSource; // 鳴らす音声クリップ [SerializeField] private AudioClip appearSE; void Start () { audioSource = gameObject.AddComponent <AudioSource> (); audioSource.PlayOneShot (appearSE); } } |
鳴らす効果音はインスペクタで設定出来るようにし、Audio Sourceは設定されていないので、Startメソッド内でAddComponentを使って追加しています。
AudioSourceの機能が追加されたら、それを使って音声を鳴らします。
PlayOneShotで鳴らしたい音声クリップを指定すれば音声が流れます。
この場合Startメソッド内にあるので敵キャラ登場時(スクリプト開始時)に1回だけ音声の再生をするということになります。
先ほどの1のやり方と違って、AudioClipを複数用意すれば鳴らしたい音声を選んで鳴らす事が出来るようになります。
敵キャラクタープレハブのインスペクタは
↑のようになります。
Audio Sourceは音声を鳴らす為に必要ですが、この音声を聞く為にはAudio Listenerという耳に当たるものがないと鳴っているのがわかりません。
音声を聞く為に必要なもの
音声を聴く為にはAudio Listenerが必要なんですが、追加した覚えはないけど?という方もいると思います。
ですが、実はAudio Listenerは最初から設定されていました。
それが設定されているのが、Main Cameraです。
Main CameraのAudio Listenerのチェックを外すと音声が聞こえなくなります。
これで敵キャラ出現時に効果音を鳴らす事が出来るようになりました。