我目前正在使用 Xcode 8,使用 Swift 3 和来自 SpritKit 的新 SKTileMapNode 来制作 2D 地牢爬行类游戏。我无法让 GKObstacleGraph 与 tilemap 一起使用。请帮忙!我尝试遍历 tilemap 障碍层内的所有图块,并为每个图块创建一个多边形并将其存储在 GKObstacleGraph 中。障碍层中的每个瓦片都是一个墙瓦。这张地图看起来像是某种类型的地牢爬行者,所以到处都是墙。我有如下内容:
for row in 0..<tileMapNode.numberOfRows {
for column in 0..<tileMapNode.numberOfColumns {
let tile = tileMapNode.tileDefinition(atColumn: column, row: row)
let tileCenter = tileMapName.centerOfTile(atColumn: column, row: row)
//find 4 corners of each tile from its center
let bottomLeft = float2(CGPointMake(tileCenter.x - tile.size.width/2, tileCenter.y - tile.size.height/2))
let bottomRight = float2(CGPointMake((tileCenter.x - tile.size.width/2, tileCenter.y + tile.size.height/2))
let topRight = float2(CGPointMake((tileCenter.x + tile.size.width/2, tileCenter.y + tile.size.height/2))
let topLeft = float2(CGPointMake((tileCenter.x - tile.size.width/2, tileCenter.y + tile.size.height/2))
var vertices = [topLeft , bottomLeft , bottomRight , topRight ]
let obstacle = GKPolygonObstacle(points: &vertices, count: 4)
obstacleGraph.add(obstacle)
}
}
但是,当我运行该应用程序时,它显示有超过 80000 个节点,寻路路径太多了。任何帮助,将不胜感激。