【发布时间】:2017-03-04 11:32:59
【问题描述】:
我是 Sprite Kit 的新手,我的 GameScene 有一个奇怪的问题。想不通,是什么原因造成的问题。我以这种方式在 viewWillAppearMethod 中从控制器呈现我的场景:
let atlas = SKTextureAtlas(named: "Sprites")
atlas.preload { [unowned self] in
DispatchQueue.main.async {
self.gameScene = GameScene(level: self.level, size: self.gameSKView!.bounds.size)
self.gameScene.scaleMode = .resizeFill
self.gameSKView?.presentScene(self.gameScene)
self.gameSKView?.ignoresSiblingOrder = true
self.gameSKView?.showsNodeCount = true
}
}
我的精灵图集内容如下:link
比我创造我的宇宙飞船:
final class SpaceshipSpriteNode: SKSpriteNode {
required init(size: CGSize) {
let texture = SKTexture(image: #imageLiteral(resourceName: "Spaceship"))
super.init(texture: texture, color: .white, size: size)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
func configureSpaceship() {
let middleRow = Int(Double(unwrappedMatrix.rowsCount) / 2)
let middleColumn = Int(Double(unwrappedMatrix.columnsCount) / 2)
let xOffset = CGFloat(level.startPoint.column - middleColumn)
let yOffset = CGFloat(level.startPoint.row - middleRow)
spaceship = SpaceshipSpriteNode(size: spaceshipSize)
spaceship.position = CGPoint(x: frame.midX + (spaceshipSize.width * xOffset), y: frame.midY + (spaceshipSize.height * yOffset))
spaceshipObject.addChild(spaceship)
addChild(spaceshipObject)
}
configureSpaceship 方法在didMove(to view: SKView) 中被调用
问题是有时(每 3/4/5/6 个案例 1 个)我的宇宙飞船从现场丢失。可见性、位置、大小始终相同,场景中的节点数也相同。这里有一些图片link
【问题讨论】:
-
看来你的宇宙飞船躲在一块蓝色瓷砖后面。您是否尝试过为每个节点指定
zPosition? -
Go 我有一个高 zPosition - 它可能偶尔会在其他对象后面渲染:spaceship.zPosition = 100
-
@OOPer 谢谢我已将 zPozition 设置为 1,一切正常。
-
@BohdanSavych,请发布您的解决方案作为答案。这可能很简单,但我们无法确认它是否真的有效。
标签: sprite-kit swift3