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

アバター
あんちもん ◆8qCJSJ1bKTIQ
2018/3/27 8:08
質問
BGとSPRITEの当たり判定について
http://petitverse.hosiken.jp/community/petitcom/topic/?read=61&ukey=0
http://petitverse.hosiken.jp/community/petitcom/topic/?read=203&ukey=0
過去のトピックも参考に勉強しているのですが、(X、Yをスプライトのディスプレイ座標として、)
BGCOORD 0,X,Y,1 OUT BX,BY 
IF BGGET(0,BX,BY,0)!=0 THEN 衝突処理
とする場合と、
IF BGGET(0,X,Y,1)!=0 THEN 衝突処理
とする場合で異なるのは、BGGETの座標系フラグをキャラ単位にしたいかドット単位にしたいか、ということだと思うのですが、
座標系フラグがキャラ単位であることと、ドット単位であることでどのような違いがでてくるのでしょうか?
ちなみに、アクションゲームの地面や壁の判定に利用しようと思っています。

コメント

アバター
でんぺん 2018/3/27 8:41 ◆HfSy5ayxtyTa
扱いの違いという感じなのでマップ(BG)として処理する時はキャラ単位の方が扱いやすいし、スプライト(トッド)座標との当たり判定なら座標系フラグをドット単位にすると便利みたいな感じかなって思います。

後はスプライトの位置からマップを調べるときに、BGCOORDの場合は一度BX,BYを求めたら、それに1足せばとなりのBGがすぐに調べられるとか、ケースによっては先にBGCOORDで調べた方が便利な場合もあるかもですね。

ただ例えばスプライトの座標から計算するときに、一つずつBGCOORD、BGGET(キャラ単位)と2つの命令で求めるよりは、座標系フラグを使ってBGGET1回で済ませる方が楽かなって気がします。
(ただキャラがドットで動く場合、移動方向に対して四隅など数点の座標を調べないとめり込みなど発生するので実際はBGCOORD を使わなくても移動に対してBGGET1回というわけにはいかないかもしれませんが…)
アバター
say 2018/3/27 15:11 ◆1nbKtD/tFu04
スプライトがキャラクタ単位で動くのなら、キャラクタで判定すんのがわかりやすいだろう
ドット単位で動くのなら、ドット単位で判定すんのが楽だろう
ってーので用意されてるオプションだと思いますよ

どっちがいいのか、どう違うのかは、「適材適所」で考えるのがベストでしょう
アバター
say 2018/3/27 15:43 ◆1nbKtD/tFu04
ACTでも、1キャラクタ単位に動く(例えばパックマン)なら、キャラクタ単位判定の方がわかりやすいし、
1ドット単位で動く(例えばスーマリ)なら、ドット単位判定の方が楽だと思いますよ

何が最良なのかはデザインによって変わってくるので、とかく「試してみるしかない」
…なんとも難しいもんです
アバター
あんちもん 2018/3/27 18:22 ◆8qCJSJ1bKTIQ
皆さん回答ありがとうございます。自分の作ろうとしているゲームではプレイヤーはドット単位で動くので、BGCOORDを使わない方法で試してみようと思います!
追記:みなつさんもご説明ありがとうございます!
アクションゲームに限らず、今後のゲーム作りに活かしていこうと思います。
アバター
みなつ 2018/3/28 23:22 ◆hJTkStjweib1
BGCOORD 0,X,Y,1 OUT BX,BY
IF BGGET(0,BX,BY,0)!=0 THEN 衝突処理

IF BGGET(0,X,Y,1)!=0 THEN 衝突処理
は、まったく同じ処理なので、最終的にBGGET()で判定するのであれば、BGCOORDを使わない後者でよいと思います(*´▽`*)

なお、前者のように「一度BGのキャラ単位に変換」する方法は、「BGGET()の代わりに、配列に保存してあるマップデータを参照して当たり判定を行う」ときにも使えます。
例えば、
BGCOORD 0,X,Y,1 OUT BX,BY
IF MAP[BX,BY]!=0 THEN 衝突処理
こんな感じです(●´ω`●)

コメントを書く

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

- WEB PATIO -