【发布时间】:2013-05-14 03:11:27
【问题描述】:
我想在 unity3D 中制作地对空导弹系统,它可以预测时间 't' 后的来袭导弹位置,并在 3D 坐标中设置其拦截导弹的角度和位置,以便它可以击中来袭导弹。我正在使用以下函数来预测来袭导弹。
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;
}
}
我正在使用线渲染器来获得视觉轨迹显示。 现在我只能在几个位置击中导弹,这意味着我:P 必须手动调整。我的 SAM 导弹系统正确设置了它的角度,但它无法设置准确的时间和速度,因此它可以击中导弹。
【问题讨论】:
标签: c# unity3d physics game-engine game-physics