unity3D 兩點拋物線模擬炮彈

zsdeus133發表於2018-06-02

把這個指令碼掛在物體上就行,指定兩個點(A、B)

using UnityEngine;
using System.Collections;

public class TestSpeed : MonoBehaviour
{
    public float time = 3;          // 代表從A點出發到B經過的時長
    public Transform pointA;        // 點A
    public Transform pointB;        // 點B
    public float g = -10;           // 重力加速度

    private Vector3 speed;          // 初速度向量
    private Vector3 Gravity;        // 重力向量


    private float dTime = 0;        // 時間線 (一直在增長)

    void Start()
    {
        // 將物體置於A點
        transform.position = pointA.position;

        // 通過一個式子計算初速度
        speed = new Vector3(
            (pointB.position.x - pointA.position.x) / time,
            (pointB.position.y - pointA.position.y) / time - 0.5f * g * time, 
            (pointB.position.z - pointA.position.z) / time);

        // 重力初始速度為0
        Gravity = Vector3.zero;
    }

    void Update()
    {
        // 重力模擬
        Gravity.y = g * (dTime += Time.deltaTime);  //v=gt
        // 模擬位移
        transform.Translate(speed * Time.deltaTime);
        transform.Translate(Gravity * Time.deltaTime);
    }
}

相關文章