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
}



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