前提・実現したいこと
Unity上にて、バドミントンのシャトルの軌道を再現しようとしています。
しかし、シャトルに加わる空気抵抗が実装できずに困っています。
シャトルの運動方程式は
x方向 ma=-k|V|Vx
y方向 ma=mg-k|V|Vy
(kの値は任意)
このようになります.つまり各方向それぞれ速さと各方向の速度ベクトルを比例定数にかけているというふうになります.
私が実装しようとした方法では、初速度は自分で最初に設定して、速度に応じてx方向とy方向の空気抵抗をシャトルに与えるようしましたが、その空気抵抗の実装の仕方が分かりません.各方向の速度ベクトルを取得してx方向とy方向に空気抵抗を実装していただきたいです.どなたか解決方法を教えていただきたいです。
よろしくお願いいたします.
該当のソースコード
public class force : MonoBehaviour { private Vector3 latestPos; float speed; GameObject player; void Start() { player = GameObject.Find("blue"); Rigidbody rb = GetComponent<Rigidbody>(); Vector3 force = new Vector3(20.0f, 20.0f, 0.0f);//初速度の実装 rb.AddForce(force, ForceMode.Impulse); } void Update() { var speed = (player.transform.position - latestPos) / Time.deltaTime; latestPos = player.transform.position; //ここに空気抵抗を実装したいです// } }
試したこと
初速度の設定と,速さの取得はできたので,各方向の速度ベクトルを取得してx方向とy方向に空気抵抗を実装していただきたいです.