私はゲーム(JAVA)をプログラミングしていて、重力を加えたいと思っています。このような数式や何かを見つけようとしましたが、それを行うには非常に異なる方法があります。リアルな重力をシミュレートし、オブジェクトが床に触れたときにリバウンドする式を探しています。英語が下手でごめんなさい。
1 に答える
地球の表面近くでは、落下するすべての物体の重力加速度は一定です(空気抵抗を無視します)。式は、初期位置、初期(垂直)速度、およびオブジェクトが落下している時間を指定しxf = x0 + v0*t + (1/2)*g*t^2
て、最終位置を示します。は、技術的には高度やその他の要因に少し依存する定数ですが、約です。xf
x0
v0
t
g
9.81 m/s
リバウンドを実行するには、最初に衝突検出を実行する必要があります。衝突を検出したら、サーフェスに垂直なベクトルを計算し(サーフェスが水平面の場合は簡単)、そのベクトルを介して速度ベクトルを「反射」(一種)する必要があります(法線ベクトルが指している場合)。真上、つまり、平らな面で跳ね返る場合、これは速度を反転させることになりv
ます)。これを現実的にするには、バウンス後にダンピングを適用する必要があることに注意してください。速度ベクトルを反映するだけでなく、スケールダウンすることもできます(バウンス後の反射方法によっては、いずれかまたは両方のコンポーネント)。
このようなシナリオを実際にシミュレートするには、さまざまな手法を使用できます。ポイントのリストを事前に計算してからアニメーションを実行するか、オイラー法またはその他の数値求積法(台形公式)を使用してこれらすべてをシミュレートできます。 、ルンゲクッタなど)。