Crear y gestionar modos de juego en Spark AR

Clase 11 de 21Curso Avanzado de Realidad Aumentada

Resumen

Controlar cuándo un jugador está activo y cuándo está esperando es fundamental para cualquier experiencia interactiva en Spark AR. Aquí se explica paso a paso cómo crear un modo de juego y un modo de espera usando switches, senders, receivers y nodos de control de visibilidad, logrando que los puntos solo sumen cuando realmente se está jugando.

¿Cómo crear el texto de inicio y detectar el tap del usuario?

El primer paso es agregar un elemento visual que invite a jugar. Dentro del canvas, se crea un texto 2D llamado "Jugar" [01:00]. Este texto se configura centrado, con un tamaño aproximado de cien, color blanco y ocupando toda la pantalla, de forma similar al texto de game over que ya existía.

Para detectar la interacción del usuario se utiliza el object tap [02:07], un nodo que registra cuando alguien toca ese texto. Al recibir el tap, se dispara un sender con el nombre "Inicio", que envía un pulso indicando que el juego debe comenzar.

¿Qué es un switch y cómo define el modo de juego?

El switch es un nodo booleano que funciona como un interruptor de encendido y apagado [02:38]. Recibe dos señales:

  • Encendido: cuando el usuario da tap en "Jugar", el pulso de inicio lo activa.
  • Apagado: cuando las vidas se agotan, el pulso de fin lo desactiva.

Este switch se conecta a un sender llamado "Modo de juego" [03:08]. Mientras esté encendido, el juego está activo; cuando se apaga, se entra en modo de espera. Es una forma limpia de centralizar el estado del juego y distribuirlo a todos los nodos que lo necesiten mediante receivers.

¿Cómo se resetean los contadores al iniciar?

Con un receiver de "Inicio" conectado a la función jump de cada contador [03:32], al dar tap en "Jugar" se reinician los valores. El contador de puntos salta a cero y el de vidas regresa a cinco. Esto garantiza que cada partida comience desde un estado limpio.

¿Cómo controlar la visibilidad de los objetos del juego?

Para evitar ruido visual durante el modo de espera, se agrupan todos los elementos interactivos —fantasmas y puntero— dentro de un null object llamado "Objetos de juego" [04:28]. Funciona como una carpeta: al controlar la visibilidad de este único objeto padre, todos los hijos aparecen o desaparecen juntos.

Esa visibilidad se conecta directamente al receiver de "Modo de juego" [05:02]. Cuando el switch está encendido, los objetos son visibles; cuando se apaga, desaparecen.

¿Cómo mostrar el texto "Jugar" en el momento correcto?

El texto debe verse en dos momentos [05:22]:

  • Al abrir el efecto por primera vez.
  • Después de que termina la animación de game over.

Para el segundo caso, se toma el parámetro de completado de la animación de game over y se conecta a un switch que enciende la visibilidad del texto "Jugar" [05:38]. Luego, un receiver de "Inicio" lo apaga cuando el usuario da tap.

Para el primer caso se utiliza el nodo runtime [06:18], que indica cuántos segundos lleva activa la experiencia. Se configura una condición: cuando el runtime sea menor a cinco segundos, se activa la visibilidad del texto. Este mismo nodo es útil para mostrar instrucciones iniciales en cualquier efecto.

Como ahora hay dos pulsos que deben encender la misma acción, se usa el nodo Pulse Merge [06:52]. Este nodo toma dos señales de pulso y las convierte en una sola salida, disparándose cuando cualquiera de las dos ocurra.

¿Cómo evitar que sumen puntos fuera del modo de juego?

El problema final es que los fantasmas siguen sumando puntos incluso tras el game over. La solución está en agregar un nodo IF de tipo pulso [07:50] justo antes del multiplexor de puntos. Este IF recibe como condición el receiver de "Modo de juego":

  • Si estamos en modo de juego, los pulsos de puntos pasan.
  • Si no, se bloquean.

Lo mismo se replica para el decrease de vidas [08:18], asegurando que las vidas solo se descuenten durante una partida activa.

Con esta estructura completa se pueden añadir extras al modo de espera, como un face filter decorativo o una animación celebratoria al iniciar. Lo importante es mantener los nodos ordenados y bien conectados: si algo se desconecta, la organización visual permite retomar sin complicaciones. ¿Qué agregarías tú al modo de espera para hacer la experiencia más atractiva?