投稿
SPRITE同士の当たり判定って どうすればいいのでしょうか? SPHITSPだのなんだの 試してみたんですけど意味がわからなくて…。 例として、管理番号0のビリリダマと 管理番号1のメタモンが接触したときに プログラムを終えるというものを作りたいです。 一応、ビリリダマはスライドパッドで、 メタモンはCスティック(拡張スライドパッド) で動くようになっています。
1そうだね
プレイ済み
返信[1]
親投稿
おにぎり EasyPuzzler65
SPCOL 0,0,0,16,16 SPCOL 1,0,0,16,16 をメインループの外でやっておいて キー入力を受け付けてそれぞれのキャラを動かし、 IF SPHITSP(0,1) THEN END でできると思います。
0そうだね
プレイ済み
返信[2]
親投稿
おにぎり EasyPuzzler65
メインループの中で、キー入力を受け付けてそれぞれのキャラを動かした次に でした。言葉足らずですいません。
0そうだね
プレイ済み
返信[3]
親投稿
教えてくださっありがとうございます! 成功しました!SPHITってつくものじゃなくて、 まずはSPCOLが必要だったんですね。
0そうだね
プレイ済み
返信[4]
親投稿
おにぎり EasyPuzzler65
そうです.わたしも最初そこでひっかかった人です.デフォルトのあたり判定ってもっていないんですよ.SPCOLしない限りだめなんです…でも考えてみると,あたり判定の必要なものだけつけられるようにしたほうが,たしかにいろいろ合理的なんですね.まあこの辺をあれこれ想像するのもプチコン3号のたのしみなので(自虐的w).
0そうだね
プレイ済み
返信[5]
親投稿
SPCOLはSPCOL 1のように引数だけで指定するとデフォルトのスプライトの大きさで当たり判定が出来るみたいです〜。 あと僕もSPCOLをわざわざしないといけないのはわかりにくいとは思いましたが、デフォルトが当たり判定あり(プログラムで外せる)としたとすると、デフォルトの動作が重くなる(当たり判定が多いほど処理的に重くなるはずなので)と思うので、デフォルトはなしになってるんじゃないかなとも思いますね〜。
0そうだね
プレイ済み
返信[6]
親投稿
おにぎりs» 確かに、スプライト同士でもスルーしたい時や反応を起こしたい時、色々ありますから、都合の良いときと悪いときがあるということですかね。 でんぺんs» 処理速度ですか…。あまり気にしてませんでした。そもそもが、こんがらがったプログラムしかできないものですから、もうちょっと覚えてから、じっくり取り組むかもしれません。
0そうだね
プレイ済み
返信[7]
親投稿
処理速度に関してはそんなに難しく考えなくても大丈夫ですよ〜。 SPCOLをセットしたスプライトはシステム的に当たったかどうかを(裏で)判定している事になると思うので、判定するスプライトが多ければ多いほど実行速度が遅くなる、みたいなイメージです。 なのでまあとりあえず当たり判定の必要がないものはSPCOLしなければ良い、と考えておけば問題ないと思いますし、SPCOLしまくって実行速度が遅くなるようなことがあった場合は、思い出すようにしてみたらという感じです。
0そうだね
プレイ済み
返信[8]
親投稿
おにぎり EasyPuzzler65
あー、余計なパラメタつけないとそうなるんだ。ありがとうございます。ほとんどパズルw>でんぺんさん これとこれはあたり、これとこれはスルー、っていうのを、マスクって言ってるやつを上手く使うといいらしいです。うまく使えれば確かに当たり判定がスマートにできそうですが、上手くマスクを設計するのがてごわそう。
0そうだね
プレイ済み
返信[9]
親投稿
「マスクとは…?」と思って SPCOLのヘルプを見てみましたが、 案の定わかりませんでした。 基本は、無くてもよさそうなのであまり深くは聞きませんが…。
0そうだね
プレイ済み
返信[10]
親投稿
おにぎり EasyPuzzler65
SPCOL 0,,&H00000001 SPCOL 1,,&H00000002 SPCOL 2,,&H00000003 とやると,0と1はあたり判定が起こらず 0と2,1と2はあたり判定が起きるという具合に できるようですよ(まだ試してない). シューティングで弾の種類がいろいろあるときなどに 便利そうですね.
0そうだね
プレイ済み
返信[11]
親投稿
マスクはビット演算を知らないと難しいのでわからないうちはスルーした方がいいかもしれませんね。 あとマスクの仕組みはバージョンアップで変わる可能性があります。というか今、なぜかマスクの0は全てにあたると言うことになってますが、それを改善(0はどれにも当たらない)になるかもと社長がTwitterで言ってたのを聞いた覚えがあります。
0そうだね
プレイ済み
返信[12]
親投稿
つまりまとめると、 ・マスクは当たり判定を、  特定のスプライト間で起こす時に  必要となってくる ・無くてもいいけど、あると便利 ・今後、仕様が変わる可能性が低くない ということですね。恐らく。 おにぎりさん、でんぺんさん、 色々おしえてくださって ありがとうございました! また、わからないことがあれば コミュニティ内で 質問をするかもしれません。
0そうだね
プレイ済み