Información actualizada sobre esta entrada
Este artículo pertenece a una serie que consiste en hacer un juego simple en primera persona acerca de encontrar objetos dentro de un laberinto. Es una de mis primeras series de cuando empecé el canal, ahora he mejorado mucho este proyecto y puedes descargar el código fuente para importarlo en tu propio proyecto de Unity. Algún día vamos a hacer un remake de esta serie, suscríbete a mi canal para estar al tanto del nuevo contenido sobre Blender, Unity y programación.
Sígueme en itch.io y descarga el código fuente de este proyecto
PUEDES TESTEAR ESTE JUEGO AQUÍ. TAL VEZ TARDE UN POCO EN CARGAR
🔻
MOVEMENT: WASD CAMERA LOOK: MOUSE
Introducción al artículo original
Vamos a ver cómo crear un terreno en Unity utilizando sus propias herramientas y vamos a crear un laberinto usando los prefabricados que se configuraron en el segundo artículo del proyecto, clic aquí para descargar los archivos y ver cómo configurar los prefabs.
Página principal del proyecto
Vídeo relacionado a este artículo
Descripción del objetivo
Crear el laberinto
Para crear un modelo del laberinto vamos a utilizar los prefabricados que creamos anteriormente, los colocaremos en la jerarquía y comenzaremos a duplicarlos y acomodarlos en el espacio, como se observa en la siguiente figura.
Crear terreno en Unity
Para crear un terreno en Unity usaremos el GameObject “Terrain”, el cual nos permitirá modificar su relieve y texturas de manera simple utilizando distintos pinceles y parámetros.
Archivos de descarga
Primero descargamos el siguiente archivo Zip, extraemos las carpetas y las llevamos a Unity.
Lo siguiente que hacemos es eliminar todos los elementos pertenecientes al escenario.
Componente Terrain – Unity
Como se dijo anteriormente usaremos el componente Terrain para crear un relieve montañoso para el terreno.
Este componente utiliza “Height Maps” o mapas de altura para crear relieves, estos mapas son texturas en escala de grises en los cuales las areas completamente negras se mapean con altura mínima y las zonas blancas con altura máxima (ambas alturas configuradas en los parámetros), el resto de las zonas en gris tendrán una altura proporcial a su tono de color.
Podemos observar esto en la siguiente imagen.
En la jerarquía hacemos clic derecho > 3D Object > Terrain.
En el escenario aparece un plano en blanco y en el inspector podemos ver que tiene dos componentes que lo definen, la componente Terrain y un Collider tipo Terrain.
Configuración del componente Terrain
Es importante que primero configuremos los parámetros básicos del terreno, como la dimensión y la diferencia que existirá entre la altura máxima y mínima. Luego podemos modificar estos parámetros pero probablemente perderemos el diseño que teníamos.
Como se observa en la figura 9, hacemos clic en el ícono del engranaje para ir a la configuración. Luego ingresamos los parámetros.
Lo único que voy a modificar es la resolución del terreno, que será de 1000 x 1000.
Configuración de las texturas
Podremos pintar el terreno utilizando distintos conjuntos de texturas que consistirán en mapas Albedo y de Normales. Primero vamos a seleccionar todos los mapas de normales que tengamos, en el inspector elegimos el tipo de textura como “Normal map” y aplicamos los cambios. Esto lo hacemos para todos los mapas de normales que tengamos.
A continuación seleccionamos nuevamente el terreno y hacemos clic en el ícono del pincel, luego en “Edit Textures…”, “Add Textures” (figuras 13 y 14).
En la ventana emergente podremos seleccionar una textura que representa el Albedo en los canales RGB y su canal Alpha se mapea en la suavidad. Otra textura para las Normales de la superficie. Además podemos configurar el tamaño del mosáico o TileSize utilizando los campos “Size” y “Offset” que se observan en la figura 15.
Hacemos clic en Select y elegimos primero el mapa Albedo y luego el de normales.
Haremos esto para todas las texturas que usaremos para pintar el terreno.
En la figura 17 se ven algunos valores que funcionan para los TileSizes.
Una vez que configuramos todas las texturas, deberíamos tenerlas todas disponibles para usarlas en la ventana Texturas en el inspector, como se observa en la figura 18.
Creación del laberinto
Primero para mantener las cosas ordenadas voy a crear un Empty GameObject que llamo “Maze”, dentro del cual estarán todos los prefabricados que utilice para hacer el laberinto.
Luego arrastro todos los prefabricados al escenario y comienzo a duplicarlos y moverlos para formar los pasillos.
Para facilitar el posicionamiento de las piezas podemos usar la vista ortográfica. En la figura 20 arriba a la derecha tenemos lo que se llama un “Gizmo” que muestra los ejes X en rojo y Z en azul, haciendo cic en esas flechas podremos cambiar la vista de la escena y si hacemos clic en el cubo del centro podemos alternar la vista de Perspectiva a Ortográfica.
En las figuras 20 y 21 podemos ver cómo es esta vista ortográfica. El efecto que produce es como si todos los elementos se comprimieran en un plano, de modo que no observamos la profundidad.
También colocamos algunas puertas en el escenario. En el video 4 de la serie creamos el prefabricado de la puerta, aquí está el artículo.
Entramos en el modo juego y recorremos el laberinto para detectar problemas. En la figura 5 se observa una de las puertas mal colocadas.
Modelado del relieve
A continuación vamos a empezar a modelar las montañas. Seleccionamos el GameObject Terrain de la jerarquía y en el inspector hacemos clic en el primer ícono del componente (figura 27).
Luego seleccionamos algún patrón en la sección “Brushes” que se observa en la figura 28.
Lo siguiente que hacemos es pintar en el editor y el terreno irá ganando altura.
Otra herramienta útil es la de nivelar (seleccionada en la figura 30).
Esto nos permitirá establecer una determinada altura y al pasarla sobre el terreno en el editor, las zonas más bajas comenzarán a elevarse y las más altas a descender, esto se ilustra en las figuras 32 y 33.
Luego de jugar un buen rato con las herramientas terminé con algo similar a la figura 36.
El propósito más importante del relieve es cubrir el horizonte y de algún modo proveer de orientación al jugador.
Aplicar texturas al terreno
En la fase final de este artículo sobre cómo crear un terreno en Unity aplicaremos las texturas configuradas anteriormente.
Seleccionamos la herramienta pincel en el inspector, un patrón cualquiera y una textura.
Luego en el editor vamos recorriendo el terreno y pintando.
Podemos alternar las texturas y con esto evitar que el terreno se vea monótono con una única textura.
Las montañas tendrán una base de tierra y luego iremos aplicando en distintas partes la textura de roca.
De vez en cuando entramos en el modo juego para ver cómo se observa el relieve desde el interior del laberinto.
Conclusión
Hemos visto como fácilmente podemos crear un terreno en Unity utilizando las mismas herramientas que el motor nos provee. Además aplicamos distintas texturas para darle diversidad.
El ejercicio propuesto en este artículo y video es muy simple, pero con suficiente tiempo y práctica podemos construir un sin número de relieves.
Este tipo de terrenos tiene la limitación de que no se pueden construir cavernas o cuevas. Para eso tendremos que superponer otro modelo 3D.
Además hemos creado el laberinto utilizando los prefabricados configurados en entradas anteriores. Simplemente haciendo duplicados y moviendo en el espacio.
Podemos hacer laberintos tanto simples como complejos y armar un sistema de selección de nivel si así lo deseamos. Las posibilidades son ilimitadas.
Tengamos en cuenta que este proyecto es sólo un prototipo, para conseguir una mejor calidad gráfica hay que construir mejores modelos 3D y utilizar mayor diversidad de texturas y de mayor calidad. No estaría mal añadir elementos decorativos como escombros o árboles.