前書き
普通に実装すると、現在音が鳴っているBGMを停止して、次のBGMを実行、ボスが撃破されたら元のBGMを再生するというスクリプトを組む必要がありますが、今回はTopDown Engine(に付属されているFEEL)の機能を使ってボスが出現した時にBGMを変える方法を紹介していこうと思います。
注意点として今回の方法はあくまでやり方の一つになります。他にスクリプトを組んでやる方法もありますので、こんなやり方もあるんだなーっという感じで見ていただけると幸いです。
やりたいこと
以下の動画のように
- 通常の戦闘BGMを流す
- ボスが出現した時にBGMを変更する
- ボスを倒したときに元のBGMに戻す
上記のことをやりたいと思います。
# 今回は省略しますが途中の効果音もFeedbacks機能(FEEL)を使えば簡単に実装できます。
ボス出現などでBGMを変更する方法
BGMを準備
まずは最初にBGMを鳴らす準備をしましょう。
BGMを鳴らす方法としてDemoなどを見るとBackgroundMusicコンポーネントを使っていたりするので単純にBGMを流したい場合はこのコンポーネントを使ってもらっても大丈夫です。

音量の調整をしたい、など色々とBGMに手を加えたい場合は、BackgroundMusicコンポーネント以外だとMMFeedbacksコンポーネントにあるMMSoundManager Soundを使用することでBGMを流すことも可能です。こちらはBackgroundMusicコンポーネントと異なり、いろいろとBGMに手を加えることが可能なので、個人的にはこっちを使っています。

BackgroundMusicコンポーネント、MMSoundManager Sound、
どちらを使うかはお好みで大丈夫ですが、
それぞれのコンポーネントにある”ID”が重要になります。
このIDは後ほど使うことになるので忘れずメモをしておいてください。
BGMを変更するための下準備
ボスが出現した時にBGMを変更する方法は色々ありますが、
今回はMMFeedbacksを使った方法になります。
自分が現在使っている方法として以下のように「ボスが出現した時」、「ボスを倒したとき」
でFeedbacksを実行するスクリプトを作成しています。
- ボスが出現したときにMMFeedbacksを実行する処理(EntyFeedback)
- ボスを倒したときにMMFeedbacksをを実行する処理(ExitFeedback)

ボスが出現した時にBGMを変更する方法
EntyMMFeedbackの中でMMSoundManager SoundControlを使用します。
これはSoundIDを指定することで、音楽の停止、再開などを実行できるFeedbackになります。
BackgroundMusicコンポーネントやMMsoundManagerSoundでSoundIDを設定していると思いますが、そのSoundIDをここで使います。
以下の例だとMMSoundManager SoundControlにあるSoundIDが”1″のものをPauseにして、
新しくMMSoundManager Soundを使用してSoundIDが”2″のBGMを実行しています。

こうすることFeedbacksが実行された時に
- SoundIDが”1″のBGMを停止する
→MMSoundManager SoundControlの動き - SoundIDが”2″のBGMを実行する
→MMSoundManager Soundの動き
という処理をするFeedbacksになります。
ボスを倒したときに元のBGMに戻す方法
ボス出現時と同じようにMMsoundManagerSoundControlを使用します。
同じようにSoundIDを指定して、停止、再開を行うことで今まで流れていたBGMを停止し、
停止していたBGMを再開させることが可能です。
以下の例でいうと
- SoundIDが”2″のBGMを停止する
→MMSoundManager SoundControlの動き - SoundIDが”1″のBGMを再開する
→MMSoundManager SoundControlの動き
という処理をするFeedbacksになります。

上記の設定を行うことでBGMの変更をすることが可能になります。
まとめ
今回はBGMを停止、再開する方法について紹介をしました。
自分でスクリプトを組んでBGMの停止、再開をすることも可能ですが、TopDown Engine付属のFeedbacks(FEELというアセット)を使うことで簡単にBGMの操作をすることが可能です。Feedbacksを組み合わせることでもっと複雑な作りにすることも可能なので慣れてきたら自分だけのやり方で音楽を設定してみるものいいかなと思います。
コメント