首先来看实现效果:

Unity实现2D的抛物线轨迹预测效果_unity

做的时候距离现在有好几个月了 关键代码只有几行

//生成轨迹点 且轨迹点随着距离越来越小 这里的轨迹点就是gif图里的紫色轨迹
private void PrepareDots()
{
    dotsList = new Transform[dotsNumber];
    dotPrefab.transform.localScale = Vector3.one * dotMaxScale;

    float scale = dotMaxScale;
    float scaleFactor = scale / dotsNumber;
    for (var i = 0; i < dotsNumber; ++i)
    {
        dotsList[i] = Instantiate(dotPrefab, null).transform;
        dotsList[i].parent = dotsParent.transform;
        dotsList[i].localScale = Vector3.one * scale;
        if (scale > dotMinScale)
            scale -= scaleFactor;
    }
}
//根据物体拖动的位置和力 来确定轨迹点的位置
//第一个参数是物体当前的位置
//第二个参数是鼠标给予物体施加的带方向的力
 public void UpdateDots(Vector3 ballPos, Vector2 forceApplied)
    {
        timeStamp = dotSpacing;//dotspacing 相邻轨迹点之间的距离
        for (var i = 0; i < dotsNumber; ++i)
        {
            pos.x = (ballPos.x + forceApplied.x * timeStamp);
            pos.y = (ballPos.y + forceApplied.y * timeStamp) - (Physics2D.gravity.magnitude * timeStamp * timeStamp) / 2f;
            dotsList[i].position = pos;//在for循环里形成类似于抛物线的轨迹
            timeStamp += dotSpacing;//timeStamp 时间
        }
    }

关于这一行代码的解释:其实可以看作物理上的平抛运动(应该是⊙▽⊙)

Unity实现2D的抛物线轨迹预测效果_unity_02

喜欢用unity做游戏开发的朋友可以看看