【问题标题】:Sprite Kit and Swift, increasing the speed of a node over time?Sprite Kit 和 Swift,随着时间的推移提高节点的速度?
【发布时间】:2015-06-16 22:49:40
【问题描述】:

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

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

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)

一切正常,但我想知道如何让它开始缓慢然后加班变得更快(使其更难)。

【问题讨论】:

  • 你的意思是每面墙的速度应该随着它在屏幕上移动而增加?或者当用户在玩游戏时,通过提高他们的移动速度变得更加困难?
  • @ABakerSmith 抱歉,我离开了,我的意思是,随着用户玩游戏的速度越来越快,游戏变得越来越难

标签: ios swift skaction


【解决方案1】:

一种选择是为动作的持续时间创建一个变量,并保持一个计数器在每次拉墙时递增。移动一定数量的墙后(本例中为 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 持续时间为负数会发生什么,因此您可能需要提防这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2012-05-29
    • 2020-11-22
    • 1970-01-01
    相关资源
    最近更新 更多