物体に異なる密度/質量を与えても、同じ速度で落下します。空気抵抗のない場所では、質量が落下速度に影響しないことを知っています。
しかし、それでは、どのようにして論理的に、たとえば風船とレンガを異なる速度で落下させることができますか?私が考えることができる最も近い方法は、setGravityScaleを使用してこれをすべて設定することです。
box2d で対気速度の減少効果をシミュレートする最良の方法は、「ダンピング」を使用することです。
参照: http://www.box2d.org/manual.html
「ダンピングは、物体の世界速度を下げるために使用されます。ダンピングは摩擦とは異なります。摩擦は接触によってのみ発生するためです。ダンピングは摩擦の代わりになるものではなく、2 つの効果を一緒に使用する必要があります。」
「ダンピング パラメータは 0 から無限大の間である必要があります。0 はダンピングなしを意味し、無限大は完全なダンピングを意味します。通常、0 から 0.1 の間のダンピング値を使用します。ボディが浮いて見えるため、線形ダンピングは通常使用しません。」
bodyDef.linearDamping = 0.0f;
bodyDef.angularDamping = 0.01f;
1 つのオプションは、重力を無効にして、各フレームに必要な加速度を自分で適用することです。それが私がゲームで行ったルートです。Box2d の組み込みの重力は、迅速なシミュレーションには問題ありませんが、あまりカスタマイズできません。
重力を無効にしたら、オブジェクトに適用する加速度の式を決定する必要があります。流体抵抗にはいくつかの異なるモデルがあります (ウィキペディアを参照してください)。実験して、最もよく見えるモデルを選択する必要があります。