2015-07-03 61 views
0
runAction(SKAction.repeatActionForever(
    SKAction.sequence([ 
    SKAction.runBlock(addScore), 
     SKAction.waitForDuration(1.0) ])))   

func addScore() { 
     let scoreSprite = SKSpriteNode(imageNamed: "scoreSprite") 

     let actualY = random1(min: scoreSprite.size.height/2, max: size.height - scoreSprite.size.height/2) 

     scoreSprite.position = CGPoint(x: size.width + scoreSprite.size.width/2, y: actualY) 

     self.addChild(scoreSprite) 

     let actualDuration = random1(min: CGFloat(0.5), max: CGFloat(0.5)) 
     let actionMove = SKAction.moveTo(CGPoint(x: -scoreSprite.size.width/2, y: actualY), duration: NSTimeInterval(actualDuration)) 

     let actionMoveDone = SKAction.removeFromParent() 
      scoreSprite.runAction(SKAction.sequence([actionMove, actionMoveDone])) } 

好的,所以我希望我的分數在玩此遊戲的每一秒內增加1。我研究了使用NSTimeInterval,但從我可以收集,更好的選擇是使用SKAction。我能想到的唯一方法是使用幾乎清晰的精靈,並每秒在屏幕上移動它。我想知道的是每次節點在屏幕上移動時如何增加分數,或者如果這不是一個好的選擇,那麼這是一個更好的選擇。上面是我用來移動節點的代碼。提前致謝。如何使用SKAction將分數添加到SpriteKit中

回答

0

我固定它使用通過將這個給scoreSprite函數的末尾:

if scoreSprite.position.x > endOfScreenLeft { 
     updateScore() 
    } 

然後這樣做是爲了更新得分:

func updateScore() { 
     score++ 
     scoreLabel.text = String(score) 
    } 

屏幕左側的端部爲CGFloat的:

endOfScreenLeft =(self.size.width/2)* CGFloat(-1)

1

嘗試添加到您的r didMoveToView方法

let wait = SKAction.waitForDuration(1.0) 
let incrementScore = SKAction.runBlock ({ 
    ++self.score 
    self.scoreLabel.text = "\(self.score)" 
}) 

self.runAction(SKAction.repeatActionForever(SKAction.sequence([wait,incrementScore]))) 
相關問題