特定の車両に対して、4 つの車輪にサスペンション システムを実装しました。システムはフックの法則に基づいています。
問題: 車両が地面に接触できないようにする必要があります。球形のコンテナ (内部) で走行すると、サスペンションが 100% まで圧縮され、車両のシャーシが地下に接触し、望ましくない衝突が発生して車両が振り回されます。
それは現実的な動作かもしれませんが、私たちのゲームはアーケード感覚を目指しているので、車両のシャーシがサスペンション サイズの X パーセントよりも地下に近づくことができないように、最大圧縮を実装する式を探しています。 2 つの剛体間の物理的な接触を実際にシミュレートすることなく、任意の時点で。したがって、サスペンションに擬似的な力を加える必要があります。
私の現在のアプローチ: 車両のシャーシが実際にサスペンション ベースに接触する場合 (申し訳ありませんが、これを説明する適切な言葉がわかりません。つまり、サスペンションが最大に圧縮されている場合)、大きさが等しく、逆方向に力が発生します。サスペンションを押す力に対して相対的な方向への回転が車両のシャシーに適用され、下方向への移動を強制的に停止させます。
したがって、車両の世界速度 V を受け取ります。下向きの速度を取得するために、速度の DotProduct と BodyUpVector を取得します。
float DownForceMagnitude = DotProduct(VelocityAtSuspension, BodyUpVector);
FVector DownForce = DownForceMagnitude * BodyUpVector;
FVector CounterForce = -DownForce * WeightOnSuspension;
わかりました、この疑似コードは、乗り物がジャンプ後に飛行機に着陸するとき、地下でもある程度うまく機能します。ただし、(球の内壁を走行するなど)勾配が増すと、とにかくサスペンションが最大圧縮に達するため、明らかに私のアプローチは正しくありません。
何が原因なのか今から気になります。Unreal Engine 4 には特定の場所で重量を受け取る機能がないため、私の重量計算のみが VehicleWeight / 4 によってシミュレートされます。私は物理学の専門家ではないので、これが簡単に計算できる場合はご容赦ください。それが問題でしょうか?
物理的に 100% 妥当な解決策は必要ありません。機能する解決策が必要であり、車両のシャーシの下向きの動きを十分に停止できます。
どんな助けでも大歓迎です。ご挨拶、