趣味で終わらせたくない方へ。現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

C++ゲーム開発|弾の連射処理と効率的な配列管理の仕組み

FPS・TPS・シューティングゲームの作り方

ゲーム制作において、自機から弾を発射する処理は基本中の基本です。

しかし、ただ弾を出すだけではなく「一定の間隔で連射する」「大量の弾を効率よく管理する」となると、初心者の方は壁にぶつかりがちです。

実は、C++での連射処理は、単純なループではなく「タイマー制御」と「構造体配列のフラグ管理」をマスターすることで、プロのような滑らかな動作が実現できます。

DirectXやDxLib環境でも共通して使える、汎用的なロジックを身につけましょう。

この記事では、単なるコードの紹介にとどまらず、なぜその計算が必要なのかという仕組みの部分から、コピペで即導入できるサンプルコードまで詳しく解説します。

この記事でわかること

  • PCの性能に依存しない正確な連射タイマーの実装法
  • 100発以上の弾をスムーズに処理する「フラグ管理」の秘訣
  • DirectX/DxLib両対応の弾移動・描画ロジック
  • ゲームが重くならないためのメモリ最適化の基礎知識
ゲーム開発講師
ゲーム開発講師
「ボタンを押した瞬間に弾が重なって出てしまう」という失敗は、タイマー処理で解決できます。まずは仕組みを理解しましょう!

\あなたにピッタリのFPS・TPSゲーム制作講座を見つけよう!/

おすすめ第1位

Unity FPSゲームの
作り方講座

★★★★★ (スマホ・VR対応)

FPS・スマホ・VRの3プラットフォームに同時対応。1本作るだけで3つのゲームが完成する圧倒的な開発体験が魅力の講座です。

講座を購読する \1本作ってFPS・VR・スマホを同時に制覇!/

初心者にもおすすめ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の三拍子。トレンドのデッキ構築型システムを最速で実装できます。初心者が最初に学ぶ一本として最適です。

講座を購読する \スマホ対応!初心者から最速で1本完成させる/

会話システムも学べる

Unity ノベルゲームの
作り方講座

★★★★★ (全14回)

かまいたちの夜・ダンガンロンパ風のノベルゲームをゼロから開発。会話システム・シナリオ分岐・セーブ機能まで、他ジャンルにも応用できるUIスキルが身につきます。

講座を購読する \会話システムを極めて全ジャンルに応用しよう/
ゲームを「遊ぶ側」から「作る側」へ

あなたのオリジナルゲーム、今年こそ完成させませんか?

RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。

Unity入門の森|永久会員チケット

永久会員チケット|Unity入門の森

全講座ラインナップを見てみる

実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。

なぜ「タイマー」と「配列管理」が必要なのか?

連射処理の仕組み:タイマーと配列の役割

初心者が陥りやすいミスは、キー入力を検知したフレームでそのまま弾を生成してしまうことです。

これでは1秒間に60発(60FPSの場合)もの弾が出てしまい、ゲームバランスが崩れるだけでなく、処理負荷も急増します。

自然な連射を実現するには、以下の2つの概念を組み合わせるのが正解です。

1. 発射インターバルの制御(タイマー)

「前回の発射から何フレーム経過したか」をカウントする変数を用意します。

設定したインターバル(例:10フレーム)に達するまでは次の弾を出さないように制御することで、リズミカルな連射が可能になります。

これにより、マシンスペックに関わらず一定の連射速度を保てます。

2. オブジェクトプーリング(配列の再利用)

弾が出るたびに新しくメモリを確保(new)して、消えるたびに解放(delete)するのは非常に効率が悪いです。

あらかじめ「弾の最大数(例:100個)」を配列として確保しておき、「有効フラグ(active)」を切り替えることで使い回す手法が、ゲーム開発のスタンダードです。

DirectX/標準C++による実践的な連射実装

C++での弾構造体と配列管理の実装

まずは、どの環境でも利用できる標準的なC++の構造体とロジックを見ていきましょう。

ここでは「弾のデータ管理」に焦点を当てます。

ステップ1:弾を管理する構造体を定義する

弾一つひとつが持つべき情報(座標、速度、生存状態)をまとめます。

bool activeを持つのがポイントです。

