#8 Crear terreno en Unity. Construir el laberinto. [Laberinto en Primera Persona]

Por GameDevTraum

Introducción

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

Antes de comenzar te invito a ver el siguiente video.



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.

escena en unity 3d, generacion de laberinto utilizando prefabricados
Fig. 1: Armado del escenario utilizando los prefabricados que se hicieron en el video 2.

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.

escena en unity 3d en la que se observa como crear un terreno en unity
Fig. 2: Utilizando las herramientas de Unity podremos esculpir relieve en el terreno.

Archivos de descarga

Primero descargamos el siguiente archivo Zip, extraemos las carpetas y las llevamos a Unity.

143 Descargas
carpetas de texturas que vienen en el archivo de descarga, unity 3d
Fig. 3: Extraemos las texturas del archivo de descarga para añadirlas al proyecto.

mapas de las texturas que vienen en el archivo de descarga, texturas para unity 3d
Fig. 4: Cada textura viene con sus mapas Albedo, Metallic y Normal.


Lo siguiente que hacemos es eliminar todos los elementos pertenecientes al escenario.

escena simple en unity 3d, suelo con textura cesped
Fig. 5: Comenzamos limpiando completamente el 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.

mapa de altura o height maps para general relieve en 3d y crear terreno en unity 3d
Fig. 6: El terreno funciona con Height maps o mapas de altura.

En la jerarquía hacemos clic derecho > 3D Object > Terrain.

jerarquia en unity 3d, crear terreno en unity
Fig. 7: Desde la jerarquía creamos un GameObject tipo terreno.

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.

parametros del componente terreno en el inspector de unity 3d
Fig. 8: El terreno aparece en el escenario y podemos ver sus propiedades en el inspector.


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.

boton configuracion del gameobject terreno, crear terreno en unity 3d
Fig. 9: Primero configuramos los parámetros básicos del inspector.

parametros del componente terreno en el inspector de unity 3d
Fig. 10: Ajustamos la resolución que tendrá el terreno.

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.

mapas de las texturas que vienen en el archivo de descarga, texturas para unity 3d
Fig. 11: Seleccionamos las texturas tipo Normal Map o mapa de normales.

seleccionar tipo de textura en unity 3d
Fig. 12: En el inspector podremos seleccionar el tipo de textura. Seleccionamos Normal Map y aplicamos.

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).

herramienta pincel en componente terreno unity 3d
Fig. 13: Seleccionamos la herramienta pincel en el componente terreno.

agregar texturas al terreno en unity3d
Fig. 14: Debemos configurar al menos una pintura para el terreno.

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.

ventana para seleccionar textura albedo y normal para pintar terreno en unity 3d
Fig. 15: En la ventana emergente seleccionamos una textura Albedo y otra de normales.

Hacemos clic en Select y elegimos primero el mapa Albedo y luego el de normales.

ventana para seleccionar textura albedo y normal para pintar terreno en unity 3d
Fig. 16: Debemos asegurarnos de seleccionar los mapas apropiados.


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.

textura seamless para suelos, cesped con margaritas, cesped con hojas, tierra y roca
Fig. 17: Valores del tamaño del mosaico que funcionan.

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.

unity 3d componente terreno, texturas seleccionadas
Fig. 18: Todas las texturas de la descarga han sido configuradas.


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.

jerarquia en unity 3d, empty object, lights, cameras
Fig. 19: Creamos un empty object que contendrá todas las piezas del laberinto.

Luego arrastro todos los prefabricados al escenario y comienzo a duplicarlos y moverlos para formar los pasillos.

unity 3d diseño de nivel, armado de laberinto utilizando prefabricados
Fig. 20: Comenzamos colocando todos los prefabricados en el escenario.

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.

unity 3d diseño de nivel, armado de laberinto utilizando prefabricados
Fig. 21: Duplicamos las piezas y las movemos en el escenario para construir el laberinto.

unity 3d diseño de nivel, armado de laberinto utilizando prefabricados
Fig. 22: Utilizando la vista ortográfica y acercando la cámara nos aseguramos que las piezas encajen.

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.

