矩形の衝突判定。そのうち開発Wikiに公開できれば……。
【参考】
// 矩形1と矩形2が衝突しているか(重なっているか)を調べるアルゴリズム。
// 衝突時は必ず「矩形の左上の座標はもう一方の矩形の右下座標よりも左上にある」ことが
// 互いに成立することを利用。
#const global W1 100 // 矩形1の幅(width)
#const global H1 100 // 矩形1の高さ(height)
#const global W2 70
#const global H2 50
#module
// 肝心の衝突判定
#defcfunc hit int x1, int y1, int x2, int y2
return (x1 < x2 + W2)&(y1 < y2 + H2)&(x2 < x1 + W1)&(y2 < y1 + H1)
#global
x1 = 0 : y1 = 0
x2 = 200 : y2 = 100
*main
redraw 0
color 255, 255, 255 : boxf
stick key, 15 + 64
if key & 64 {
x2 += ((key >> 2) & 1) - (key & 1)
y2 += ((key >> 3) & 1) - ((key >> 1) & 1)
} else {
x1 += ((key >> 2) & 1) - (key & 1)
y1 += ((key >> 3) & 1) - ((key >> 1) & 1)
}
color 255
boxf x1, y1, x1 + W1, y1 + H1
color 0, 255
boxf x2, y2, x2 + W2, y2 + H2
if(hit(x1, y1, x2, y2)){
title "衝突"
} else {
title "..."
}
redraw 1
wait 1
goto *main
0 件のコメント:
コメントを投稿