トピック

SPHITSPについて

複数のスプライトと重なってしまうときにスプライト一つしか感知されないのですが、どうすれば複数感知できますかね?
6そうだね
プレイ済み
返信[1]
親投稿
つばさ☆ nsm2116
それ、思ってた。自分の検証ではないと思われますがね。 配列の場所で指定ならいけるかも……
0そうだね
プレイ済み
返信[2]
親投稿
INSTRと同じ問題だよね。 1.検知する 2.1で検知したよりも後ろを探す 3.2で検知したよりも後ろを探す 検知がなくなるまで繰り返す
3そうだね
プレイ済み
返信[3]
親投稿
ペンコ penkogoma
SPHITSPのヘルプに書いてある 管理番号ってやつでそれぞれ判定すれば良いかも。 試したことないけど・・・。
1そうだね
プレイ済み
返信[4]
親投稿
MY=0:H=-1 REPEAT H=SPHITSP(0, H+1, 511) IF H >=0 THEN PRINT MY;"が";H;"のスプライトにあたった!" UNTIL H==-1 例えばこうやれば全部の当たりでPRINTが呼び出されます。
0そうだね
プレイ済み
返信[5]
親投稿
BlackSoft BlackSoft.mkII3g
一度に複数の当たりを検知することはできないので、 皆さんの言うようにループ処理で順次判定していくことになります。 次のようなやり方はいかがでしょうか。 WHILE HID!=-1 HID=SPHITSP(0) IF HID!=-1 '処理 SPCOL HID,0,0,16,16,1,&H0 'フラグを落とす ENDIF WEND フラグを0にすると、以降は当たり判定で検知されません。 これを利用して、スプライト0番とヒットしているもの全て について処理を行います。
1そうだね
プレイ済み
返信[6]
親投稿
ねこはち neko80001
敵とジャンプ台等、処理が違うものが重なって困る場合(ジャンプ台が判定されずにすり抜けてしまう等)は、複数同時判定をするよりも、処理分岐ごとに判定をしてやるのが良いと思います。 0=マリオ 1~99=敵キャラ 100~255=ジャンプ台 IF SPHITSP(0,1,99)>-1 THEN やられorマリオサイズダウン処理 IF SPHITSP(0,100,255)>-1 THEN ジャンプ台接触処理
2そうだね
プレイ済み