U_抛物线 3D

抛物线运动

抛物线公式:
https://baike.baidu.com/item/抛物线/3555564

理论抛物线计算演示:

public class 抛物线运动 : MonoBehaviour {
    public float p;

    void Update() {
        transform.localPosition = new Vector3(transform.localPosition.x, Parabola(transform.localPosition.z), transform.localPosition.z);
    }

    // y = 0.5f * (1 / p) * x ^ 2
    private float Parabola(float x) {
        return 0.5f * (1 / p) * Mathf.Pow(x, 2);
    }
}

抛物线实现预瞄:

public class BombLine : MonoBehaviour {
    public LineRenderer lineRenderer;
    private List<Vector3> points = new List<Vector3>();
    
    // 次数
    public int count = 50;
    // 重力
    public float g;
    // 时间
    public float tt = 0.1f;
    // 速度
    public float speed = 10;

    private void Start() {
        g = Physics.gravity.magnitude;
    }

    void Update() {
        points.Clear();
        points.Add(transform.position);
        
        for (var i = 0; i < count; i++) {
            var t = i * tt;
            var v0 = transform.forward * speed;
            var point = transform.position + v0 * t - 0.5f * Vector3.up * g * t * t;
            points.Add(point);  
        }

        lineRenderer.positionCount = points.Count;
        lineRenderer.SetPositions(points.ToArray());
    }
}

posted @ 2022-04-25 17:01  匿鱼  阅读(45)  评论(0)    收藏  举报