Skip to content
第09回 音声の管理と再生

2 / 4 状態遷移へBGMを接続する

このステップの目的

タイトル、プレイ、結果の状態へBGMの開始と停止を接続する

BGMを重ねない

PlayBgm()は現在のBGMを停止してから新しいBGMを再生します。 状態が変わる場所をChangeState()へ集約したため、BGMの切り替えも同じ場所へ置けます。

Game.cppcpp
void Game::ChangeState(State nextState)
{
    state = nextState;

    switch (state)
    {
    case State::Title:
        sounds.PlayBgm(SoundId::TitleBgm);
        break;
    case State::Playing:
        sounds.PlayBgm(SoundId::PlayingBgm);
        break;
    case State::GameClear:
        sounds.StopBgm();
        sounds.PlaySe(SoundId::Clear);
        break;
    case State::GameOver:
        sounds.StopBgm();
        sounds.PlaySe(SoundId::GameOver);
        break;
    }
}

状態を変更する場所ごとにBGMを操作せず、状態に入ったときの処理として一つへ集めます。

チェックリスト
  • 状態ごとのBGMが決まっている
  • BGM切り替えをChangeState()へ集約している
  • 結果画面でプレイ中BGMが残らない