Rafael Robles Colinas
Vaya cuantas herramientas y funcionalidades en el Editor, me encanto esta clase
Crear enemigos en Spark AR para un minijuego de realidad aumentada implica más que duplicar formas: requiere lógica de movimiento, aleatoriedad y un sistema reutilizable. Aquí aprendes a construir fantasmas animados usando Patch Assets, nodos de transición y senders, una técnica clave para desarrolladores de filtros AR que quieren escalar su lógica sin duplicar conexiones.
¿Cómo defino el rango de movimiento del enemigo en Spark AR?
Antes de animar, necesitas conocer los límites de la cámara. La pirámide visible que aparece al seleccionar un plano marca el rango donde tu enemigo será visible.
Para el fantasma, el eje vertical se trabaja en Y entre 0.35 y -0.35, valores que mantienen al objeto dentro del campo de cámara sin salir por arriba o por abajo [1:30]. En el eje horizontal X, el rango sugerido va de -0.10 a 0.10, lo suficiente para que el jugador no se quede inmóvil ganando puntos en una sola línea [2:15].
¿Para qué sirve definir un rango antes de animar? Para asegurar que tu objeto sea visible dentro del campo de la cámara y mantenga una jugabilidad justa, evitando que el jugador explote posiciones fijas.
¿Cómo animo al fantasma con Loop Animation y Transition?
El nodo Loop Animation genera una animación cíclica con una duración configurable, que después controlará la velocidad del enemigo [3:10]. Su salida progress entrega un valor entre 0 y 1, una especie de porcentaje del avance.
Para convertir ese progreso en una posición útil, conectas el progress a un nodo Transition. Este nodo transforma ese rango 0 a 1 en otro tipo de dato: vector 3D, posición, rotación, escala o color. En este caso, lo configuras como número que va de 0.35 a -0.35, generando el descenso vertical [3:50].
El resultado se conecta a un nodo Pack, asignándolo al eje Y (el verde, vertical), mientras X y Z quedan en cero por ahora.
¿Cómo agrego aleatoriedad horizontal con Random?
El nodo Random genera un número aleatorio dentro de un rango definido, en este caso -0.1 a 0.1 para el eje X [5:20]. Para probar si funciona, puedes agregar temporalmente un nodo Screen Tap que dispare la randomización al tocar la pantalla.
En Spark AR activas Simulate Touch desde el botón de tres líneas, y al hacer clic verás cómo el fantasma cambia su posición horizontal cada vez. Una vez validado, ese Screen Tap se elimina porque no debe quedarse en producción.
¿Qué es un Patch Asset y por qué es clave para escalar enemigos?
Un Patch Asset es una referencia única a un nodo personalizado que puedes reutilizar múltiples veces. A diferencia de un grupo, donde cada copia es independiente, un Patch Asset comparte lógica: si modificas el original, todas las instancias se actualizan al mismo tiempo [7:00].
¿Cuál es la diferencia entre un grupo y un Patch Asset? Un grupo duplicado debe modificarse uno por uno. Un Patch Asset propaga cualquier cambio a todas sus copias automáticamente, ideal para gestionar decenas o cientos de enemigos.
Para crearlo, das clic derecho sobre el grupo y seleccionas Create Patch Asset. Luego puedes duplicar el plano con Ctrl+D y conectar cada Ghost (Ghost 1, Ghost 2, Ghost 3) al mismo asset. Con esto, controlas tres fantasmas desde una sola fuente de lógica.
¿Cómo agrego un input de velocidad personalizado?
Dando clic derecho en el Patch Asset y editando sus propiedades, puedes añadir un nuevo input llamado Speed, de tipo numérico, con valor por defecto 1 [9:30]. También puedes incluir una descripción para que otros desarrolladores entiendan su función.
Desde fuera, conectas un nodo Value numérico (por ejemplo, con valor 2) al input Speed. Internamente, ese valor afecta la duración del Loop Animation, modificando la velocidad de descenso de los tres fantasmas a la vez.
¿Cómo uso Sender y Receiver para evitar cables enredados?
Cuando una señal necesita viajar a varios lugares dentro del mismo asset, los cables se vuelven un caos. La solución son los nodos Sender y Receiver, que funcionan como una conexión inalámbrica tipo Bluetooth [11:00].
El Loop Animation tiene una salida que avisa cuando el ciclo termina. Esa señal se envía con un Sender renombrado como completed, y desde cualquier punto del proyecto un Receiver la recibe para activar la randomización del eje X. Así, cada vez que un fantasma toca el suelo, su próxima aparición ocurre en una posición horizontal distinta.
¿Cómo asigno color a cada enemigo desde el Patch Asset?
Para identificar visualmente cada fantasma, primero creas tres materiales independientes (material 1, material 2, material 3), todos en modo Flat para que no reciban iluminación de las luces de la escena [13:20]. Luego asignas una textura a cada uno.
En el Patch Asset agregas un nuevo output de tipo color. Internamente, un nodo Value en modo color define el tono, y se conecta a la propiedad color del material. Desde fuera, conectas la salida color del asset al material de cada fantasma.
Los pasos completos para que el color funcione son:
Si el color no aparece, casi siempre es porque el material no está vinculado al objeto, no por un fallo en la lógica del asset.
¿Qué otros comportamientos te gustaría programar para tus enemigos en realidad aumentada? Cuéntalo en los comentarios.
Rafael Robles Colinas
Vaya cuantas herramientas y funcionalidades en el Editor, me encanto esta clase
Andrés David Loaiza Zamudio
Al principio entender el patch editor no es fácil pero practicando y cometiendo errores es que uno le toma amor.
Alejandro Jarero
@rolandoga nos puedes ayudar con el tema del Loop animation
Rolando GA
Profesorchequen que estén conectando a la entrada correcta (duración) si no compartanme un screenshot de como se ve cuando no se puede conectar y lo revisamos
Danessa UBEDA
Bueno lo resolví no convirtiendo los fantasmas en patch y editando cada grupo de fantasmas 1 uno 1
Alejandro Jarero
En los recursos de esta lección se puede descargar el archivo, pero no deja entrar a la conexión de "fantasma" en el patch editor
Sebastián Quiroga
Siento que ha sido de las clases que menos he entendido pero más me ha emocionado :O <3
Danessa UBEDA
Dentro del patch fantasma, no me permite conectar nada mas. Todos los patches que agrego dentro de fantasma no me funcionan. Ya lo borré todo y lo volví a hacer. Help!
Rolando GA
Profesortienes las entradas y salidas conectadas? otra opción es que regreses a grupo el patch para reiniciar esa parte
Danessa UBEDA
tampoco se está uniendo el loop animation al sender.
Alejandro Jarero
x 2
Danessa UBEDA
En el minuto 11, cuando aparece el cuadrito de velocidad dentro del patch de fantasma, intento unirlo al Loop Animation en la entrada de duración, pero no se une. ¿Qué sucede? NO me da error, solo no se une a la entrada de duración
Alejandro Jarero
Tal vez sea la versión. Al editar las propiedades de velocidad, en la última versión de Spark AR aparecen un Imput Limit y un Imput Style que no se ven en la ventana del video.
Rolando GA
Profesorlo conectaste a la parte de duración?
Edwin Vanegas
tengo problemas jajjajaj no cambian de posicion los tres todos quedan en el mismo sitio y el momento de receiver no me da opcion de poner el send
receiver no da ninguna opcion.
Aldo Enrique Pech Rodriguez
fue muy caótico la primera vez intentado hacer la estructura XD.. pero con el tiempo y practica todo se va solucionando
Alejandro Agustin Vilatta
Uf, estuvo complicado pero se pudo jaja
Bryan Hernandez
Ahora si siento el nivel avanzado 😯
Jose Albeiro Gonzalez Ramirez
Esa musica no cuadra de nada.
Jorge Esteban Londoño
de cual musica hablas?
Oscar Ortega Cabello
x2 ? 🤔
Jader Moncayo
¿Quieres agregar imágenes a tus animaciones? En esta clase puedes aprovechar para agregar imágenes a tus materiales