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])) }
好的,所以我希望我的得分每增加一次,这个人就会玩这个游戏。我研究了使用NSTimeInterval但是从我可以收集的内容来看,更好的选择是使用SKAction。我能想到的唯一方法就是使用一个几乎清晰的精灵,然后每秒在屏幕上移动它。我想知道的是每次节点在屏幕上移动时如何增加分数,或者如果这不是一个更好的选择。我用来移动节点的代码在上面。提前致谢。
答案 0 :(得分:1)
尝试将此添加到您的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])))
答案 1 :(得分:0)
我通过将其添加到scoreSprite函数的末尾来修复它:
if scoreSprite.position.x > endOfScreenLeft {
updateScore()
}
然后这样做是为了更新分数:
func updateScore() {
score++
scoreLabel.text = String(score)
}
屏幕左侧是CGFloat:
endOfScreenLeft =(self.size.width / 2)* CGFloat(-1)