首页 > 解决方案 > 创建背景精灵节点

问题描述

我正在尝试创建一个无尽的滚动游戏,并且我正在尝试创建两个背景。

我有一个像这样的背景课程,

class BackgroundMG1: SKNode {
    let background: SKSpriteNode
    let size: CGSize

    init(size: CGSize) {
        self.size = size
        let hue = CGFloat((arc4random() % 1000) / 1000)
        let randomColor = UIColor(hue: hue, saturation: 1, brightness: 1, alpha: 1)
        self.background = SKSpriteNode(color: randomColor, size: size)

        super.init()

        setup()
    }

    func setup() {
        background.position.x = 0
        background.position.y = 0
        addChild(background)
    }
}

我将用其他对象填充我的背景,所以我需要它成为一个类,而不仅仅是一个静态图像。

我的游戏场景是这样的,

class AntarcticaMiniGame1: SKScene {

    var player: SKSpriteNode!
    var backgrounds: [BackgroundMG1]!

    override func didMove(to view: SKView) {
        setup()
    }

    func setup(){

        // Initializers
        player = Player()

        // Positions
        player.position.x = 0
        player.position.y = 0
        player.zPosition = 1

        // Set up backgrounds
        backgrounds = [BackgroundMG1]()
        for i in 0..<2 {
            let background = BackgroundMG1(size: size)
            background.position.x = CGFloat(i) * size.width
            background.position.y = 0
            backgrounds.append(background)
            addChild(background)
        }

        // Add to scene
        addChild(player)

    }

    override func update(_ currentTime: TimeInterval) {
        player.physicsBody!.applyForce(CGVector(dx: 25, dy:0))
    }
}

您还可以假设我设置了地面和相机对象。我不得不省略该代码,因为它与这个问题无关。玩家停留在地面上,摄像机跟随玩家。

现在,当我加载游戏时,玩家对象按预期向右移动。我看到一个背景,但第二个没有出现。

我觉得我在定位上犯了一些错误。我不是 100% 的坐标系如何在 Swift 中工作。

编辑:我的场景连接到一个现在完全为空的 .sks 文件。游戏是横向的。

标签: swiftsprite-kit

解决方案


推荐阅读