円形の当たり判定

 初級編ではキャラクタ同士の当たり判定は矩形で行ってきました。敵の弾が小さい場合は矩形に近似しても構わないのですが、大きい場合ちょっと無理がありますね。ここでは、円形の物体の当たり判定について書きたいと思います。

 1.円と点との当たり判定

 敵弾と自機の真ん中1ドットとの当たり判定を行うというようなことは、シューティングゲームではよくあります。これは、円と点との当たり判定です。

 まずは座標の変数を決めなければいけません。円形の物体ですから中心の座標と半径でもいいのですが、ゲームのキャラクタは普通すべて矩形として扱います。ここでは、矩形として見た場合の左上隅の座標を(x1,y1)、幅(=高さ)をl1とします。これと、点(x2,y2)の当たり判定について考えます。

円と点

 円形の中心座標を(cx1,cy1)とすると、cx1=x1+(l1/2)、cy1=y1+(l1/2)となります。半径r1はl1/2です。

 円と点が当たっているということは、点が円内にあるということです。すると、円の中心座標と点との距離がr1以下であれば当たりとなります。距離は三平方の定理より√((cx1-x2)^2+(cy1-y2)^2)で求まります。
  √((cx1-x2)^2+(cy1-y2)^2)<=r1

三平方の定理

 ルート計算は行ってもいいし、行わなくても構いません。行わない場合、こうなります。
  (cx1-x2)^2+(cy1-y2)^2<=r1^2

 2.円と円との当たり判定

円と円との当たり判定

 2つめの円の中心座標を(cx2,cy2)、半径をr2とします。円と円が当たっているということは、中心座標同士の距離がr1+r2以下であるということです。よって
  √((cx1-cx2)^2+(cy1-cy2)^2)<=r1+r2
 または
  (cx1-cx2)^2+(cy1-cy2)^2<=(r1+r2)^2
 となります。


[サンプルプログラムをダウンロード] (HSP Ver2.61+hmm.dll用)
[サンプルプログラムをダウンロード] (HSP Ver3用)
 円形の物体にマウスカーソルを重ねると「当たり!」と表示します。

[目次へ][前へ][次へ] inserted by FC2 system