HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1023
myu当たり判定2解決


myu

リンク

2020/10/23(Fri) 14:52:28|NO.91676

マリオのような横スクロールアクションゲームを作りたいと思っています。
手始めに、四角形が固定面内を移動するゲームを作っています。
固定面の中に四角形の障害物を置いて、それの当たり判定を作っていますが、うまくできません。
以下のように作っていますが、障害物の両サイドから移動してきたとき、障害物に当たると、障害物の上に瞬間移動してしまいます。
障害物で止まるようにするにはどうすればよいでしょうか?

;障害衝突判定
if (x >= 200 - M_X && x <= 240 && y >= 360 - M_Y){
;x = 200 - M_X
y = 360 - M_Y
}



この記事に返信する


あらや

リンク

2020/10/23(Fri) 17:08:01|NO.91677

なんとなく状況はわかるのですが、
抜粋した箇所が少なすぎて変数の意味などがわかりません……

可能ならば出来るだけ全体を見せていただきたいのですが
最低限の抜粋だけをしている事から
ソースの公開はしたくないようですので、
言葉だけでアドバイスさせていただきます。

便宜的に
・地面
・台(上に乗れる障害物)
・壁(あるいは障害物の側面)
この三種で説明すると、

衝突判定後の座標修正が
障害物の上に移動するようになっている(はず)なので
いったんY(上下)の判定をする地面と台、そしてX(横)の判定をする壁とで
座標修正を分けて考えるとわかりやすくなるのではないかと思います。



myu

リンク

2020/10/25(Sun) 21:24:41|NO.91687

あらや様

ご連絡ありがとうございます。
説明が不足しており申し訳ございませんでしたが、アドバイス通りに行い解決できました。
ありがとうございました。
修正後のプログラムです

;障害衝突判定(高さ方向)
if (x > 205 - M_X && 235 > x && y >= 360 - M_Y){
y = 360 - M_Y
}

;障害衝突判定(横方向、左から)
if (x >= 200 - M_X && 200 >= x && y > 360){
x = 200 - M_X
}

;障害衝突判定(横方向、右から)
if (240 > x && x >= 240 - M_X && y >= 360){
x = 240
}



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.91676への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2018(c) All rights reserved.