我有一堵墙,它会生成然后向左移动(拉动),我很好奇我是否能以某种方式让它变得越来越快。这可能吗?
这是我用来拉“墙”的代码:
func startMoving() {
let moveLeft = SKAction.moveByX(-300, y: 0, duration: 0.35)
runAction(SKAction.repeatActionForever(moveLeft))
}
这就是生成墙的原因,以防您需要知道:
var generationTimer: NSTimer?
func startGeneratingWallsEvery(seconds: NSTimeInterval) {
generationTimer = NSTimer.scheduledTimerWithTimeInterval(seconds, target: self, selector: "generateWall", userInfo: nil, repeats: true)
这行代码启动了生成器
wallGenerator.startGeneratingWallsEvery(0.5)
一切正常,但我想知道如何让它开始时很慢,然后随着时间的推移变得更快(变得更难)。
最佳答案
一个选项是为 Action 的持续时间创建一个变量,并保留一个计数器,每次拉墙时都会递增。移动一定数量的墙后(本例中为 5 面),您可以将持续时间减少一定量。
var duration: NSTimeInterval = 0.35
var counter: NSUInteger = 0
func startMoving(duration: NSTimeInterval) {
let moveLeft = SKAction.moveByX(-300, y: 0, duration: duration)
runAction(SKAction.repeatActionForever(moveLeft))
counter += 1
if counter % 5 == 0 {
duration -= 0.01
}
}
我不确定如果 SKAction 持续时间为负会发生什么,所以您可能需要防范这种情况。
关于ios - Sprite Kit 和 Swift,随着时间的推移增加节点的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29574622/