Answers:
我不能肯定地说WC3开发人员使用了哪种方法,但是它看起来很像分层注释A *。WC3Editor中定义的单位半径按原样用于3d模型缩放,但用于寻路的实际单位大小是离散的,可能类似于unitSize =(int)(unitRadius / 10)。这不是基于矢量的,这是肯定的。
假设有许多路径节点构成高分辨率节点网格。像食尸鬼这样的简单单位的大小为2,因此要将其放置在网格中的某个位置,我们需要4个彼此靠近的自由路径节点。死亡骑士的英雄稍大,大小为3,总共占据9条路径节点。现在,我们将2个ziggurats放在一起,在它们之间留出2个节点宽的空间,并在另一侧发送食尸鬼和死亡骑士。食尸鬼将能够在两条蛇形蜥蜴之间经过,而死亡骑士将不得不四处走动。如何确定?
为了查看节点是否可以容纳一个特定大小的单位,让我们为每个节点分配一个特殊的间隙值,以定义最大允许的单位大小。基本上,这意味着对一个节点进行了几次边界检查,并且最大可能的边界被记住为节点的间隙。因此,当我们要在某个节点上放置一个死亡骑士时,这就像将节点的间隙与死亡骑士的大小进行比较一样简单。当然,当有多个单元争夺节点时,事情将会变得更加复杂,但这是另一回事了。
有关更多详细信息,您可能需要查看这篇文章:
http://harablog.wordpress.com/2009/01/29/clearance-based-pathfinding/