くまちゃんのiOS/Androidゲームプログラミング

マイペースでゲームつくってます。

ゲームプログラミングのはなし24

【ゲームプログラミングのはなし24】
当たり判定の1つ目は三平方の定理ピタゴラスの定理を使うものでした。2つのキャラクターの中心点の座標しか考える必要が無いので、プログラマーとしては思考コストが少ないことが助かります。

ただですね...

前回の記事を見ていただければわかるように、計算式が美しくないんですよね。二乗の計算を3回も!行っているので。これはコンピュータにとっては計算コストが高くつきます。

実際はイマドキのCPUでは全然スピードが落ちないので気にする必要はないかもしれませんが、ゲームプログラマーとしては「これはキモチワルイ」と思うようになって欲しいものです。

そこで、2つ目の当たり判定の方法をご紹介します。

これはキャラクターの当たり判定を四角形で考えます。変数は右、左、上、下の意味でright, left, top, bottom、実際にはメンドクサイのでr, l, t, bとしておき、rはキャラクターのX座標、lはキャラクターのX座標にそのキャラの「幅」を足した値、tはキャラクターのY座標、bはキャラクターのY座標にそのキャラの「高さ」を足した値を保持します。

これをマイキャラ、敵キャラごとに全て設定します。...メンドクサイですね。

そして、衝突判定は2つのキャラクターの四角形が重なっているかどうかを判定します。4つの式が必要になります。

1.マイキャラの左<敵キャラの右
2.マイキャラの右<敵キャラの左
3.マイキャラの上<敵キャラの下
4.マイキャラの下<敵キャラの上

これらの条件を全て満たせば、その2つのキャラクターはぶつかってます。

この方法はプログラマーにとっては手続きが多くて思考コストが高くつくのですが、コンピュータにとっては計算コストが格段に低くなります。比較するだけですから。

これも絵を描けば一発でわかるんですけどね; これも夏休みの自由研究にします。(続く)

f:id:tadakazu1972:20140814084121j:plain