swift 3 - making a flappy bird game, horizontal pipe trouble

510 views Asked by At

So I'm currently making a flappybird-like game using a tutorial and I have copied everything down the same but my pipes just keep spawning in the chosen spot and don't move horizontally at all. Any ideas on how to fix this? Here is my code so far:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if gameStarted == false {
        gameStarted = true

        Ghost.physicsBody?.affectedByGravity = true

        let spawn = SKAction.run { ()in
            self.createWalls()
        }

        let delay = SKAction.wait(forDuration: 2.0)
        let spawnDelay = SKAction.sequence([spawn, delay])
        let spawnDelayForever = SKAction.repeatForever(spawnDelay)
        self.run(spawnDelayForever)

        let distance = CGFloat(self.frame.width + wallPair.frame.width)
        let movePipes = SKAction.moveBy(x: -distance, y: 0, duration: TimeInterval(0.01 * distance))
        let removePipes = SKAction.removeFromParent()
        moveAndRemove = SKAction.sequence([removePipes, movePipes])


        let jumpUpAction = SKAction.moveBy(x: 0, y:180, duration: 0.2)
        Ghost.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
        Ghost.run(jumpUpAction)
2

There are 2 answers

1
Lars Blumberg On

In your code snippet, you never call

self.run(moveAndRemove)

This is necessary to execute an action and it might be the reason why things get only spawned, i.e. triggered with

self.run(spawnDelayForever)

Can you check if that's the case?

0
Enuff On

All fixed, i simply moved the block:

let distance = CGFloat(self.frame.width + wallPair.frame.width)
let movePipes = SKAction.moveBy(x: -distance, y: 0, duration: TimeInterval(0.01 * distance))
let removePipes = SKAction.removeFromParent()
moveAndRemove = SKAction.sequence([removePipes, movePipes])

and moved it into the first set of brackets. thanks heaps for the help though! :)