Saltar al contenido principal

Eventos

Los eventos hacen que tu escena reaccione a las personas sin escribir código. Cuando pasa algo, el objeto hace lo que hayas puesto en la lista.

CUANDO    alguien toca la puerta
ENTONCES ábrela en 600 ms
desactiva el cartel «cerrado»
envía la señal «door-open»

El cuando es un disparador. El entonces es una lista de pasos. Un objeto puede tener tantos eventos como quieras, y cada uno funciona por su cuenta.

Añadir un evento​

  1. Selecciona el objeto.
  2. En el inspector, haz clic en + new component y elige Events. El componente empieza con un evento, configurado con Press on the object.
  3. Haz clic en el evento. Se abre el panel Event settings. Para añadir otro evento, haz clic en + add event.
  4. Elige un disparador o deja Press on the object.
  5. Haz clic en + add action y elige un paso. La lista tiene un buscador, y los pasos están agrupados en Actions, Animations, States y Logic.
  6. Añade más pasos de la misma forma. Se ejecutan en orden.
Dos listas para tener a mano

La referencia de disparadores recoge todos los disparadores. La referencia de pasos recoge todos los pasos. Las dos están siempre al día. Junto al nombre que ves en el editor, muestran el nombre en código para los scripts: Send signal es emit_signal, y Signal es on-signal.

Disparadores​

Un disparador es el momento en que empieza un evento. Las referencias de arriba recogen los ajustes de cada disparador. Las tablas de abajo explican para qué sirve cada uno.

Puntero y teclas​

En el editorSe dispara cuando
Press on the objectalguien lo toca o hace clic en él; tiene ramas para clic, pulsar y soltar
Hoverel cursor entra en el objeto o sale de él
Double clickhay dos clics en el mismo objeto con menos de 300 ms entre ellos
Long pressalguien mantiene pulsado el objeto 450 ms sin moverlo
Keyse pulsa o se suelta una tecla
Scrollgira la rueda del ratón; puedes elegir una dirección
Dragalguien arrastra el contenido AR que ha colocado
Pinchalguien pellizca el contenido AR colocado para cambiar su tamaño
Rotatealguien gira el contenido AR colocado

Drag, Pinch y Rotate solo funcionan en escenas de tipo surface, porque actúan sobre el contenido que ha colocado el visitante. Se disparan una y otra vez mientras se mueve el dedo, no solo una vez.

Ciclo de vida​

En el editorSe dispara cuando
Launchempieza la escena; lo reciben todos los objetos
Resizecambia el tamaño de la ventana o de la pantalla
Pausela app o la pestaña pasa a segundo plano
Resumela app o la pestaña vuelve a primer plano
Visibilityel objeto se muestra o se oculta
Detén el sonido en Pause

Los sonidos siguen sonando cuando un visitante cambia de app, a menos que los detengas. Detenlos en Pause, por ejemplo cambiando a un estado en el que el sonido está silenciado, y vuelve a iniciarlos en Resume.

Seguimiento AR​

En el editorSe dispara cuando
Detectse encuentra el marcador o la superficie
Tracking lostse pierde el seguimiento
Placedel visitante ha colocado el contenido
VPS readyse ha iniciado el posicionamiento
VPS localizedse ha encontrado la posición real del visitante
VPS localization failedtodavía no se ha encontrado la posición
VPS errorel posicionamiento no se ha podido poner en marcha

El editor solo te ofrece los disparadores que puede producir el ancla de tu escena. Detect se dispara una vez, cuando empieza el seguimiento, no en cada fotograma.

Que falle la localización VPS es normal

VPS localization failed se dispara a menudo mientras el visitante camina buscando un punto que el mapa reconozca. Tómalo como «sigue intentándolo», no como un error que haya que mostrar.

Tiempo y distancia​

En el editorSe dispara cuando
Delayuna vez, pasado un tiempo
Every N secondsuna y otra vez; con 0 repeticiones se repite sin fin
Distancealgo se acerca a menos de cierta distancia, o se aleja
Variable changeuna variable recibe un valor nuevo

Distance tiene la opción At start. Actívala si un objeto puede estar ya cerca cuando se abre la escena. Sin ella, el evento espera a que algo se mueva.

Estados, colisiones y señales​

En el editorSe dispara cuando
State activeeste objeto entra en el estado que elegiste
State inactiveeste objeto sale de ese estado
Collisioneste objeto toca a otro; usa Collide with para limitar con cuáles
UI actionalguien ha pulsado un botón en una tarjeta de interfaz
Signalotro evento ha enviado una señal
Game controlsel personaje pasa a estar quieto, a moverse, a correr o a saltar

