投稿
Soma soma6830
今作っているゲームでバグが起こったので質問させていただきます。 画像のプログラムは1/50の確率でスプライトを最大5つまで表示し、そのスプライトと操作キャラのスプライトが衝突したらそのスプライトを消し、その消したスプライトが特定のスプライトだったら操作キャラのスプライトがパワーアップするというプログラムです。しかし、何故かスプライトが途中で勝手に移動・定義番号が変わったり、前述の現象が起きたら変数FOODFLAGが増えてしまい最終的に1つのスプライトしか表示されなくなってしまいます。問題の解決策があったら教えてください。お願いします。
0そうだね
プレイ済み
返信[1]
親投稿
例えば、FOODLAGが4の時に、CATIET=15のスプライトと衝突しているとき、SPCLRしているスプライト番号が15なのに、次にSPSETするスプライト番号が15+4になるため使用中のスプライトを上書している為と思われます。対処案)範囲指定のSPSETを使うことで何とかなるかもしれません。
0そうだね
プレイ済み
返信[2]
親投稿
Soma soma6830
コータさん、ありがとうございます!画面にいくつスプライトが表示されてるかはFOODFLAGで管理し、どの管理番号のスプライトが表示されてるかはFOODNUM配列変数で管理することで正常に動作しました。
1そうだね
プレイ済み
返信[3]
親投稿
12-24のループ内で、新たに選択したスプライトの場合、処理をスキップする処理を追加すると、より、意図に近いものになるのでは無いでしょうか。
0そうだね
プレイ済み
返信[4]
親投稿
ちなみに、SPHITSP()のように引数を省略すると、直前のSPHITSP(管理番号)で検出したスプライトの他に衝突しているものがあれば、管理番号が次に大きなものを教えてくれます。
0そうだね
プレイ済み