読者です 読者をやめる 読者になる 読者になる

Unity勇者の冒険の書

Unityで学んだことや便利なものなど作ったら紹介します

【Unity勇者の奮闘記】Unityで物理の勉強1(最高点に達するまでの時間を求める)

こんにちは!

最近物理の勉強をしているのでメモ用に。

空気抵抗の計算はしていないので、各自でお願いします。

まずは最高点に達したときの座標を求めたいと思います。

まず、上空に投げ上げたときの最高点は、

下にかかる力がちょうど0になったときですね!

まずは公式を思い出しましょう!

v = v0-gt
速度 = 初速 - (重力加速度 * 時間)

なので、v = 0を代入して、計算すると、

t = v0 /g
時間 = 初速 / 重力加速度

になりますね!

では、Unityで確認してみましょう

public class Test : MonoBehaviour {

	public Vector3 vec;
	private Rigidbody rigid;

	void Start ()
	{
		rigid = GetComponent<Rigidbody>();
	}
	
	void Update ()
	{
		if (Input.GetKeyDown(KeyCode.Space))
		{
			rigid.velocity = vec;
			var topTime = vec.y / (-Physics.gravity.y);
			StartCoroutine(WaitBreak(topTime));

			Debug.Log(topTime.ToString("F2") + "秒後に最高点に達します");
		}
	}

	private IEnumerator WaitBreak(float _waitTime)
	{
		yield return new WaitForSeconds(_waitTime);
		Debug.Break();
	}
}

スペースキーで初速Vecに飛ばして、指定の時間に止めるようにしました。

f:id:LightGive:20161109123236g:plain

無事、最高地点で止まりましたね!

こんな感じで高校等で習った物理はUnityでも使うことができます!

ぜひいろいろ試してください。

次は、最高点の座標を求めてみましょう

では(^^)/