2011-10-06 4 views
6

Cocos2dベースのプロジェクトでは、衝突検出にのみ物理ツールキットを使用したいと思います。 ChipmunkやBox2dを使用する際の賛否両論は何ですか?衝突検出のみの場合、ChipmunkまたはBox2dはより良いツールですか?

+0

物理学を扱いたくない場合は、ライブラリ全体を組み込むのはなぜですか? – alex

+0

私は物理学は必要ありませんが、私は衝突検出システムを使いやすくしたいので、自分で書く必要はありません。ツールキットを含めることはそれほど大きな問題ではないはずです。 –

+3

かなり主観的な質問ですが、「より良い」ものはあなたが最も速く学び、最もよく理解できるものです。 –

答えて

4

どのような種類の衝突がありますか?

あなたが必要とするすべては、これらのある場合:

  • RECTは矩形と交差する - > CGRectIntersectsRect(..)RECTで
  • ポイント - 2の> CGRectContainsPoint(..)
  • 半径が交差する(すなわち距離ポイント) - > ccpDistance(..)

物理エンジンはまったく必要なく、独自の衝突検出アルゴリズムを書く必要もありません。

ChipmunkとBox2Dは衝突を同等に処理します。私は、「どちらが良いか」と尋ねると、それはあなたにとって重要ではないという意見です。代わりに、C(Chipmunk)またはC++(Box2D)での作業がより快適かどうかを自問してください。

同様に、object-oriented, verbose API(Box2D)またはfunctional, highly abbreviated API(Chipmunk)で作業したいですか?

物理的なエンジンが他のものより優れているかどうかを、恣意的で、未定義で、非常に主観的な考え方ではなく、簡単に扱えるようにすることを決定しました。自分のゲームデザインと物理エンジンの内部アルゴリズムが本当によく分かっていれば、ゲームのデザインへの影響を評価することができます。

+1

私は最近ゲームでこれをやったので、まったくお勧めしません。 Cocos2DはGame Centerログイン通知やiOS 5システム通知などのオーバーレイビューに深刻な問題を抱えています。これは、アップデートメソッドがいくつかのフレームをスキップし、結果的にAndyが解答で説明したような「トンネリング」効果が生じることがあります。ゆっくりと大きなオブジェクトを動かさない限り、適切な衝突検出を備えた物理エンジンを使用する必要があります。 Cocos2Dの場合、おそらくBox2Dを使うのが一番良いでしょう。 –

9

this answerによると、ChipmunkはContinuous Collision Detectionをサポートしていませんが、Box2Dはサポートしていません。 、あなたは非常に高速な物理オブジェクトを移動しているしようとしている場合例:これは、これは彼のBox2D vs Chipmunk FAQのステファンItterheimさんのコメントで明らかになった「トンネリング」(高速で移動するときにオブジェクトがお互いを通じて少し渡し)

を防止することが重要です「Bullets」では、Box2Dを掃除する際に、連続した衝突の統合を行うことができます。これは、急速に移動するオブジェクトが深く浸透したり、他のオブジェクトをトンネリングしたりすることを防ぎます。

Chipmunk Collision Detection docsはseparate()コールバックについて語ります。 2つの図形が初めてこのステップに触れてしまった。しかし、これがスピードで衝突を検出する能力を持っているかどうかは私には不明でした。

ブレークアウトゲームのBOX2Dが私のゲームに悪化している2つの深刻な問題を、持っている主な理由は... 私の現在のゲームはBOX2Dを使用している、と私はそれでシマリスを使用したいvery negative opinionはBOX2Dを使用してもあります。まず、オブジェクトがコーナーでオブジェクトに「かかっている」、ゲームはブレークアウト・ゲームなので、ボールが壁に沿って転がっているときに、時にはそれがひっくり返って壁から離れてしまう、本当に古いバグがあります。なぜ私のゲーム物理は「ランダム」に見えるのですか?

結論:私も混乱しています。

関連する問題