gpt4 book ai didi

ios - Sprite 节点随机渲染......需要帮助

转载 作者:行者123 更新时间:2023-11-28 12:54:35 24 4
gpt4 key购买 nike

这是我在这里的第一篇文章,我找不到与类似的其他问题相关的答案。

所以,问题是,我正在开发一款游戏,但它在模拟器和我的 iOS 设备上的这个项目上表现得很奇怪。 Sprite 节点有时出现,有时不出现。这就像一个随机的。我看到屏幕上的节点计数器正在添加它们,但我没有看到 Sprite 。我在 didMoveToView 方法和 1 个 SKNode 中添加了 2 个 sprite,它应该作为一个容器层将 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

最佳答案

最有可能是 zPositioning。将角色 Sprite 的 zPosition 设置在背景层之上。

SpriteKit 渲染 Sprite 时不考虑 z 顺序,以提高速度。如果您希望它是特定的,则需要设置 z 顺序。

mainLayer.zPosition = 1 //z position of 1. if bg is 0, main will be on top

它们出现和消失的原因是因为 sprite kit 可能会在不同的帧上以不同的顺序绘制它们 - 没有设置位置,它们的渲染顺序是随机的。

关于ios - Sprite 节点随机渲染......需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35365567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com