Saltar al contenido principal

2. Construye dos habitaciones

Crearás un recurso de cubo subdividido y lo reutilizarás para los pisos, las paredes y la puerta. Así aprenderás el flujo completo de Level Builder con un nivel lo suficientemente pequeño como para depurarlo fácilmente.

Crea un bloque reutilizable para las habitaciones​

  1. Abre View > Level Builder.
  2. Selecciona New en Tools > Create, o Create Primitive en el Inspector de la malla vacía.
  3. Elige Cube, establece Uniform Size en 1 y selecciona Create.
  4. Haz clic dentro del área de visualización de Level Builder y cambia al modo Face con 3.
  5. Presiona A para seleccionar todas las caras.
  6. Selecciona Subdivide una vez.
  7. Revisa el panel de validación de Level Builder. Resuelve cualquier error antes de guardar.
  8. Desplázate hacia abajo en el panel izquierdo Tools hasta Asset y selecciona Save. En Save Mesh Asset, escribe RoomBlock y selecciona Save Asset.
  9. Selecciona Place en la misma sección Asset. En Place Mesh in Scene, conserva Gameplay Mode en Blocking y Collider Shape en AABB; después selecciona Place Mesh.

El recurso fuente se guarda en Assets/Meshes/RoomBlock.pmsh; el GameObject de la escena hace referencia al GUID de la malla importada. Place Mesh in Scene también crea un Collider de tipo AABB, por lo que el primer bloque colocado ya funciona como geometría sólida.

La subdivisión es un punto de partida; no garantiza que cada pared escalada cumpla el presupuesto después del preprocesamiento. Valida la escena final con sus transformaciones reales. Las mallas RoomBlock importadas no reciben automáticamente todas las operaciones de preprocesamiento y división en bloques de las primitivas integradas. Si fallan las pruebas con la cámara cercana o las de paquetes de dibujo, divide las piezas largas o modifica su topología y vuelve a revisar las colisiones.

La malla RoomBlock después de subdividirla, con Place Mesh in Scene configurado en Blocking y AABB

RoomBlock subdividido tiene 48 triángulos. Save y Place están en la sección Asset, al final del panel Tools de la izquierda. Colócalo con un collider AABB sólido para crear los pisos, las paredes y la puerta.

Abre la imagen para verla a tamaño completo.

Arma el nivel​

Regresa a la pestaña Scene. En el Inspector, cambia el nombre del primer GameObject colocado a Floor A. Duplícalo con Ctrl+D y usa las siguientes transformaciones para armar el nivel completo. Todas las filas usan la misma malla RoomBlock y conservan el Collider generado.

GameObjectPosition X/Y/ZScale X/Y/Z
Floor A0, -0.1, 06, 0.2, 6
Floor B0, -0.1, -66, 0.2, 6
Room A Left Wall-3, 1.5, 00.2, 3, 6
Room A Right Wall3, 1.5, 00.2, 3, 6
Room A Back Wall0, 1.5, 36, 3, 0.2
Divider Left-2, 1.5, -32, 3, 0.2
Divider Right2, 1.5, -32, 3, 0.2
Room B Left Wall-3, 1.5, -60.2, 3, 6
Room B Right Wall3, 1.5, -60.2, 3, 6
Room B Far Wall0, 1.5, -96, 3, 0.2
Door0, 1.2, -31.8, 2.4, 0.25

Las dos piezas divisorias dejan una abertura de dos unidades alrededor del origen. Door ocupa esa abertura hasta que el trigger la desactiva.

Revisa las colisiones antes de probar la jugabilidad​

Selecciona varios GameObjects del piso y las paredes y confirma lo siguiente:

  • Mesh Renderer hace referencia a RoomBlock;
  • existe un Collider;
  • Is Trigger está desactivado;
  • el collider coincide con el bloque visible escalado;
  • no hay dos superficies de piso en el mismo plano.

Evita agregar un segundo piso a la misma altura. Las superficies coplanares o casi coplanares compiten en la tabla de ordenamiento de PS1 y pueden parpadear o dibujarse en el orden incorrecto.

Materiales opcionales​

Usa tres materiales de color uniforme para que el nivel sea más fácil de interpretar. En el panel Project, selecciona Assets, abre el menú de creación y elige Material. Cambia el nombre de cada material nuevo desde su menú contextual y configura Base Color en su Inspector:

MaterialBase Color (RGB)Asignar a
Floor82, 126, 134Floor A y Floor B
Walls192, 174, 132Las ocho piezas de pared y división
Door194, 124, 65Door

Conserva Render Mode en Opaque, Double-Sided desactivado y Vertex Color activado. Selecciona cada GameObject y elige el material en Mesh Renderer > Material. Estos son los colores de las capturas del tutorial. La estructura de las habitaciones no requiere texturas.

Configura la iluminación de la escena​

Selecciona Scene Objects en la Hierarchy para mostrar Scene Settings en el Inspector. Haz clic en el color Ambient Light, introduce el valor hexadecimal FFFFFF (RGB 255, 255, 255) y haz clic fuera del selector. Conserva Background Color en su valor predeterminado RGB 52, 52, 52 y GPU Dithering activado.

Este tutorial usa luz ambiental intensa y uniforme para que las habitaciones de color plano sean fáciles de interpretar. Más adelante puedes agregar luces direccionales y reducir la luz ambiental. Revisa el resultado en la pestaña Game y guarda con Ctrl+S.

El nivel de dos habitaciones terminado, con Floor A seleccionado en el Inspector

Room A y Room B comparten una abertura para la puerta. Floor A usa RoomBlock, el material Floor y un collider AABB sólido; su Transform escala juntos la malla y el collider.

Abre la imagen para verla a tamaño completo.

Punto de revisión 2​

Presiona Ctrl+S y entra en Play Mode. Confirma lo siguiente:

  • el jugador cae sobre Floor A y permanece encima;
  • el jugador no puede atravesar las paredes exteriores;
  • la puerta bloquea la abertura;
  • ninguna cara desaparece cuando la cámara se acerca a una pared;
  • no hay z-fighting visible entre las piezas del piso.

Si una colisión no coincide con el bloque visible, selecciona ese GameObject y ajusta su Collider antes de continuar. Siguiente: Crea el trigger de la puerta y el script Lua.