【发布时间】:2016-02-12 14:53:18
【问题描述】:
这是我在这里的第一篇文章,我找不到与其他类似问题相关的答案。
所以,问题是,我正在开发一个游戏,但它在模拟器和我的 iOS 设备上的这个项目上表现得非常奇怪。 Sprite 节点有时会出现,有时不会。这就像一个随机的。我看到屏幕上的节点计数器正在添加它们,但我没有看到精灵。我在 didMoveToView 方法中添加了 2 个精灵和 1 个 SKNode,它应该充当容器层,用于将 Sprites 保存在名为 mainLayer 在全局范围内声明的背景之上:
var mainLayer = SKNode()
var character:SKSpriteNode!
var didShoot:Bool!
override func didMoveToView(view: SKView) {
self.addChild(mainLayer)
let background = SKSpriteNode(imageNamed: "bg")
background.position = CGPoint(x:self.frame.midX, y:self.frame.midY)
background.size = self.view!.bounds.size
background.anchorPoint = CGPoint(x:0.5, y:0.5)
background.blendMode = SKBlendMode.Replace
self.addChild(background)
character = SKSpriteNode(imageNamed: "character")
character.position = CGPoint(x:self.frame.midX, y:0.0)
mainLayer.addChild(character)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
didShoot = true
}
override func didSimulatePhysics() {
if didShoot
{
shoot()
didShoot = false
}
mainLayer.enumerateChildNodesWithName("bullet") { (node, stop) -> Void in
if !CGRectContainsPoint(self.frame, node.position)
{
node.removeFromParent()
}
}
}
shoot()
{
let bullet = SKSpriteNode(imageNamed: "bullet")
/*
positioning, physics bodies, etc...this works...
*/
bullet.name = "bullet"
mainLayer.addChild(bullet)
}
物理、定位在场景中运行良好,因为当我触摸屏幕时节点数在屏幕上增加,但我每次运行应用程序时都看不到它们,除了背景总是展示。所以我必须在我的iOS设备或我的模拟器上重新启动游戏几次,最终它们会开始出现,在游戏的中间它们会在某些时间点消失并再次出现......有什么想法吗?我正在使用 XCode 7.2.1 和 Swift 2.1.1
【问题讨论】:
-
所有答案都注明,检查 zPositions 人。
标签: ios swift sprite-kit swift2