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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1228
ポット横スクロールゲームの当たり判定9未解決


ポット

リンク

2008/12/28(Sun) 12:59:47|NO.22052

今、マリオみたいな横スクロールゲームを作っているのですが、
当たり判定の方法がよくわからず苦戦しています。
boxfなどで塗りつぶしたものだと、簡単に色で判定できるのですが、
たくさんの色を使ったブロックなどの当たり判定ができません。
また、マップも広くなると作るのが大変なのですが、どうすれば効率よく
マップを作ることができますか。
2つとも教えてください。



この記事に返信する


GENKI

リンク

2008/12/28(Sun) 13:46:05|NO.22056

先ずは参考資料の提示:
http://hspdev-wiki.net/?%B2%A3%A5%B9%A5%AF%A5%ED%A1%BC%A5%EB%B7%BF%A5%B2%A1%BC%A5%E0
http://hspdev-wiki.net/?%BE%AE%A5%EF%A5%B6%2F%A5%A2%A5%AF%A5%B7%A5%E7%A5%F3

キャラの当たり判定は、色による判定ではなくキャラクタの座標を使って判定するのが一般的だと思います。
マップデータはテキストで保存できるようにしておくと手持ちのテキストエディタだけで作成できるようになります。
もっと楽に作れるようにするために、マップエディタを作成するという方法もあります。



ポット

リンク

2008/12/28(Sun) 15:05:32|NO.22057

ありがとうございます。参考になりました。
もうひとつ教えて欲しいのですが、ジャンプをするときに、
キーが一回押されたらあるところまであがり、
そして決めたところまで下がる、ということがしたい
(要するにマリオのジャンプ)
のですが、どうすればできるのでしょうか?



ポット

リンク

2008/12/28(Sun) 15:41:53|NO.22058

すいません・・・キャラのあたり判定もうまくできませんでした。
なぜでしょうか?キャラよりも座標が中に入っていればあたっているとしたのですが。
当たり判定の部分だけでいいのでサンプルください。



夢現因果

リンク

2008/12/28(Sun) 16:13:18|NO.22060

落下に関しては下に地面がない場合に下方に移動という事でいいと思います
常に重力がかかっている状態を作るという感じです

当たり判定に関してはそのうまくいかなかった部分のスクリプトを出してみてはいかがでしょうか?



ポット

リンク

2008/12/28(Sun) 16:23:03|NO.22061

たとえば、座標200,300に縦横40の者の当たり判定は、
//pxは自分のx座標
//pyは自分のy座標

if px>200 : if px<240 : if py>300 : if py<340 : conf=1 : else : conf=0

見たいな感じです。



ヒカリ

リンク

2008/12/28(Sun) 16:31:46|NO.22062

もしこのまま書くのであれば

conf=0
if px>200 : if px<240 : if py>300 : if py<340 : conf=1

と書いたほうがいいかもしれません。



ヒカリ

リンク

2008/12/28(Sun) 16:43:11|NO.22063

補足。

if px>200 : if px<240 : if py>300 : if py<340 : conf=1 : else : conf=0

この文では py<340 が満たされていない場合だけに
判定をリセット(conf=0)していることになります。

…え〜と、失礼ですが & もしくは and の使い方はご存じですよね?
else をうまく使いたければ

if px>200 and px<240 and py>300 and py<340 : conf=1 : else : conf=0

とするのが、適当かと思います。



ヒカリ

リンク

2008/12/28(Sun) 16:51:15|NO.22064

>(要するにマリオのジャンプ)

…これは、ボタンを押している間だけ上昇を続けるということでしょうか?
その場合の考え方をまとめてみますね。

・ボタンを押している間は「ジャンプ状態」ということにして、上方向の加速を続ける。
・「ジャンプ状態」中にボタンを離した場合は「ジャンプ状態」を解除。地面(ブロック)との
 判定があるまで「ジャンプ状態」にはなれない(ジャンプボタンを押しても無効)。
・「ジャンプ状態」になれるのは、地面(ブロック)の上に乗っているときのみ。


あと、決めたところまで下がる という意味がよくわからなかったのですが、
どういうことなのでしょうか?


>キャラのあたり判定もうまくできませんでした。

具体的な不具合を説明してほしいです。
ブロックにめり込んでしまったとか、相手に当たった瞬間動けなくなったとか
そもそも判定しないですり抜けてしまったとか。



夢現因果

リンク

2008/12/29(Mon) 07:54:11|NO.22074

ヒカリさんの説明の補足です
複数の条件の場合括弧で区切ります

前述の例だと

if (px>200) and (px<240) and (py>300) and (py<340) : conf=1 : else : conf=0

になります



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