RPGツクールVXやVXAceは非常に高性能なツールなんですが
以前の2000や2003にはあった機能が省かれていたり使いにくくなっていたりと
微妙に痒いところに手が届かない部分もあります。
「BGMのフェードインが出来ない」というのもその一つです。
フェードアウトがあるのにフェードインがないというのは謎というか
中の人が忘れてたんじゃないのかと疑ってしまいますが
とにかく無いものは仕方ありません。
で、場面転換がスムーズに行かなかったりして結構気になるんですよこれ。
同機能を導入するRGSS素材などもいくつかありますが
Game_Mapなどにも関わってくるせいか
他のスクリプト素材と競合しやすく上手く動かないことが多かったんですね、経験上。
そんなこんなで「とにかく音が少しずつ大きくなればいいんだろ!(暴言)」
とばかりにイベントコマンドでBGMフェードインを再現することにしました。
こんな感じです。
Audio.bgm_play(filename, volume, pitch)でBGMを再生出来ること、
その場合の音量には変数が使えるということを利用したものです。
中身としては
「変数=音量を徐々に増やしていって
一定のボリュームになったらループ解除+イベント終了」
という処理になります。
後はこれを並列処理(条件付き)にしておいて
適当なところで呼び出せば万事OKです。
左の画像だと60フレームかけて音量100までフェードイン、
右の画像だろ30フレームかけて音量60までフェードイン、みたいな感じになります。
数値をいじればいろいろ細かいことが出来るので
地味に拡張性も高いです。
ちなみに戦闘中やメニュー表示中だと並列処理が動かないので
そのあたりはウェイトで上手くごまかしたり別な方法を考える必要があります。
まあそれはそれで。