【问题标题】:Endless background spritekit无尽的背景精灵
【发布时间】:2016-06-11 02:53:45
【问题描述】:

我正在尝试使用 Ray Wenderlich 的书籍 2D iOS 和 tvOS 游戏中的方法制作无尽的背景,而我的游戏崩溃的原因是“尝试添加一个已经有父节点的 SKNode”,这是因为孩子已经打开了场景和循环尝试再次添加它,但我不知道如何修复它。

谢谢!

    func backgroundNode() -> SKSpriteNode {
    // 1
    let backgroundNode = SKSpriteNode()
    backgroundNode.anchorPoint = CGPoint.zero
    backgroundNode.name = "background"
    // 2
    background1.anchorPoint = CGPoint.zero
    background1.size = self.frame.size
    background1.position = CGPoint(x: 0, y: 0)
    backgroundNode.addChild(background1)
    // 3
    background2.anchorPoint = CGPoint.zero
    background1.size = self.frame.size
    background2.position =
        CGPoint(x: background1.size.width, y: 0)
    backgroundNode.addChild(background2)
    // 4
    backgroundNode.size = CGSize(
        width: background1.size.width + background2.size.width,
        height: background1.size.height)

    return backgroundNode
}

for i in 0...1 {
let background = backgroundNode()
background.anchorPoint = CGPointZero
background.position =
CGPoint(x: CGFloat(i)*background.size.width, y: 0)
background.name = "background"
addChild(background)
}

【问题讨论】:

  • 你能多发一点吗?到目前为止,我在这段代码中没有看到任何类似的错误。另外,发布发生错误的代码。可以添加异常断点来获取。

标签: ios swift loops sprite-kit


【解决方案1】:

你循环了你的 for 循环两次,所以你添加了两次相同的孩子。

将 for 循环的第一行更改为:for i in 0..<1 {

当使用for i in x...y 时,您从 x 开始并上升到 并包括 y。

【讨论】:

  • 但是现在背景只重复一次,不是无穷无尽的。
  • 如何使用 SKCameraNode 创建无尽的背景?
  • 我认为你的背景不会是无穷无尽的,因为你只循环了两次。我会检查更新方法,如果背景的位置超过某个点,则创建一个新图像并将其放置在第一张图像之后。当第一张图片离开屏幕后,将其从场景中移除,然后重复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多