【问题标题】:AI : fire on moving objectAI:对移动物体开火
【发布时间】:2017-06-12 09:38:52
【问题描述】:

我尝试用 C#(统一)制作一个 AI,它可以预测移动物体的估计位置并用子弹击中它 运动物体的运动速度为5f,子弹的运动速度为7f

我的问题是,当我的子弹到达我估计的位置时,我的“敌人”已经移动得更远了,子弹没有击中

你知道我可以采用什么公式或代码来改进我的定位 AI 吗? (已经在谷歌中寻找,但没有找到任何有用的东西)

谢谢

【问题讨论】:

    标签: c# artificial-intelligence extrapolation


    【解决方案1】:

    An answer to your question from unreal engine forums

    这是链接失效的最佳答案。这段代码不是我写的,我只是通过快速谷歌搜索你说你已经尝试过的问题找到了它。

    链接答案:

    获取目标玩家的“速度”。乘以子弹到达目标所需的时间。然后得到目标的位置,加上速度*时间向量,这就是你应该瞄准的位置。您可以对行程时间进行硬编码(半秒或其他任何时间),也可以反过来测量 AI 和玩家之间的距离,然后除以子弹行程时间,得出大致的行程时间。您还可以应用微分方程来计算确切的撞击时间和确切的方向,但这需要更多的数学运算,并且写起来稍微困难,所以我认为上述方法最适合您。

    简单地说:

    Distance = Length(Target_Position - Firing_Position)
    Time = Distance / Bullet_Speed
    Predicted_Position = Target_Position + (Target_Velocity * Time)
    

    【讨论】:

    • 这是我已经做的,但子弹所花费的时间增加了距离(或减少)。为了更精确的瞄准,我需要制作微分方程(从未使用过)?
    • 我对你的意思感到困惑。上面的公式考虑了子弹的速度。是因为你的子弹实际上是在加速还是减速?
    • 如果子弹移动得非常快,这个公式效果很好,但如果(就像我的情况)时间很长,距离变化超过我的子弹大小(感谢快速回答)
    • 如果没有办法更精确地估计,我可以做一个循环来减少错误,但是有更好的方法来解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多