当たり判定用に用意したバッファの色を調べたり、
外積を調べたりする方法などがあります。
//全ての内角が180度以下のみ
#module hitm hmsize,hmx,hmy
#modfunc hm_set int size,array hmsx,array hmsy
hmsize = size
repeat hmsize
hmx(cnt) = hmsx(cnt)
hmy(cnt) = hmsy(cnt)
loop
hmx(hmsize) = hmsx(0)
hmy(hmsize) = hmsy(0)
return
#modfunc hm_line
pos hmx(0),hmy(0)
repeat hmsize,1
line hmx(cnt),hmy(cnt)
loop
return
#modfunc _hm_chk int x,int y,local vx,local vy,local p
repeat hmsize
vx(0)=hmx(cnt+1)-hmx(cnt)
vy(0)=hmy(cnt+1)-hmy(cnt)
vx(1)=hmx(cnt+1)-x
vy(1)=hmy(cnt+1)-y
//外積
if((vx(0)*vy(1)-vx(1)*vy(0))>=0){
p=1
break
}
loop
return (1-p)
#defcfunc hm_chk var mod,int x,int y
_hm_chk mod,x,y
return stat
#global
//時計回りに作っていく
x = 20,150,200,180,40,20
y = 20,40,100,300,120,50
newmod a,hitm:hm_set a,6,x,y
color 255:hm_line a
x = 200,250,220
y = 10,50,180
newmod b,hitm:hm_set b,3,x,y
color 0,0,255:hm_line b
repeat
wait 1
title str(hm_chk(a,mousex,mousey))+" "+str(hm_chk(b,mousex,mousey))
loop