チュートリアルの後に私はボンバーマンをJavaでプログラミングしています(これは私の最初のゲームです)。 このチュートリアルでは、衝突を検出するための次のコードを提案しています。今では2Dゲームの衝突のための効率的なアルゴリズム?
for (int p=0; p<entities.size(); p++) {
for (int s=p+1; s<entities.size(); s++) {
Entity me = (Entity) entities.get(p);
Entity him = (Entity) entities.get(s);
if (me.collidesWith(him)) {
me.collidedWith(him);
him.collidedWith(me);
}
}
、エンティティは敵とプレイヤーを含む配列リストです。 プレイヤーが壁に衝突するのを検出したいのであれば、レベルのすべての壁やレンガのタイルをエンティティのarraylistに置く必要がありますか?もしそうなら、このアルゴリズムは非常に効率的ではありませんか?これらのタイルは他のタイルと衝突することはないので、私はさまざまなリストのゲームエンティティを管理することを考えていました。何を指示してるんですか?それを行うより効率的なアルゴリズムはありますか?
注:2Dゲームでの衝突に関する他の質問はすでに読んでいます。 ありがとうございました。
あなたの答えは本当にありがとう、非常に明確で有用でした:)私は今記事を読むでしょう。 – Rama
グリッドの衝突によって、衝突計算が数百の長方形のチェックから少数のブールのチェックまで減らすことができます。また、それ自身の組み込み方向の衝突チェッカーのようなものです。おそらく数千倍ではないにしても数百倍の速さです。 空のグリッドの内側を自由に移動できるシステムを使用しています。遭遇した問題は、グリッドに斜めに入ることです。 あなたの投稿は私にその問題を解決するアイディアを与えました。 – WVrock