Skip to content

第05回 プレイヤーを狙う敵弾

前回は、プレイヤーの弾を敵へ当てて倒せるようになりました。 今回は、敵がプレイヤーを狙って発射する敵弾を追加します。

敵弾はプレイヤーの位置を発射時に目標として受け取り、その後は同じ方向へ進み続けます。

配布プロジェクト

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

この回のゴール

授業終了時には、敵がプレイヤーの発射時点の位置を狙って敵弾を撃ち、敵弾がその方向へ進むようにします。

  • 敵弾1発分をEnemyShotとして管理する
  • EnemyShotManagerで敵弾を固定数所有し再利用する
  • 2点の差から方向を求め、長さをそろえて速度を設定する
  • 発射時の目標と発射後の移動を分けて説明する

今回のポイント

プレイヤー弾と敵弾は、どちらも飛んでいくオブジェクトです。 しかし、発射する側、向かう方向、後の命中判定が異なるため、既存のプレイヤー弾へ敵弾を混ぜません。

第02回のプレイヤー弾と第03回の敵Managerの仕組みを使い、敵弾専用の個体クラスとManagerを最初から用意します。

処理の流れ
Enemy
発射位置と目標位置を渡す
EnemyShotManager
EnemyShotManager
空き要素へ生成を依頼
EnemyShot
EnemyShot
発射時点の位置へ向けて進む
Player

今回実装する範囲

区分内容
新しく作る処理EnemyShotEnemyShotManager、方向計算、敵の発射タイマー
既存の仕組みを反復する処理個体クラス、固定容量、空き要素の再利用、Manager経由の描画
後の回で利用する処理敵弾とプレイヤーの命中、HP、無敵時間

今回の完成例

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

確認するファイル確認する内容
EnemyShot.cpp発射時の方向計算、一定速度の移動、画面外での停止
EnemyShotManager.cpp敵弾の固定容量管理と再利用
Enemy.cpp発射間隔と敵弾生成の依頼
Game.cpp敵弾の更新、描画、発射時の目標位置の受け渡し