如何只设置一次背景动画并让它们永远移动?
我正在使用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
}
}
如何只设置一次背景动画并让它们永远移动?
谢谢!
答案 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),
])))