防止在寻路时GKGridGraph崩溃

时间:2018-09-02 14:56:05

标签: swift sprite-kit gameplay-kit

在我的App中,粉红色的心想要变成红色的!但正如您所见,道路被阻塞了。
我使用的代码是:

let solution = GridGraph.findPath(from: GridGraph.node(atGridPosition:int2(Int32(pinkHeart.positon.x),Int32(pinkHeart.positon.y)))!,to:GridGraph.node(a[enter image description here][1]tGridPosition:int2(Int32(redHeart.positon.x),Int32(redHeart.positon.y)))!) as! [GKGridGraphNode]

但是应用程序总是崩溃,因为没有办法!
如果我想找到一条从粉红色的心到黄色/绿色的路径,则该代码有效。
我尝试了多种方法来解决问题,但似乎无济于事...
例如:

do {
         let solution = try GridGraph.findPath(from:GridGraph.node(atGridPosition:int2(Int32(pinkHeart.positon.x),Int32(pinkHeart.positon.y)))!, to:GridGraph.node(atGridPosition: int2(Int32(redHeart.positon.x),Int32(redHeart.positon.y)))!) as! [GKGridGraphNode]
} catch {
         print("no path found")
}

if let solution = GridGraph.findPath(from:GridGraph.node(atGridPosition:int2(Int32(pinkHeart.positon.x),Int32(pinkHeart.positon.y)))!, to:GridGraph.node(atGridPosition: int2(Int32(redHeart.positon.x),Int32(redHeart.positon.y)))!) as! [GKGridGraphNode] {
    //Do something!
} 

我尝试了更多可能的解决方案,但始终崩溃...
谢谢您的帮助!
Thats the image:

1 个答案:

答案 0 :(得分:0)

您可以这样操作:

    var solutionPath: [GKGridGraphNode]? {
        let solution = GridGraph.findPath(from: OneNode, to: anotherNode) as! [GKGridGraphNode]
        if solution.isEmpty {
            print("There is no possible path!")
            return nil
        }
        else {
            return solution
        }
    }