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