トピック
つばさ☆ nsm2116

SPとSPの判定

質問です。SP管理番号0とSP管理番号1があります。 管理番号1に管理番号0が下から当たったらプログラム終了、管理番号1に管理番号0が上から当たったら音をならしてからプログラム終了させるにはどうすればいいですか? 判定方法が分からないです。
3そうだね
プレイ済み
返信[1]
親投稿
ΖΕΧ ZEX256
管理番号0の上と下に見えないSPをSPLINKしといて、そのSPで当たり判定するとか
1そうだね
プレイ済み
返信[2]
親投稿
ツララ LongIceSword
当たり判定をしてるIF文を入れ子にすればいいんじゃないです? 最初のIFはSP同士の距離で判定、次のIFはSP同士の方向で判定って具合に。 スプライトの高さをSPH、SP管理番号0と1のY座標をSPY[0]、SPY[1]とするとして SPHITSPで判定してるなら IF SPHITSP(1,0) THEN IF SPY[1]+SPH<SPY[0] THEN そのまま終了 ELSEIF SPY[0]+SPH<SPY[1] THEN 音を鳴らして終了 ENDIF みたいな。
1そうだね
プレイ済み
返信[3]
親投稿
重なったときにY座標を比較して0番が大きかったら下から当たった、そうじゃなければ上から当たったみたいに判断してみるとか? まあ移動量が大きすぎると失敗するけど、その場合はさらに移動量も考慮するとか色々条件を増やすしかないかとー
1そうだね
プレイ済み
返信[4]
親投稿
2つのスプライトの相対速度でわかるのではないでしょうか。 相対速度は、2つのスプライトの速度の差です。 それぞれの速度は、単位時間当たりの移動量で代替えできます。 単位時間の移動量は、プチコンの場合、1フレームになるかと思います。前フレーム時の位置と当たった時の位置の差が使えます。 (速度を自前で管理しているならそれを使えば良いです。)
1そうだね
プレイ済み
返信[5]
親投稿
りきすけ rikisuke
単純な感じだと SP=SPHITSP(0,1) IF SP!=-1 THEN SPOFS SP OUT SPX,SPY IF SPY>Y THEN END IF SPY<Y THEN BEEP BP:END みたいな感じですかね。
1そうだね
プレイ済み
返信[6]
親投稿
りきすけ rikisuke
SPの値がTRUEなので間違ってました、ゴメンなさい!SPOFSのくだりのとこです。。。
1そうだね
プレイ済み
返信[7]
親投稿
つばさ☆ nsm2116
なるほど! 簡単なのは人によるがでんぺんさんの判定方法かな? それぞれの判定方法を試してみます。ありがとうございました!!
0そうだね
プレイ済み
返信[8]
親投稿
つばさ☆ nsm2116
まずでんぺんさんの方法。こんな感じであってるかな?
0そうだね
プレイ済み
返信[9]
親投稿
つばさ☆ nsm2116
ZEXさんの判定方法(ちょっと違うかな?) 上と下に分けるというか、見えるSP、見えないSPの2つを用意して、見えるSPに当たったら上から当たったにして、見えないSPに当たったら音なしENDにしましたたたた。 てかSPLINKってループに入れないとできないかと思ってたw 結果 プログラムが分からなくてもやり方が分からないだけでやり方がわかったらプログラムが組めた。
0そうだね
プレイ済み
返信[10]
親投稿
つばさ☆ nsm2116
あ、上のZEXの判定方法であってるね。
0そうだね
プレイ済み
返信[11]
親投稿
つばさ☆ nsm2116
できたのでトピック閉じますありがとうございました!!
1そうだね
プレイ済み