Answers:
据我所知,您可以看一下D *算法,它代表“动态A *”。该算法用于计算动态环境下的寻路,此处具有移动目标。
这是一篇使用D *进行移动目标路径查找的论文:Moving Target D * Lite
您可以使用“狗曲线”方法,狗在追捕某人时显然会使用它。他们计算出影响点在“将来”的位置,并直接指向该位置。
一个简单的近似方法可能是:
A = NPC
B =目标
T =到达B:s位置的时间(B:s初始位置)
计算B在“ T”时间内的位置(如果B以相同的速度/角度继续行驶),然后转到那里。
随着距离的变化,这并不是一种完美的方法,但是比做出完美的解决方案要简单得多,并且比尝试达到“ B”要好得多。
动态路径查找的一种方法是让实体预测目标要去的位置并到达那里。
一种实现方法是使用泰勒级数。
我将目标随时间的路径称为函数S(t),其中S是位置,t是当前时间,路径的近似值是A(f),f是未来的日期,近似值。
那么最简单最愚蠢的近似是A(f)= 0。
下一个最简单的是A(f)= S(t),其中t是当前时间,f是未来时间。这是在预测目标只是停在原地。
最简单的第三种是A(f)= S'(t)* f + S(t),其中S'是S相对于时间的导数。这预示着目标将以恒定的速度继续前进而不会加速。
第四个最简单的是A(f)= S''(t)* f ^ 2/2 + S'(t)* f + S(t)。这可以预测目标像落球一样以恒定的速度加速。
我知道这可以用时间变化来改写,这对于游戏来说可能更方便。现在S可以是任何东西。它可以是X坐标,可以是Y坐标,可以是对象之间的距离,也可以是角度。另外,还有可能更好的方法来预测对象的未来路径,因此我会四处看看。
如果地形是相当开放的,并且目标距离追踪器不太远,则可以使用拦截转向行为。本质上,您可以利用目标的位置和速度来计算目标前方的距离,该位置不要太远,也不要太近,然后将追随者引向该点(每隔一定的时间间隔计算一次)。