Добрый день, подскажите пожалуйста, может кто делал такое, как правильно менять zPosition персонажа на карте? Если делать перебор каждой клетки карты, то получается, что мы проходим по всем клеткам и выставляем zPosition нашего персонажа по последней. На видео видно что с нижней клеткой все нормально но верхняя перекрывает персонажа, так как координаты считаются по нижней клетке.
Видеоoverride func didMove(to view: SKView) {
self.stone = self.childNode(withName: "//stone") as! SKTileMapNode
self.player = self.childNode(withName: "//player") as! SKSpriteNode
}
override func update(_ currentTime: TimeInterval) {
var position = self.player.position
position.y -= 32
for column in 0..<self.stone.numberOfColumns {
for row in 0..<self.stone.numberOfRows {
let definition = self.stone.tileDefinition(atColumn: column, row: row)
guard let _ = definition?.userData?.value(forKey: "edge") else {
continue
}
let bounds = self.stone.centerOfTile(atColumn: column, row: row)
self.player.zPosition = 0
if position.y <= bounds.y {
self.player.zPosition = 1
}
}
}
}