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
- Selecciona el objeto.
- En el inspector, haz clic en + new component y elige Events. El componente empieza con un evento, configurado con Press on the object.
- Haz clic en el evento. Se abre el panel Event settings. Para añadir otro evento, haz clic en + add event.
- Elige un disparador o deja Press on the object.
- 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.
- Añade más pasos de la misma forma. Se ejecutan en orden.
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 editor | Se dispara cuando |
|---|---|
| Press on the object | alguien lo toca o hace clic en él; tiene ramas para clic, pulsar y soltar |
| Hover | el cursor entra en el objeto o sale de él |
| Double click | hay dos clics en el mismo objeto con menos de 300 ms entre ellos |
| Long press | alguien mantiene pulsado el objeto 450 ms sin moverlo |
| Key | se pulsa o se suelta una tecla |
| Scroll | gira la rueda del ratón; puedes elegir una dirección |
| Drag | alguien arrastra el contenido AR que ha colocado |
| Pinch | alguien pellizca el contenido AR colocado para cambiar su tamaño |
| Rotate | alguien 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 editor | Se dispara cuando |
|---|---|
| Launch | empieza la escena; lo reciben todos los objetos |
| Resize | cambia el tamaño de la ventana o de la pantalla |
| Pause | la app o la pestaña pasa a segundo plano |
| Resume | la app o la pestaña vuelve a primer plano |
| Visibility | el objeto se muestra o se oculta |
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 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 | se ha iniciado el posicionamiento |
| VPS localized | se ha encontrado la posición real del visitante |
| VPS localization failed | todavía no se ha encontrado la posición |
| VPS error | el 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.
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 editor | Se dispara cuando |
|---|---|
| Delay | una vez, pasado un tiempo |
| Every N seconds | una y otra vez; con 0 repeticiones se repite sin fin |
| Distance | algo se acerca a menos de cierta distancia, o se aleja |
| Variable change | una 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 editor | Se dispara cuando |
|---|---|
| State active | este objeto entra en el estado que elegiste |
| State inactive | este objeto sale de ese estado |
| Collision | este objeto toca a otro; usa Collide with para limitar con cuáles |
| UI action | alguien ha pulsado un botón en una tarjeta de interfaz |
| Signal | otro evento ha enviado una señal |
| Game controls | el 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».
| Disparador | Ramas |
|---|---|
| Distance | On coming closer, On moving away |
| Key | On press, On release |
| Hover | On enter, On leave |
| Press on the object | On click or tap, On press, On release |
| Visibility | On show, On hide |
| Game controls | On 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.
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.
Enlaces, llamadas y cambios de escena
| En el editor | Qué hace |
|---|---|
| Scene transition | pasa a otra escena |
| Space transition | pasa a otro espacio, y a una escena concreta si eliges una |
| Open URL | abre un enlace, en esta pestaña o en una nueva |
| Open messenger | abre Facebook, VK, OK, Instagram, Telegram, WhatsApp o Viber |
| Call phone number | inicia una llamada de teléfono |
| Compose email | abre un correo nuevo |
| File download | descarga un archivo de tu proyecto |
| Contact download | ofrece 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 editor | Qué hace |
|---|---|
| Show / hide object | muestra u oculta los objetos de destino; en una escena, la hace activa |
| Set state | cambia a un estado que has guardado, de forma suave si le pones duración |
| Override properties | aplica unos pocos valores una vez, como un estado temporal |
Animación
| En el editor | Qué hace |
|---|---|
| Play animation | reproduce una animación de la línea de tiempo, con modo de bucle, repeticiones, velocidad y retraso |
| Stop animation | detiene 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 editor | Qué hace |
|---|---|
| Follow object | sigue a otro objeto todo el rato; tú ajustas la distancia, el desplazamiento, el suavizado y la velocidad |
| Look at object | se gira hacia algo sin desplazarse |
| Stop following | deja de seguir y de mirar |
| Fly along path | recorre una trayectoria |
| Stop path flight | detiene el recorrido por la trayectoria |
Lógica
| En el editor | Qué hace |
|---|---|
| If — otherwise | comprueba una condición y ejecuta una de dos listas de pasos |
| Set variable | da un valor a una variable, le suma algo o invierte su valor |
| Send signal | envía una señal a los objetos seleccionados o a toda la escena |
| Wait, then | espera 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 editor | Qué comprueba | Campos que rellenas |
|---|---|---|
| Always | nada; siempre se cumple | — |
| Variable | el valor de una variable | Variable, Compare, Value |
| Distance | a qué distancia está el objeto de este evento de otro objeto | Object, Compare, Threshold |
| State | en qué estado está otro objeto | Object, State |
| Visibility | si algo está visible | Object, Expected |
| Chance | una probabilidad al azar | Threshold, en porcentaje |
Cómo se comparan los valores:
3se lee como número,truecomo 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.
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.