2015-11-22 52 views
2

我有一個運行動作循環,產生一個敵人,然後等待併產生另一個敵人。意圖是分數越高,敵人產生得越快。runAction()內部變化不變

但目前的代碼有敵人以同樣的速度產卵不管。我一直更新override func update(currentTime:NSTimeInterval)方法的速度,所以我不知道什麼是錯的。

override func update(currentTime: NSTimeInterval){ 
spawnRate = 2.0-(0.1*(Double)(((Double)(Score))/(10.0))) 
    if(spawnRate < 0.5){ 
     spawnRate = 0.5 
    } 
} 
override func didMoveToView(view: SKView) { 
    runAction(SKAction.repeatActionForever(
      SKAction.sequence([ 
       SKAction.runBlock(addEnemy), 
       SKAction.waitForDuration(spawnRate) 
       ]) 
      )) 
} 
+2

除非您顯示一些代碼,否則我們無法真正幫助您。 – Peyman

+0

你需要展示你爲別人所做的努力,以便更好地理解如何幫助你。 – Devapploper

+0

還有一些代碼,我在遊戲中改變了產卵率,並以我設定的初始速度產卵。這就是我所嘗試過的。 –

回答

1

什麼正在發生的事情是,你已經:

  • 存儲時間放慢參數重用序列內的動作一遍又一遍

所以沒有什麼實際改變的動作

  • 內。要解決這個問題,一種方法是每次使用遞歸調用和更改持續時間參數:

    import SpriteKit 
    
    class GameScene: SKScene { 
    
        let shape = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 20, height: 20)) 
    
        var delay:NSTimeInterval = 1.0 
    
        override func didMoveToView(view: SKView) { 
    
         recursiveMethod() 
    
        } 
    
        func recursiveMethod(){ 
    
    
    
         let recursive = SKAction.sequence([ 
    
          SKAction.waitForDuration(delay), 
          SKAction.runBlock({self.recursiveMethod();println("delay \(self.delay)")}) 
         ]) 
    
         runAction(recursive) 
    
        } 
    
        override func update(currentTime: NSTimeInterval) { 
         if(delay > 0.2){delay = delay - 0.001} 
        } 
    
    } 
    
  • +0

    它完美的作品。謝謝!!!! –

    1

    的問題是,這:

    SKAction.sequence([ 
        SKAction.runBlock(addEnemy), 
        SKAction.waitForDuration(spawnRate) 
    ]) 
    

    是由一個人的,然後就重複,直到永遠。

    嘗試將代碼放在一個

    runAction(SKAction.repeatActionForever(runblock(spawnAndWait())) 
    

    ,然後作出一個單獨的FUNC。

    spawnAndWait() { // put here the code for spawning the enemy and waiting spawnrate duration. 
    

    b.t.w
    將用於更新其中分數增加的spawnRate的代碼。因爲這樣更有效率。然後在更新方法中,因爲這是不斷調用。

    +0

    謝謝!我會試一試 –

    +1

    但是沒有註冊等待。它無限地產生了它們。 –

    +0

    你可以請upvote我的答案?只是所以我可以在將來發表評論 – Cing