仮に、自機の座標を(x0,y0)、障害物の座標を(x1,y1)とし、かつ、
自機の大きさを20×20、障害物の大きさを30×30とした場合、
以下の条件を全て満たしていれば、「自機が障害物に当たった」と判断できます。
・x0>x1-20
・x0<x1+30
・y0>y1-20
・y0<y1+30
(なぜこうなるのかは、実際に動かしてみればわかると思います)
screen 0,640,480,0
buffer 1,20,20,0 : gsel 1 //自機用のバッファ
color 0,0,255 : boxf
buffer 2,30,30,0 : gsel 2 //障害物用のバッファ
color 255,0,0 : boxf
gsel 0
x0=0 : y0=0 //自機の座標
x1=100 : y1=100 //障害物の座標
color 255,255,255
key=0
repeat
stick key,15 //キー入力チェック 15は非トリガータイプ指定(1+2+4+8=15)
if key&1 : x0-4 //左
if key&2 : y0-4 //上
if key&4 : x0+4 //右
if key&8 : y0+4 //下
x0=limit(x0,0,620) //画面からはみ出さないようにするための処理(640-20=620)
y0=limit(y0,0,460) //同上(480-20=460)
redraw 0
boxf
pos x0,y0 : gcopy 1,0,0,20,20 //自機を表示
pos x1,y1 : gcopy 2,0,0,30,30 //障害物を表示
redraw 1
if (x0>x1-20)&(x0<x1+30)&(y0>y1-20)&(y0<y1+30) : break //当たり判定
await 30
loop
dialog "接触しました"
end