HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1206
名無しさんhgimg3での複数同時の当たり判定を調べたい3解決


名無しさん

リンク

2008/12/6(Sat) 23:00:48|NO.21325

HGIMG3の当たり判定についてですが、複数のオブジェクトから衝突されても、getcoli命令で得られるオブジェクトIDは一つしかありません。
そこで、衝突したオブジェクトIDをすべて検出する方法を知りたいのですが・・・
やっぱり、HGIMG3のコリジョン命令を使わず、2Dゲームのように、自作で当たり判定を作り、ループでしらみつぶしに調べるしかないのでしょうか?



この記事に返信する


M

リンク

2008/12/7(Sun) 02:10:55|NO.21330

僕は、「当たった物一覧」という配列をつくり、そこに格納して行く方法をとりました。

getcoliで当たり判定を行ない、取得したIDを格納し、そのオブジェクトのコリジョンを外す。
「当たった物一覧」のインデックスを+1して、getcoliで何も検出しなくなるまでループ。
終わったら、「当たった物一覧」に格納した全オブジェクトのコリジョンを元に戻す。
という方法です。


dim 「当たった物一覧」,十分な値 「当たった物一覧のインデックス」=-1 ;-1にしておくのがポイント *LoopTop getcoliによる当たり判定をする if 何かと当たっていたら{ 当たったオブジェクトのコリジョンをはずす (setcoli OBJ,0,0) 当たったオブジェクトのIDを、「当たった物一覧」に登録 「当たった物一覧のインデックス」を+1 オブジェクトと当たったときの処理をする goto *LoopTop } repeat 「当たった物一覧のインデックス」+1 「当たった物一覧」からオブジェクトのIDを取り出し、そのコリジョンを元に戻す loop
repeatに突入したとき、何にも当たっていなければ繰り返し回数が0になるので、なにもせずにrepeatを抜けます。



名無しさん

リンク

2008/12/7(Sun) 21:54:27|NO.21388

Mさん、ありがとうございます。
判定がなくなるまでgetcoliを呼び続けるなんて、盲点でした。
これなら、HGIMG3の機能だけで、オブジェクトごとの当たり判定ができます。
ずっと悩んでいたので、助かりました。
本当にありがとうございます。



名無しさん

リンク

2008/12/7(Sun) 21:54:43|NO.21389

解決



ONION software Copyright 1997-2023(c) All rights reserved.