Skip to content

第10回 エフェクトと演出

前回は、射撃や命中などの出来事へ音声を接続しました。 今回は、同じ出来事へ視覚的な反応を追加します。

命中時の円形エフェクトと背景のスクロールを加え、ゲームの状態変化を画面から読み取りやすくします。

配布プロジェクト

前回の作業が完了した状態と同等のプロジェクトを配布します。 第10回のプロジェクトを展開し、ShootingGame2D.slnをVisual Studio 2026で開いてください。

この回のゴール

授業終了時には、命中や被弾した場所にエフェクトが表示され、背景が切れ目なくスクロールするようにします。

  • エフェクト1つ分の状態をManager内部で管理する
  • 命中や被弾が成立した場所からエフェクトを生成する
  • エフェクトを時間で更新し、終了したものを再利用する
  • 背景を2枚並べて切れ目なくスクロール表示する

今回のポイント

エフェクトも、弾と同じように画面へ何度も出現し、時間が経つと終了するオブジェクトです。 そのため、第02回以降で使ってきた固定容量と有効フラグを、エフェクトへ反復します。

エフェクトを各Entityへ直接持たせず、EffectManagerへ集めます。 背景は2枚を並べて描画し、片方が画面外へ出たら位置を戻すことで、切れ目なくスクロールさせます。

処理の流れ
Game
命中・被弾などの出来事を調停
EffectManager
Game
発生位置で生成を依頼
EffectManager
EffectManager
経過時間に応じて描画
Draw

今回実装する範囲

区分内容
新しく実装する処理EffectManager、命中・被弾時の生成、背景スクロール
既存の仕組みを反復する処理固定容量、実行状態、時間更新、GameからManagerへの依頼
維持する処理Player、Enemy、各Shot、ImageManager、SoundManager

今回の完成例

まず自分のゲームでエフェクトと背景を確認してから、第11回の配布プロジェクトを完成例として比較します。

確認するファイル確認する内容
EffectManager.hエフェクトの状態と固定容量配列
EffectManager.cpp生成、時間更新、半径・透明度の計算、描画
Game.cpp命中・被弾位置からの生成と描画順