Swift SpriteKit 将计时器添加到 GameScene

标签 swift timer sprite-kit sprite

我浏览了很多文章,但似乎没有一篇有意义或与我的问题相关。我想给用户一个设定的时间来按下一个节点。如果他们在设定时间内成功按下节点,则计时器应重置,如果他们未能在设定时间内按下节点,则游戏结束。

 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/

相关文章:

swift - 如何使用 Swift 3 解决 “ambiguous use of ' fetch'” 错误?

ios - 如何从字符串中解析十进制而不丢失精度?

c++ - 为什么这个引脚在命令 43 第一次进入时不触发?

ios - SpriteKit - didMovetoView 未被调用

ios - 如何按名称检索 Sprite 的位置

ios - 如何使用同一类为每个目标执行不同的功能?扩展和协议(protocol)让我失望

arrays - 如何从 swift 3 中给出的数组中删除所有索引值

Javascript - 倒计时器

android - 对话框中的 onTouchEvent

swift - SpriteKit Swift 定位 HUD