unity 3d diseño de nivel, armado de laberinto utilizando prefabricados
Fig. 23: Colocamos varias puertas en el laberinto.

Entramos en el modo juego y recorremos el laberinto para detectar problemas. En la figura 5 se observa una de las puertas mal colocadas.

unity 3d diseño de nivel, armado de laberinto utilizando prefabricados
Fig. 24: Probamos la escena para detectar problemas.

unity 3d puerta mal colocada
Fig. 25: Recorriendo el laberinto encontramos una puerta que estaba mal posicionada.


unity 3d puerta mal colocada
Fig. 26: Paramos el modo juego para corregir el problema.

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.

herramienta elevacion para crear terreno en unity 3d
Fig. 27: Seleccionamos la herramienta de elevación en el componente terreno.

pinceles para aplicar la modificacion del terreno, crear terreno en unity 3d
Fig. 28: Elegimos un pincel para aplicar la modificación en el terreno.

Lo siguiente que hacemos es pintar en el editor y el terreno irá ganando altura.

modelado de terreno en unity 3d usando componente terrain
Fig. 29: Comenzamos a pintar regiones del terreno para producir elevaciones y crear relieve.

Otra herramienta útil es la de nivelar (seleccionada en la figura 30).

herramienta de nivelacion de terreno para crear terrenos en unity 3d
Fig. 30: Seleccionamos la herramienta de nivelación de terreno.

altura de la deformacion que se aplica, crear terreno en unity 3d
Fig. 31: Elegimos el valor de altura al que queremos nivelar el terreno.

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.

crear terreno en unity 3d usando componente terrain
Fig. 32: Las regiones que se encuentran por debajo del nivel se elevan y las que se encuentran por encima descienden.

modelado de terreno en unity 3d usando componente terrain
Fig. 33: Podemos establecer zonas que tendrán una determinada altura en toda su extensión.

relieve montañoso observado desde el interior de un laberinto, juego en unity 3d
Fig. 34: Entramos en modo juego para observar el relieve montañoso desde la perspectiva del laberinto.

relieve montañoso observado desde el interior de un laberinto, juego en unity 3d
Fig. 35: La parte más elevada del relieve se encuentra en la dirección opuesta al sol de la escena.

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.

modelado de terreno en unity 3d, laberinto en el centro
Fig. 36: Utilizamos las herramientas mencionadas hasta que estemos satisfechos con el diseño.


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.

texturizar terreno en unity 3d
Fig. 37: Seleccionamos la herramienta pincel, elegimos patrón y textura para aplicar.

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.

aplicar texturas a terreno en unity 3d
Fig. 38: A la textura base le aplicamos otra textura en distintos lugares para romper el patrón de repetición.

Las montañas tendrán una base de tierra y luego iremos aplicando en distintas partes la textura de roca.

texturizar terreno hecho con herramientas de unity 3d
Fig. 39: A las montañas le damos una base con la textura de tierra.
texturizar terreno hecho con herramientas de unity 3d
Fig. 41: Aplicamos la textura de roca en distintas partes del relieve.

texturizar terreno hecho con herramientas de unity 3d
Fig. 40: Vista cercana de la textura de tierra.
texturizar terreno hecho con herramientas de unity 3d
Fig. 42: Textura de roca en relieve montañoso.
escena en unity 3d, generacion de laberinto utilizando prefabricados
Fig. 43: Textura de roca en relieve montañoso.

De vez en cuando entramos en el modo juego para ver cómo se observa el relieve desde el interior del laberinto.

relieve montañoso observado desde el interior de un laberinto, juego en unity 3d
Fig. 44: Entramos en el modo juego para observar los resultados.

escena en unity 3d, generacion de laberinto utilizando prefabricados
Fig. 45: Diseño final del laberinto.

relieve montañoso observado desde el interior de un laberinto, juego en unity 3d
Fig. 46: Diseño final del relieve montañoso visto desde el 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.