平面(2D)における当たり判定〜超手抜き版〜


目次に戻る


今日はダウンロードできるサンプルプログラム付きの小枝です。と言っても大した物ではありません。
 
今回からアクションゲームで使わないものは無い。と断言しても良いくらい有名な当たり判定の方法を紹介していこうと思います。
今回の当たり判定は
  1. 判定は平面上(2D)で行われる。
  2. 移動予定先に移動できない場合移動せず方向転換。
  3. 移動は左右のみ。
  4. 当たり判定に使う領域は32x32の正方形。
  5. 1回の移動量は3ドット。
という条件になっています。どのあたりが超手抜きかというと、2番の「移動予定先に移動できない場合移動せず方向転換」です。かなり不自然な動作ですが、面白いキャラクタの動きだと無理矢理こぢつけると愛らしく思えてきます。
 
では、超手抜き版2D当たり判定プログラム(hitcheck1.zip)(実行するには要DLL)をダウンロードしてください。lhasa等で解凍すると以下のファイルが展開されます。ソースはC++Builder5PRO用ですが、stdや古いBuilderでもちょいと手を加えるだけでコンパイルできるはずです。
ファイル概略
Charactor.cpp キャラクタを表現するクラス実装部。ただ移動するだけ。
Charactor.h キャラクタを表現するクラスヘッダファイル。
Field.cpp キャラクタを管理するフィールドクラスの実装部。
Field.h キャラクタを管理するフィールドクラスのヘッダファイル。
Function.cpp 関数群。
Fynction.h 関数群のヘッダファイル。
HitCheck1.bpr プロジェクトファイル。Builderが管理する。
HitCheck1.cpp メイン関数。Builderが管理する。
HitCheck1.exe 実行ファイル。実行するにはDLLもしくはBuilder5がインストールされている必要がある。
HitCheck1.res リソースファイル。Builderが管理する。
UnitMain.cpp フォーム用のソースファイル。タイマーとマウスクリックのイベントを処理している。
UnitMain.dfm フォーム上のコンポーネントの配置等を記録。直接手で触ることは滅多にない。
UnitMain.h フォーム用のヘッダファイル。
次回からこのサンプルプログラムのポイントとなるところを紹介していきます。
では。

目次に戻る