サウンドボリュームをリアルタイムに変動させたい

こんにちわ。
私は現在作成しているゲームの中で キャラクターが走る際のSEを実装しました。
その際に、キャラクターの走るスピードに応じてSEの音量をリアルタイムに変えられるようにしたいと思い、キャラクターBPの中に(正確ではありませんが)写真のようにノードを作成しました。
SE自体は5秒ほどのサウンドキューをループさせて使っております。
しかしこの写真のようにした場合、pressedが走った瞬間にのみvolumeを参照するようで、例えばキャラクターがだんだんと加速していく状況に対して音量が最初の状態から変わりませんでした。

再生中のサウンドの音量をfloat変数によって上げ下げしたい場合、どのような機能を使えば上手くいくでしょうか?
ぜひご教授願います。

私も少し前にこの方法で悩みました。

サウンドクラスとサウンドミックスとサウンドウェーブorサウンドキューを使用すれば本方法が可能です。

ざっくりというと下記のような機能です。

  • サウンドクラスがサウンドの設定をつかさどる部分
  • サウンドミックスがサウンドクラスの設定を変更できるもの
  • サウンドウェーブとサウンドキューが実際に再生できるもの

(http://api.unrealengine.com/JPN/Engine/Audio/Overview/#サウンドキュー)
上記から各サウンド再生用のアセット(ウェーブやキュー)にサウンドクラスを指定し、
サウンドクラスを経由してサウンドを再生させながら、
Blueprint側からはサウンドミックス経由でサウンドクラスの値を変更するようにします。

少し手順が多いですが具体的方法は下記です。

  1. 下図のようにアセットのサウンドからサウンドクラスを二つ用意する(MasterClassとSoundSeClassと名付けます)。加えてサウンドミックス(DefaultSoundMixと名付ける)も一つ用意する。

  1. プロジェクトの設定(エンジン→Audio→Audio)から「Default Sound Class」と「Default Media Sound Class」に手順1で作成した「MasterClass」を指定する。

  2. 「MasterClass」のサウンドクラスを開けて「ChildrenClasses」に「SoundSeClass」を指定。すると下図のようなノードに変わる(図は2配列エレメントとなっているが、今回は1配列エレメントでOK)

  1. 下図のように音量を変更したいサウンドキューorサウンドウェーブを開けて(再生する場合がキューならキューの設定 ウェーブならウェーブの設定を開けて)下図のように「Sound」の「Sound Class」に「SoundSeClass」を指定する。

259783-001.png

  1. 「DefaultSoundMix」の「SoundClasses」に「SoundSeClass」を指定する。(この手順はUGameplayStaticsのソースコードを見る限り必要ないかも。。。)

  1. 後はBlueprint側から下記のようにノードを繋げば、問題なく動作するはずです。下図の例だとPlaySound2Dに指定したSE_Confirmが「SoundSeClass」を指定したサウンドキュー、1キーを押下することで「SoundSeClass」のボリュームを0.5にしています。Apply to Childrenはtrue設定にしています。FadeInTimeを0にすると即時に音量の変更が可能です。

もしかすると手順2でエンジンのサウンドクラスから独自のサウンドクラスに変更した結果、
対象のSE以外、他サウンドが再生されなくなったという事があるかもしれませんが、
その場合は再生されなくなったサウンドキュー又はサウンドバッファに 手順1で作成したMasterClassを指定しなおしてあげてください。

※私も初心者ですので説明の認識誤りや間違ってた場合は申し訳ないです。

とても詳しい説明ありがとうございます。
詳しい図まで載せてくださりとっても助かりました!
今後様々な場面で応用が効きそうなので活用させていただきます。
ありがとうございました:)