2016-12-25 10 views
4

私はjavaとbox2D(libgdxから)を使ってゲームを作成しています。私は問題を抱えているこの瞬間、画像怒鳴るの赤いボディが低下した場合、時にはそれが(それはダイナミックなボディもある)プラットフォームに当たらないでJavaとBox2D - どのボディを弾丸として扱うべきですか?

それはスピードの高い量で落ちるので、衝突検出は連続していない。

enter image description here

私の質問は、以来、両方のオブジェクトであるダイナミックあると私は赤い体が検出されたプラットフォーム間の衝突が、私は弾丸体に両方の体を設定しなければならないことを確認するには?赤い体だけ?またはプラットフォームだけ?

注:

  • 赤いボディは非常に高速で

  • を落下プラットフォームは高速で

を移動しませんが、あなたとメリークリスマスをありがとう!

+0

私は決してマニュアルを引用していませんが、「 では、CCDを使用するためにダイナミックボディが必要なゲームシナリオがいくつかあります。例えば、動的なスタックで高速弾を撃ちたい場合がありますCCDなしでは、弾丸がレンガを突き抜けることがあります。 "* - これは私の場合とまったく同じように思えます。だから**それが動作し、パフォーマンスがOKなら、それらを両方とも '弾丸 'に設定しない*何らかの理由がありますか? – Marco13

答えて

0

私は赤いボディに弾丸モードを有効にし、プラットフォーム本体に弾丸モードをオフにします。

少なくともBox2D 2.3.2のC++ CCDコード(b2World::SolveTOIを参照)では、指定されたタイムステップのすべての連絡先が、CCD処理を行う必要があるかどうかについて検討されます。本質的に、箇条書き対応のボディを有するコンタクトまたは非ダイナミックボディ(スタティックまたはキネマティックボディ)を有するコンタクトは、CCDプロセスにおいて継続する。弾丸が少なくても身体を使用できるようになればなるほど、その方法はすぐに終わることができます。

このように、赤いボディとプラットフォーム本体の両方で弾丸モードを有効にするには、最適ではありません(アルゴリズム的に言えば)。ただし、3つの描画されたボディのみではパフォーマンスの違いは目に見えません。赤いボディとプラットフォームとの衝突だけが懸念されているので、弾丸を有効にしておけば、CCD処理のための接触を継続することができます。

なぜ私は(プラットフォームとは対照的に)赤いものを有効にしているのですか?それは、あなたが述べているように、2つの中で最も速く動いていて、概念。

将来的に言えば、プラットフォームが増え、プラットフォーム自体がトンネルできないようにする必要がありますが、トンネルに気づいていたら(遅い速度でも)、プラットフォーム(赤いボディの代わりに)は私が行く方法だろう。

関連する問題