Appearance
第10回 エフェクトと演出
前回は、射撃や命中などの出来事へ音声を接続しました。 今回は、同じ出来事へ視覚的な反応を追加します。
命中時の円形エフェクトと背景のスクロールを加え、ゲームの状態変化を画面から読み取りやすくします。
配布プロジェクト
前回の作業が完了した状態と同等のプロジェクトを配布します。 第10回のプロジェクトを展開し、ShootingGame2D.slnをVisual Studio 2026で開いてください。
この回のゴール
授業終了時には、命中や被弾した場所にエフェクトが表示され、背景が切れ目なくスクロールするようにします。
- エフェクト1つ分の状態をManager内部で管理する
- 命中や被弾が成立した場所からエフェクトを生成する
- エフェクトを時間で更新し、終了したものを再利用する
- 背景を2枚並べて切れ目なくスクロール表示する
今回のポイント
エフェクトも、弾と同じように画面へ何度も出現し、時間が経つと終了するオブジェクトです。 そのため、第02回以降で使ってきた固定容量と有効フラグを、エフェクトへ反復します。
エフェクトを各Entityへ直接持たせず、EffectManagerへ集めます。 背景は2枚を並べて描画し、片方が画面外へ出たら位置を戻すことで、切れ目なくスクロールさせます。
Game
命中・被弾などの出来事を調停
EffectManager
Game
発生位置で生成を依頼
EffectManager
EffectManager
経過時間に応じて描画
Draw
1 / 4エフェクトを固定数で管理する命中時に表示するエフェクトを、既存のManagerと同じ固定容量の考え方で管理する2 / 4時間でエフェクトを更新するエフェクトの経過時間から大きさと透明度を計算し、表示時間を終えたら停止する3 / 4出来事へエフェクトを接続する命中や被弾が成立した位置へエフェクトを表示し、音声と視覚の反応をそろえる4 / 4背景と演出を確認するエフェクト、音、背景の動きを確認し、ゲーム中の出来事を読み取りやすくする
今回実装する範囲
| 区分 | 内容 |
|---|---|
| 新しく実装する処理 | EffectManager、命中・被弾時の生成、背景スクロール |
| 既存の仕組みを反復する処理 | 固定容量、実行状態、時間更新、GameからManagerへの依頼 |
| 維持する処理 | Player、Enemy、各Shot、ImageManager、SoundManager |
今回の完成例
まず自分のゲームでエフェクトと背景を確認してから、第11回の配布プロジェクトを完成例として比較します。
| 確認するファイル | 確認する内容 |
|---|---|
EffectManager.h | エフェクトの状態と固定容量配列 |
EffectManager.cpp | 生成、時間更新、半径・透明度の計算、描画 |
Game.cpp | 命中・被弾位置からの生成と描画順 |