一応出来ない事はないけど
汎用性に欠ける・・・
A、B、Cがあったとして
それぞれ全てサイズが違う場合
BにAとの判定サイズを設定できるが
CとBを判定したい場合にはBに設定した判定サイズは使えない
(多少の違いならgetcoliの範囲指定でごまかせるかも・・・)
CにBとの判定サイズを設定してBを元にgetcoliを使う手はある
#include "hgimg3.as"
screen 0,640,480,0
hgini
setuv 64*2,0,64*2+63,63
addspr mda,0
regobj obj_a,mda
setcoli obj_a,1,2
setuv 0,0,63,63
addspr mdb,0
texload dir_exe+"\\sample\\hgimg3\\testchr.bmp"
regobj obj_b,mdb
setscale obj_b,1.0,2.0,1.0 //縦2倍表示
setcoli obj_b,2,1
//衝突判定する元のオブジェクトと検索するオブジェクトの判定サイズを足して半分にしたものを判定サイズとして使用
setcolscale obj_b,(64.0+64.0)/2,(64.0+64.0*2)/2,1.0,0 //(obj_aYサイズ+obj_bYサイズ)/2 縦の判定サイズ(実際にはスケールだけど・・・)
regobj obj_b(1),mdb
setscale obj_b(1),3.0,0.5,1.0 //横3倍縦0.5倍表示
setcoli obj_b(1),2,1
setpos obj_b(1),150,-100
setcolscale obj_b(1),(64.0+64.0*3.0)/2,(64.0+64.0*0.5)/2,1.0,0
setfont 16,16,12,1
texload dir_exe+"\\sample\\hgimg3\\fontchr.bmp"
clscolor $2244
mouse ginfo_wx1+100,ginfo_wy1+100
*main
stick k,127
if k&128 : goto *owari
setpos obj_a,mousex-320,mousey-240
hgdraw
hit_cn=0
repeat 2
getcoli res(hit_cn),obj_a,1.0
if res(hit_cn)<0 {break }
getpos res(hit_cn),x,y,z
setcoli res(hit_cn),0,0 //削除しないのでグループ値変更して後で戻す
hit_cn++
fprt "HIT("+hit_cn+")",x+320,y+240
loop
repeat hit_cn
setcoli res(cnt),2,1
loop
hgsync 16
goto *main
*owari
end
判定元の方を長方形にしたい場合も同じ
検索する側に判定サイズを設定する