swift - 防止 GKGridGraph 在寻路时崩溃

标签 swift sprite-kit gameplay-kit

在我的应用程序中,粉红色的心想要变成红色的心!但如你所见,路被堵住了。
我使用的代码是:

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:

最佳答案

你可以这样做:

    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
        }
    }

关于swift - 防止 GKGridGraph 在寻路时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52138165/

相关文章:

ios - 与 VPN 服务器协商失败(NEVPNProtocolIPSec、Swift 3.0.2)

ios - 当 Apple Music/Spotify 在后台播放时暂停的 Swift 背景音乐

ios - GameplayKit 中的 GKS 文件是什么?

swift - 我可以使用 swift 使 self.entity 成为组件中某些功能的非可选吗?

swift - 有没有办法对函数调用进行排队?

ios - Swift:工厂模式,子类方法不可见

ios - Sprite 套件/Swift 星星效果

ios - 将 SKScene 渲染到 SKTexture?

scenekit - 我可以将 GameplayKit 的寻路功能与 SceneKit 结合使用吗?

ios - 如何在 Swift 2.0 中将 [dispatch_block_t] 转换为 NSArray?