ステップ2:弾の「有効化」と「移動」の分離

弾を発射する処理(Fire)と、出ている弾を動かす処理(Update)を分けます。

これにより、メインループがスッキリし、拡張性が高まります。

【ゲームの作り方講座プレゼント中!】

DxLib環境でのビジュアル実装例

DxLibでの弾の描画と入力制御

ライブラリとしてDxLibを使用する場合、入力検知と描画処理をメインループに組み込みます。

マウスや特定のキーを押し続けている間の挙動を確認しましょう。

実装手順:描画ループへの組み込み

DxLibのDrawCircleなどを使って、activeがtrueの弾だけを画面に表示させます。

ループ内で常に「弾の状態を確認して描画する」という流れを作ります。

連射システムでよくある「バグ」と解決策5選

弾連射処理のデバッグとよくあるミス

コードを書いても思い通りに動かない場合、大抵は以下の5つのいずれかに原因があります。

特にメモリ関連のミスはゲームの強制終了を招くため注意が必要です。

1. 弾が消えずに新しい弾が出なくなる

画面外に出た時の判定が漏れているか、座標の条件が間違っているケースです。bullets[i].active = false;が確実に実行されるか、ログを出して確認しましょう。

2. 1フレームで全弾(100発など)が同時発射される

発射時のループ内でbreak;を忘れていませんか?

breakがないと、一回の発射処理で配列内の空いている弾をすべて有効化してしまいます。

3. PCによって連射速度が変わってしまう

これはFPS(フレームレート)を固定していない、あるいは時間(デルタタイム)による計算を行っていない場合に起こります。

垂直同期(ScreenFlip等)を有効にするか、時間ベースのタイマーを検討しましょう。

4. 配列の範囲外アクセスによるクラッシュ

MAX_BULLETSを超えてループを回したり、インデックス計算を間違えると致命的なエラーになります。

必ず定数を使ってループの回数を制限してください。

5. 初期化忘れによる「弾の散乱」

ゲーム開始時にactive = falseに初期化していないと、ゴミデータが入った状態で弾が存在していると判定され、画面のあちこちに消えない弾が表示されることがあります。

実用的な連射システムへの3ステップ

C++連射処理実装のまとめ

連射システム完成までの3ステップ
  • STEP1
    構造体と配列の準備(所要1時間)

    まずは描画は後回しで、100個の弾データをメモリ上に確保し、正しく初期化する処理を作ります。
  • STEP2
    タイマーによる発射制御(所要1時間)

    キーを押しっぱなしにしても、意図した間隔(0.2秒に1回など)で発射ログが出るように調整します。
  • STEP3
    画面外判定とリサイクル(所要2時間)

    弾が移動し、画面から消えた瞬間に配列の枠が空き、再び発射可能になる「循環システム」を完成させます。

合計4時間ほど集中して取り組めば、市販のシューティングゲームと同じ基盤の連射システムが完成します。

一度作れば、弾の形を変えたり、攻撃パターンを増やすのも簡単です。

FPS・TPSゲームを作りたいなら!Unity入門の森の講座で本格3Dゲーム開発に挑戦しよう

Unity入門の森には、FPS・VR・スマホ対応など幅広いプラットフォームに対応した3Dゲーム制作講座が揃っています。作りたいゲームや目標スキルに合わせて選んでみてください。

Unity FPSゲームの作り方講座【全17回!FPS・VR・スマホの3プラットフォームを同時に作れる!】

Unity FPSゲームの作り方講座

  • APEX・バトルフィールド風のFPSゲームをゼロから開発
  • FPS・スマホ・VRの3プラットフォームに同時対応
  • 書籍では学べないVR対応弓矢FPSのオリジナリティ高い開発手法
  • 地上・空中の敵AIや弓矢チャージショットなど本格システムを実装
  • 初心者でも安心の丁寧な解説と完成プロジェクトファイル付き

Unity FPSゲームの作り方講座は、APEX・バトルフィールド・Call of Dutyのような一人称視点のFPSゲームを作るための講座です。

弓矢を使ったオリジナリティの高いFPSをベースに、PC・スマホ・VRの3プラットフォームに同時対応した開発手法を全17回で習得できます。VR空間で弓を構えて矢を射るという高度なアクションの実装まで、書籍では学べないスキルが身につきます。

