如何随着时间的推移逐渐加速下降节点?

How to gradually speed up falling nodes over time?

我的屏幕顶部有两个相互平行的点,它们与底部的两个可以通过触摸旋转的圆圈相匹配。我让它们像这样生成:

  class GameScene: SKScene {
    override func didMoveToView(view: SKView) {


   runAction(SKAction.repeatActionForever(
        SKAction.sequence([
            SKAction.runBlock(generateDots),
            SKAction.waitForDuration(1.0)])))
    }
func generateDots() {
         let count = 2
    let index=Int(arc4random_uniform(UInt32(count)))
    let dots = SKSpriteNode(imageNamed: "Color\(index+1)")
    dots.physicsBody = SKPhysicsBody(circleOfRadius: 10)
    dots.physicsBody?.dynamic = true
    dots.physicsBody?.affectedByGravity = false
    for i in 0..<2 {
        dots.physicsBody?.categoryBitMask = UInt32(0x1 << index)
        dots.physicsBody?.contactTestBitMask = UInt32(0x1 << index)

    }

    addChild(dots)
    dots.size = CGSizeMake(45, 45)

    dots.position = CGPointMake(150, 400)
    dots.runAction(
        SKAction.moveByX(0, y: -900,
            duration: NSTimeInterval(11.5)))

          }
   }

有没有办法逐渐加快它们下降的速度或逐渐改变 waitForDuration 以便随着时间的推移每 3 秒、然后 2 秒、然后 1 秒和等等?

这完全可行!您只需要添加一些变量。

如果你想改变它们下落的速度,那么你需要创建一个像

这样的变量
Var droptime:NSTimeInterval = 11.5

然后在您的 "dropdot()" 方法中您需要做两件事。

  1. 开始时减去或除掉你的 droptime 变量,比如...

    掉落时间 -= 1

  2. 然后在最后生成下落动作时make it

    持续时间:掉落时间

而不是以前的样子。

如果你想让生成时间更短,那么你需要创建一个函数,你可以在每次你想要让场景运行的动作(就像你在 viewdidload 中所做的那样)时触发并编辑它它有可变等待并触发自身。此外,您还需要在 didMoveToView 方法中自行触发一次。

    func controlMethod() {
    waitdur -= 1
    runAction(SKAction.repeatActionForever( SKAction.sequence([
                    SKAction.runBlock(generateDots),
                    SKAction.waitForDuration(waitdur),
SKAction.runBlock(controlMethod)
    ])))
    } 

祝你好运!

很抱歉格式化!我在移动...希望有人可以修复它。