使用GameplayKit在Tilemap上寻路

Lir*_*irf 0 path-finding sprite-kit tiled swift sktilemapnode

我正在使用SKTilemapNode。如何在GameplayKit中正确使用寻路?

一些信息:墙壁都是瓷砖,没有瓷砖是“路”

Ram*_*uri 5

这就是我使用其中一个切片图的内容实现GKGridGraph的方式:

    let graph = GKGridGraph(fromGridStartingAt: vector_int2(0,0), width: Int32(tileMap.numberOfColumns), height: Int32(tileMap.numberOfColumns), diagonalsAllowed: false)

    var obstacles = [GKGridGraphNode]()

    for column in 0..<tileMap.numberOfColumns
    {
        for row in 0..<tileMap.numberOfRows
        {
            let position = tileMap.centerOfTile(atColumn: column, row: row)

            guard let definition = tileMap.tileDefinition(atColumn: column, row: row) else { continue }

            guard let userData = definition.userData else { continue }
            guard let isObstacle = userData["isObstacle"] else { continue }

            if isObstacle
            {
                let wallNode = graph.node(atGridPosition: vector_int2(Int32(column),Int32(row)))!
                obstacles.append(wallNode)
            }
        }
    }

    graph.remove(obstacles)
Run Code Online (Sandbox Code Playgroud)

我必须在障碍图块的userData字段中设置isObstacle属性:

在此处输入图片说明

这样一来,您将获得没有网格的结果网格图。