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

アバター
オワたず ◆w7BXxYlkW2NJ
2019/12/12 0:49
質問
毎度当たり判定で挫折しています【53A3YDNX】(プチコン3号)
(毎度、ゲームを作り始めるたびに当たり判定で挫折している気がする)

このプロジェクトのspとの当たり判定についてです。
壁と一度接触すると、キャラクターが壁にくっついて動けなくなります。

原因は分かってる(SPHITSPが-1以外の時に移動入力があったら、それと逆の方向に動くようにして壁にしてるのでそうなるのは分かっていた)んですけど、もうどうしたらいいかわからないので意見をください、よろしくお願いします

コメント

アバター
オワたず 2019/12/12 0:49 ◆w7BXxYlkW2NJ
キャラクターはスライドパッドで動きます
アバター
あんちもん 2019/12/12 6:52 ◆8qCJSJ1bKTIQ
プレイヤースプライトの角に8個の当たり判定用のスプライトを置いて、そいつらが相手スプライトと接触している時に、プレイヤの座標を相手スプライトの座標の手前に補正するというのはどうでしょうか?
私はこれでSP同士の接触、めり込み補正を行なっています。
サンプルキー「R8423V3」
効率の良いコードを書けている自信は無いですが、動作は悪くないと思います。
アバター
でんぺん 2019/12/12 15:21 ◆HfSy5ayxtyTa
当たったら移動しないようにしているみたいですが、それでは当たった後になるので逆に動かなくなってしまいます。
なので当たる前に判定しないといけない感じですね。

僕が考える簡単な方法としては、例えば移動予定先にプレイヤーキャラとは別の見えないスプライトを予め配置して、その判定用スプライトが壁などに接触している時は動かさないようにします。そうすれば移動後の判定ではなくなるので先判定で予め動かさない、ということが出来ると思います。

厳密にやろうとしたらあんちもんさんも言われているように実際に当たったらめり込み補正で適切な位置に戻すのがベストな感じもありますが簡易的に動けない場所なら動かないというやり方であれば、こういうやり方もありそうだということで参考にしてみてくださいー。
アバター
Na 2019/12/12 19:04 ◆QoELVrBXBQCI
SPCOLVECはどうでしょう?
1フレームで移動する距離を設定しておけば、これから壁に当たるかどうかが判定できそうです。(使ったことはありませんが)
アバター
オワたず 2019/12/12 21:28 ◆w7BXxYlkW2NJ
あんちもんさん、でんぺんさん>ありがとうございます、試してみます!

あきとさん>トピック名に書いてます、分かり辛くて申し訳ないです…

Naさん>使い方がよく分からなかったです(理解力)
アバター
Na 2019/12/12 21:54 ◆QoELVrBXBQCI
私もよくわかってないんですが、ダイレクトモードで試すとこんな感じでしょうか
SPSET 0,0 'イチゴ
SPSET 1,1 'ミカン
SPOFS 1,20,0 'ミカンを右に20移動
SPCOL 0
SPCOL 1
SPCOLVEC 0,20,0 'イチゴを右に20移動するように設定
?SPHITSP(0,1) '当たった
アバター
でんぺん 2019/12/12 23:36 ◆HfSy5ayxtyTa
最後に自分の出したやり方の簡単な例を載せておきます。

オワたずさんのゲームはキャラの位置は固定で背景がスクロールするタイプなので、そのあたりはまた少し工夫が必要ですが考え方は通用するはずです。

この例では、スプライトを動かして移動先が他のスプライトとぶつかるのであれば移動しない処理になっています。この時のやり方がダミースプライトを使うという方法ですが、本当は透明にするんですがわざと少し見えるようにしてイメージが伝わりやすくしています。半透明じゃなく完全に透明の色に設定すればダミースプライトとして活用できます。

まあきちんと座標補正した方が、完全に止まらずに動ける方向に滑るように移動させたりとか応用範囲が広くはありますが、とりあえず動かなくなるという問題に対する目的は果たせるはずです。

とまあ、そんな感じでした。ではでは。
アバター
オワたず 2019/12/13 1:13 ◆w7BXxYlkW2NJ
ダミーを置く方法でなんとかなりました、ありがとうございます!
もう一つ問題が出てきたんですけどもう少し付き合ってもらっていいですか()

オブジェクトに対してY軸方向からぶつかって、スライドパッドをグリグリしてるとオブジェクトだけ(又はマップだけ?)が少しづつ移動してしまうんですよね
何故かX軸方向だと正常なんですが
【52DE534V】
アバター
あきと 2019/12/13 6:36 ◆qGd5dQw2g3a2
既に公開キーあげてたのに失礼しました。

読んでみてますが、縦にマップがずれる理由はメインループの中のSTICK命令を呼んだ後の
IF PR_RX!=0 THEN
ですね。
アナログスティックが傾いていたらマップの更新をするという流れだと思いますが、PR_RXだけ判定しているので真上か真下でPR_RYに数字が入ってPR_RXが0の時に更新処理が走らず下の当たり判定の処理とズレがでます。
アバター
オワたず 2019/12/13 8:46 ◆w7BXxYlkW2NJ
あっなるほど!そういう事か…
気がつかなかったです
いやもう本当に、皆さんありがとうございました

コメントを書く

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

- WEB PATIO -