2011-12-18 13 views
2

衝突検出に関連する問題に対して最適なソリューションを想像するのに問題が発生することがあります。私は衝突する可能性がある多くのオブジェクトを使って、Javaで2Dトップダウンゲームを書いています。私は、O(n²)問題を回避し、衝突する可能性がある領域のオブジェクトを絞り込むために、マップの四角形の特定の解像度で特定のオブジェクトを使用して、マルチ解像度マップを作成する方法を使用する予定です。 私は、各地図の正方形に存在するすべてのオブジェクトのリストを保持する必要があります。しかし、多くのまたは時にはすべてのオブジェクトが動いているので、私はこれらのリストを常に更新しておく必要があります。 マップの正方形リストを更新するためにオブジェクトのレンダリングサイクルをすべて使用すると、リソースがかなり消費され、マルチ解像度マップを使用して別のオブジェクトと衝突する可能性のある数値オブジェクトを絞り込むことによって得られる利点が損なわれるでしょう。複数の解像度マップによる衝突検出

私の質問は今、どのようにすべてのオブジェクトを追跡し、マップの四角形に記入するのですか?簡単な方法はありますか?あるいは、衝突検出のための別のコンセプトを選択する必要がありますか?

私はいくつかの詳細を忘れているかもしれませんが、私が提供する必要があるいくつかの情報がある場合、返信してください。事前に

おかげ 敬具

+0

あなたの現在のコードは何ですか?衝突を避けるためにロックを使用してみませんか?そうでない場合、なぜそれは適切な解決策ではありませんか? – fge

+0

@fge:このコンテキストでは「ロック」とはどういう意味ですか? –

+0

あなたの答えをありがとう、私は私が推測する明確ではなかったと思う。ここで問題となっているのは、実際には別のマップの正方形にある場合はすべてのオブジェクトをチェックし、そこに移動します(古いマップの正方形の参照を削除して新しいマップの正方形に追加する)。私はオブジェクトが移動するすべてのピクセルの後にそれを行う必要があり、それが別のマップの正方形に達したかどうかを確認する必要があると思います。これらのようなサウンドは、マップ上に何百ものオブジェクトがあるという操作が多すぎます。 – vm370

答えて

0

は、私はあなたが非オブジェクトを移動するとオブジェクトを移動していることを前提としています。静的オブジェクトは、マルチ解像度マップに1回だけ登録する必要があります。移動するオブジェクトは、実際に移動した場合に別の四角形に属するかどうかをチェックするだけです。

実際の衝突検出の仕方によっては、移動する物体が一定の距離を移動したかどうかを再確認するだけで済みます。現在および周囲のすべての四角形内のオブジェクトとの衝突をチェックする場合です。

通常、プレイヤースクエアから離れた四角は、通常、物理パスごとにチェックする必要もありません。とにかく行動はありません。

+0

ご協力いただき、ありがとうございました。特定の距離であなたの提案を実装しようとします。 – vm370