GKGraph GKGraphNode GKGridGraphNode,他们的关系是什么?

时间:2015-11-01 14:54:20

标签: sprite-kit gameplay-kit

我已阅读该文件,但仍然对它们感到困惑,任何人都可以给我一个清晰的解释,例如图像比较吗?感谢。

1 个答案:

答案 0 :(得分:2)

关于Pathfinding的维基百科文章可能有所帮助,关于图形和图形搜索算法的相关主题也可能有所帮助。除此之外,这是一个快速解释的尝试。

节点是某人所在的地方,他们与其他节点的连接定义了某人可以在不同地点之间旅行。一起(连接)节点的集合形成图形。

GKGraphNode是最常见的节点形式 - 这些节点不知道它们在空间中的位置,只知道它们与其他节点的连接。 (这对于基本寻路是足够的,但是......如果你有一个图表,其中A连接到B而B连接到C,则从A到C的路径通过B,无论这些节点位于何处,如下所示。)

enter image description here enter image description here

GKGraph是节点的集合,提供了整体图形的功能,如the important one for finding paths

GKGridGraphNodeGKGraphNode2DGKGraphNode的专用版本,可以添加节点在空间中的位置知识 - 整数网格空间(如棋盘)或开放的2D空间。一旦添加了这种类型的信息,包含这些类型节点的GKGraph可以在寻路时考虑距离。

例如,请看这张图片:

enter image description here

如果我们只是使用GKGraphNode,我们所讨论的是哪个节点连接到哪个节点。因此,如果我们要求从A到D的最短路径,我们可以获得 ACD ABD ,因为无论哪种方式,它都是一定数量的连接。但是如果我们使用GKGridGraphNodeGKGraphNode2D,我们会查看节点之间的行长度,在这种情况下, ACD 是最短的路径。

一旦开始在(某种坐标)空间中定位节点,就可以在该空间中作为整体在图形上进行操作。这就是GKGridGraphGKObstacleGraph进来的地方。

  • GKGridGraph适用于GKGridGraphNode s,可让您执行创建图形以填充一组维度(例如,10x10网格,允许对角线移动)等操作,而不是让您创建和连接你自己就是一堆节点。
  • GKObstacleGraph通过让您将区域标记为无法通过障碍物并自动管理节点和连接来绕过障碍物,为自由2D空间图增加了更多。

希望这会有所帮助。除了reference docsguide之外,Apple还有一个WWDC video来展示这些内容是如何运作的。