Skip to content

第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

今回実装する範囲

区分内容
新しく作る処理EnemyEnemyManager、敵の出現タイマー
既存の仕組みを反復する処理個体クラス、固定容量配列、有効フラグ、Manager経由の描画
後の回で追加する処理プレイヤー弾との命中、敵弾の発射、HPの減少

今回の完成例

まず自分の実装を動かしてから、第04回の配布プロジェクトを完成例として比較します。

確認するファイル確認する内容
Enemy.cpp敵1体の生成、直進・波状移動、画面外での停止
EnemyManager.cpp出現タイマー、レーン、速度、移動方法、再利用
Game.cppEnemyManagerへ更新と描画を依頼する流れ