ATSプラグインによる音声の再生制御

 BVEのATSプラグインから指示可能な音声の再生方式には連続再生と一回再生の二種類があります。この記事では、二種類の再生法の手順を解説します。

連続再生

 連続再生を制御する場合はATS_SOUND_STOP(以下STOP)とATS_SOUND_PLAYLOOPING(以下PLAYLOOPING)の定数値をセットで使います。

 音声を連続再生する場合は特に難しいことはありません。再生を開始する場合はPLAYLOOPINGを常時出力、停止させる場合はSTOPを常時出力させるだけでOKです。STOPが一回も出力されていないときにPLAYLOOPINGを出力しても音が鳴らないことにだけ注意してください。音声再生の前にSTOPの出力を行わないと、シナリオ開始後最初の一回だけ音声の再生が無視されるいう不具合が発生します。

 PLAYLOOPINGの代わりに、マイナスのデシベル値を指定することで音量を小さくして連続再生することも可能です。

コーディング例

変数名 説明
isSoundPlay bool 音声再生制御
sound int* BVEの音声再生制御出力を格納する配列
//
// 音声再生中は常にisSoundPlayにtrueを、停止中はfalseを代入しておく
//
if (isSoundPlay)
{
    // 連続再生
    sound[0] = ATS_SOUND_PLAYLOOPING;
}
else
{
    // 再生停止時は常時STOPを出力
    sound[0] = ATS_SOUND_STOP;
}

一回再生

 一回再生を行う場合はATS_SOUND_CONTINUE(以下CONTINUE)とATS_SOUND_PLAY(以下PLAY)の定数値をセットで使います。

 こちらはプログラミングに慣れていないと少々複雑に感じられるかもしれません。音声の再生タイミングでPLAYを出力するだけでは音声は再生されず、再生を行うためには予めCONTINUEが出力されている必要があります。そのため、音声の一回再生を行うためには音声を再生するタイミングでのみPLAYを出力し、それ以外は常にCONTINUEを出力するコードを書く必要があります。

コーディング例

変数名 説明
soundPlayFlag bool 音声単発再生フラグ
sound int* BVEの音声再生制御出力を格納する配列
//
// 音声再生時にsoundPlayFlagに一度だけtrueを代入しておく
//
if (soundPlayFlag)
{
    // 一回再生
    sound[0] = ATS_SOUND_PLAY;

    // 次フレームからはCONTINUEを出力させるためにfalseに
    soundPlayFlag = false;
}
else
{
    // 再生しない時は常時CONTINUEを出力
    sound[0] = ATS_SOUND_CONTINUE;
}

まとめ

 音声の連続再生時はPLAYLOOPINGとSTOP、一回再生時はPLAYとCONTINUEをセットで使う、と覚えておくと良いでしょう。

連続 一回
再生 PLAYLOOPING PLAY
停止 STOP CONTINUE