1本の講座でFPS・スマホ・VRを同時に作れるのはこの講座ならでは。3Dゲーム開発の幅を一気に広げたい方にもおすすめです。

FPS・スマホ・VRの3プラットフォームを同時に完成させる
1本作るだけで3つのゲームが完成する圧倒的な開発体験を手に入れよう
→ Unity FPSゲームの作り方講座を見てみる
書籍では学べないVR対応FPSで、一歩先の3Dゲーム開発スキルを今すぐ!

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!デッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも取り組みやすい丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つを合わせて学ぶのがおすすめ

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、今もっともトレンドのデッキ構築型ゲームシステムをJRPGと組み合わせて実装する方法を学べる講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、デッキ構築の核となるシステムをしっかり習得できます。FPSで培った3D開発の知識と組み合わせることで、ゲーム開発の幅がさらに広がります。

「Slay the Spireみたいなゲームを自分でも作ってみたい!」という人の最初の一歩として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
トレンドのデッキ構築×JRPGを最速で実装しよう
→ Slay the Spire風デッキ構築JRPG講座を見てみる
スマホ対応の最新環境で、ゲーム開発の第一歩を踏み出そう!

Unity ノベルゲームの作り方講座【全14回!会話システムからシナリオ分岐まで他ジャンルにも応用できるUIスキルが身につく!】

Unity ノベルゲームの作り方講座

  • かまいたちの夜・ダンガンロンパ・逆転裁判風のゲームをゼロから開発
  • テキスト文字送り・選択肢・シナリオ分岐・セーブまで完全実装
  • Googleスプレッドシートを使ったシナリオ管理システムを習得
  • 会話システム・UI遷移は他ジャンルのゲームにも応用可能
  • 初心者から上級者まで対応の丁寧な解説とソースコード付き

Unity ノベルゲームの作り方講座は、かまいたちの夜・ひぐらしのなく頃に・ダンガンロンパ・逆転裁判のようなテキスト主体のゲームを作るための講座です。

会話システム・シナリオ分岐・セーブ機能はもちろん、UniTaskを用いた非同期処理やGoogleスプレッドシートを使ったシナリオ管理など、中・上級者のスキルアップにも直結する実践的な開発テクニックが身につきます。

ノベルゲームに限らず、会話システムやUI遷移はあらゆるジャンルに使える汎用スキル。FPS開発と組み合わせてゲーム開発の引き出しをさらに広げたい人におすすめです。

会話システム・シナリオ分岐・セーブまで完全実装
ノベルゲームで身につくUIスキルは全ジャンルの武器になる
→ Unity ノベルゲームの作り方講座を見てみる
汎用性の高いUIスキルを今すぐ習得して開発の幅を広げよう!

まとめ:滑らかな連射がゲームの質を変える

弾の連射処理は、単に画像を表示させることではなく、「時間管理」と「メモリ管理」の組み合わせです。

この考え方は、敵キャラクターの生成やエフェクト(パーティクル)の表示など、あらゆるゲームプログラムに応用できます。

今回の重要ポイント

  • タイマー制御:フレーム数を数えて発射頻度を一定にする。
  • アクティブフラグ:配列の各要素に「使用中か」の状態を持たせる。
  • リサイクル管理:画面外でフラグをOFFにし、メモリを節約する。
  • 適切なインターバル:ゲーム性に合わせてFPSベースで調整する。

弾がスムーズに出るようになれば、ゲームの爽快感は一気に高まります。

まずは今回紹介した基本コードをあなたのプロジェクトにコピーして、数値を変えながら自分好みの「撃ち心地」を探してみてください。

次は、発射した弾を「敵に向けて自動で追尾させる」AIの実装に挑戦してみるのがおすすめです!

 

【ゲームの作り方講座もプレゼント中!】

ゲームを「遊ぶ側」から「作る側」へ

あなたのオリジナルゲーム、今年こそ完成させませんか?

RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。

Unity入門の森|永久会員チケット

永久会員チケット|Unity入門の森

全講座ラインナップを見てみる

実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。

コメント

タイトルとURLをコピーしました