我已经阅读了文档但仍然对它们感到困惑,任何人都可以给我一个清楚的解释,例如图像比较?谢谢。
1 回答
维基百科关于寻路的文章可能会有所帮助,从那里链接的关于图形和图形搜索算法的相关主题也可能会有所帮助。除此之外,这里是一个快速解释器的尝试。
节点是某人可以去的地方,它们与其他节点的连接定义了某人可以在不同地方之间旅行。一组(连接的)节点一起形成了一个图。
GKGraphNode
是最通用的节点形式——这些节点不知道它们在空间中的位置,只知道它们与其他节点的连接。(不过,这对于基本的寻路来说已经足够了……如果您有一个图,其中 A 连接到 B,B 连接到 C,那么从 A 到 C 的路径会通过 B,无论这些节点位于何处,如下所示。)
GKGraph
是节点的集合,并提供将图形作为一个整体工作的函数,例如查找路径的重要函数。
GKGridGraphNode
并且GKGraphNode2D
是添加节点在空间中位置的知识的特殊版本GKGraphNode
- 整数网格空间(如棋盘)或开放的 2D 空间。添加此类信息后,GKGraph
包含此类节点的 a 可以在寻路时考虑距离。
例如,看看这张图片:
如果我们只是使用GKGraphNode
,我们所谈论的只是哪些节点连接到哪些节点。因此,如果我们要求从 A 到 D 的最短路径,我们可以得到ACD或ABD,因为无论哪种方式,它都是一定数量的连接。但是如果我们使用GKGridGraphNode
or GKGraphNode2D
,我们正在查看节点之间的线的长度,在这种情况下ACD是最短路径。
一旦您开始将节点定位在(某种坐标)空间中,它有助于能够在该空间中作为一个整体对图进行操作。这就是进来GKGridGraph
的地方。GKObstacleGraph
GKGridGraph
与GKGridGraphNode
s 一起工作,让您可以创建一个图形来填充一组维度(例如,一个 10x10 网格,允许对角线移动),而不是让您自己创建和连接一堆节点。GKObstacleGraph
通过让您将区域标记为不可通过的障碍物并自动管理节点和连接以绕过障碍物,为自由 2D 空间图添加了更多内容。