Ramas​

Algunos disparadores tienen ramas, así que un solo evento puede atender todos los resultados. Por ejemplo, un único evento Distance puede responder tanto a «se ha acercado» como a «se ha alejado».

DisparadorRamas
DistanceOn coming closer, On moving away
KeyOn press, On release
HoverOn enter, On leave
Press on the objectOn click or tap, On press, On release
VisibilityOn show, On hide
Game controlsOn idle, On move, On run, On jump

Cada rama tiene su propia lista de pasos. Un disparador sin ramas tiene una sola lista, On activation.

Elegir a qué objetos afecta un paso​

Todos los pasos tienen el campo Target object.

  • Déjalo vacío y el paso actúa sobre el objeto al que pertenece el evento. Es lo habitual.
  • Elige objetos y el paso actúa sobre ellos. Así es como un solo botón abre tres puertas.

Los toques llegan a los objetos padre​

Un toque, un hover o una acción de una tarjeta llegan al objeto y a todos sus padres.

Así que puedes poner un solo evento en un grupo, y captará los toques en cualquier cosa que haya dentro. No hace falta copiar el mismo evento en cuarenta objetos.

Esto también significa que:

  • «tocar en cualquier parte de este panel» es un solo evento en el panel;
  • si mueves el cursor entre dos hijos del mismo padre, el padre no recibe ni la entrada ni la salida del hover, porque el cursor no ha salido de él.

Algunos disparadores funcionan de otra forma:

  • Collision solo se dispara en los objetos que se han tocado.
  • Key, Scroll, Resize y Launch no tienen que ver con un objeto concreto, así que los reciben todos los objetos.

Los eventos, los patches y los scripts reciben los mismos toques, teclas y colisiones. Algunos disparadores llegan a los scripts con otros nombres. Consulta La API de ctx.

Gestiona cada disparador en un solo sitio

Si el mismo objeto reacciona al mismo disparador en un evento y en un script, se ejecuta dos veces. Cuando algo se dispara dos veces, casi siempre es por esto.

Usar varias teclas en un evento​

«Saltar con Space o W» es un solo evento, no dos. Haz clic en el campo Key y pulsa la primera tecla. Luego haz clic en or y pulsa la siguiente. Añade todas las que necesites.

  • Cada tecla de la lista funciona por su cuenta. Un modificador como Ctrl solo se aplica a la tecla con la que se pulsó.
  • Los demás ajustes del disparador, como Auto-repeat, se aplican a todas las teclas de la lista.
  • Un botón del ratón también funciona en el mismo campo. En ese caso, la lista solo admite botones del ratón.

El evento guarda estas teclas como texto. Un asistente o un script las escribe así:

ArrowUp        ctrl+KeyW        KeyA+KeyS        Space+double        mouse:middle

En lugar de una tecla, también puedes usar una asignación de teclas (key binding). Las asignaciones se configuran en Project settings → Key bindings. Cambia ahí una sola vez la tecla de «saltar», y todos los eventos que usan «saltar» se actualizan. Es útil cuando alguien te pide controles para zurdos.

Pasos​

La referencia de pasos recoge los ajustes de cada paso.

En el editorQué hace
Scene transitionpasa a otra escena
Space transitionpasa a otro espacio, y a una escena concreta si eliges una
Open URLabre un enlace, en esta pestaña o en una nueva
Open messengerabre Facebook, VK, OK, Instagram, Telegram, WhatsApp o Viber
Call phone numberinicia una llamada de teléfono
Compose emailabre un correo nuevo
File downloaddescarga un archivo de tu proyecto
Contact downloadofrece una tarjeta de contacto creada con los campos que rellenes

Open messenger necesita datos distintos según la app:

  • un ID de página para Facebook, VK y OK;
  • un nombre de usuario para Instagram y Telegram;
  • un número de teléfono para WhatsApp y Viber.

Mostrar, ocultar y cambiar objetos​

En el editorQué hace
Show / hide objectmuestra u oculta los objetos de destino; en una escena, la hace activa
Set statecambia a un estado que has guardado, de forma suave si le pones duración
Override propertiesaplica unos pocos valores una vez, como un estado temporal

Animación​

En el editorQué hace
Play animationreproduce una animación de la línea de tiempo, con modo de bucle, repeticiones, velocidad y retraso
Stop animationdetiene una

Play animation puede iniciar una animación que pertenece a cualquier objeto. Así, un solo botón puede iniciar una secuencia que mueve varias cosas a la vez.

