はじめまして、今DXライブラリを使用してボンバーマンもどきを作っています。
一通りのシステムは完成したのですが、今のシステムは一度「→」を押すと1マス分移動してしまいます。
実際のものはドット単位で管理しているようにみえたので、そのように改良しようかと思ったのですが、
移動のアルゴリズムが予想以上に難しかったのでアドバイスをいただければと思い投稿しました。
単純に「→」を押せば数ドット移動、などは簡単なのですが
ブロック幅と、プレイヤーの当たり判定幅が同じなので少しでもブロックに接触していると移動できなくなったりするのです。
実物をプレイすると
ボンバーマン→○
ハードブロック→□
ソフトブロック→■
..○
□ □
といった状況の場合に↓を押すと
○
□ □
の状態になるまで↓を押しているのに右に移動してくれるようになっています。
..○
□■□
この状態だと↓を押しても移動しません。
この様な移動システムではどのように判定をしているのか、手順だけでもアドバイスをいただければと思います。
マップのデータは
mapdata[11][17]という配列に
0は何もなし、1はハードブロック、2はソフトブロックというように入っています。
ボンバーマンの移動システムについて
Re:ボンバーマンの移動システムについて
例えばマップで4x4の位置に居るとして
↓キーが押された場合に 4 のチップよりも
右に居るのか左に居るのか割り出します。
チェックして通路であれば進行させる。
やりかたは色々とあると思いますが、
基本的な考え方としてはこんな感じです。
追記
4 と 5 が通路である場合
4 と 5 がブロックである場合
4 が 通路 5 がブロックである場合
4 が ブロック 5 が通路である場合
それぞれを考えてみてください。
↓キーが押された場合に 4 のチップよりも
右に居るのか左に居るのか割り出します。
○→ □□□□□■ 0 1 2 3 4 5進行方向が判れば mapdata[x+1][y+1] を
チェックして通路であれば進行させる。
やりかたは色々とあると思いますが、
基本的な考え方としてはこんな感じです。
追記
4 と 5 が通路である場合
4 と 5 がブロックである場合
4 が 通路 5 がブロックである場合
4 が ブロック 5 が通路である場合
それぞれを考えてみてください。
Re:ボンバーマンの移動システムについて
> 無事に移動システムを完成させることができました。
変な文章になってしまい、ダメかなと心配していましたが
完成してなによりです。
ご希望のものとは少し違うかもしれませんが、
それっぽいサンプルを作ったので
一応載せておきます。
変な文章になってしまい、ダメかなと心配していましたが
完成してなによりです。
ご希望のものとは少し違うかもしれませんが、
それっぽいサンプルを作ったので
一応載せておきます。