Lourdes Nuñez Burgos
La velocidad tuve que cambiar a vector 3 porque me salía un error de que vector no podía convertirse a Scalar, no se si es lo correcto pero por lo menos al cambiar la velocidad de numero a vector ya no me sale el error
Conectar el puntero con los fantasmas en Spark AR define la mecánica central de tu filtro de realidad aumentada: detectar contacto entre objetos y disparar una respuesta visual. Aquí aprendes a unir ambas estructuras usando senders, receivers y nodos de lógica para que la interacción funcione como un mini juego.
¿Cómo enviar la posición del puntero con un sender en Spark AR?
La forma más limpia de pasar información entre nodos en Spark AR es usar un sender en lugar de cables largos que crucen toda tu vista de patches.
Desde la estructura del puntero, conecta un sender a la salida de posición. Como esa posición viaja en tres ejes (X, Y, Z), debes configurarlo así:
Del otro lado, agregas un receiver y eliges posición del puntero para recuperar esa información.
¿Qué diferencia hay entre un sender dentro de un fantasma y uno fuera? Los senders creados dentro de un grupo o fantasma solo viven en esa jerarquía. Los que generas en el espacio principal sí pueden leerse con un receiver desde cualquier parte del proyecto.
¿Cómo recibir la posición dentro del fantasma?
El receiver te da la información, pero necesitas un punto donde conectarla dentro del fantasma. Para eso creas una nueva entrada en el nodo del fantasma.
Da clic derecho, entra a edit properties y agrega un nuevo input en la sección de inputs. Llámalo posición del puntero y configúralo como vector 3. El fantasma se actualiza solo y aparece la nueva entrada lista para conectar.
Dentro del fantasma ya tienes dos posiciones disponibles: la del puntero que acabas de inyectar y la del propio fantasma. Si las ves en cero al editar, no te preocupes: estás editando el nodo base, no las instancias específicas que ya tienen su valor en escena.
¿Cómo medir la distancia entre el puntero y el fantasma?
Para saber si el puntero tocó al fantasma, necesitas comparar sus posiciones. El nodo distance hace exactamente eso: toma dos puntos en el espacio y devuelve la distancia entre ellos.
Conectas la posición del fantasma y la posición del puntero al nodo distance. Aunque al inicio aparezca como número, en cuanto enchufas el segundo vector 3 el nodo entiende que está midiendo distancia espacial.
¿Para qué sirve el nodo distance en Spark AR? Calcula qué tan cerca están dos objetos en 3D. Te da un solo número que puedes comparar contra un umbral para detectar colisión o cercanía.
Ese número solo, sin contexto, no sirve. Necesitas decidir a partir de qué distancia consideras que el puntero tocó al fantasma.
¿Cómo usar less than e if para detectar el contacto?
Aquí entra la lógica condicional. El nodo less than compara dos números y devuelve verdadero solo cuando el primero es menor que el segundo.
La configuración queda así:
Esa bandera la conectas a un nodo if. El if en Spark AR espera una condición y entrega uno de dos valores según se cumpla o no. Si vienes de programación, puedes meterle más complejidad, pero por ahora basta con cambiar el color del fantasma.
Configura el if para devolver color en lugar de número:
Conectas la salida del if a la entrada de color del fantasma, reemplazando el valor estático que tenías antes. Al probarlo, los fantasmas cercanos al puntero cambian a amarillo y el resto se queda naranja.
Si notas que el orden de colores quedó invertido respecto a tu intención, no es un error de lógica: solo intercambiaste cuál color va en el true y cuál en el false. La estructura base sigue siendo válida.
¿Cómo agregar variación de velocidad entre fantasmas?
Con un solo valor de velocidad compartido, todos los fantasmas se mueven al unísono. Para que el juego se sienta más vivo, agregas un nodo multiply antes de pasar la velocidad a cada fantasma específico.
Esa pequeña variación genera un offset visible entre los fantasmas y rompe el movimiento sincronizado. El resultado se siente más orgánico y menos mecánico.
Con esto tienes la primera fase del juego lista: detección de contacto, retroalimentación visual por color y movimiento variado. Desde aquí puedes seguir agregando detalles visuales, mejorar la lógica de puntaje y publicar tu filtro en el Spark AR Hub para compartirlo en tu perfil de Instagram.
¿Qué umbral de less than probaste tú para que la detección se sintiera natural? Cuéntame en los comentarios.
Lourdes Nuñez Burgos
La velocidad tuve que cambiar a vector 3 porque me salía un error de que vector no podía convertirse a Scalar, no se si es lo correcto pero por lo menos al cambiar la velocidad de numero a vector ya no me sale el error
Danessa UBEDA
Este panel de aportes y preguntas debería poder minimizarse, es muy incómodo cuando se están usando dos programas abiertos en un mismo monitor
Jacobo G López
Si haces zoom a la pagina del navegador el video ocupa todo el ancho, y así puedes trabajar más comodamente
Andrés David Loaiza Zamudio
El filtro se puede descontrolar con el tema de los decimales que ingresamos a los patches, es clave hacer pruebas y tratar de seguir el tutorial al pie de la letra en caso de que no entendamos muy bien.
Edwin Vanegas
sigo sin repuesta en la clase anterior... y tengo debido a eso mas inconvenientes y no me deja avanzar se supone que el receiver no se deberia ver dentro de patch del fantasma pero me deja ver el receiver de pospuntero siendo que no deberia ser y no me deja ver el sender que cree.
Jonatan Paez
Hola, no se si a alguien mas le sirva, pero al momento de colocarle el color en "If Then Else" no me dejaba cambiarle el color en el Else. Creí que era spark y lo reinicie, previamente de haber revisado cada uno de los nodos. Lo solucione creando un nodo "Value" colocandole el color y unirlo al "Else"
María Alejandra Flórez
Cada clase es mejor que la anterior
Platzi Team
toca hacer 30 juegos para cogerle el tiro a esta patch editor. Pero esta interesante la clase.
Sergio Valadez
Tenemos el nodo distance y el nodo less than. Distance es un nodo de tipo vector3 y less than sólo tiene 1 vector. Me parece que si se pone un nodo unpack para convetir las distancias en [x, y] a una sóla distancia absoluta para después conectarlo al nodo condicional sería más preciso. ¿Qué opinan? hay veces que no se tocan los objetos y se cumple la condicional, creo que esto se puede eliminar con esa estratégia. También creo que vale la pena acortar second distance de 0.1 a 0.5, así será más predecible el comportamiento del juego.
Luis Carlos Carrillo
🤯 Complejo, pero nada que no se pueda aprender🤘🏼