【Unity】斜方投射シミュレーション

Unityでボールの斜方投射シミュレーションを行う方法についてソースコード付きでまとめました。

斜方投射シミュレーション

今回は斜方投射シミュレーションを作成します。

実行結果

完成版プロジェクト:ObliqueProjection.zip

ソースコード

サンプルプログラムのソースコードです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BallShooter : MonoBehaviour {
    // textオブジェクト参照用
    GameObject textObject;

    // Textコンポーネント参照用
    Text scoreText;

    void Start () {
        // 初速, 角度
        float INIT_SPEED = 20f;
        float INIT_DEGREE = 60f;

        // Rigidbodyコンポーネントへの参照を取得
        Rigidbody rb = gameObject.GetComponent();

        // 初速を与える
        Vector3 vel = Vector3.zero;
        vel.y = INIT_SPEED;
        
        vel.x = INIT_SPEED*Mathf.Cos(INIT_DEGREE*Mathf.PI/180f);
        vel.y = INIT_SPEED*Mathf.Sin(INIT_DEGREE*Mathf.PI/180f);
        rb.velocity = vel;

        // Textオブジェクトの参照
        textObject = GameObject.Find("Text");

        // Textオブジェクトのコンポーネントを参照
        scoreText = textObject.GetComponent();
    }

    void FixedUpdate(){
        scoreText.text = "X:" + gameObject.transform.position.x.ToString();
    }

    void Update () {
        
    }
}

Unityのシミュレーションだと落下地点までの距離は35くらいでした。
下記のサイトで初速度20、射出角度60[deg]で放物運動の計算式を実際に解くと、落下地点までの距離は「35.32400580359」となり大体あっていました。
https://keisan.casio.jp/exec/system/1204505751

関連記事
参考 【Unity入門】ゲームプログラミング編【Unity入門】物理シミュレーション編【C#入門】サンプル集
関連記事