BlenderとUnityで作ったものをVR(Meta Quest/Oculus Link)で動かします

VRで焚き火する #17 環境音と効果音をつけて焚き火をする【Unity】

 
これで一通りの準備ができました!
 
と思いましたが、もう一つ足りないものがありました。
周りから聞こえる「」ですね。
 
焚き火の音は Ignisアセット から出るのですが、それ以外の音は聞こえません。
キャンプ場で焚き火してますので、森から聞こえる自然の音オイルライターをつけた時の音などが聞こえると臨場感(没入感)が増しそうです。
 
今回は、環境音と効果音を設定していきます。



開発環境

・Unity 2020.3.16f1(High Definition RP 10.5.1)
・グラボ: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)

  1. この記事へのコメントはありません。

VRで焚き火する #16 Magica Clothのスカートでアウトドアチェアに座る【Unity】

ブログの女の子を作る #83 金髪のツインテールをロングヘアーで作る【Blender,Unity】


最近のコメント

だーしゅ
IT関係のお仕事してます。
3Dモデルの女の子は「ブログノ・スージー」。VRは楽しいですね。

[当ブログについて]