Предотвращение сбоя GKGridGraph во время поиска пути - PullRequest
0 голосов
/ 02 сентября 2018

В моем приложении Розовое сердце хочет перейти к красному! Но, как вы видите, путь заблокирован.
Код, который я использую:

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

Я пробовал еще много возможных решений, но оно всегда давало сбой ...
Спасибо за вашу помощь!
То есть изображение:

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете сделать это следующим образом:

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