VRで焚き火する #17 環境音と効果音をつけて焚き火をする【Unity】
前回の記事では、Magica Clothを設定したスカートでアウトドアチェアに座ってみました。
これで一通りの準備ができました!
と思いましたが、もう一つ足りないものがありました。
周りから聞こえる「音」ですね。
焚き火の音は Ignisアセット から出るのですが、それ以外の音は聞こえません。
キャンプ場で焚き火してますので、森から聞こえる自然の音やオイルライターをつけた時の音などが聞こえると臨場感(没入感)が増しそうです。
今回は、環境音と効果音を設定していきます。
目次
開発環境
・Unity 2020.3.16f1(High Definition RP 10.5.1)
・CPU:AMD Ryzen 7 3700X
・グラボ:ASUS ROG-STRIX-RTX2060S-O8G-GAMING
・Meta Quest 2(Oculus Link利用)
・炎アセット:Ignis – Interactive Fire
・クロスシミュレーション:Magica Cloth
(1) 環境音を設定する
まずは、周りから聞こえてくる環境音を設定します。
フリー効果音ライブラリを使う
今回は「効果音辞典」様のフリー効果音ライブラリを使用させていただきました。
品質が良い音データがたくさんあるので、どれを使うか悩んだくらいです。
ありがとうございました!
「フクロウが鳴く森」の音を再生する
Unityで音を再生するのは意外と簡単でした。
音データ(今回はMP3ファイル)をUnityにD&Dして、それを適当なオブジェクトに追加した「Audio Source の AudioClip」にD&Dするだけ。
あとは「Play On Awake」と「Loop」にチェックを入れておきましょう。
これでUnityをPlayした時に、自動的に繰り返し再生されるようになります。
(2) 効果音を設定する
次は、効果音です。
以前の記事で、オイルライターを開閉できるように作りました。
これを少し改造して、ライターをつかんだ状態でトリガーを引くたびに「ふたを開ける」「ライターに火をつける」「ふたを閉める」を繰り返すようにしてみます。
オイルライタークラスを修正する
まずはプログラムを修正します。
[LighterClassic.cs]
using UnityEngine; namespace Amaotolog { /// <summary> /// オイルライタークラス /// </summary> public class LighterClassic : MonoBehaviour, ITriggerAction { [SerializeField] public AudioClip[] sounds; // ライターの音 AudioSource audioSource; private int lighterStatus = 0; // ライターの状態 void Start() { audioSource = GetComponent<AudioSource>(); } // アクション処理(つかまれた) public void GrabAction() { } // アクション処理(火を点ける/消す) public void DoubleTriggerAction() { // ステータス値の調整 lighterStatus++; if (lighterStatus > 2) { lighterStatus = 0; } // ライターの状態を切り替える GameObject objClose = transform.Find("Lighter-classic_closed_n").gameObject; GameObject objOpen = transform.Find("Lighter-classic_open_n").gameObject; GameObject objFlame = transform.Find("Flame").gameObject; switch (lighterStatus) { // 閉じる case 0: objClose.SetActive(true); objOpen.SetActive(false); objFlame.SetActive(false); break; // 開ける(火なし) case 1: objClose.SetActive(false); objOpen.SetActive(true); objFlame.SetActive(false); break; // 閉じる(火あり) case 2: objClose.SetActive(false); objOpen.SetActive(true); objFlame.SetActive(true); break; } // 効果音を再生 audioSource.PlayOneShot(sounds[lighterStatus]); } } }
11行目で、音データを使いやすくするために AudioClipクラス を配列で定義してます。
14行目は、ライターの状態を管理するためのステータスですね。開ける→火をつける→閉じるを繰り返すので、管理しやすい int型 を使ってます。
28,29行目で、ステータスの値を1増やし、2より大きくなった場合は 0 にします。これで 0,1,2 を繰り返すことができます。
36~58行目で、ライターの状態(lighterStatus値)を使って、オブジェクトの表示を切り替えます。
61行目で、効果音を再生しています。PlayOneShot() を使うと、一回だけ音を鳴らすことができますよ。
「オイルライターの開閉・着火」の音を再生する
あとは、音データをライターの Inspector に設定していきます。
先ほどのサイトにちょうど良い音データがありましたので、ありがたく使わせていただきましょう。
・ジッポーライターのふたを開ける
・ライター着火
・ジッポーライターのふたを閉める
環境音の時と同じく音データをUnityにD&Dし、それを「Audio Source の AudioClip」にD&Dするまでは同じですね。
その他の設定としては、こんな感じです。
- Sounds に 3 を入力後、Element 0~2に 音データをD&Dする。
- 再生の優先度を上げるために、Priority の値を 100 にする。デフォルト値が 128 なので、これより小さければ優先度が高くなります。
- ライターから音が聞こえるようにするために、Spatial Blend の値を 1 にする。VRモードで聞いてみると、本当にライターがある場所から音が鳴っているように聞こえます。スゴイですね。
なお、音はプログラムで再生しますので、「Play On Awake」のチェックは外してます。
(3) 動画で確認してみる
VRモード(Oculus Link)で確認してみましょう。
流れとしては、
・フクロウと虫の音が聞こえる。
・オイルライターをつかうと音が鳴る。
・焚き付け(小枝を集めたもの)にオイルライターで火をつける。
・焚き火に投入すると火がつく。
・しばらく焚き火を眺める。
・薪が小さくなって火が消える
・薪が熾火のように赤く光る。
です。
焚き火をする。
良い感じに音が聞こえますね。
まとめ
環境音と効果音をつけて焚き火をしてみました。
焚き火の音とともに、フクロウと虫の音を聞いているととても落ち着きます。ライターの音も良い感じです。やはり音があると臨場感が全然違いますね。
これでいつでも焚き火を楽しめますよ。
コメント
トラックバックは利用できません。
コメント (0)
この記事へのコメントはありません。