ADX2 LE で BGM のフェードイン、フェードアウトをする方法です。
画面遷移などで BGM のフェードアウトという機能はゲームをつくるのにあたって必須になります。
CriAtomSource の機能ではデフォルトではこの機能は提供されていなく、直ぐ停止してしまいます。
これをフェードアウトさせるための方法です。
が、調べてみると他の方法がみつからなかったのですが
処理が一番簡単そうなのは、どうも魔改造になるっぽいです。
・サウンド助け合い所 @ ウィキ - ADX2LE情報
AtomSourceからCriAtomExPlayerを得る(CriAtomExPlayerを呼び出す改良)
http://www53.atwiki.jp/soundtasukeai/pages/22.html#id_6c095b2dCriAtomExPlayer を取得して設定するのが一番早いので
上記のとおりに CriAtomSource.cs に CriAtomExPlayer を取得するソースを追加します。
そして追加したソースで CriAtomSource から CriAtomExPlayer を取得して設定します。
CriAtomSource atomSource;
// フェードイン時間セット(ミリ秒)
atomSource.Player.SetEnvelopeAttackTime(2000.0f);
// フェードアウト時間のセット(ミリ秒)
atomSource.Player.SetEnvelopeReleaseTime(2000.0f);
CriAtomExPlayer の SetEnvelopeAttackTime が再生時のフェードインの時間で
SetEnvelopeReleaseTime が停止時のフェードアウトの時間の設定となります。
両方ともミリ秒での指定になります。
一応これでフェードインでの再生、フェードアウトしての停止が動いているようです。
が、魔改造ではあるので、公式にプレイヤーを使えるようにしてほしいなーと思う今日この頃です。
この方法凄く楽ですし…(苦笑
もしくは CriAtomSource で ReleaseTime が設定できるようになるといいなーと。
他にも方法があると思うのでまた調べてみようと思います。