1

これがFarseerの慣性によるものなのか、それとも私のコードなのかはわかりませんが、コードをかなり単純化したので見つけられません。

シナリオ: 質量が 10 (kg だと思います) の Body があります。ApplyLinearImpulse を使用し、(1,0) のようなベクトルと 5 のような定数を使用して、オブジェクトを右にスクートします。

問題: 右に移動しますが、キャップされているように見えます。ApplyLinearImpulse に供給される値を増やすと、LinearVelocity プロパティは上がりますが、Position の実際の変化は上がりません。world.step(msDelta) を呼び出すとすぐに、LinearVelocity は小さな値に戻ります。

私はこれを間違っていますか、それとも私の質量に基づく内部キャップがありますか?

4

1 に答える 1

2

Box2D ソース コードのファイル b2Settings.h で設定されている、時間ステップあたり 2.0 単位の最大移動制限があります。必要に応じてこの値 (b2_maxTranslation) を変更できますが、このファイルの値はうまく連携するように調整されているため、変更しすぎると他の問題が発生する可能性があることに注意してください。

これは Box2D 全体で使用される #define された定数であるため、変更を完全に有効にするにはライブラリ自体を再コンパイルする必要があることに注意してください。Farseer については、これが簡単かどうかを説明するのに十分な知識がありません :)

一般に、この値を変更する必要があると感じた場合は、最初にすべての物理次元を縮小して、時間ステップごとに 2 物理単位よりも速く移動する必要がないようにすることを検討してください。

ここにある他の一般的な「落とし穴」に興味があるかもしれません: http://www.iforce2d.net/b2dtut/gotchas

于 2012-08-28T18:43:15.727 に答える