如何设置背景节点的位置移动

时间:2015-11-03 20:51:58

标签: ios swift sprite-kit

如何只设置一次背景动画并让它们永远移动?

我正在使用iOS Swift和SpriteKit开发游戏。我的游戏中有很多背景节点,比如云,山等。

目前我正在这样的场景中移动云。此代码位于override func update

        if self.cloud01.position.x < 0 - self.cloud01.size.width {
            self.cloud01.position.x = self.frame.size.width + (self.cloud01.size.width / 2)
        } else {
            self.cloud01.position.x -= 0.5
        }

每当云移出场景(左侧)时,它将重置到右侧并再次移动。

我想从更新函数中取出所有这些if语句并仅将它们设置一次。我试过这个:

//This is in my didMoveToView
runAction(SKAction.repeatActionForever(SKAction.runBlock(backgroundAnimations)))

//It calls this function
func backgroundAnimations() {

        if self.cloud01.position.x < 0 - self.cloud01.size.width {
            self.cloud01.position.x = self.frame.size.width + (self.cloud01.size.width / 2)
        } else {
            self.cloud01.position.x -= 0.5
        }
}

如何只设置一次背景动画并让它们永远移动?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用SKAction s。只需在初始化云时添加此行即可。

world - 您的云parentNode(可能您需要替换为self

    runAction(SKAction.repeatActionForever(SKAction.sequence([
        SKAction.moveByX(-world.frame.size.width , y: 0, duration: 10.0),
        SKAction.moveByX(world.frame.size.width , y: 0, duration: 0),
    ])))