box2das3b2ContactListenerクラスに問題があります。b2ContactListenerを拡張し、PostSolveメソッドをオーバーライドするContactListenerという名前のクラスがあります。PostSolveは、2つのパラメーターを取ります。1つは、接触している2つのオブジェクトに関する情報を保持するcontact、もう1つは、接触に関する情報を保持するインパルスです。インパルスパラメータを使用して、2つのオブジェクトがどれだけ強く当たるかを決定し、それに応じてダメージを適用します。
問題は次のとおりです。円形のものを作成し、それを地面として持っている静止体上でゆっくりと転がしてから、かなり大きなオブジェクトを地面の任意の場所にドロップすると、移動中の円が接触します。ただ転がるだけで大きくなる衝動。これにより、回転する円形のオブジェクトが壊れてはいけないときに壊れます。
まるで静止した体を揺さぶり、数百メートル離れた物体に甚大な被害を与えるかのようですが、それは円にのみ影響します。
誰かが状況に光を当てることができますか?これは既知の問題ですか?回避策?
Box2DAs3バージョン2.1aを使用しています。
更新:体が多くのダメージを与えるこの奇妙な状態に入ると、それに触れる円は大量の大きな衝動を受け取ります。円形でないものが体に接触すると、問題はなくなります。また、この問題は静的オブジェクトだけでなく、動的および運動学的にも発生します。
アップデート:問題をさらに絞り込みました。大きなオブジェクトの平らなエッジが私の地面のオブジェクトに当たると、コンタクトリスナーはびっくりして、の質量インパルスを適用します。円だけでなく、目覚めていて地面に接触しているオブジェクトは、大量のPostSolveメソッド呼び出しを受け取ります。円が地面を転がっている間に、11ピクセル×11ピクセルのサイズの箱を地面に落としてみました。バグは発生しませんでした。ただし、ボックスが12 x 12の場合、バグは発生します。また、12×12〜0.1度の大きさの箱を回転させてもバグは発生しません。再現するには、十分な大きさの接触領域が必要です。また、ボックスの密度は何にも影響しません。また、ボックスが幅10、高さ100の長方形である場合、バグが再現されます。オブジェクトのサイズがバグを引き起こしているようですが、
更新:これは、私が作成したBox2Dフォーラムの投稿へのリンクです。ソース付きのswfの例があります。