しばらくXNAで遊んでみたかったので、大砲から大砲を発射して物にぶつけてもらうゲームを作ってみたいと思いました。放物線を使って空中をアーチ状にすることで、よりリアルに見せたかったのですが、オンラインで見つけた方程式を正しく実装できませんでした。大砲のX位置とY位置を制御して放物線を生成するために使用できる方程式を誰かが知っているかどうか疑問に思いました。私が持っているのは、それを開始したい程度、大砲の開始位置、およびそれが飛んでいる速度は実際には重要ではありません。
前もって感謝します。
y
正が上方向にx
あり、右に向かって増加する座標系を想定します。キャノンボールが原点(0、0)から右上に、v_init m/s
ある角度A
(ラジアン対度に注意してください。システムで角度をラジアンにする必要がある場合は、次のように変換できます)で右に向かって発射されると仮定します。度を180で割り、)を掛けて、度をラジアンにしpi
ます。
大砲のボールがの初速度で撃たれた場合、その方向v_init
の速度は次のようになります。x
v_x = cos(A) * v_init
y
方向の速度は次のようになります。
v_y = sin(A) * v_init
キャノンボールの高さは次のように指定されます。
h = (1/2)gt^2 + (v_y * t)
ここで、gは-9.81 m / s ^ 2の重力による加速度でありt
、秒単位の時間です。
したがって、いつでもt
、大砲のボールは次の場所にあります。
x_t = v_x * t
y_t = 1/2(-9.81)t^2 + (v_y * t)
0
その方程式を使用して、高さをに設定し、次の式を解くことにより、ボールが空中にある時間を知ることができますt
。
t_total = 2 * (v_y / 9.81)
ボールは飛行の途中で最大の高さに達するため、放物線のピークは次のようになります。
x_peak = 1/2 * t_total * v_x
y_peak = 1/2 * (-9.81) (t_total / 2)^2 + (v_y * t_total / 2)
そして、大砲のボールは次の場所に着弾します。
x_land = t_total * v_x
y_land = 0