0

Javaで2Dタイルマップの衝突に対応する最良の方法は何ですか.

Players Rectangle が、Rectangle の 2 次元配列 (Rectangle[][] collRects) の一部である Tiles Rectangle と交差すると、衝突が発生するようにコードを設定しました。

私はそれを設定する方法を知っていますが、プログラムを実行してプレーヤーがタイルと衝突すると、プレーヤーは内側のタイルの端に沿って移動し、最終的には衝突長方形を通り抜けます。

私が現在衝突に対応している方法は次のとおりです。

  1. プレイヤーがタイルのどちら側に衝突したかを if ステートメントで確認します。
  2. プレーヤーには速度変数があるため、衝突前にプレーヤーが移動していた軸の値をゼロに設定しました。

私が言いたいのは、衝突に対応する最善の方法は何ですか?

助けていただければ幸いです、ありがとう。

4

1 に答える 1

0

私が正しく理解していれば、プレイヤー(スプライト)とタイル(他の自由に動くスプライトではなく)の間の衝突を検出することに興味があるようです。

そのためには、マップ内で衝突しているタイルを(プレーヤーの左上(x、y)座標から)検出するには、いくつかの単純なモジュラー演算で十分です。

マップがNxMのタイルのマトリックスで構成され、水平方向に0 ... N-1、垂直方向に0..M-1の番号が付けられ、タイルサイズが32x32ピクセルであるとすると、衝突するタイル座標(i、j)は:

i = floor(player.x / 32);

j = floor(player.y / 32);

于 2011-12-24T04:28:18.810 に答える