Skip to content
第10回 エフェクトと演出

4 / 4 背景と演出を確認する

このステップの目的

エフェクト、音、背景の動きを確認し、ゲーム中の出来事を読み取りやすくする

背景をループさせる

背景画像を1枚だけ移動させると、画面下端で画像が途切れます。 同じ画像を上下に2枚並べ、スクロール位置に応じて描画することで切れ目を隠します。

背景のスクロール速度はGameTuning.hへ置き、ゲーム時間から表示位置を計算します。

Game::Draw()では、プレイ中のオブジェクトを描く前に背景を描きます。同じ画像を画面の上下へ2枚置き、画面内に入る部分を切れ目なくつなぎます。

Game.cppcpp
void Game::DrawBackground() const
{
    int scroll = static_cast<int>(playTime * tuning::background::ScrollSpeed);
    int offset = scroll % tuning::ScreenHeight;

    Rect first =
    {
        0.0f,
        static_cast<float>(offset - tuning::ScreenHeight),
        static_cast<float>(tuning::ScreenWidth),
        static_cast<float>(tuning::ScreenHeight)
    };

    Rect second =
    {
        0.0f,
        static_cast<float>(offset),
        static_cast<float>(tuning::ScreenWidth),
        static_cast<float>(tuning::ScreenHeight)
    };

    images.Draw(ImageManager::Id::Background, first);
    images.Draw(ImageManager::Id::Background, second);
}

Draw()の先頭でDrawBackground()を呼び、背景の後へプレイヤーや弾を描きます。

動作確認

  1. 敵を撃破した位置でエフェクトが広がって消えることを確認する。
  2. 被弾した位置へエフェクトが表示されることを確認する。
  3. 命中音とエフェクトが同じ出来事へ反応することを確認する。
  4. 背景が下方向へ流れ、継ぎ目が目立たないことを確認する。
チェックリスト
  • エフェクトが時間経過で終了する
  • 背景が切れ目なくスクロールする
  • 既存の命中判定、状態、Managerの責任が変わっていない
  • 射撃、命中、被弾の結果が画面と音から分かる

完成状態を保存したら、第11回の開始プロジェクトと見比べます。 EffectManagerと描画順が完成し、次回は配布確認とデバッグ表示へ進むことを確認します。