Developer

【Unity実践】#23 演出を強化しよう【ランゲーム】
2022.02.08
Lv2

【Unity実践】#23 演出を強化しよう【ランゲーム】

今回の内容

前回まででゲームの機能は完成しており、今回行うのは作り込みの部分となります。
ライティングとサウンドの設定を追加していきます。

※初めての方はこちらから
【第1回記事】導入とサンプルの紹介

ライティングの設定

ここで行うのは、凝ったライティング設定というよりは不具合の修正となります。
前回ステージ管理の仕組みを作成した際に気が付いた方もいると思いますが、シーンが切り替わった際に光源が暗くなっていたりします。
これは、静的ライティングの事前計算を行っていないためです。

対策としては以下の2パターンが考えられます。
・ライティングの事前計算を各シーンごとに手動で行う。
・ライティングの事前計算を自動で行う。

今回は2つ目の、自動設定で対応します。
Lightingウィンドウで、「Auto Generate」のチェックを入れてください。

これでシーンが切り替わっても、光源が暗くなったりはしなくなるはずです。
なお、Auto Generate は便利な機能ですが、(静的な)オブジェクトを変更するたびに計算処理が実行されるため、
シーンの規模が大規模になるとそのたびに大きな負荷がかかってしまいます。
開発マシンのスペックやシーンの規模を見ながら、使用するかどうかは判断しましょう。

※複数シーンがある場合は、全てのステージで設定を行ってください。

※Lightingウィンドウが表示されていない場合は、
 Window > Rendering > Lighting Settings をクリックして表示します。

BGMの設定

ゲームをプレイ中に再生する BGM を設定しましょう。
お好みの音源を用意して頂ければと思いますが、ここでは以下を使用させて頂いています。
https://dova-s.jp/bgm/play1739.html

DLした音源のファイル名を「bgm.mp3」に変更して、Audiosフォルダにインポートします。

BGMを再生する設定は、GameManager に紐づけたいと思います。
インポートした音源を、GameManager にドラッグ&ドロップします。

GameManager に Audio Source コンポーネントが追加されます。
お好みで音量などを調整して下さい。ここでは「0.5」に設定しました。

BGM の設定はこれで完了ですが、他にもシーンがある場合は同様の作業を行う必要があります。
プレハブ化しておくと少し楽になると思いますので各自やってみてください。

クリア時の効果音の設定

クリア時に効果音を鳴らしていきたいと思います。
今回は、紙吹雪に音源を紐づける形としたいので、ConfettiEmitterScript を編集していきます。
下記の通り変更してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ConfettiEmitterScript : MonoBehaviour
{
    [SerializeField]
    List<GameObject> confettiList;

    AudioSource audioSource;

    [SerializeField]
    AudioClip cracker, prise;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            foreach(var confetti in confettiList)
            {
                confetti.SetActive(true);

                Invoke("PlayCracker", 0.2f);
                Invoke("PlayPrise", 1f);
            }
        }
    }

    private void PlayCracker()
    {
        audioSource.clip = cracker;
        audioSource.Play();
    }

    private void PlayPrise()
    {
        audioSource.clip = prise;
        audioSource.Play();
    }
}

PlayCrackerメソッドは、クラッカーの効果音を再生します。
PlayPriseメソッドは、歓声の効果音を再生します。
28-29行目でこれらをタイミングをずらして再生することで、
クラッカー ⇒ 歓声 の流れで音源が再生される実装としています。

次に音源を用意します。
これもお好みで構いませんが、ここでは以下を使用させて頂きます。
「クラッカーを鳴らす」
https://soundeffect-lab.info/sound/various/various3.html
ダウンロードした音源は「cracker.mp3」にリネームしておきます。

「スタジアムの歓声1」
https://soundeffect-lab.info/sound/voice/people.html
ダウンロードした音源は「prise.mp3」にリネームしておきます。

各音源を Audios フォルダにインポートします。

Goal > ConfettiEmitter を選択します。

ConfettiEmitterScript の cracker と prise に、追加した音源を設定します。

さらに、Add Component で Audio Sourceコンポーネントを追加します。
Play On Awake のチェックは外しておきます。

これで設定は完了ですので、プレイして確認してみて下さい。
BGM の時と同様、他のステージでも同様の設定をする必要があります。
Goalオブジェクトをプレハブ化して置き換えると、多少楽になると思います。

※異なる音源を使用する場合は、スクリプト内の Invoke の秒数を調整してください。

おわりに

音源の設定を中心に演出の強化を行いました。
こういった作り込みがゲームの最終的なクオリティに影響してきますので、
是非自分なりのこだわりを組み込んで頂ければと思います。

(関連記事)
【初心者Unity】ライティング入門
【初心者Unity】BGM・SE(効果音)の付け方

 

 
関連リンク ➡ 「初心者のための」Unityゲーム制作 目次

© Unity Technologies Japan/UCL