GKGraph

来源:互联网 发布:三剑客软件下载 编辑:程序博客网 时间:2024/06/03 10:03

GKGraph

一个节点集合,节点中包含导航信息,寻路方法。

概括

Graph中每一个节点都代表了一个角色或其他对象所占据的位置,相邻节点之间的连线代表了一个游戏实体能够从一个地方去往另一个地方的路径。使用GKGraph类创建一个通用的graph,也可以使用GKGridGraph或GKObstacleGraph或GKMeshGraph子类创建专门的,在游戏世界中包含更多几何信息的graph。

每组graph和node类可以产生不同类型空间的graph。

• 基类GKGraph和GKGraphNode包含对所有graph和node的基本功能,你可以将这些类使用在此类构建的没有几何信息的graph中,这个适用于那些空间位置的连接相较于物理位置更重要的游戏,比如棋盘游戏。

• 使用GKGridGraph和GKGridGraphNode类适用于那些在网格中进行移动的游戏,比如策略类游戏。

• 使用GKObstacleGraph或者GKMeshGraph类适用于那些在2D游戏中,能在广阔领域移动,但是有障碍物(GKPolygonObstacle对象)的游戏。障碍物graph自动生成拥有2D坐标信息的node(GKGraphNode2D对象),当然你也可以自行添加这些代表位置的node到游戏中。

通过这个类创建的graph模块总是有指向的,也就是两个node的连接会在通过时有一个方向。为了能够在穿越两个node间的连线时选择其方向,你需要在每个方向上建立一个联系。你可以使用connectNodeToLowestCostNode:bidirectional:(用于graph)或addConnection:bidirectional: (用于node)来立刻选择方向。

使用一个graph寻路通常需要三个主要步骤:

1.创建一个包含信息的静态全局单例graph(比如在游戏加载时创建)。

2.当你需要一个点与点之间的路线,将在graph中点上的node临时连接起来。使用connectNodeToLowestCostNode:bidirectional: 方法用node的几何信息连接起来,也可以使用connectNodeUsingObstacles: 或connectNodeToAdjacentNodes: 方法用障碍物和网格graph的额外约束。

3.调用findPathFromNode:toNode: 方法在graph中寻找到一条路径。这个方法返回一个包含graph node的数组,以开始点为起点,然后连接数组中的相邻点直到抵达终点。使用每个node中的几何信息来利用这条路径,比方说在SpriteKit中你可能会用一个sequence的移动动作来通过这条路径。

4.通常在一条路径被确定之后,之前临时连接起来的node几乎没有任何用处了,此时会删除这些node以方便未来进行新路径的搜索。

Topics

创建一个Graph(Creating a Graph)

- initWithNodes:

创建指定node数组的graph。

+ graphWithNodes:

创建指定node数组的graph。

Node在Graph中的相关方法(Working with Nodes in a Graph)

- addNodes:

添加指定的node到graph中。

- connectNodeToLowestCostNode:bidirectional:

将一个node添加到graph中,将其连接到graph中已经连接的最低成本的node

- removeNodes:

从graph中删除指定的node。

nodes

graph中的node数组。

使用Graph进行寻路(Pathfinding with a Graph)

- findPathFromNode:toNode:

找到一条两个指定node之间最短的路径序列。

关系

继承

NSObject

默认遵守

NSCoding, NSCopying