我浏览了很多文章,但似乎没有一篇有意义或与我的问题相关。我想给用户一个设定的时间来按下一个节点。如果他们在设定时间内成功按下节点,则计时器应重置,如果他们未能在设定时间内按下节点,则游戏结束。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
if square.contains(touch.location(in: self)) {
moveSquare()
GameScene.score+=1
scoreLabel.text = "\(GameScene.score)"
}
} else {
gameOverScene()
}
}
所以我的问题是如何设置计时器来实现这些要求,以及将代码放在哪里?
最佳答案
使用 SKActions 而不是计时器:
let countdown = SKAction.sequence([SKAction.wait(forDuration: 5),
SKAction.perform(#selector(gameOver), onTarget: Self)])
run(countdown, withKey: "gameOverTimer")
(假设函数 gameOver
是您要在未及时触摸正确按钮时调用的函数)
并且在 touchesBegan
中,如果触摸了正确的节点:
removeAction(forKey: "gameOverTimer")
关于Swift SpriteKit 将计时器添加到 GameScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014804/