【发布时间】:2015-05-19 22:05:04
【问题描述】:
我正在使用 SpriteKit 制作一个简单的游戏,并且我有一个滚动背景。简单的情况是在加载游戏场景时将一些背景图像彼此相邻放置,然后当图像滚动出屏幕时水平移动。这是我的游戏场景的didMoveToView 方法的代码。
// self.gameSpeed is 1.0 and gradually increases during the game
let backgroundTexture = SKTexture(imageNamed: "Background")
var moveBackground = SKAction.moveByX(-self.frame.size.width, y: 0, duration: (20 / self.gameSpeed))
var replaceBackground = SKAction.moveByX(self.frame.size.width, y: 0, duration: 0)
var moveBackgroundForever = SKAction.repeatActionForever(SKAction.sequence([moveBackground, replaceBackground]))
for var i:CGFloat = 0; i < 2; i++ {
var background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: self.frame.size.width / 2 + self.frame.size.width * i, y: CGRectGetMidY(self.frame))
background.size = self.frame.size
background.zPosition = -100
background.runAction(moveBackgroundForever)
self.addChild(background)
}
现在我想在游戏的某些点提高滚动背景的速度。可以看到背景水平滚动的持续时间设置为(20 / self.gameSpeed)。显然这是行不通的,因为这段代码只运行一次,因此永远不会更新移动速度来考虑self.gameSpeed 变量的新值。
所以,我的问题很简单:如何根据self.gameSpeed 变量提高背景图像移动的速度(减少持续时间)?
谢谢!
【问题讨论】:
标签: ios swift sprite-kit