0

所以我目前正在使用一个教程制作一个类似flappybird的游戏,我把所有的东西都复制了下来,但是我的管道一直在选定的位置产卵,根本不水平移动。有想法该怎么解决这个吗?到目前为止,这是我的代码:

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)
4

2 回答 2

0

全部固定,我只是移动了块:

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])

并将其移动到第一组括号中。非常感谢您的帮助!:)

于 2017-01-02T23:11:57.923 回答
0

在您的代码片段中,您永远不会调用

self.run(moveAndRemove)

这是执行动作所必需的,这可能是事情只产生的原因,即触发

self.run(spawnDelayForever)

你能检查一下是不是这样吗?

于 2017-01-02T22:45:40.383 回答