jairogarcíarincón

Receta 4: Contadores de vida y tiempo


2.07K

Introducción



En esta receta, veremos cómo crear una interfaz de usuario UI que muestre contadores de coleccionables, vidas, y tiempo a nuestro juego.

Además, añadiremos la lógica necesaria para mostrar el tiempo transcurrido en el juego y mensajes a medida que se produzcan ciertos eventos.

Puedes comprobar el objetivo final haciendo clic AQUÍ.

Creación del escenario



Tomaremos como punto de partida la receta 3, ya que en la próxima receta añadiremos los elementos y la lógica necesaria para recoger los coleccionables y premios de nuestro juego.

A partir de la receta 3 y en la escena Jugar, vamos a crear un Canvas con los siguientes elementos:

  • Un UI > Text con el nombre Texto Coleccionables
  • Un UI > Text con el nombre Texto Tiempo
  • Un UI > Text con el nombre Mensajes
  • Un UI > Text con el nombre Vidas

Utiliza los conocimientos adquiridos en las recetas anteriores para crear tu propia versión, pero inicialmente la interfaz de usuario se debería parecer a esto:

Receta 4


El tiempo transcurrido



Para mostrar el tiempo transcurrido, vamos a crear un script llamado Tiempo con el siguiente código:


Para que funcione, solo debemos aplicar el script al Canvas y asociar el objeto Texto Tiempo a la variable Texto Tiempo

Por último, debemos añadir la variable isTiempo a JugadorController (después de la declaración de la variable salto, por ejemplo):



Las vidas



En esta receta, consideraremos que el Jugador comienza con 3 vidas y pierde una cada vez que se sale del Suelo. Esto ocurrirá, al menos en mi caso, aproximadamente cuando el jugador supere las posiciones 15 o -15 en los ejes X o Z (Para comprobarlo en tu caso, mueve el Jugador a las esquinas y comprueba los valores de Position).

Puesto que es el Jugador el que pierde vidas, añadiremos el código necesario en JugadorController:



Para que funcione, lo único que debemos hacer es asociar el objeto Texto Vidas la variable Texto Vidas.

Mensajes



Como habrás podido apreciar, con el código anterior se van restando vidas al Jugador pero el juego no termina nunca. Además, el texto del Mensaje está siempre presente en la pantalla.

Para finalizar la receta, añadiremos la siguiente lógica:

  1. Ocultar al inicio el texto de Mensajes
  2. Comprobar que el Jugador tiene vidas disponibles.
  3. Mostrar un mensaje de juego terminado si no tiene vidas.
  4. Impedir que el jugador se siga moviendo.
  5. Parar el contador de Texto Tiempo.

Nota: Añadiremos la lógica del Texto Coleccionables en la próxima receta.

Para conseguir los 4 primeros objetivos, modificaremos el código de JugadorController. Observa que hemos incorporado el método moverJugador() y hemos trasladado a él toda la lógica relacionada con el movimiento del Jugador. Esto es para poder quitar el movimiento al Jugador cuando se quede sin vidas de una forma más optimizada:



Para que funcione, lo único que falta es asociar el objeto Mensajes la variable Texto Mensajes.

Con esto estaría terminada la receta, espero que te haya resultado útil.


Publicado el 28 de Septiembre de 2021

unity