Appearance
第03回 敵の出現と移動
前回は、プレイヤーの弾をPlayerShotManagerでまとめて管理できるようにしました。 今回は、その仕組みを敵へ広げます。
敵は1体分の状態と動きをEnemyへ分け、複数の敵の所有と出現をEnemyManagerへ任せます。
配布プロジェクト
前回の作業が完了した状態と同等のプロジェクトを配布します。 第03回のプロジェクトを展開し、ShootingGame2D.slnをVisual Studio 2026で開いてください。
この回のゴール
授業終了時には、画面上端から敵が一定間隔で出現し、下方向へ移動するようにします。 一部の敵は横へ揺れながら進みますが、全体としては下方向へ進み続けます。
- 敵1体分の状態と移動を
Enemyへ分ける EnemyManagerを使って敵を固定数で所有する- レーンと出現タイマーから敵の出現位置を決める
- 直進と波状移動を同じ敵の構造へ追加する
今回のポイント
プレイヤーの弾は、Gameが1発ずつ持つのではなく、PlayerShotManagerがまとめて管理しています。 敵も同じように、Gameの変数や配列へ直接追加せず、最初からEnemyManagerを経由して出現、更新、描画します。
敵1体分の動きはEnemyへ分け、複数の敵を扱う仕組みはEnemyManagerへ集めます。
Game
出現、更新、描画を依頼
EnemyManager
EnemyManager
空き要素へ設定を渡す
Enemy
Enemy
敵の画像を描画
ImageManager
1 / 4敵1体分の処理を分ける敵1体の位置、移動、実行状態を
Enemyへ分け、複数管理の準備をする2 / 4レーンとタイマーで敵を出現させる画面上端の決められたレーンから、一定間隔で敵を再利用して出現させる3 / 4敵の移動方法を追加する敵の共通する下方向の進行を保ったまま、直進と波状移動を実装する4 / 4敵をゲームループへ接続するEnemyManagerをゲームの更新と描画へ接続し、プレイヤー弾と敵を同じ画面で確認する今回実装する範囲
| 区分 | 内容 |
|---|---|
| 新しく作る処理 | Enemy、EnemyManager、敵の出現タイマー |
| 既存の仕組みを反復する処理 | 個体クラス、固定容量配列、有効フラグ、Manager経由の描画 |
| 後の回で追加する処理 | プレイヤー弾との命中、敵弾の発射、HPの減少 |
今回の完成例
まず自分の実装を動かしてから、第04回の配布プロジェクトを完成例として比較します。
| 確認するファイル | 確認する内容 |
|---|---|
Enemy.cpp | 敵1体の生成、直進・波状移動、画面外での停止 |
EnemyManager.cpp | 出現タイマー、レーン、速度、移動方法、再利用 |
Game.cpp | EnemyManagerへ更新と描画を依頼する流れ |