Tag: 游戏套件游戏 套件

GKGraph使用GKGraphNode2D-Subclassed节点错误地计算path

我开始调查这个问题,在iOS 9.2 SDK中部分解决了这个问题 。 然而,经过进一步的调查,我意识到这个框架还没有按预期工作。 总之, GKGraph可以用节点( GKGraphNode及其子类)构造,在这些节点之间可以计算寻路成本和path。 一个GKGraphNode2D就是一个简单的GKGraphNode ,它坐落在一个二维网格中并将其坐标封装起来。 GKGraphNode可以被子类化,并且方法costToNode(_:)和estimatedCostToNode(_:)可以被覆盖以在节点之间提供成本。 一旦这些自定义节点添加到图中,图应该使用这些方法来确定连接节点之间的最低成本path。 我正在构build节点,我将称之为GeometricNode ,其中节点之间的代价仅仅是两个节点之间的距离(在二维坐标空间中)。 节点连接到二维空间的所有邻居,包括他们的对angular邻居。 即,在特定节点的左侧和右侧上方,下方的相邻节点距离为1 ,而对angular相邻节点为距离sqrt(2) ~ 1.414 。 这些成本是在重写的方法costToNode(_:)和estimatedCostToNode(_:) 。 不幸的是,即使这些连接设置恰当,并且成本也得到了适当的计算, GKGraph并不总是在调用findPathFromNode(_:toNode:)时计算正确的path。 代码( 示例项目 ) @import UIKit; @import Foundation; @import GameplayKit; @interface GeometricNode : GKGraphNode2D @end @implementation GeometricNode – (float)estimatedCostToNode:(GKGraphNode *)node { NSAssert(([node isKindOfClass:[GeometricNode class]]), @"Must Use GeometricNode"); return [self geometricDistanceToNode:(GeometricNode *)node]; } […]