Unityでボールの鉛直投射シミュレーションを行う方法について入門者向けにまとめました。
[latexpage]
鉛直投射シミュレーション
今回は鉛直投射シミュレーションを作成します。
実行結果
完成版プロジェクト:VerticalProjection.zip
ソースコード
サンプルプログラムのソースコードです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class BallShooter : MonoBehaviour {
float yMax = 0; // DistanceTextオブジェクトへの参照
// textオブジェクト参照用
GameObject textObject;
// Textコンポーネント参照用
Text scoreText;
void Start () {
// 初速
float INIT_SPEED = 20f;
// Rigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent();
// 初速を与える
Vector3 vel = Vector3.zero;
vel.y = INIT_SPEED;
rb.velocity = vel;
// Textオブジェクトの参照
textObject = GameObject.Find("Text");
// Textオブジェクトのコンポーネントを参照
scoreText = textObject.GetComponent();
}
void FixedUpdate(){
// 高さの最大値を更新
if(gameObject.transform.position.y > yMax){
yMax = gameObject.transform.position.y;
}
// 高さの最大値をTextオブジェクトに表示
scoreText.text = "Max:" + yMax.ToString();
}
void Update () {
}
}
Rigidbodyコンポーネントのvelocityメソッドでボールに初速度を与えています。
今回は初速度「20」を与えて鉛直投射すると最大高さは20.6となりました。
実際に手計算してると
\begin{eqnarray}
h = \frac{v_0^2}{2g}=\frac{20\times 20}{2\times 9.8}=20.4
\end{eqnarray}
となり、だいたい正しくシミュレーションできていることがわかります。
関連ページ

【Unity入門】ゲームプログラミング
Unityでゲームを作る方法をサンプルプログラム付きで入門者向けにまとめました。

C#入門速報

【Unity入門】物理シミュレーション編
Unityで物理シミュレーションする方法をサンプルプログラム付きで入門者向けにまとめました。
コメント