前書き
今回の記事ではFEEL(Feedbacks)を使ってUnityのVolumeエフェクトを動的に操作する方法を紹介していこうと思います。以前の記事ではVolumeを使ったカメラエフェクトを紹介しましたが、今回はFeedbacksを使って例えば以下のような動きを実現します。
- 敵からダメージを受けたら画面を赤く点滅
- プレイヤーが攻撃した際に画面を揺らす
- スキル発動時にBloom(光のにじみ)やVignette(ビネット)を演出
前提として「Feedbacksの使い方が分かっている」、「Volumeを使うことが出来る」必要がありますのでもしもできてない方は以下の記事をご確認していただくとより理解が深まると思います。
FeedbacksでVolumeを操作する方法
Volume用のコンポーネントを追加する
Feedbacksを使ってVolumeを操作するには、まずVolumeを持つオブジェクトに特定のコンポーネントを追加する必要があります。以下がその手順になります。
- Volumeが設定されているGameObjectを選択する
- 「MM(エフェクト名)_URP」のコンポーネントを追加する
ただし、HDRPの場合は「MM(エフェクト名)_HDRP」になると思います。
これらのコンポーネントが追加されていないと、Feedbacksを介してVolumeを操作することはできませんので注意してください。
設定例
以下がVolume用のコンポーネントになります。名称としては後ろに「_URP」もしくは「_HDRP」と記載があるものがVolumeに対応したコンポーネントになります。
また、設定するコンポーネントについてはVolumeで設定したエフェクトに対応したコンポーネントを設定するようにしましょう。上記の例で言うとVolumeにBloomのエフェクトが追加されているのでFeedbacksでBloomを動かしたい場合は「MMBloomShaker_UPR」などを追加するようにしましょう。
VolumeエフェクトのFeedback設定する
続いてFeedbacksを使ったVolumeエフェクトの設定手順になります。
- 操作したいエフェクトに対応するFeedbackを追加する
例: Bloom URP(Bloom用)、Vignette URP(Vignette用) - Feedbacksのインスペクターで、Intensity(強度)やDuration(持続時間)などを設定する
以下はVolumeを動かすために自作したWeaponUsedMMFeedbackになります。
「URP」が付いているものがVolume用のFeedbacksになります。
(自分の環境がURPなので未確認ですが、HDRPの環境だと「HDRP」が出るかもしれません)
この状態にすることでFeedbacksが働いたときに対象のVolumeエフェクトが実行されるようになります。また、VolumeのFeedbacksは変わらずにPostProcessにありますのでこちらから設定することが可能です。
動作確認
では、簡単に正しい設定をした場合と間違った設定をした場合で動作確認をしていきましょう。
コンポーネントとFeedbacksに所定の設定をした場合
- Volumeに所定のコンポーネントを設定する
- Feedbacksに対応するVolumeのエフェクトを追加する
この状態で動かしたときの動画が以下になります。Feedbacksがちゃんと動いて、Game画面上もBloomなど(ほかのエフェクトが弱くて見えませんが)動いていることが分かりますね。
#Volumeに設定したコンポーネントにチェックマークがついていませんがカーセルを合わせるとちゃんと動いていることが分かります。
Feedbacksの設定を有効にしていない場合
FeedbacksでVolumeのエフェクトを実行しない場合の動作確認になります。Feedbacksが動いていないためGame画面上もなにもエフェクトが動いていないことが分かります。
コンポーネントを設定していない場合
続いて、FeedbacksにはVolumeのエフェクトの設定をしていますが、Volumeオブジェクトに対応するコンポーネントを設定していない場合の動作になります。こちらも同様にGame画面上でエフェクトが動いていないことが分かります。
まとめ
今回は、FEELのFeedbacksでVolumeを操作する方法について解説しました。この手順を使うことで、ゲーム内のエフェクトを動的にコントロールできるようになるため以下のようなことが簡単に実現できます。
- 敵の攻撃で画面を赤く点滅させる。
- 強力なスキル発動時に画面全体を幻想的なBloomで包む。
- 画面の揺れやエフェクトの連携によって迫力のあるプレイ体験を作り出す。 などなど
この方法を使えばゲームの臨場感を簡単に高めることができます。もしまだ試していない方はこの機会にぜひ挑戦してみてください!
コメント