UE5 MetaSound 05 ~ブループリントでTriggerのPlayとStopを制御する~ #UE5 #MetaSounds
【今回のポジティブワード】
人生は短距離走ではなくて長距離走です。
短距離走で転んでしまったら致命的ですが、マラソンで転んでしまっても後で追い上げることはできます。
~ヒカキン~
YouTubeを長年続けてきたヒカキンさんだからこその説得力があるお言葉ですね。技術を覚えていくのも離れている時期があります。短距離走と思ってしまうと致命的かもしれません。長距離走だと思えば、また1から覚えなおしてもすぐに追いついて次に進むことが出来ます。この技術noteも長距離走でゆっくり技術を身に着けていきます!
【前回】
前回は【3Dサウンド化 サウンドの減衰(Sound Attenuation)について】について書きました。今回は【ブループリントでTriggerのPlayとStopを制御する】について書いてみます。
今回はMetaSoundのTriggerノードをBlurprintで制御する方法について検証していきます。
前回からの続きになります。
1. WavePlayerのPlayとStopを制御するTriggerを追加する
前回サウンドの減衰を確認するために配置したMetaSound[MS_Explosion01]を再生/停止出来るように変更していきます。
まずは[MS_Explosion01]をMetaSoundエディタで開きます。
MetaSoundパネルの[INPUTS]の右側にある[+]をクリックして新しいInputを追加します。
[Inspector]パネルの[Input Name]と[Type]を変更します。
・Input Name : On Stop
・Type:Trigger
グラフ内で右クリックし、リストから[Get On Stop]を選択してInputで追加したTriggerを追加します。
ブループリント感覚でドラッグ&ドロップの追加を試みましたが出来ませんでした。
[Input:On Stop]と[Wave PlayerのStop]を接続します。
[Play]ボタンをクリックすると[Explosion01]がループ再生されます。
再生された後に、[Input:On Stop]を選択し、[Inspector]パネル [Simulate]の[↓]をクリックします。(Input ノードの右上の[↓]ボタンをクリックしても同じように実行されます)
[Input : On Stop]が[WavePlayer]の[Stop]を呼び出して音源の再生を停止させます。
[Input : On Play]のSimulateボタンを押せば再び再生できるのかと思いましたが、SpectorタブにSimulateボタンがありませんでした。
[Input:On Play]は[Play]ボタンを押した時の起点となる特殊なノードという扱いのようです。
新しいInputのTriggerを追加します。
・Input Name:On PlayStart
・Type:Trigger
[Get On PlayStart]を追加します。
[Input : On PlayStart]と[Wave Player : Play]を接続します。
Blueprintの実行ピンでは複数実行ピンを接続できましたが、Triggerのノードは1つのピンしか接続することが出来ません。
[Play]ボタンを押してから、[On PlayStart]の[↓]ボタンを押すと[Wave PlayerのPlay]が実行されます。Wave PlayerがPlayの状態の時に、[On Stop]の[↓]ボタンを押すと[Wave PlayerのStop]が実行されて停止します。[On PlayStart]の[↓]ボタンを押せばWavePlayerが再び再生されるので、Triggerで再生と停止を制御することが出来ます。
[Play]ボタンを押す前に[On PlayStart]の[↓]ボタンを押しても[Wave PlayerのPlay]は実行されません。Triggerは[Play]ボタンを押した時にのみ実行されます。
2. ブループリントでTrigger[On PlayStart]と[On Stop]を呼び出す
特定な領域(Trigger Volume)に入った時に[On PlayStart]を呼び出して停止し、範囲から出たら[On Stop]を呼び出して再生させるようにします。
2.1. TriggerVolumeとPlaneを配置する
[Trigger Volume]をViewportに追加します
Trigger Volumeの大きさを調整します(Brush Shapeプロパティでエリアの範囲を調整する)。
Playをしてからエリアが分からないのでPlaneを配置して、エリアが分かるように可視化します。
2.2. TriggerVolume内に入った時(OnActorBeginOverlap)に[On PlayStart]を実行する
TriggerVolumeに入った時にイベントを発生するように[OnActorBeginOverlap]を追加します。
Level Blueprintが開きます。
ビューポートの[MS_Explosion01]を選択して、Level Blueprintに[MS_Explosion01]の参照を追加します。
MS_Explosion01の参照から[Get Parameter Interface(AudioComponent)]を追加します。
[Get Parameter Interface]から[Trigger(Interface Call)]を追加します。
実行ピンを接続してOnActorBeginOverlapが発生した際にTriggerノードが実行されるようにします。
TriggerノードのNameには[On PlayerStart]を設定します。
PlayしてTriggerVolume内に入ると音源が再生されます。
Triggerノードが実行された時にMetaSound側に同じ名前のインプットがあった時にはInputが実行されます。
2.3. TriggerVolume内から出た時(OnActorEndOverlap)に[On Stop]を実行する
次はエリアから出た時に[On Stop]が呼ばれるように実装していきます。
TriggerVolumeから出た時にイベントを発生するように[OnActorEndOverlap]を追加します。
[Get Parameter Interface]から[Trigger(Interface Call)]を追加します。
実行ピンを接続してOnActorEndOverlapが発生した際にTriggerノードが実行されるようにします。
TriggerノードのNameには[On Stop]を設定します。
Playしてから一度エリア内に入り音源が再生されて、エリア外に出ると音源が停止します。
これでエリア内に入ると[On PlayStart]が実行され音源が再生され、エリア外に出ると[On Stop]が実行され音源が停止するようになります。
3. ブループリントでTriggerを使わずに再生/停止する
Triggerを使用しないで音源を再生するにはどうしたらいいでしょうか。
[OnPlay]で再生して、音源を停止する方法について試してみます。
LevelBlueprintを開きます。
Audio ComponentからPlayを呼び出すようにします。
Audio ComponentからStopを呼び出すようにします。
実行ピンを接続します。
Event BeginPlayを追加します。
Event BeginPlayはPlayした時に実行されるので、プレイしたら音源を停止した状態にし、エリアに入ったら音源が再生されるようにします。
Playしてエリアに入ると音源が再生され、エリアから出ると音源が停止します。
Triggerを使わない方法はツールバーの[Play]ボタンと[Stop]ボタンを押すような動きをします。
まとめ
Sound Cueでは[Play][Stop]ボタンを押すような制御をしていたので、MetaSoundは別の選択肢を取れるようになりました。どうやって使い分けていくかこれから出てくると思うとワクワクします。
次回からはSoudWaveを使うのではなく、プロシージャル(手続き型)のMetaSoundが期待されている使い方について学習していきます。
MetaSoundで何が出来るのでしょうか。音楽用語を少しずつ理解しながらカッコいいBGMを作れたら楽しそうですね。
この記事が気に入ったらサポートをしてみませんか?