ios - Sprite Kit 和 Swift,随着时间的推移增加节点的速度?

标签 ios swift skaction

我有一堵墙,它会生成然后向左移动(拉动),我很好奇我是否能以某种方式让它变得越来越快。这可能吗?

这是我用来拉“墙”的代码:

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/

相关文章:

ios - WatchKit 数据不显示

ios - 随机给 Sprite 着色,但需要限制

swift - 了解 Spritekit 运行 block ,变量不符合预期

ios - 一如既往地从 [UICollectionViewCell] 转换为不相关的类型 'profileviewCell'

iphone - 如何在 iPhone 中转换时间格式化程序?

ios - 为什么我不能让设备通过 Game Center Multiplayer 连接在一起?

swift - 使用 swift 停止 SpriteKit 中的 Action

iphone - 当我的应用程序处于后台时,只有当我触摸顶部通知横幅并且在我单击应用程序图标时不工作时才会处理推送通知

iOS - NSURLConnection - 请求中字符的正确编码

ios - 无法将类型 'Anyobject!' 的值转换为预期的参数类型 'Int'