Crear un contador de tiempo en SpriteKit con Swift

Con el siguiente código crearemos facilmente un contador de tiempo en milisegundos que nos servirá para poder guardar el tiempo que ha durado la partida del jugador.
En primer lugar, debemos tener una variable para almacenar los milisegundos, una Label donde mostrarlo durante la partida y un booleano para controlar cuando se acaba el juego:

var scoreNode = SKLabelNode()
var miliseconds = 0
var isGameOver = false

Editad las propiedades del Label para configurar la fuente, la posicion, etc. Asignar el texto inicial al contador a cero, en mi caso:

scoreNode.text = "0 : 00 : 000"

En segundo lugar, insertaremos este código en nuestra escena, normalmente en “didMoveToView”:

let actionRun = SKAction.runBlock({ () -> Void in
     if !self.isGameOver {
          self.miliseconds++
          self.scoreNode.text = String(format:"%3d : %02d : %03d", Int((self.miliseconds/1000)/60) , Int((self.miliseconds/1000)%60), Int(self.miliseconds%1000))
     }
})
self.scoreNode.runAction(SKAction.repeatActionForever(SKAction.sequence([SKAction.waitForDuration(0.001), actionRun])))

Básicamente lo que hacemos es ejecutar una accion que añade un milisegundo, y esa accion se realiza cada milisegundo, mostrando el resultado en pantalla.
Nota: Cuando la partida termine, debemos asignar el valor isGameOver a verdadero para que el contador pare.

isGameOver = true

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.