Unity3D 两点抛物线模拟炮弹

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);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值