如何为游戏制作"拦截导弹"?

Rik*_*ood 13 physics trigonometry

我有一个我正在研究的游戏中有导弹的导弹.此刻他们只是转向他们的目标,这会产生一个相当愚蠢的结果,所有的导弹跟随目标.

我想创造一种更致命的导弹风格,它将瞄准目标"将会到达那里"的位置,我对如何做到这一点感到有些困惑和困惑.

我猜我将需要在未来的某个时刻确定我的目标(无论如何都是猜测),但我无法理解未来的发展方向.它需要基于导弹远离目标的距离,但目标也在移动.

我的导弹具有持续的推力,同时具有较弱的转向能力.希望是他们会快速而令人兴奋,但是像牛一样操纵(即,对于非HitchHiker球迷来说非常糟糕).

无论如何,Stack Overflow似乎是一个有趣的问题,可以帮助我解决,所以任何关于更好或"更有趣"的导弹的想法或建议都会感激不尽.

接下来将是AI躲避他们......

Cha*_*ana 20

你所建议的是"命令指导",但有一种更简单,更好的方法.

真正的导弹通常这样做的方式(并非所有都是相同的)是使用称为比例导航的系统.这意味着导弹在与导弹和目标之间的视线(LOS)相同的方向上"转向",转弯速率与LOS速率"成比例"...这将做你所做的要求当LOS率为零时,你正处于碰撞过程中.

您可以通过比较一秒钟与下一秒钟之间的误导线和目标线之间的斜率来计算LOS率.如果斜率没有变化,那么你就处于碰撞过程中.如果它正在改变,计算变化并按比例角速率转动导弹......你可以使用任何代表导弹和目标位置的指标.

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

在三维问题是相同的,除了"LOS率的变化",(和导致的导弹转弯率)本身就是一个向量,即,它不仅有一个幅度,而且还有一个方向(我是否将导弹向左,向右或向左转)向上或向下或在水平向右上方30度等等......想象一下,作为一名导弹飞行员,你可以"设置机翼"来应用升力......

雷达制导导弹,"知道"关闭率.根据闭合调整比例常数(闭合越高,导弹试图转动的速度越快),以便导弹在高闭合情况下(当飞行时间较短时)转向更积极,而在低闭合时则不那么积极(尾巴追逐)它需要节约能源.其他导弹(如Sidewinders),不知道闭合,使用恒定的预定比例值).FWIW,越南时代AIM-9侧卧使用的比例常数为4.

  • 给出我即将输入的答案的+1.随意读者摘要:如果目标方位向左移动,则向左转.如果它向右漂移,向右转.如果它处于一个恒定的方位(除了直接在你身后),你就是在拦截课程中.旁注:当您尝试合并时,这也适用于高速公路上的入口坡道.如果你看到一辆恒定的汽车在你的视野中越来越大,你需要做出改变.... (4认同)

ine*_*ine 15

我之前使用过这个CodeProject文章 - 它有一些非常好的动画来解释数学.

"瞄准和模拟导弹的数学:从微积分到四次方程式":http: //www.codeproject.com/KB/recipes/Missile_Guidance_System.aspx

(另外,隐藏在该文章底部的注释中的是对某些C++代码的引用,这些代码完成了Unreal wiki中的相同任务)


ASh*_*lly 5

看看OpenSteer.它有代码来解决这样的问题.看看'steerForSeek'或'steerForPursuit'.