斜方投射をコントロールして物体を目標に当てる方法を紹介していきます。
ゲームプログラミングでは敵の攻撃をプレイヤーに当てる時の計算に活用できます。
斜方投射では物体の投射角度と強さの2つをコントロールして弾道を変えることができます。
ゲームプログラミングで使う場合は弓や大砲などを一定の強さで打ち出すと思いますので、ここでは目標に当てるための投射角度を計算していきます。
高校の物理で習った計算式によれば、
物体の位置 = 初速度 * 時間 + 1/2( 加速度 * 時間の二乗 )
この式を使ってX軸とY軸それぞれについて考えます。
投射ベクトルV0のX,Y成分は図のようになりますので・・・
斜方投射された物体の位置x,yについて、次のような式ができます。
・・・(1)
・・・(2)
gは重力(加速度)、tは時間です。
式(1)(2)から時間tを外します。
(2)より
となるのでこれを(1)に代入すると式(3)になります。
・・・(3)
式(3)のsin cosはtanθのみの二次方程式に変えることができます。
さらにとすると
・・・(4)
式(4)はtanθの二次方程式で、角度以外は全て定数です。
二次方程式を解くと角度が得られます
のような形の二次方程式からXを求める場合。
・・・(5)
で解けますのでXをtanθにおきかえれば同様に解くことができます。
プログラミングでは解けたtanθをatan関数を使って角度に戻します。
二次方程式なので斜方投射の軌跡は2通り得られます。