bullet3D を 2D のみのモードで使用することは可能だと思いますが、気になるのは浮動小数点の精度エラーです。Z 軸のすべての値と操作が 0 の場合、Z 値は他の軸の操作の影響を受ける可能性があります。これが積み重なると、間違った結果になる可能性があります。
しかし、私はまだ bullet3d を使用していません。2D のみのモードで bullet3d を使用した経験がある場合は、ご意見をお聞かせください。
bullet3D を 2D のみのモードで使用することは可能だと思いますが、気になるのは浮動小数点の精度エラーです。Z 軸のすべての値と操作が 0 の場合、Z 値は他の軸の操作の影響を受ける可能性があります。これが積み重なると、間違った結果になる可能性があります。
しかし、私はまだ bullet3d を使用していません。2D のみのモードで bullet3d を使用した経験がある場合は、ご意見をお聞かせください。
現在、2D ゲームに Bullet physics を使用していますが、問題なく動作します。Bullet は btRigidBody::setLinearFactor メソッドを提供し、Z 軸の位置を強制的に正確に 0 にすることができます。平面に拘束したいオブジェクトだけに線形係数を設定することで、2D と 3D を混在させることもできます。
そうは言っても、Z軸の深さのある形状を使用しているため(その位置は2Dに制限されているだけです)、厚さが0ではありません。それでも、薄いため、メッシュをすり抜けてはいけないという問題が時々発生します。setMargin を使用してこれに対処できます。
Bullet については特に知りませんが、かなりよく書かれたライブラリであると仮定すると、これは問題になりません。
浮動小数点演算は神秘主義ではありません。丸め誤差は魔法のように発生するわけではなく、丸めがランダム、ファジー、または理解できない現象を説明するために使用する他の多くの用語のいずれでもありません。
浮動小数点演算は、コンピューター上の他のすべてのものと同様に決定論的です (宇宙線がランダムにビットを反転させない限り)。正確なゼロを使用した計算を適切に定式化すると、正確なゼロの結果が得られます。Z 軸に影響を与えるすべての操作がゼロであることが true の場合、結果の Z 座標は正確にゼロになります。そうでない場合、使用されているアルゴリズムは不適切であり、計算に信頼できません。
問題が発生するのは、合計すると物理的にゼロになるはずのゼロ以外の Z コンポーネントを含む数量を合計する場合です。このような状況では、丸め誤差が累積して、小さいがゼロではない Z コンポーネントになる可能性があります。しかし、それはあなたが自分自身を見つけた状況ではないように聞こえます. 関連するすべての数量の Z コンポーネントがゼロである必要があり、それが保持されるようです。