トピック
イスターリャ arduinotexter

BGと円形の当たり判定

質問です。((知ってる 円形と正方形の当たり判定はどのようにすれば実装できますか。 無論、正方形側がBGです。当該SPRITEはSPDEF上では正方形ですが、円形のグラフィックであるため見た目と当たり判定を一致させておきたいです。 なお、円の直径は15pxで、SPRITEの座標が円の中心点になるように設定してあります。 BGは1マス16pxの標準設定で、実際にはスクロールさせますがこの場では座標(0,0)より移動しないものとして考えます。
4そうだね
プレイ済み
返信[1]
親投稿
イスターリャ arduinotexter
うーむ。 正方形同士で当たり判定を行った後、角度情報を用いて例外処理をするのが簡単だろうか。
4そうだね
プレイ済み
返信[2]
親投稿
myu314 myu314
めんどいのは角のとこだけだから場合わけする。角度要らない。距離は使う。 図の内側の四角がBGのほうで、それを外側に半径と同じだけ大きくしたのが外側の四角ね。 赤と青のところに円の中心が入ってたら当たり。 緑のとこに入ってた時は、内側の四角の点と円の中心と の距離を調べて、半径以下なら当たり。
4そうだね
プレイ済み
返信[3]
親投稿
myu314 myu314
あ、もっと楽な方法あった。 BGの左上の座標を(BX1,BY1)、BGサイズをSZ=16、円の中心を(CX,CY)、半径Rとして、 BX2=BX1+SZ-1 BY2=BY1+SZ-1 X=MIN(MAX(CX,BX1),BX2) Y=MIN(MAX(CY,BY1),BY2) 'この(X,Y)が円と四角形との距離になるので、 IF SQR((CX-X)*(CX-X)+(CY-Y)*(CY-Y))<=R THEN 'あたり。
6そうだね
プレイ済み
返信[4]
親投稿
イスターリャ arduinotexter
なるほど お教え頂き、ありがとうございました。
2そうだね
プレイ済み