見出し画像

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[MS_Explosion01]を再利用

MetaSoundパネルの[INPUTS]の右側にある[+]をクリックして新しいInputを追加します。

新しいInputを追加する

[Inspector]パネルの[Input Name]と[Type]を変更します。
・Input Name : On Stop
・Type:Trigger 

Input NameとTypeを変更する

グラフ内で右クリックし、リストから[Get On Stop]を選択してInputで追加したTriggerを追加します。
ブループリント感覚でドラッグ&ドロップの追加を試みましたが出来ませんでした。

右クリック > [Get On Stop]

[Input:On Stop]と[Wave PlayerのStop]を接続します。

[Input Stop]と[Wave PlayerのStop]を接続

[Play]ボタンをクリックすると[Explosion01]がループ再生されます。
再生された後に、[Input:On Stop]を選択し、[Inspector]パネル [Simulate]の[↓]をクリックします。(Input ノードの右上の[↓]ボタンをクリックしても同じように実行されます)
[Input : On Stop]が[WavePlayer]の[Stop]を呼び出して音源の再生を停止させます。

Playボタンを押した後に、[On Stop]をSimulateボタンで呼び出すとWavePlayerの再生が停止する
Inputノードの右上の[↓]ボタンをクリックでもSimulateボタンを押したことになる

[Input : On Play]のSimulateボタンを押せば再び再生できるのかと思いましたが、SpectorタブにSimulateボタンがありませんでした。
[Input:On Play]は[Play]ボタンを押した時の起点となる特殊なノードという扱いのようです。

Input : On Playは[Play]ボタンを押した時のみ実行される

新しいInputのTriggerを追加します。
・Input Name:On PlayStart
・Type:Trigger

新しいInputのTrigger:On PlayStartを追加する

[Get On PlayStart]を追加します。

[Get On PlayStart]を追加する

[Input : On PlayStart]と[Wave Player : Play]を接続します。
Blueprintの実行ピンでは複数実行ピンを接続できましたが、Triggerのノードは1つのピンしか接続することが出来ません。

[Input : On PlayStart]と[Wave Player : Play]を接続

[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]ボタンを押した時にのみ実行されます。

Triggerノードの[On PlayStart]と[On Stop]で再生と停止を制御出来るようになる

2. ブループリントでTrigger[On PlayStart]と[On Stop]を呼び出す

特定な領域(Trigger Volume)に入った時に[On PlayStart]を呼び出して停止し、範囲から出たら[On Stop]を呼び出して再生させるようにします。

特定のエリアに入ったら[On PlayStart]で再生、エリアを出たら[On Stop]で停止

2.1. TriggerVolumeとPlaneを配置する

[Trigger Volume]をViewportに追加します

TriggerVolumeを追加する:Create > Volume > Trigger Volume

Trigger Volumeの大きさを調整します(Brush Shapeプロパティでエリアの範囲を調整する)。
Playをしてからエリアが分からないのでPlaneを配置して、エリアが分かるように可視化します。

Trigger Volumeのエリア範囲を調整し、Planeでエリアを可視化する

2.2. TriggerVolume内に入った時(OnActorBeginOverlap)に[On PlayStart]を実行する

TriggerVolumeに入った時にイベントを発生するように[OnActorBeginOverlap]を追加します。

TriggerVolumeを右クリック > Add Event > OnActorBeginOverlap

Level Blueprintが開きます。
ビューポートの[MS_Explosion01]を選択して、Level Blueprintに[MS_Explosion01]の参照を追加します。

ビューポートの[MS_Explosion01]を選択 > イベントグラフを右クリック > Create a Reference to MS_Explosion01 

MS_Explosion01の参照から[Get Parameter Interface(AudioComponent)]を追加します。

MS_Explosion01の参照からドラッグ&ドロップ > Get Parameter Interface(AudioComponent)

[Get Parameter Interface]から[Trigger(Interface Call)]を追加します。

Get Parameter Interface > Trigger(Interface Call)

実行ピンを接続してOnActorBeginOverlapが発生した際にTriggerノードが実行されるようにします。
TriggerノードのNameには[On PlayerStart]を設定します。

実行ピンを接続し、TriggerノードのNameに[On PlayStart]を設定する

PlayしてTriggerVolume内に入ると音源が再生されます。

エリア内に入ると音源が再生されます

Triggerノードが実行された時にMetaSound側に同じ名前のインプットがあった時にはInputが実行されます。

Triggerノードで指定した名前のInputが実行される

2.3. TriggerVolume内から出た時(OnActorEndOverlap)に[On Stop]を実行する

次はエリアから出た時に[On Stop]が呼ばれるように実装していきます。
TriggerVolumeから出た時にイベントを発生するように[OnActorEndOverlap]を追加します。

TriggerVolumeを右クリック > Add Event > OnActorEndOverlap

[Get Parameter Interface]から[Trigger(Interface Call)]を追加します。

Get Parameter Interface > Trigger(Interface Call)

実行ピンを接続してOnActorEndOverlapが発生した際にTriggerノードが実行されるようにします。
TriggerノードのNameには[On Stop]を設定します。

実行ピンを接続し、TriggerノードのNameに[On Stop]を設定する

Playしてから一度エリア内に入り音源が再生されて、エリア外に出ると音源が停止します。

エリアの外に出ると音源が停止する

これでエリア内に入ると[On PlayStart]が実行され音源が再生され、エリア外に出ると[On Stop]が実行され音源が停止するようになります。

ブループリントでMetaSoundのTriggerを制御して再生と停止を行う

3. ブループリントでTriggerを使わずに再生/停止する

Triggerを使用しないで音源を再生するにはどうしたらいいでしょうか。
[OnPlay]で再生して、音源を停止する方法について試してみます。

On Playで再生する処理

LevelBlueprintを開きます。
Audio ComponentからPlayを呼び出すようにします。

Audio ComponentからStartを呼び出す

Audio ComponentからStopを呼び出すようにします。

Audio ComponentからStopを呼び出す

実行ピンを接続します。

実行ピンを接続する

Event BeginPlayを追加します。

Event BeginPlayを追加する

Event BeginPlayはPlayした時に実行されるので、プレイしたら音源を停止した状態にし、エリアに入ったら音源が再生されるようにします。

Event BeginPlayが呼ばれたらStopを呼び出す

Playしてエリアに入ると音源が再生され、エリアから出ると音源が停止します。

エリアに入ると音源が再生され、エリアから出ると音源が停止する

Triggerを使わない方法はツールバーの[Play]ボタンと[Stop]ボタンを押すような動きをします。

ツールバーの[Play][Stop]ボタンを押すような動きをする

まとめ

Sound Cueでは[Play][Stop]ボタンを押すような制御をしていたので、MetaSoundは別の選択肢を取れるようになりました。どうやって使い分けていくかこれから出てくると思うとワクワクします。

次回からはSoudWaveを使うのではなく、プロシージャル(手続き型)のMetaSoundが期待されている使い方について学習していきます。
MetaSoundで何が出来るのでしょうか。音楽用語を少しずつ理解しながらカッコいいBGMを作れたら楽しそうですね。


この記事が気に入ったらサポートをしてみませんか?