在Unity3D中击中来袭的导弹(简单的弹道导弹)

3

我想在unity3D中制作地空导弹系统,能够预测未来时间点't'内来袭导弹的位置,并设置拦截导弹的角度和三维坐标位置,以确保能击中来袭导弹。我正在使用以下函数来获取来袭导弹的预测信息。

    void UpdateTrajectory(Vector3 initialPosition, Vector3 initialVelocity, Vector3 gravity)
{
    int numSteps = 500; 
    float timeDelta = 1.0f / initialVelocity.magnitude; 

    LineRenderer lineRenderer = GetComponent<LineRenderer>();
    lineRenderer.SetVertexCount(numSteps);

    Vector3 position = initialPosition;
    Vector3 velocity = initialVelocity;
    for (int i = 0; i < numSteps; ++i)
    {
        lineRenderer.SetPosition(i, position);


        position += velocity * timeDelta + 0.5f * gravity * timeDelta * timeDelta;
        velocity += gravity * timeDelta;
    }
}

我正在使用线渲染器来获得可视的弹道显示。现在,我只能在几个位置上命中导弹,也就是说我必须手动调整。我的SAM导弹系统可以正确设置角度,但无法确定精确的时间和速度以便击中导弹。

1个回答

2

这个方法看起来很有趣,但由于性能问题我无法使用它。我想使用物理学,因为它只需要很少的迭代。 - Zeeshan Anjum
你需要O(1),曲线拟合对于所有数据来说就像是O(N),但如果你只使用最新的20-30个点,那么对于大量的点来说就像是O(1),但是这将消耗大量的内存和内存带宽。也许只用最后5个点?同时最多可以发射多少枚导弹? - huseyin tugrul buyukisik
现在我只是一次测试单个导弹。稍后我会添加几个。我可以轻松地在时间间隔(比如3秒)后得到预测的来袭导弹位置。但是我不知道在重力加速度为-9.81的情况下,以哪个角度和哪个初始速度才能击中那个来袭的导弹! - Zeeshan Anjum
至少有一个维度存在加速度,因此您需要对该维度进行外推,或者您可以随机化角度,以便一部分导弹击中目标 :) - huseyin tugrul buyukisik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接