Objetos y escenas
Todo tu proyecto está hecho de objetos, y las escenas deciden cuándo aparecen. Aquí verás cómo encajan los objetos, los componentes y las escenas.
El editor dice objeto. El motor y la API de scripts dicen entidad (entity). En esta documentación usamos entidad solo cuando hablamos de código.
De qué está hecho un objeto
Un objeto contiene dos tipos de cosas:
- Componentes: son sus ajustes. Deciden qué es el objeto: su nombre, dónde está, qué aspecto tiene y a qué reacciona. Un objeto solo puede tener un componente de cada tipo.
- Objetos hijo: otros objetos colocados dentro de él. Cada hijo tiene sus propios componentes.
Esta es una lámpara con cuatro componentes:
Objeto "Lámpara"
├── Meta su nombre, si está activado, si es visible
├── Transform dónde está, cómo está girado, qué tamaño tiene
├── Model qué modelo 3D se dibuja
└── Events a qué reacciona
Son los nombres del motor. El inspector muestra Meta como General.
Y esta es la misma lámpara con una bombilla dentro. La bombilla es un objeto aparte, con sus propios componentes:
Objeto "Lámpara"
└── Objeto "Bombilla" ← un objeto aparte
├── Transform ← con sus propios componentes
└── Light
Una escena real tiene este aspecto. Detrás de cada nombre van sus componentes, y los hijos aparecen sangrados debajo de su padre:
Objeto "Salón" ◆ Anchor ← una escena: tiene un ancla
│
├── Objeto "Lámpara" ◆ Transform ◆ Model ◆ Events
│ └── Objeto "Bombilla" ◆ Transform ◆ Light
│
└── Objeto "Mesa" ◆ Transform ◆ Model ◆ RigidBody ◆ Collider
Todo lo que ves en este esquema es un objeto. Sus componentes deciden si es una escena, una lámpara o un cuerpo físico.
Usa un componente para una propiedad de este objeto. Usa un objeto hijo para algo independiente que debe moverse con él.
Si mueves la lámpara, la bombilla se mueve con ella, porque está dentro. Si quitas el componente de modelo de la lámpara, la bombilla no desaparece.
Crea objetos combinando componentes
No hay una lista de tipos de objeto entre los que elegir. Combinas componentes hasta tener lo que necesitas:
| Si le das a un objeto… | …obtienes |
|---|---|
| geometría + material | una forma visible |
| una referencia a un modelo | un modelo 3D importado |
| un componente de luz | una luz |
| un componente de texto | un texto |
| un cuerpo rígido + un colisionador | algo que la física puede mover |
| un ancla | una escena |
| un script o un patch | algo con comportamiento |
Por ejemplo, así se crea una pelota que rebota:
- Añade una geometría de esfera y un material. Ya puedes ver la pelota.
- Añade un cuerpo rígido y un colisionador. Ahora cae y rebota.
- Añade un script. Ahora puede hacer algo al tocar el suelo.
Cada componente añade una capacidad. Si quitas el componente, la capacidad se va con él.
Escenas, objetos y lógica del espacio
Te vas a encontrar con tres tipos de objetos. Parecen distintos, pero todos son objetos con componentes diferentes:
| Qué es | Tiene | No tiene |
|---|---|---|
| Una escena | un ancla e hijos | transform |
| Un objeto normal | un transform y lo que necesite | ancla |
| Comportamiento del espacio | un script o un patch, y ningún padre | transform ni ancla |
Una escena no tiene transform porque su posición viene del objeto real al que está anclada. El comportamiento del espacio no tiene transform porque no está colocado en el mundo. Es solo lógica que sigue funcionando.
¿Necesitas tres materiales en un modelo? Usa los slots de su componente de material. ¿Necesitas dos de cualquier otra cosa? Usa objetos hijo. Una lámpara con dos bombillas es un objeto lámpara con dos hijos.
Además, cada objeto tiene un nombre para que puedas encontrarlo, y puede tener un padre: el objeto dentro del que está.
Activado y visible
Estos dos interruptores se parecen en el inspector, pero hacen cosas distintas.
- Desactivado saca el objeto de la experiencia. No se dibuja y no se puede tocar. Sus scripts se detienen y sus eventos no se disparan. Es como si el objeto no existiera.
- Invisible solo hace que el objeto no se dibuje ni se pueda tocar. Sigue ahí: sus scripts siguen funcionando y, si tiene colisionador, la física sigue chocando con él (consulta qué cuenta como sólido).
Por ejemplo:
- Una pared que no se ve pero sigue bloqueando al jugador: hazla invisible.
- Un premio que aparece más tarde: déjalo desactivado hasta que lo necesites.
Padres e hijos
Los objetos forman un árbol. Cuando mueves un padre, sus hijos se mueven con él y mantienen su posición respecto a él. Así se construye cualquier cosa con piezas: la carrocería de un coche con cuatro ruedas dentro se mueve como un solo coche.
También se borran sus hijos, y los hijos de sus hijos. Si quieres conservar alguno, arrástralo fuera antes.
No puedes meter un objeto dentro de algo que ya está dentro de él. El editor no lo permite.
Una escena es la raíz de su árbol. Todos los objetos que añades a una escena están dentro del objeto de la escena, directamente o dentro de otro objeto. Cualquier otro objeto sin padre no está en ninguna escena. Pertenece a todo el espacio, como se explica más abajo en Lógica para todo el espacio.
Escenas y anclas
Una escena es un objeto con un ancla. El ancla decide cuándo aparece la escena:
| Ancla | Tu escena aparece cuando… |
|---|---|
image | la cámara reconoce una imagen impresa |
qr | se escanea un código QR |
geo | el visitante está en un lugar concreto |
face | se detecta una cara |
surface | el visitante la coloca en un suelo, una pared, un techo o una mesa |
panorama | se abre un entorno de 360° |
3d | de inmediato: una escena 3D normal, sin AR |
VPS coloca el contenido con un mapa escaneado de un lugar real. No es un tipo de ancla aparte. Configura una escena de superficie y activa VPS.
Varias escenas en un mismo marcador
Las escenas con el mismo disparador (la misma imagen, el mismo código QR o el mismo lugar) forman un grupo. En un grupo solo se muestra una escena cada vez.
Úsalo para contar una historia. El mismo póster abre el primer capítulo y, más adelante, el segundo. Solo cambias qué escena del grupo está activa.
El editor añade dos eventos para mostrar y ocultar una escena: on-detect la muestra y
on-lost la oculta. Son eventos normales, así que puedes cambiarlos. Por ejemplo, puedes dejar
el contenido en pantalla cuando el marcador sale del encuadre de la cámara. Los visitantes suelen
preferirlo, porque si no, el contenido desaparece en cuanto les tiembla la mano.
Ajustes de una escena de superficie
Las escenas de superficie tienen tres ajustes independientes. Es fácil confundirlos:
- Qué superficies se aceptan: suelo, pared, techo, mesa.
- Cómo se coloca el contenido: automáticamente sobre una superficie detectada o donde toque el visitante.
- Qué motor de seguimiento se usa: solo importa en la web. En las apps nativas, este ajuste no tiene efecto.
Lógica para todo el espacio
Un objeto con comportamiento y sin padre no pertenece a ninguna escena. Pertenece a todo el espacio. Sigue funcionando mientras las escenas aparecen y desaparecen, y recibe todos los eventos de cualquier parte del espacio.
Úsalo para un marcador de puntos, un controlador general o para recordar qué eligió el visitante. Un script dentro de una escena se detiene en cuanto esa escena se detiene.
Cómo etiqueta el editor los objetos
El editor muestra etiquetas como model, primitive o text. Elige la etiqueta a partir de los componentes del objeto y los comprueba en este orden:
splat reference → splat
model + skinning → animated model
model → static model
video → video ← se comprueba antes que geometry
text → text
audio → audio
light → light
geometry → primitive
anything else → object
Por eso un plano que reproduce un vídeo aparece como video y no como primitive. Solo puedes editar el material y la geometría en las primitivas y en los modelos estáticos.
Siguiente: Componentes: qué controla cada componente.