Para mover, desvanecer o cambiar de color algo, crea una animación en el panel Animation y luego reprodúcela con este paso. Para un solo cambio basta con Set state con una duración.

Los proyectos creados antes también pueden tener los pasos Transformation, Opacity, Material, Bone transform y Built-in animation. Siguen funcionando en esos proyectos, pero el editor ya no los ofrece. Material, por ejemplo, mezcla el color, la opacidad, el brillo y los ajustes de superficie de los objetos de destino con los de un material guardado, y conserva el tipo y las texturas de cada ranura.

Movimiento​

En el editorQué hace
Follow objectsigue a otro objeto todo el rato; tú ajustas la distancia, el desplazamiento, el suavizado y la velocidad
Look at objectse gira hacia algo sin desplazarse
Stop followingdeja de seguir y de mirar
Fly along pathrecorre una trayectoria
Stop path flightdetiene el recorrido por la trayectoria

Lógica​

En el editorQué hace
If — otherwisecomprueba una condición y ejecuta una de dos listas de pasos
Set variableda un valor a una variable, le suma algo o invierte su valor
Send signalenvía una señal a los objetos seleccionados o a toda la escena
Wait, thenespera y después ejecuta los pasos que tiene dentro

Puntero​

Lock pointer oculta el cursor del ratón y permite que la escena use su movimiento. Los juegos en primera persona lo necesitan para que el cursor no se salga de la ventana. Release pointer devuelve el cursor.

Disparadores y pasos de plugins​

Un plugin añadido a tu proyecto puede traer sus propios disparadores y pasos. Aparecen en las listas bajo el nombre del plugin, y se usan igual que los que vienen incluidos.

  • Solo están en los proyectos a los que se ha añadido el plugin.
  • El disparador de un plugin puede tener ajustes. En ese caso, el evento solo se ejecuta cuando coinciden. Deja un ajuste vacío para reaccionar siempre.
  • Si se quita el plugin del proyecto, sus disparadores ya no se disparan nunca y sus pasos se saltan.

Para crear los tuyos, consulta Código de ejecución.

Añadir una condición​

Una condición es un paso: If — otherwise. Puedes meter uno dentro de otro para tener más de dos resultados.

Elige qué comprueba el paso en el campo Condition:

En el editorQué compruebaCampos que rellenas
Alwaysnada; siempre se cumple—
Variableel valor de una variableVariable, Compare, Value
Distancea qué distancia está el objeto de este evento de otro objetoObject, Compare, Threshold
Stateen qué estado está otro objetoObject, State
Visibilitysi algo está visibleObject, Expected
Chanceuna probabilidad al azarThreshold, en porcentaje

Cómo se comparan los valores:

  • 3 se lee como número, true como sí/no, y todo lo demás como texto.
  • == y != comprueban si coinciden exactamente.
  • >, >=, < y <= comparan números.

Variables, señales y temporizadores​

Las variables duran una visita. Empiezan vacías cada vez que alguien abre tu proyecto. Para darles valores iniciales, asígnalos en un evento con el disparador Launch. Un script ve estas mismas variables como globales.

Las señales permiten que un evento inicie otros sin copiar pasos. Por ejemplo, varios eventos pueden escuchar level-complete, y cualquier evento puede enviarla. Si una señal se sigue enviando a sí misma, se detiene tras ocho vueltas para que la escena no se congele.

Los temporizadores (Delay y Every N seconds) empiezan cuando su objeto se activa y se reinician cuando se desactiva. Cuando el objeto vuelve a activarse, la cuenta empieza de cero. Los intervalos que se han perdido no se disparan todos de golpe.

Estados​

Un estado es un aspecto guardado de un objeto: su posición, su color, si está visible y más. El paso Set state cambia a ese estado. Si le pones una duración, el cambio es suave.

Usa estados para un interruptor, un resaltado o una puerta abierta o cerrada.

Mientras hay un estado seleccionado, tus cambios van a ese estado

Si uno de los estados del objeto está seleccionado, al cambiar el objeto cambias ese estado. Es justo lo que quieres cuando creas estados. Pero confunde si olvidaste que había un estado seleccionado.

Más información en Estados.

Recuperar el seguimiento​

En las escenas AR, cada evento tiene un modo de recuperación del seguimiento (re-tracking). Define qué pasa cuando el marcador se pierde y se vuelve a encontrar:

  • los pasos vuelven a empezar enseguida;
  • los pasos no vuelven a empezar nunca;
  • los pasos vuelven a empezar cuando terminan los que están en curso.

Siguiente: Animación — haz que las cosas se muevan.