2016-02-07 18 views
1

我有两个从我的屏幕顶部相互平行的点,它们将与底部的两个可以随触摸旋转的圆相匹配。我让他们产生这样的:如何逐渐加速下降节点随着时间的推移?

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秒等等?

+1

这可能是你要找的东西http://stackoverflow.com/questions/34624292/change-time-interval-in-skaction-waitforduration-as-game-goes-on – 0x141E

+0

非常感谢你!还有一种方法可以加速节点吗? – KeepItSimple

+0

为“moveByX”动作的持续时间参数定义一个变量,并在“递归”方法中减少该变量。 – 0x141E

回答

1

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

如果你想改变他们如何快速下跌,那么你需要做一个变量像

Var droptime:NSTimeInterval = 11.5 

然后在你的“dropdot()”你需要做两件事情的方法。

  1. 起初减去或devide您droptime变量像...

    Droptime - = 1在当你产生下降动作结束

  2. 然后使其

    时间:droptime

而不是以前的样子。

如果您希望缩短生成时间,那么您需要创建一个函数,每次您想让场景运行的操作(如viewdidload中所做的操作)都可以触发并进行编辑,以便它有可变的等待并触发自己。您还需要在didMoveToView方法中自我触发一次。

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

祝你好运!

对不起格式化!我在移动...希望有人可以修复它。

+0

这看起来很完美(和它的可读哈哈)非常感谢! – KeepItSimple

+0

虽然很快,那么'waitdur'的变量是什么?会不会是'var waitdur:CGFloat = 0'或类似的东西? – KeepItSimple

+0

Var waitdur:NSTimeInterval = 1.0 –

相关问题