Eventos
Un evento es una frase: cuando pase esto, haz estas cosas.
CUANDO alguien toca la puerta
ENTONCES reproducir el crujido
abrirla en 600 ms
desactivar el cartel de «cerrado»
El cuándo es un disparador. El entonces es una lista de pasos. Esa es toda la idea, y cubre una parte sorprendente de lo que necesita un proyecto.
Un objeto puede llevar tantos eventos como quieras, y cada uno se ejecuta por su cuenta.
Si además escribes scripts o construyes patches, cada uno tiene también un nombre corto de código: las referencias de disparadores y de pasos los listan uno al lado del otro. Construyendo en el editor, nunca lo necesitas.
Todos los disparadores a los que puedes reaccionar: disparadores. Todas las acciones que puedes realizar: pasos. Ambas salen directamente del motor, así que nunca están desactualizadas.
Todos los disparadores, y para qué sirven
La referencia de disparadores generada trae los parámetros de cada uno. Aquí está lo que significan y dónde sorprenden.
Entrada
| En el editor | Se dispara cuando |
|---|---|
| Mouse button | hay un toque o clic — ramas para clic, pulsar y soltar |
| Hover | el cursor entra en el objeto o sale de él |
| Double click | dos clics en el mismo objeto en menos de 300 ms |
| Long press | se mantiene 450 ms sin moverse |
| Key | una tecla — ramas para pulsar y soltar |
| Scroll | gira la rueda; se puede filtrar por dirección |
| Drag | se arrastra contenido AR colocado |
| Pinch | se pellizca contenido AR colocado para escalarlo |
| Rotate | se gira contenido AR colocado |
Los tres disparadores gestuales solo existen en escenas surface: tratan del contenido que el visitante colocó. Se repiten continuamente mientras el dedo se mueve, así que trátalos como un flujo y no como un instante único.
Ciclo de vida
| En el editor | Se dispara cuando |
|---|---|
| Launch | arranca la escena — llega a todos los objetos |
| Resize | la ventana o el viewport cambia de tamaño |
| Pause | la app o la pestaña pasa a segundo plano |
| Resume | vuelve |
on-pause es donde se paran las cosas con educaciónLos sonidos siguen sonando cuando un visitante cambia de app, a menos que los pares. Pausar el audio
y los temporizadores en on-pause y restaurarlos en on-resume es un detalle pequeño que la gente
nota.
Seguimiento
| En el editor | Se dispara cuando |
|---|---|
| Detect | se encuentra el marcador o la superficie |
| Tracking lost | se pierde el seguimiento |
| Placed | el visitante ha colocado el contenido |
| VPS ready | el posicionamiento ha arrancado |
| VPS localized | se ha encontrado la posición real del visitante |
| VPS localization failed | no se ha encontrado — esto es normal, no un error |
| VPS error | el posicionamiento no ha podido funcionar |
Cada uno se ofrece solo en escenas cuyo anclaje puede producirlo. La detección se informa en el flanco, cuando empieza el seguimiento, no en cada fotograma.
on-vps-not-localized se dispara de forma rutinaria mientras el visitante camina buscando un sitio
que el mapa reconozca. Trátalo como «sigue intentándolo», no como un fallo que anunciar.
Tiempo y proximidad
| En el editor | Se dispara cuando |
|---|---|
| Delay | una vez, tras un retardo |
| Every N seconds | de forma repetida — un recuento de 0 significa indefinidamente |
| Distance | algo entra en una distancia, o sale — dos ramas |
| Visibility | el objeto se muestra o se oculta |
| Variable change | cambia el valor de una variable |
on-distance tiene una opción de «comprobar al inicio». Sin ella, un objeto que ya está cerca al
abrirse la escena no se disparará hasta que algo se mueva.
Estado, física e interfaz
| En el editor | Se dispara cuando |
|---|---|
| State active | este objeto entra en el state que elegiste |
| State inactive | sale de ese state |
| Collision | este objeto toca a otro — opcionalmente solo a algunos |
| UI action | se ha pulsado un botón de una tarjeta de interfaz |
| Signal | otro evento ha emitido una señal |
| Game controls | el personaje ha cambiado de estado |
Un evento, las dos direcciones
Algunos disparadores tienen ramas, así que un solo evento cubre todos los desenlaces. Define una distancia una vez y responde tanto a la llegada como a la salida:
| Disparador | Ramas |
|---|---|
| Distance | entró · salió |
| Key | pulsada · soltada |
| Hover | entró · salió |
| Mouse | clic · pulsado · soltado |
| Visibility | mostrado · oculto |
| Game control | quieto · moviéndose · saltando · corriendo |
En el editor obtienes una sección por rama. Los disparadores sin ramas tienen una sola sección, «al activarse».
A qué objetos afecta un paso
Cada paso tiene destinos.
Déjalos vacíos y el paso actúa sobre el objeto que lleva el evento, que es el caso habitual. Rellénalos y actuará sobre esos objetos, que es como un solo evento en un botón abre tres puertas.
Los toques suben a los padres
Un toque, un hover o una acción de tarjeta llegan al objeto y a sus padres.
Eso ahorra mucha repetición: pon un evento en un grupo y capturará los toques sobre todo lo que contenga, en vez de copiar el mismo evento en cuarenta objetos.
Dos efectos secundarios agradables:
- «tocar en cualquier parte de este panel» es un único evento en el panel;
- deslizarse entre dos hijos del mismo padre no dispara hover/blur en el padre, porque nunca llegaste a salir de él.
Las colisiones son la excepción: se disparan solo donde ocurrieron. Y el teclado, el desplazamiento, el cambio de tamaño y el arranque de escena no tratan de ningún objeto concreto, así que llegan a todo.
Varias teclas para un evento
Saltar con Espacio o con W es un evento, no dos copias. La primera combinación vive en el disparador; las demás van en una lista de «o», escrita como texto:
ArrowUp ctrl+KeyW KeyA+KeyS Space+double
Los modificadores pertenecen a la combinación en la que están escritos, y una alternativa
sustituye la asignación en vez de sumarse a ella. Los botones del ratón usan el mismo formato
(mouse:middle).
Mejor aún: nombra una asignación del proyecto en vez de una tecla. Reasigna «saltar» una vez en los ajustes del proyecto y todos los eventos que la mencionan se mueven con ella, que es lo que querrás el día que alguien pida controles para zurdos.
Todos los pasos, y qué hacen
Los parámetros están en la referencia de pasos generada.
Navegación y mundo exterior
| En el editor | Hace |
|---|---|
| Scene transition | ir a otra escena |
| Space transition | ir a otro space, opcionalmente a una escena concreta |
| Open URL | abrir un enlace, en esta pestaña o en otra |
| Open messenger | Facebook, VK, OK, Instagram, Telegram, WhatsApp o Viber |
| Call phone number | iniciar una llamada |
| Compose email | iniciar un correo |
| File download | descargar un archivo de tu proyecto |
| Contact download | ofrecer una tarjeta de contacto con los campos que rellenes |
El paso de mensajería toma un id de página para Facebook, VK y OK, un nombre de usuario para Instagram y Telegram, y un número de teléfono para WhatsApp y Viber.
Cambiar la escena
| En el editor | Hace |
|---|---|
| Show / hide object | mostrar u ocultar los destinos — en una escena, esto la activa |
| Set state | pasar a un state con nombre, opcionalmente con una duración |
| Override properties | aplicar un conjunto puntual de valores como state temporal |
Animación
| En el editor | Hace |
|---|---|
| Play animation | reproducir un preset de línea de tiempo — bucle, repeticiones, velocidad, retardo |
| Stop animation | detener uno |
| Transformation | mover, rotar o escalar a lo largo del tiempo |
| Opacity | fundir |
| Material | mezclar los materiales de los destinos hacia uno guardado |
| Bone transform | mover un hueso concreto |
| Built-in animation | reproducir un clip que vino con un modelo |
Play animation puede arrancar una animación de cualquier objeto, no solo del que lleva el evento, que es como un botón lanza una secuencia en la que participan varias cosas a la vez.
Movimiento
| En el editor | Hace |
|---|---|
| Follow object | seguir de forma continua — distancia, desplazamiento, suavizado y velocidad |
| Look at object | girarse hacia algo sin moverse |
| Stop following | detener ambas cosas |
| Fly along path | recorrer un camino |
| Stop path flight | detener eso |
Lógica
| En el editor | Hace |
|---|---|
| If — otherwise | comprobar una condición y ejecutar una de dos listas de pasos anidadas |
| Set variable | fijar, sumar a, o alternar una variable |
| Send signal | emitir una señal — a los destinos, o a todo el mundo |
| Wait, then | esperar antes de ejecutar los pasos anidados dentro |
Puntero
Lock pointer y Release pointer ocultan el cursor del ratón y entregan su movimiento a tu escena, que es lo que necesita un juego en primera persona para que el puntero no se escape de la ventana.
Condiciones
if_action es un paso, no una propiedad del evento, así que las condiciones se anidan, y «un si
dentro de un si» es como se consiguen más de dos desenlaces.
Lo que mira la condición lo fija su fuente:
| Fuente | Comprueba | Usando |
|---|---|---|
always | nada — siempre cierto | — |
variable | el valor de una variable | variable, operador, valor |
distance | a qué distancia está el objeto del evento de otro | destino, operador, umbral |
state | en qué state está otro objeto | destino, state |
visible | si algo es visible | destino, indicador |
random | el azar | umbral, en porcentaje |
Los valores se leen con holgura: 3 se convierte en número, true en booleano, y lo demás sigue
siendo texto. == y != comparan de forma exacta; el resto de operadores comparan como números.
Variables, señales y temporizadores
Las variables duran lo que dura la visita, no el proyecto: empiezan vacías cada vez que alguien abre tu experiencia. Dales sus valores iniciales desde un evento al arrancar la escena. Son las mismas variables que un script ve como globals.
Las señales (emit_signal → on-signal) encadenan eventos sin copiar pasos: varios eventos
escuchan level-complete, y cualquier cosa puede emitirlo. Una señal que se reemite a sí misma se
detiene tras ocho vueltas en lugar de congelar el fotograma.
Los temporizadores arrancan cuando su objeto cobra vida y se reinician cuando se desactiva. Volver a activarlo reinicia la cuenta en vez de soltar una ráfaga de ticks perdidos.
States
Un state es una instantánea con nombre de los ajustes de un objeto: posición, color, visibilidad, lo que quieras. Cambiar a un state aplica la instantánea, y cambiar con una duración hace que la transición sea suave.
Los states son la forma limpia de construir un interruptor, un resaltado o una puerta abierta o cerrada, sin animar nada a mano.
Cambiar un objeto mientras uno de sus states está activo es editar la instantánea de ese state, no el objeto. Es exactamente lo que quieres al construir states, y profundamente confuso cuando no te habías dado cuenta de que había uno seleccionado.
Re-tracking
En escenas AR, el modo de re-tracking de cada evento decide qué pasa cuando el marcador se pierde y se vuelve a encontrar: empezar de cero al momento, no reiniciar nunca, o reiniciar cuando los pasos en curso hayan terminado.
Si además escribes scripts
Eventos, patches y scripts comparten un mismo vocabulario: el mismo toque llega a los tres.
El mismo disparador en el mismo objeto, cableado a la vez como evento y como script, se ejecuta dos veces. Si algo se dispara por duplicado, casi siempre es por esto.
Siguiente: Animación — hacer que las cosas se muevan.