Appearance
第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()を呼び、背景の後へプレイヤーや弾を描きます。
動作確認
- 敵を撃破した位置でエフェクトが広がって消えることを確認する。
- 被弾した位置へエフェクトが表示されることを確認する。
- 命中音とエフェクトが同じ出来事へ反応することを確認する。
- 背景が下方向へ流れ、継ぎ目が目立たないことを確認する。
チェックリスト
- エフェクトが時間経過で終了する
- 背景が切れ目なくスクロールする
- 既存の命中判定、状態、Managerの責任が変わっていない
- 射撃、命中、被弾の結果が画面と音から分かる
完成状態を保存したら、第11回の開始プロジェクトと見比べます。 EffectManagerと描画順が完成し、次回は配布確認とデバッグ表示へ進むことを確認します。