背景
ゲームの要素として重要なものの一つとしてBGMやSEがあります。それらを柔軟に扱ってみたかったので今回調べ始めました。
音声素材をインポートする方法
UEFN には .wav、.slac、.ogg、または .aif 形式のオーディオ ファイルをインポートできます。このエディタでは、これらのファイルを認識して直接使用できます。また、それらを サウンド キュー として保存することで、追加の機能を利用することもできます。
上記の形式に沿ったオーディオファイルをコンテンツドロワーにインポートorドラッグアンドドロップするとサウンドウェーブファイル
ができます。
この形式のままでも良いのですがもっとサウンドに編集を加えたいときが来ると思うのでこのファイルを右クリックしてキューを作成
をするのがよいかもしれません。
キューファイルをダブルクリックすると以下のようなノード画面が開きます。ここで様々な事ができます。
BGM素材について
Verseでサウンドを鳴らしてみる
動画
利用するDevice
配置
全体コード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
sound_manager_device := class(creative_device):
@editable
bgm1_player:audio_player_device=audio_player_device{}
@editable
bgm2_player:audio_player_device=audio_player_device{}
@editable
se_player:audio_player_device=audio_player_device{}
@editable
bgm_player_switch:switch_device=switch_device{}
@editable
bgm_change_switch:switch_device=switch_device{}
@editable
se_player_switch:switch_device=switch_device{}
var is_play_bgm : logic = false
var bgm_order : int = 0
OnBegin<override>()<suspends>:void=
bgm_player_switch.StateChangesEvent.Subscribe(PlayAndStopBGM)
bgm_change_switch.StateChangesEvent.Subscribe(ChangeBGM)
se_player_switch.TurnedOnEvent.Subscribe(PlaySE)
PlayAndStopBGM():void=
if (bgm_order = 0, is_play_bgm = false):
set is_play_bgm = true
bgm1_player.Play()
bgm2_player.Stop()
else if (bgm_order = 1, is_play_bgm = false):
set is_play_bgm = true
bgm2_player.Play()
bgm1_player.Stop()
else if (is_play_bgm = true):
set is_play_bgm = false
bgm1_player.Stop()
bgm2_player.Stop()
ChangeBGM():void=
if (bgm_order = 0):
set bgm_order = 1
else if (bgm_order = 1):
set bgm_order = 0
PlaySE(Agent:agent):void=
se_player.Play(Agent)
プレイヤーを指定してPlay関数を呼ぶだけで音が鳴り始めるようです!
bgm1_player.Play()
bgm2_player.Stop()
Play関数の引数にagentを入れるだけでそのagentと紐づいているプレイヤーのみに向けて音を鳴らせます。
se_player.Play(Agent)
まとめ
サウンドキューをVerseで保持できるようになればトランジションなどのBGM切り替えが簡単にできそうだなぁと感じましたw
サウンド関連のデバイスは思った以上に多くてもっと深ぼっていきたいと思いました。
↓これをちょっと使いこなしたい。。
余談
この度UEFN/Verseに関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。