5

簡単な概要として:私はBox2Dをベースとしてプールのゲームを作ろうとしています。今私の質問:

ビリヤードボールとエッジを正常に動作するように設定するにはどうすればよいですか?明らかな理由もなく、ボールがエッジにくっついているように見えることがあります。テーブルの端の周りに1の反発力を持つ4つの静的な壁オブジェクトがあります。

各ボールには次のプロパティがあります。

friction: 0.3
restitution: 0.3
density: 58.474822 (kg/m^2)
radius: 0.028575 (m)

キューボールの密度は101.356358(kg / m ^ 2)です。

1.2 kg-m / sのキューにインパルスを加えると、ボールは通常のビリヤードボールの速度で動いているように見え、壁にほぼ正しく跳ね返ります。ただし、ボールが壁に当たったときに、ボールがまったく跳ね返らない、停止する、または壁に沿って移動し続ける場合があります。これは奇妙に見え、正しくないようです。これを設定するためのより良い方法はありますか?

4

1 に答える 1

6

Box2D は、長さの単位が 0.1 から 10 (メートル) の間で最適に機能するように設計されており、この範囲から外れるほど、数値の不正確さの影響を受けやすくなります。

ボールの半径が 1.0 になるようにシステムをスケールアップし、それに応じて残りをスケールしてみてください。マテリアル プロパティをそのまま維持できますが、インパルスをアップスケールする必要があります。

速度が一定のしきい値を下回ったときに体がスリープ状態になることによっても、固着が発生する可能性があります。これを防ぐには、b2BodyDef 構造でallowSleepを false に設定します。ただし、スリープ状態にならないボディは、スリープ状態になるボディよりも多くの CPU 時間を消費することに注意してください。したがって、これは注意して使用する必要があります。

于 2010-06-29T10:30:11.433 に答える