- 「シューティングゲームの作り方/自作:弾の当たり判定処理」のご紹介
- 「シューティングゲームの作り方:弾の当たり判定処理」のご紹介
- 「シューティングゲームの作り方/自作」関連ページのご紹介
- シューティングゲーム・関連ページのご紹介
- 歴代名作シューティングゲームのご紹介|まとめ
- 歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
- シューティングゲームの人気シリーズのご紹介
- シューティングゲーム関連ページのご紹介|まとめ
- シューティングゲーム解説ページのご紹介|まとめ
- シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
- シューティングゲーム雑誌/書籍関連のご紹介|まとめ
- 【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
- 【名作RPG】RPGのご紹介│まとめ│
- 【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
- 【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
- TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
- 【TOP】パズルゲームのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
「シューティングゲームの作り方/自作:弾の当たり判定処理」のご紹介
ご訪問ありがとうございます。
今回は、「シューティングゲームの作り方/自作:弾の当たり判定処理」についてご紹介します。
「シューティングゲームの作り方/自作」関連サイトマップのご紹介
「シューティングゲームの作り方/自作」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「シューティングゲームの作り方:弾の当たり判定処理」のご紹介
自機を動かすことができるようになったら、次は弾を動かしてみるのがお勧めです。同時に、自機と弾との当たり判定処理や、弾に当たったときに自機を破壊する処理も作ります。
自機と弾、そして当たり判定処理ができれば、シューティングゲームとして最小限必要な要素がそろいます。自機を動かして弾を避けるだけでも、ゲームとして成立させることは可能です。
弾を動かす
弾のプログラムでは、弾を作る処理と、自機と弾の当たり判定処理がポイントとなります。最初に弾を作る処理に関して紹介します。
「図.5-4弾を作るプログラムのクラス構成」は今回作るSTGゲームのクラス構成です。弾の共通機能をまとめたクラス(CBullet)と方向弾を表すクラス(CDirBullet)を新規に作成します。
また、ゲーム本体クラス(CShtGame)や移動物体クラス(Cover)を拡張します。各クラスの役割は次のとおりです。
「図.5-4弾を作るプログラムのクラス構成」
CBulletクラス
弾の共通機能をまとめたクラスです。さまざまな弾の基底クラスになります。CMoverクラスから派生します。
CDirBulletクラス
方向弾のクラスです。CBulletクラスから派生します。
CMoverクラス
移動物体のクラスです。当たり判定処理のための関数を追加します。
CShtGameクラス
シューティングゲーム本体のクラスです。弾の3Dモデルやタスクリストを初期化する処理と、弾を発射する処理を追加します。
弾を作る
弾を作るには、弾を移動する処理と、弾を描画する処理を作成する必要があります。ゲームプログラムの構造に応じて実装の詳細は微妙に変わりますが、移動と描画という基本的な構成は共通です。
ここでは「自機」作成した移動物体クラス(CMover)をベースにして、弾のクラスを作ります。移動物体クラスは自機・弾・敵といった移動物体に共通の機能をまとめたクラスでした。
「移動物体クラス」に当たり判定処理を追加
移動物体クラスは、座標を保持する変数、移動を行う関数、および描画を行う関数を備えています。まず、この移動物体クラスに当たり判定処理を追加しておきましょう。
弾クラス(CBullet)を定義する
弾を作るには、これに加えて回転角度や、角度が変化する速度といった変数が必要です。そこで、移動物体クラスの派生クラスとして、弾クラス(CBullet)を定義し、これらの必要な変数をメンバ変数として定義します。
また、移動物体クラスの移動関数と描画関数をオーバーライドして、さまざまな弾に共通する移動や描画の処理を記述します。
弾を作成するための手順
弾にはいろいろな種類があります。「弾クラス」にはこれらに共通する処理を記述するにとどめ、個々の弾を表すクラスは弾クラスから派生させます。「図.5-5」は、こうした個々の弾を作成するまでの手順をまとめたものです。
▼「図.5-5弾を作成するための手順」
「図.5-5弾を作成するための手順」 | |
1 | 新しい弾の作成開始 |
2 | 新しい弾のクラスを定義(CBulletクラスから派生) |
3 | 必要な変数の定義(速度、角度、タイマーなど) |
4 | コンストラクタの定義(変数の初期化) |
5 | 移動処理の定義(Move関数のオーバーライド) |
6 | 描画処理の定義(Draw関数のオーバーライド) |
7 | 新しい弾の作成完了 |
移動物体に当たり判定を与える
弾が自機に当たったかどうかを判定する必要があります。当たり判定処理は多くの移動物体に共通するものなので、移動物体クラス(CMover)を拡張して、当たり判定処理の機能を追加することにしました。
当たり判定の「左端/右端/上端/下端」の座標を保持する
まず、当たり判定の領域を指定するための変数を追加します。当たり判定の「左端」「右端」「上端」「下端」の座標を保持するようにします。
▼「図.5-6弾の当たり判定」
これらは、弾の中心座標に対する相対座標です。それぞれの値を0に近くすると当たり判定が小さくなり、絶対値を大きくすると当たり判定が大きくなります。当たり判定は左上が(X+L,Y+T)、右下が(X+R,Y+B)の矩形になります。
当たり判定処理で用意する2つのパターン
当たり判定処理を行う関数には、2つのパターンを用意しました。
1つ目は、他の移動物体との間で判定処理を行う関数です。2つの移動物体がそれぞれ持っている当たり判定が重なっているかどうかを判定します。
2つ目も、他の移動物体との間で判定処理を行う関数ですが、引数で当たり判定を指定できる点が異なります。この関数は「かすり」などのように「特別の当たり判定」を使いたいときに便利です。
なお、当たり判定の条件式に関しては、下記ページ(当たり判定とは)を参照してください。
当たり判定のプログラム
「プログラム5-1:移動物体のクラス(Mover.h)」は、当たり判定処理を追加した移動物体のプログラムです。
移動物体クラスのコンストラクタは、当たり判定を指定するものと、指定しないものの2種類を用意しました。こうしておけば、当たり判定のない移動物体を作成する時には当たり判定の指定を省略できます。
▼「プログラム5-1:移動物体のクラス(Mover.h)」
//移動物体のクラスはタスククラス(CTask)から派生する class CMover : public CTask { public: //座標 float X, Y, Z; //当たり判定の左端右端上端下端の相対座標 float L, T, R, B; //コンストラクタ(当たり判定を指定する) CMover { CTaskList* task_list, float x, float y, float z, floa t 1, float t, float r, float b } : CTask(task_list), X(x), Y(y), Z(z), L(1), T(t), R(r), B(b) {} //コンストラクタ(当たり判定を指定しない) CMover (CTaskList* task_list, float x, float y, float z) : CTask (task_list), X(x), Y(y), Z(z), L(0), T(0), R(0), B(0) {} //当たり判定処理(他の移動物体を指定) bool Hit(CMover* m) { return X+LX+m->R && m->X+m->L<X+R && Y+TY+m->B && m->Y+m->T<Y+B; } //当たり判定処理(当たり判定を指定) bool Hit (CMover* m, float 1, float t, float r, float b){ return X+1X+m->R && m->X+m->L<X+r&& Y+tY+m->B && m->Y+m->T<Y+b; } //・・・(中略)・・・ };
「シューティングゲームの作り方/自作」関連サイトマップのご紹介
「シューティングゲームの作り方/自作」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「シューティングゲームの作り方/自作」関連ページのご紹介
「シューティングゲームの作り方/自作」関連ページをご紹介します。
【STG】シューティングゲーム・サイトマップのご紹介
80年から2000年代のシューティングゲームについてご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
シューティングゲーム・関連ページのご紹介
シューティングゲーム・関連ページをご紹介します。
歴代名作シューティングゲームのご紹介|まとめ
歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
シューティングゲームの人気シリーズのご紹介
シューティングゲーム関連ページのご紹介|まとめ
シューティングゲーム解説ページのご紹介|まとめ
シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
シューティングゲーム雑誌/書籍関連のご紹介|まとめ
【ゲームジャンル別】サイトマップのご紹介
【ゲームジャンル別】サイトマップをご紹介します。
ゲームジャンル別サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 |
||||
ゲームジャンル別TOP >関連ページ│名作│ランキング | ||||
【ジャンル別関連ページ】 アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【アクション】プラットフォーム│対戦アクション│FPS│TPS│STG│フライト 【アドベンチャー】AVG│ 【RPG】RPG│SRPG│ARPG 【SLG】SLG│ストラテジー│ターン制SLG│RTS 【レース】レース 【スポーツ系】スポーツ│プロレス 【パズル】 【テーブル】麻雀 |
||||
【ジャンル別】おすすめ評価ランキング アクション│AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【歴代傑作・神ゲー(2021~1996年)】99~94点│93~92点│91点│90点 ■【アクション系ゲーム】■ アクション│プラットフォーム│対戦アクション│FPS│TPS│フライト│ 【対戦アクション】一覧│98~80点│79~70点 【FPS】まとめ│90点以上│89~86点│85~83点│82~80点 【アドベンチャーゲーム】 ■【RPG系】■ RPG│SRPG│ARPG 【RPG】一覧│傑作(96~90点)│89~85点│84~82点│81~80点│ ■【シミュレーション系ゲーム】■ SLG│ストラテジー│ターン制SLG│RTS│街づくりSLG ■【レース】■ ■【スポーツ系ゲーム】■スポーツ│プロレス ■【パズル】 |
||||
シリーズ・テーマ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲームジャンル別・関連ページのご紹介
ゲームジャンル別・関連ページをご紹介します。
【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
【格ゲー・名作】アーケード・家庭用・格闘ゲームのご紹介~名作(173 本)・全タイトル(1462本)のご紹介
【名作STG】シューティングゲームのご紹介
【AVG】アドベンチャーゲームのご紹介│まとめ│
【名作RPG】RPGのご紹介│まとめ│
【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
【TOP】パズルゲームのご紹介
ゲームTOPサイトマップ
ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介
ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
ジャンル別ゲームタイトルのご紹介│まとめ│
コペンギン・サイトマップ
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
コペンギン関連ページをご紹介します。