初めまして。
C++でスーパーマリオのような簡単な横スクロールアクションゲームを作っております。
今回は坂道を含んだ、地形との当たり判定について質問いたします。
とはいえ当たり判定自体はできているので、
本題は判定後の座標の補正方法についてです。
まず簡単にマップの仕様を説明いたします。(たぶん一般的なRPGやアクションと同じだと思いますが)
http://thuploader.orz.hm/1mup/dat/1mup_02932.png
マップは16x16ピクセルのブロックの組み合わせで表現されます。それぞれにIDが振られており、
http://thuploader.orz.hm/1mup/dat/1mup_02933.png
マップを表す二次元配列の各要素にそのIDが入ります。
※横20個、縦15個のブロックでマップを構成すれば、マップの幅は320x240となります。
そしてここからが本題ですが、実際にこのマップを動き回れるようにするために、坂道を登ることも含めた当たり判定の後どのように座標を変更するか?その方法を教えていただきたいのです。
現状出来ていることは、
・背景(ID:0)と四角ブロック(ID:1)のみで構成されたマップを動き回ること(ただし補正方法はやっつけ)
・移動後の座標が、坂道のブロックの黒い部分に入っているかどうかの判定
なので、当たり判定が真になったとき、操作キャラの座標をどこへもっていけばよいかを教えてください。
坂道の当たり判定と座標の補正方法
Re: 坂道の当たり判定と座標の補正方法
単純に食い込んだら真上に補正してやるのではだめなのですか?
判定の対象が円形のもので転がらせたいというのなら法線方向に補正してやるのが最適でしょうけれど
斜面に立たせたいというのでしたら真上に戻すだけでいいと思うのですがどうでしょうか?
判定の対象が円形のもので転がらせたいというのなら法線方向に補正してやるのが最適でしょうけれど
斜面に立たせたいというのでしたら真上に戻すだけでいいと思うのですがどうでしょうか?