Matt
Matt

Reputation: 57

Vertical endless scrolling background in sprite kit

I'm making a game and I'd like to have my background scroll vertically endlessly but I have no clue how to start. I'm pretty new to coding and sprite kit especially so any help would be greatly appreciated.

Anyone know how I could go about doing this?

Upvotes: 0

Views: 616

Answers (2)

B-Tron of the Autobots
B-Tron of the Autobots

Reputation: 538

You want to have two nodes, one to start with and one that follows it. Lastly, loop forever.

 func createGroundForward() {
        let groundTexture = SKTexture(imageNamed: "Track")

        for i in 0 ... 1 {
            let ground = SKSpriteNode(texture: groundTexture)
            ground.zPosition = -4
            ground.position = CGPoint(x: 0, y: -groundTexture.size().height + (groundTexture.size().height   + (groundTexture.size().height * CGFloat(i))))

            addChild(ground)

            let moveLeft = SKAction.moveBy(x:0 , y: -groundTexture.size().height, duration: 5)
            let moveReset = SKAction.moveBy(x:0 , y: groundTexture.size().height, duration: 0)
            let moveLoop = SKAction.sequence([moveLeft, moveReset])
            let moveForever = SKAction.repeatForever(moveLoop)

            ground.run(moveForever)
        }
    }

Then add the function to your didMove function (which is like viewDidLoad for Sprite).

 override func didMove(to view: SKView) {
        self.anchorPoint = CGPoint(x: 0.5, y: 0.5)

        createGroundForward()
    }

Upvotes: 2

chrissukhram
chrissukhram

Reputation: 2967

I will give you an answer conceptually to give you a place to start since you have not provided any code.

You will need multiple images that are the size of the screen and stack them on top of each other vertically.

You then want to move these images down point by point. When the top of one of the images reaches the bottom of the screen, put it back on top of your stack of images. This will cause a never ending scrolling of your background.

Best of luck!

Upvotes: 0

Related Questions