jairogarcíarincón

Receta 4: Contadores de vida y tiempo


50.0K

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 Juego, vamos a crear un Canvas con los siguientes elementos:

  • Un UI > Text con el nombre Texto Monedas
  • 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 los diferentes valores, vamos a añadir las siguientes variables públicas para poder compartirlas con el resto de escenas, al inicio del script de GameManager (antes del método Start):



A continuación, crearemos un script llamado Tiempo con el siguiente código:


Para que funcione, en la escena de Juego, debemos aplicar el script al Canvas y asociar el objeto Texto Tiempo a la variable Texto Tiempo del script.

NOTA: A partir de ahora, dado que estamos utilizando variables del GameManager, siempre debemos iniciar el juego desde la escena Preload.


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, cuando el jugador caiga por debajo de 0 en el eje Y (Para comprobarlo en tu caso, mueve el Jugador y comprueba los valores de Position).

Puesto que es el Jugador el que pierde vidas, añadiremos el código necesario en JugadorController, aunque haciendo referencia a variables del GameManager:



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, aunque todavía quedaría pendiente cambiar a la escena de Créditos y mostrar un resumen del juego, algo que haremos más adelante como ejercicio propuesto, pero que puedes ir planteando hacer por tu cuenta.


Publicado el 21 de Noviembre de 2024

unity