NavigationMeshGraph 0.0.3

NavigationMeshGraph 0.0.3

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布日期最新发布2015年8月
SPM支持 SPM

维护者:Christopher Luu



  • Christopher Luu

NavigationMeshGraph

The pathfinding in action A visual representation of the node connections

NavigationMeshGraph 是一种基于定义由 凸多边形 描述的导航网格进行路径查找的 GKGraph。与 GKObstacleGraph 不同,此图导航使得路径保持在由给定多边形定义的网格上。

特性

  • 使用 GameplayKit 进行路径查找,以确保用户保持在凸多边形网格内
  • 允许您将节点连接到网格,并找到导航网格上的最近点

要求

  • iOS 9.0+ / Mac OS X 10.11+
  • Xcode 7

使用方法

创建一个 NavigationMeshPolygon 对象数组,并用它们初始化一个 NavigationMeshGraph

let graph = NavigationMeshGraph(polygons: polygons)

这将遍历多边形,并根据多边形的顶点、它们的质心和边的中点创建一个使用 GKGraphNode2D 的图。然后您可以连接两个节点以找到它们之间的路径,如下所示

let startNode = GKGraphNode2D(point: float2(startPosition))
let endNode = GKGraphNode2D(point: float2(endPosition))

graph.connectNodeToClosestPointOnNavigationMesh(startNode)
graph.connectNodeToClosestPointOnNavigationMesh(endNode)

请注意对 connectNodeToClosestPointOnNavigationMesh 方法的使用,该方法根据导航网格进行节点连接。如果您指定一个不在网格中的节点,它将计算到网格最近点的距离并将节点移动到那里,然后再将其连接到邻居。一旦节点连接,就可以像预期的那样找到路径

let path = graph.findPathFromNode(startNode, toNode: endNode)

查看示例项目以查看图的实际工作情况。在示例中,我使用了 Physics Body Editor 来创建组成导航网格的一组凸多边形。

待办事项

节点创建远非完美,并且可能需要探讨其他自动网格创建技术,例如 Delauney 三角化方法。