ボールを打つアイコンのドラッグ速度と到達位置の計算

開発のTips

 ゴルフゲームの制作において、ボールを打つアイコンのドラッグスピードとボールがゲームビュー画面上で飛ぶ距離の関係を把握する必要がありました。
 

 ゴルフゲームでは、Size:50とし、画面上に表示されているマス目1つは10Unityユニット、スタート位置からカップまでの距離は約35mとします。

 そこで、重力だけを考慮した放物線のカーブを表わす2次方程式を解くことでアイコンのドラッグスピードを決めました。
 ゴルフのカップまでの距離は35m、高さは12mとし、このスペースの中でボールが移動するためのドラッグスピードとボールに与える初速度を求めます。

 ボールには重力のみが働くものとし、ボールの垂直方法、水平方向の運動式を下記に示します。
(垂直方向)
 垂直方向の速度 \(vy=v0・sin(θ)ーg・t\)
 ここで、V0は初速度(m/s)、θはx軸に対する角度(ラジアン)、tは時間(秒)、gは重力の加速度\((s/m^2)\)です。
 この式を積分して垂直方向の位置yは、
 \(y=y0+v0・sin(θ)・tー(g/2)・t^2\)
 ここで、y0は初期位置です。
(水平方向)
 水平方向の速度 \(vx=v0・cos(θ)\)
 水平方向の距離 \(x=v0・cos(θ)・t\)

 初速度(V0)を14m/s、角度45°でボールを打ったときの最高地点は、垂直方向の速度が0m/sとなるときで、その時間tは1秒となり、高さは約5m、到達距離は約20mとなります。
 ここで、ゲームスペース内に収まるようにするために、初速度14m/sとするためのプレイヤーアイコンのドラッグスピードを調整します。
 スマホ画面上の横幅35Unityユニット(35m)の5分の1(7m)を使って0.5秒でドラッグすると初速度の14m/sになります。
 ボールを打つドラッグ時間0.5秒は長いため、0.1秒ぐらいの間隔でドラッグして、そのドラッグにかかった時間を5倍して、ボールに初速度を与えるようにしました。

currentSpeed = (currentPosition - lastPosition) / (dragTime * 5);


 




タイトルとURLをコピーしました