如何创建一个“拦截导弹”的游戏?(How to create an “intercept missi

2019-07-31 02:10发布

我有一个游戏,我对工作中已寻的导弹。 目前,他们只是把对他们的目标,这会产生一个相当愚蠢的寻找结果,大约有以下目标的所有导弹。

我想创建的导弹将瞄准更致命的气息,其中目标“将是”通过它到达那里,我变得有点卡住,困惑如何做到这一点的时间。

我猜我需要(反正猜测)到哪里工作我的目标将是在未来的某个时候,但我不能让我提前周围多远看头。 它需要基于导弹多远是远离目标,但目标也动人。

我的导弹具有恒定的推力,以把微弱的能力相结合。 希望是,他们将是快速和令人兴奋的,但避开像牛(即严重,对于非搭车球迷在那里)。

总之,似乎是一种有趣的问题的堆栈溢出来帮我解决,所以任何想法或建议,更好的或“更有趣”导弹都会受到欢迎。

接下来将是AI的躲着他们。

Answer 1:

什么你的建议被称为“指令制导”,但还有一个更简单,更好的方法。

的方式,真正的导弹通常这样做(不是所有的都是一样)使用一种称为比例导航系统。 这意味着导弹导弹之间的“转向”,在同一方向线的视线的(LOS)和目标转弯,在转弯速率的“比例”的LOS率......这对你是什么要求当洛率为零,你是在碰撞过程。

您可以通过只从一秒到下一个比较misile与目标之间的线的斜率计算LOS率。 如果斜率没有改变,你是在碰撞过程。 如果它是变化的,计算的变化,并通过一定比例的角速率转动导弹...您可以使用代表导弹和目标位置的任何指标。

例如,如果使用为2的比例常数,并且被LOS向右移动在2度/秒,转动导弹向右在4度/秒。 LOS向左在6度/秒,导弹向左在12度/秒...

在3-d的问题是,除了“在LOS变化率”,(和由此产生的导弹转弯速率)相同本身是一个载体,即,它不仅是一个数量级,但方向(做我左转导弹,右或向上或以上水平的向下或30度到右侧,等等?? ...试想一下,作为一个导弹试验,在那里你会“中设置的翅膀”以应用提升...

雷达制导导弹,其中“知道”闭合速率。 调整基于闭合比例常数,使导弹将在高封闭场景在低闭合转动更积极地,(当的飞行时间是低级),和较不积极地(在封闭更高导弹试图转动更快) (尾追逐)时,它需要保存能量。 其他导弹(如响尾蛇),不知道封闭,使用恒定的预先确定的比例值)。 FWIW,越战时期的AIM-9响尾蛇导弹使用的4比例常数。



Answer 2:

我用这个CodeProject上的文章之前 - 它有一些非常好的动画讲解数学。

“定位和模拟一个导弹的数学:从积分到四次式”: http://www.codeproject.com/KB/recipes/Missile_Guidance_System.aspx

(另外,隐藏在该文章的底部的评论是到参考一些C ++代码,完成相同的任务从虚幻维基)



Answer 3:

看看OpenSteer 。 它有代码来解决这样的问题。 看看“steerForSeek”或“steerForPursuit”。



Answer 4:

你有没有考虑负反馈对近期轴承随时间变化的变化?

详细留作练习。

这些建议完全是严重的:如果目标不操纵这应该获得接近最优的拦截。 它应该收敛,即使目标积极回避。

需要更详细?

求解为便于符号的二维空间。 采取\vec{m}是导弹和矢量的位置\vec{t}为目标的位置。 当前航向在运动对上次单元的方向: \vec{h} = \bar{\vec{m}_i - \vec{m}_i-1}} 令R为导弹和靶之间的normlized矢量: \vec{r} = \bar{\vec{t} - \vec{m}} 。 轴承是b = \vec{r} \dot \vec{h}计算在每个时间刻度的轴承,以及它们,并改变标题,以尽量减少量的变化。

数学是因为需要找到行动的飞机在每一步的3D鹞,但过程是相同的。



Answer 5:

你要插值目标和导弹作为时间的函数两者的轨迹。 然后寻找其中的物体的坐标是一些可接受误差范围内的时间。



文章来源: How to create an “intercept missile” for a game?