コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
ml42ー01 ◆oG3RWGRxnr9q
2019/10/23 17:01
質問
当たり判定について
今シューティング系ゲームを作っているのですが、当たり判定について全く分かりません。どなたか助けてください  (3ds)

コメント

アバター
はやピー 2019/10/23 18:05 ◆cNXcKm243Rna
まずはこのサイトを見ればいいゾ。
http://petitcom.net/category/screens/sprite
いま時間がないので、あとで詳細をコメントします。
アバター
はやピー 2019/10/23 18:50 ◆cNXcKm243Rna
これは、スプライトの当たり判定の仕方です。
それでは、まずは当たり判定を行う準備をしていきます。
当たり判定を行うには、SPCOLをする必要があります。
このSPCOLは、衝突判定のルールを設定します。

つづいて、遂に判定をしていきます。
判定は、スプライトを1つ指定し、それと衝突しているスプライトを探す方法と、スプライトを2つ指定し、これらが衝突しているか調べる方法があります。
機能も戻り値も違いますので注意してください。
どちらの方法も、SPHITSPを使ってできます。

スプライトと指定領域との衝突判定もできますが、個人的にはSPHITSPで充分だと思います。

前も言いましたが、プチコン非公式マニュアルを見ればよくわかります。
http://petitcom.net/category/screens/sprite

わからなかったら、またコメントください。
長文失礼しました。
アバター
シロ 2019/10/23 19:59 ◆g0oUAxBiWqcj
実は当たり判定に必ずSPCOLやSPHITSPが必要なわけではないよ。

あ9行目は消し忘れだ
アバター
RU-RA 2019/10/23 21:35 ◆WXDJqyOv9yBK
はやピーさんのやり方は、プチコンに元々ある命令を使い、シロさんのは座標を使うやり方ですね。どちらもできますが、弾幕ゲーだとシロさんのをおすすめします。
アバター
高原のな 2019/10/23 22:24 ◆bY8RViwvoODw
みなさんは矩形同士の当たり判定(SPCOLも矩形同士)を提示してますけど、軽めの処理ではおまけでもうひとつ、円と円の当たり判定というのも使えたりします(軽い処理ではありますが、弾幕のように判定の数が多いと重くなりやすいので見極めが要りますね)。

おなじみ(かどうかはぼくは知りませんが)の三平方の定理を使うんですが、コンピュータに平方根の計算をさせるのは負荷が高いので平方根はずして、距離の2乗をそのままつかって計算します(円の方程式や領域の表現をご存知であればそれと一緒と気づくと思います)。
(X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1) <= (R1+R2)*(R1+R2)
当たっていればTRUEになります。X、Yにはそれぞれx座標、y座標を、Rには当たり判定上の半径を入れるだけ。あとの数字が同じになっているところに同じキャラの値を入れてくださいね。
R1+R2はだいたいいつも一緒になると思うので、(R1+R2)*(R1+R2)をあらかじめ適当な変数に入れておいて使うと若干高速化します。
POW関数をつかうよりは直に掛け算した方がたぶん速いです(未検証)。
アバター
はやピー 2019/10/24 17:57 ◆cNXcKm243Rna
座標で判定する方法もあったね
アバター
RU-RA 2019/10/24 22:19 ◆WXDJqyOv9yBK
実際、私はfor文でSPCOLを囲う形でやるときもありますが、そうすると処理が大変になるんですよね。やっぱり座標のほうがDEFで簡単にまとめられるので座標をおすすめします。
アバター
ml42ー01 2019/10/26 7:06 ◆oG3RWGRxnr9q
皆さんありがとうございます!

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -