Ios SKTileDefinition法线纹理未在模拟器外部正确渲染
我目前正在用Spritekit制作一个游戏,努力想弄明白为什么在设备上渲染时,我的标准化纹理没有被正确应用,而在模拟器中它们似乎很好 以下是将普通纹理添加到平铺定义的代码,其中包括:Ios SKTileDefinition法线纹理未在模拟器外部正确渲染,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我目前正在用Spritekit制作一个游戏,努力想弄明白为什么在设备上渲染时,我的标准化纹理没有被正确应用,而在模拟器中它们似乎很好 以下是将普通纹理添加到平铺定义的代码,其中包括: self.wallTileMap = self.scene?.childNode(withName: "Walls") as? SKTileMapNode let textureAtlas = SKTextureAtlas(named: "Wall Normal Maps") if let
self.wallTileMap = self.scene?.childNode(withName: "Walls") as? SKTileMapNode
let textureAtlas = SKTextureAtlas(named: "Wall Normal Maps")
if let tileMap = self.wallTileMap {
let startingLocation:CGPoint = tileMap.position
let tileSize = tileMap.tileSize
let halfWidth = CGFloat(tileMap.numberOfColumns) / 2.0 * tileSize.width
let halfHeight = CGFloat(tileMap.numberOfRows) / 2.0 * tileSize.height
let rows = tileMap.numberOfRows
let columns = tileMap.numberOfColumns
for column in 0..<columns {
for row in 0..<rows {
let x = CGFloat(column) * tileSize.width - halfWidth + (tileSize.width / 2)
let y = CGFloat(row) * tileSize.height - halfHeight + (tileSize.height / 2)
if let tileDefinition = tileMap.tileDefinition(atColumn: column, row: row) {
if let name = tileDefinition.name {
let normalTexture = textureAtlas.textureNamed("\(name)_n")
tileDefinition.normalTextures = [normalTexture]
}
if (tileDefinition.userData?["shouldKill"] as? Bool ?? false) {
let newNode = SKShapeNode(rectOf: tileDefinition.size)
newNode.position = CGPoint(x: x, y: y)
newNode.isHidden = true
newNode.physicsBody = SKPhysicsBody(texture: tileDefinition.textures[0], size: tileDefinition.size)
newNode.physicsBody?.isDynamic = false
newNode.physicsBody?.affectedByGravity = false
newNode.physicsBody?.categoryBitMask = CollisionTypes.wall.rawValue
newNode.physicsBody?.collisionBitMask = CollisionTypes.dynamicComponents.rawValue
newNode.physicsBody?.contactTestBitMask = CollisionTypes.dynamicComponents.rawValue
self.addChild(newNode)
newNode.position = CGPoint(x: newNode.position.x + startingLocation.x, y: newNode.position.y + startingLocation.y)
}
}
}
}
}
self.wallTileMap=self.scene?.childNode(名称:“Walls”)作为?SKTileMapNode
设textureAtlas=SKTextureAtlas(命名为:“墙法线贴图”)
如果让tileMap=self.wallTileMap{
让我们开始位置:CGPoint=tileMap.position
让tileSize=tileMap.tileSize
设halfWidth=CGFloat(tileMap.numberOfColumns)/2.0*tileSize.width
让半高=CGFloat(tileMap.numberOfRows)/2.0*tileSize.height
设rows=tileMap.numberOfRows
let columns=tileMap.numberOfColumns
对于0中的专栏,..SKTileMapNodes是非常有缺陷的。我有第一手的经验,在整个功能中有无数的缺陷。这感觉像是一个功能发布得太早,再也没有被开发过。我注意到SpriteKit在过去几年中没有太多的工作,这有点令人担忧宁。我想知道我是否最好切换到另一个引擎?平铺映射是我计划严重依赖的东西。。。