質問

私は動きの速い体(a)を持っています。これは動的です。それは別の体と衝突することになっています(b)。 AはBと衝突しますが、時には衝突せずにボディBを通過します。これは完全にランダムな動作です。私はその衝突を持っている必要があります。ランダムにこのように振る舞っている理由をご覧ください。

役に立ちましたか?

解決

単一のタイムステップで大きな動きのために別のオブジェクトを通過する効果が呼ばれます トンネリング.

Box2Dは、動的と動的との間の連続衝突検出を使用します 静的 この問題を解決するオブジェクト。ただし、ケース(ダイナミックとダイナミック)は自動的に処理されないため、衝突が評価される正確な瞬間にオブジェクトが衝突位置にあるかどうかは、ランダムなサイコロを投げるだけです。

から Box2Dマニュアル:

通常、CCDは動的ボディ間で使用されません。これは、パフォーマンスを合理的に保つために行われます。一部のゲームシナリオでは、CCDを使用するには動的なボディが必要です。たとえば、ダイナミックレンガのスタックで高速弾丸を撮影することができます。 CCDがなければ、弾丸はレンガを通り抜けるかもしれません。

Box2Dの高速移動オブジェクトは、弾丸としてラベル付けできます。弾丸は、静的ボディとダイナミックボディの両方でCCDを実行します。ゲームデザインに基づいて、どの体が弾丸であるべきかを決定する必要があります。身体を弾丸として扱う必要があると判断した場合は、次の設定を使用してください。

bodydef.bullet = true;

弾丸フラグは、動的な体のみに影響します。

Box2Dは連続衝突を連続的に実行するため、弾丸は速く動く体を逃す可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top