내 타일 맵에서 일부 타일의 z 위치를 변경하고 싶습니다. 나는 이것을 달성하기 위해 다음과 같은 기능을 사용 :이 기능을 사용하면타일의 z 위치 변경
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)
}
}
}
}
는, 인쇄 statetement 나에게 5 회 "100"을 보여줍니다. 이것은 타일 인포 파라미터로 사용하는 userData 이름 "Z"로 5 개의 타일의 z 위치를 변경하고자하기 때문에 정확합니다. 플레이어 스프라이트의 ZPosition은 10입니다.하지만 플레이어가 zPosition 100이있는 타일 위로 걸어 가면 플레이어는 여전히 타일 위에 있습니다. 나는 그가 그 타일 뒤에 있기를 바란다. 내가 여기서 뭐하고 있는거야?
나는 다른 타일 세트 오버레이에게 그것을 가지고 추천 또는 개별 것 (아이디어는 가능한 한 빨리 타일을 그릴 수 있기 때문에 의미가 것이다) zPosition 변경을 허용 정의에 아무것도
zPosition을 변경하지 않고 새 타일을 만들고이를 타일 맵에 배치하는 것은 의도 된 것입니까? – Knight0fDragon
방금 Apple Docs를 훑어 보았습니다. 타일의 z 위치를 변경할 수 있다고 생각하지 않습니다. 타일 정의에 아무것도 보이지 않습니다. 그래서 당신이 원래 타일 위에 새로운 타일을 배치하기 위해 SKShapeNode를 사용하는 것처럼 보이지만, SKShapeNode에 대한 색상을 결코 지정하지 않으므로 투명성이 가장 높습니다. – Knight0fDragon
오, 고마워요. 왜 이것이 작동하지 않는지 보겠습니다. 타일 대신 SpriteNodes를 사용해야합니다. 도움에 감사드립니다! – Marcel