ユーザーが目的の選択を使用してゴールを投稿できるように、ユーザーが速度、角度、方位角を選択する必要があるサッカー ゲームを開発しています。ゲームの軌道パスを作成する方法として誰かが私を定式化できますか?解決策を見つけるために。
1 に答える
基礎物理です。Z が上にあると仮定すると、最初の X 速度と Y 速度は一定であり、(三角関数を使用して) 初期角度によって決定されます。Z コンポーネントは、重力によって完全に決定されます。仰角を取得し、(再び三角関数を使用して) コンポーネントに変換します。それが最初の Z 速度です。
これは、風、スピン、抗力を無視する最も単純な定式化です (つまり、ボールは飛行中に横方向に移動せず、重力のみに影響されます)。
vx = power * cos(elevation) * sin(azimuth);
vy = power * cos(elevation) * cos(azimuth);
vz = power * sin(elevation);
さて、時間の位置t
は単純なニュートン物理学です:
x = vx * t;
y = vy * t;
z = vz * t - 0.5 * g * t * t;
重力はどこg
にあるのか (9.81 m/s/s)
しかし、これらの式を直接使用しても、バウンスなどを計算することはできません。そのためには、段階的に計算する必要があります。つまり、小さな時間増分 ( dt
) では、現在の位置と速度を取得して変更します。
vx; // unchanged
vy; // unchanged
vz -= g * dt; // gravity
x += vx * dt;
y += vy * dt;
z += vz * dt;
Z 位置が地面より下にある場合はvz
、跳ね返りを許可しません。サーフェスにヒットした場合も同様の反射を行います (サーフェスの法線に対してベクトルを反射します)。
飛行にスピン (マグナス効果) やその他の力の影響を与えたい場合は、さらに注意が必要です。また、ボールが跳ね返るたびにエネルギーが失われるため、反射を抑えたい場合もあります。
それはあなた次第です。私は基本を与えました、そしてそれが役立つことを願っています。
発射体の動きをよく読む必要があります。何か基本的な作業ができて、モーションをよりリアルにしたい場合は、スポーツ ボールの空気力学/流体力学を読んでください。Rabindra Mehta によるほとんどすべての本や記事が良い出発点になります。