繁体   English   中英

改变瓷砖的zPosition

[英]change zPosition of tiles

我想更改我的地图中某些地图的zPosition。 我使用以下功能来实现此目的:

 static func setZPosition(to tileMap: SKTileMapNode, and tileInfo: String){

    let tileSize = tileMap.tileSize
    let halfWidth = CGFloat(tileMap.numberOfColumns) / 2 * tileSize.width
    let halfHeight = CGFloat(tileMap.numberOfRows) / 2 * tileSize.height

    for column in 0..<tileMap.numberOfColumns{
        for row in 0..<tileMap.numberOfRows{
            let tileDefinition = tileMap.tileDefinition(atColumn: column, row: row)
            let isCorrectTile = tileDefinition?.userData?[tileInfo] as? Bool
            if isCorrectTile ?? false{
                let x = CGFloat(column) * tileSize.width - halfWidth
                let y = CGFloat(row) * tileSize.height - halfHeight
                let rect = CGRect(x: 0, y: 0, width: tileSize.width, height: tileSize.height)
                let tileNode = SKShapeNode(rect: rect)
                tileNode.position = CGPoint(x: x, y: y)
                tileNode.zPosition = 100
                tileMap.addChild(tileNode)
                print(tileNode.zPosition)
            }
        }
    }
}

当我使用此功能时,打印状态会显示5次“ 100”。 这是正确的,因为我想更改userData名称为“ Z”的5个图块的zPosition,并将其用作tileInfo参数。 播放器精灵的ZPosition为10。但是,如果我现在与播放器一起走过具有zPosition 100的图块,则播放器仍在图块上方。 我希望他在瓷砖后面。 我在这里做错了什么?

定义中没有允许zPosition更改的内容(这是有道理的,因为其想法是尽可能快地绘制图块)

我建议您在其上放置另一个图块集,或者弹出一些单独的精灵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM