swift - 我可以在 SKCamera 中制作无限滚动背景吗?

标签 swift sprite-kit

我的场景中有一个 SKCamera,它随着一个可以抛出的球移动。我想制作一个无限滚动的背景,但是当我这样做时,相机就离开了背景。有人知道怎么做吗?

最佳答案

我做了这样的垂直滚动背景:

  • 创建背景类:

    import SpriteKit
    
    class BGClass: SKSpriteNode {
    
    func moveBG(camera: SKCameraNode) {
        if self.position.y - self.size.height - 10 > camera.position.y {
            self.position.y -= self.size.height * 3
        }
     }
    }
    
  • 创建 3 个背景:

    var bg1 : BGClass?
    var bg2 : BGClass?
    var bg3 : BGClass?
    
  • 在 GameScene 中创建一个函数

    func manageBackgrounds() {
        bg1?.moveBG(mainCamera!)
        bg2?.moveBG(mainCamera!)
        bg3?.moveBG(mainCamera!)
    }
    
  • 在更新中调用 manageBackground():

    override func update(currentTime: NSTimeInterval) {
        mangePlayer()
        moveCamera()
        mangeBackgrounds()
        createNewClouds()
    }
    

对于水平滚动(依次添加3张背景图片并将相机设置在第一张图片上):

  • 像这样改变背景类:

    import SpriteKit
    
    class BGClass: SKSpriteNode {
    
    func moveBG(camera: SKCameraNode) {
            if self.position.x - self.size.width - 10 > camera.position.x {
        self.position.x -= self.size.width * 3
      }
     }
    }
    
  • 在移动相机功能中:

    func moveCamera() {
        self.mainCamera?.position.x += 3
    }
    

关于swift - 我可以在 SKCamera 中制作无限滚动背景吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41338631/

相关文章:

ios - Swift 如何将具有不同文件名的图像上传到 firebase?

ios - 如何判断 AVPlayer 已播放三秒 Swift

ios - 运行时找不到方法

ios - 有没有办法在发生某些事情后停止 touches 方法?

swift - SpriteKit 通过物理移动节点而不是更新位置

swift - 如果我单击 "touches began",则更改 SKSpriteNode 的颜色返回我单击的颜色

ios - 无法理解我的 spritekit 游戏中的延迟?

swift - 无法在表格中毫无问题地显示多个文本标签

ios - 是什么导致我的 SKAction 计时器表现异常?

swift - 从 dateFormat 获取错误的日期