unity3D 两点抛物线模拟炮弹

把这个脚本挂在物体上就行,指定两个点(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);
    }
}

你可能感兴趣的:(unity3d)