13

質量が 10 の物体があり、プログラムの各サイクルで単純なアプローチを使用して 100 の力を適用します。

Vector2 force = new Vector2(0, 1) * 100;
bod.ApplyForce(force, bod.GetWorldCenter());

それは素晴らしく機能し、加速しますが、速度が 10 (100 / 10 だと思います) になると、それ以上速くなりません。私は決して物理学者ではありませんが、重力下の場合と同様に、体は継続的に加速する必要があることを覚えています。この速度制限は、Box2D の動作の結果なのか、それとも私が何かを台無しにしているのだろうか? また、それを修正するにはどうすればよいですか。

注: ApplyForce の代わりに ApplyLinearImpulse を使用すると、同じ速度制限が得られます

更新: Box2D (b2Settings.h) によって課される全体的な最大速度制限については十分に認識しています。私の例では、適用される力を変更すると、問題のアイテムはこの制限をはるかに下回って移動します.1000または10000は常に(力/質量)の最大速度に近づきます。

4

1 に答える 1

4

オブジェクトの最大許容速度に達しています。これを修正するには、次の 2 つの方法があります。

  1. Box2D 設定で最大許容速度を調整します。設定を開き、MaxTranslationfloat/const をより高い値に変更します。デフォルトでは2.0.

  2. オブジェクトのサイズを縮小し、必要な計算を実行し、オブジェクトを元に戻します。Box2D のコメントにあるように、これは技術的に正しい方法ですMaxTranslation

物体の最大線速度。この制限は非常に大きく、数値の問題を防ぐために使用されます。これを調整する必要はありません。

#1 を試してみてください。それが機能する場合は、スケーリングが必要な可能性が高いことを意味します。それが役立つことを願っています。

于 2013-03-19T18:59:45.610 に答える