ゲームジャム向け FEELアセットで簡単に音量設定する方法

Unity解説

・ゲームジャムで効果音やBGMの音量を設定したい

・FEELを買ったけど意味わかんない

大丈夫、この記事でFEELがどんなものか紹介するよ!

FEELを使った音量設定も説明するよ!

FEELとは

FEELアセットを使えば着地のドッスンや衝突のカメラ揺らしなどゲーム「効果」を簡単に付けられます。

公式文書には、プレイヤに気持ちよくなってもらうための効果を手伝ってくれるとあります。

Feel is a ready-to-use solution to provide on-demand game feel to your Unity game, with as little friction or setup as possible. It’s a modular, user friendly, and very easy to extend system you can build upon.

https://feel-docs.moremountains.com/index.html#what-is-feel

要は、簡単にゲームのクオリティを向上できるツールということです。

FEELの基本

FEELはあらかじめ設定しておいた効果を呼び出す形で使います。DoTweenに似ていますね。

使える効果はとても多く、代表的なものでPosition、Scale、Rotation、音、パーティクル、カメラ揺らしなどがあります。FEELではこれら効果のことをFeedbackと呼んでいます。

そして、ありがたいことにFeedbackの設定はインスペクタ上でノンコードの設定ができます!

FEELのイメージ

フィードバックは一連の流れをまとめて設定できます。まとめの単位はMMF Playerコンポーネントです。余談ですがMMFは開発元More MountainのFeedbackという意味だと思います。

Feedback設定画面

なお、呼び出すときにコンポーネントの識別ができない(?)ので1オブジェクトにつき1つの流れ(MMF_Player)にしておいたほうがよさそうです。

アクションごとにフィードバック設定している例

FEELのサウンド管理

FEELには音量管理がついています。BGM、効果音、UIそれぞれで別々の設定ができます。FEELのFeedbackで付けた効果音などはスクリプトからまとめて音量設定できます。

まずはデモをご覧ください。

音量設定のデモ

今回はBGM1つとSE(ジャンプと着地)をつけてみました。音量バーやチェックボックスを設定するとBGMやSEの音量が変わります。

FEELで音を出す手順

まず、FEELで音を出すにはMMSoundManagerを1つシーンに配置します。普通に音を出すときのAudioSourceの代わりですね。空のオブジェクトか何かにアタッチしてください。

各場面で音を出すにはFeedbackを使います。

たとえばジャンプのFeedbackではカメラを揺らしたりパーティクルを出したりするとともに、効果音を鳴らすフィードバックを入れます。

ここで、SoundManager OptionsのところにあるMm Sound Manager TrackをSfxにしていますが、ここが効果音のタグです。ほかにUIとMusicがあります。ここのトラックの単位でボリュームを一括変更できます

設定したフィードバックは使いたい場所でPlayします。JumpのFeedbackをスクリプトで取得し、そこからPlayFeedbacks()です。

ジャンプの例ですとこんな感じです。

    [SerializeField] private MMF_Player mmf_Jump;

    public void OnJump(InputAction.CallbackContext context)
    {
        if (context.performed)
        {
            rb.AddForce(Vector3.up * jumpPower, fm);
            mmf_Jump.PlayFeedbacks();
        }
    }

※Input Systemを使っているので見慣れない引数contextがありますが、Update内でKey Inputなどを取得するやり方でもMMF_PlayerのPlayFeedbacks()をすることは同じです

FEELで音量の変更をする

音量の変更はシーンに1つ置いたMMSoundManagerから操作します。

ボリューム設定
soundManager.SetVolumeMusic(float);
soundManager.SetVolumeSfx(float);

ミュート設定
soundManager.MuteMusic();
soundManager.MuteSfx();
soundManager.UnmuteMusic();
soundManager.UnmuteSfx();

たとえばデモで使ったスライダーのコードは以下のとおりで、このスクリプトをスライダーのOnValueChangedイベントから呼んでいます。

ここのスライダーの話
using UnityEngine;
using MoreMountains.Tools;
using UnityEngine.UI;

public class slider_bgm : MonoBehaviour
{
    MMSoundManager soundManager;

    // Start is called before the first frame update
    void Start()
    {
        soundManager = FindObjectOfType<MMSoundManager>();
    }

    public void OnBgmSliderChanged()
    {
        Slider slider = GetComponent<Slider>();
        soundManager.SetVolumeMusic(slider.value);
    }
}

BGMはMusicを、SE(効果音)はSfxを操作すれば、Feedbackで設定した音が一括で音量変更できます。

まとめ

本記事ではFEELの概説と、FEELでの音の出し方を紹介し、音量変更が簡単にできることを解説しました。

FEELはゲームの気持ちよさにつながる効果を簡単に設定できるツールです。

効果音を出すことも難しくなく、スクリプトから音量を一括で変更する手段が用意されています。

ゲームジャムなど時間がないけどクオリティを向上させたいときにぜひ導入したいアセットです。

かわいい我が子にオリジナルアプリを!

コメント

タイトルとURLをコピーしました