Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Taller de Programación De Videojuegos
Taller Nº1: “Tutorial Unity 3D” Introducción al GUI
Terrain, Light and Sky David Biava
Mauricio Westermeyer Bastián Barrientos
Víctor Aravena [email protected]
Contenidos
Introducción al GUI de Unity3D
Contenido Introducción al GUI de Unity 3D ...................................................................................... 2
Terrain ........................................................................................................................................ 7
Light and Sky ......................................................................................................................... 17
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Introducción al GUI de Unity 3D
La interfaz de Unity 3D es bastante intuitiva y configurable. Para
comenzar, se recomienda usar la configuración “2 by 3”, aunque se
sugiere que se utilice la que parezca más cómoda.
Seleccionamos en la parte superior derecha la opción Default y
optamos por la opción “2 by 3”. En cualquier caso, el layout de
Unity3D es totalmente configurable. A continuación explicamos cada
uno de las partes en la que está dividido el layout:
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
1 Scene View: Es la vista de Escena, esta es la vista en la que se
trabajará visualmente en el videojuego.
2 Game View: Es la vista del Juego. Muestra como se verá el
videojuego si se ejecutara con los elementos del Scene View.
3 Hierachy View: Es la vista de Jerarquías, muestra los elementos
que pertenecen a la escena completa, para poder seleccionarlos o
trabajar en aspectos comunes entre ellos.
4 Project View: Es la vista de Proyecto. Visualiza el proyecto en sí y
los recursos (Assets) que tuviese, como pueden ser texturas,
elementos, scripts, sonidos, etc.
5 Inspector View: La vista de Inspector, muestra las características
específicas de cada elemento seleccionado. Si no hay nada
seleccionado, no mostrará nada. Permite trabajar las cualidades de
los objetos de la escena.
Comenzando un proyecto
Para iniciar, es recomendable reiniciar Unity 3D, esto es, cerrar el
programa y volverlo a abrir. Luego debe seleccionar File>New
Project. Al crear un nuevo proyecto, aparecer muchos paquetes que
vienen por defecto en Unity. Para este ejemplo básico, solo
seleccionaremos Character Controller.
Una vez cargado el Proyecto Nuevo, el único objeto que se podrá ver
en la vista de Jerarquías es “Main Camera”, que es la cámara
Principal. Si queremos ver donde se encuentra en nuestro juego,
hacemos doble click sobre Main Camera en la vista de Jerarquías, lo
cual hará que se centre en ella.
Main Camera es un elemento que tiene la particularidad de mostrar
los elementos que serán visibles en el juego, como si viéramos todo
desde una cámara de video.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Añadiendo Objetos
Vamos a añadir algunos objetos para que podamos verlos en el
juego.
En el menú: Game Object>Create Other>Plane. Esta acción crea un
plano bidimensional, en el cual nos podremos mover.
De la misma manera, podemos añadir otros objetos. Game
Object>Create Other>Cube.
Y también añadiremos un tercer elemento, una luz. Game
Object>Create Other>Point Light.
Todos estos objetos aparecen por defecto en una misma posición, con
valores por default (tamaño, rotación, etc.). Ahora intentaremos
personalizar estos objetos.
La vista de escena es algo complicada de manejar en un principio,
pero tras algunas pruebas se puede aprender a manejar con cierta
facilidad. Por otro lado, existen algunos controles que pueden ayudar
a alivianar el manejo de vistas y modificación de objetos.
Rotar: Click derecho y arrastrar
Desplazamiento: Click central (ruedita de mouse) y arrastrar.
También sirven las flechas direccionales.
Zoom: Rueda del ratón, aunque es muy recomendable hacerlo por
desplazamientos. El uso excesivo de zoom puede terminar el
acercamientos o alejamientos, o muy rápidos, o muy lentos.
Para modificar los objetos dentro de la escena, existen tres controles
que se ubican en la parte superior de la vista de escena, y son los
siguientes:
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
El primer control (la mano) está seleccionado por defecto, y es para
poder manejar la vista – de la cual ya hemos explicado
anteriormente.
El segundo control es la cruceta de flechas, y corresponde a la
modificación de posición de un objeto.
Si seleccionamos cualquier objeto, nuestro cubo, por ejemplo, desde
la vista de escena o la vista de jerarquías, y luego seleccionamos este
control, aparecerán los controles en 3D, con 3 flechas para x, y, z.
Prueba a mover el cubo de posición, sacarlos del plano y volverlo a
colocar.
El tercer control se encarga de la rotación del objeto. De la misma
manera que el anterior, pruebe a mover el cubo, rotarlo, etc.
El cuarto control es el que se ocupa de la dimensión del objeto, u
escala del mismo. Seleccione este control si tiene seleccionado el
cubo, y pude alargarlo, aplastarlo, entre otros.
Intente poner este cubo en la base del plano, dejarlo perfectamente
parado y convertirlo en un pilar.
Como se puede apreciar, al momento de mover el cubo, se dió cuenta
de la existencia de una luz. Esa luz es la que se creó en un principio,
y como se explicó anteriormente, compartía la misma posición que el
cubo, de ahí a que no se pudiera ver en un principio.
Pruebe a mover la luz hacia arriba del cubo original (nuestro nuevo
pilar).
El plano también se puede re-escalar, pero no en su componente Y.
Por lo tanto, seleccione el plano y ponga 10 a los valores en X y Z en
la Vista de Inspector.
Vamos a añadir un último elemento para poder observar mejor el
juego. En la vista de Proyectos, subpestaña assets>Standard
Assets>CharacterController, podemos ver los controladores para
personajes. Usaremos uno básico de Unity que nos permitirá tener
una vista de primera persona, como si fuese un fps.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Arrastre el elemento First Person Controller hacia la vista de Escena,
en la posición que estime conveniente. Asegúrese que el personaje
quede totalmente encima del plano – con el controlador de posición.
De no ser así, el objeto podría caer hacia el infinito.
Si se hace bien, observará que la Escena de juego ha cambiado,
puesto que nuestra cámara principal ha sido reemplazada por nuestra
cámara de primera persona. La cámara principal puede ser eliminada.
El juego puede ser ejecutado preliminarmente haciendo click en el
botón play que se encuentra en la parte superior central.
Para hacer una pausa, puede utilizar el segundo botón. Para detener
la ejecución puede presionar el botón play nuevamente.
Una cosa interesante que tiene Unity es la duplicación de objetos.
Para una demostración, cree un segundo cubo, cambiándole el
nombre por el que desee con el click derecho y haciendo click en
Rename, en la vista de Jerarquías.
Los cubos por defecto no poseen cualidades de gravedad o
interacción física avanzadas. Para solucionar esto, a nuestro nuevo
cubo, seleccionado, le agregaremos esta cualidad.
Component>Physicis>Rigid Body.
Si colocamos este cubo en el aire, y ejecutamos el juego, veremos
cómo cae. Esto es, al cubo ha adquirido gravedad.
Puedes duplicar el cubo seleccionándolo en la vista de Jerarquías y
presionando ctrl+d, aunque en un principio no ser verá, porque
comparte la misma posición que el cubo original. Puede arreglar esto
fácilmente simplemente moviendo el cubo de posición.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Puede agregar más cubos, ponerlos en estructuras y ver como se
desmoronan.
Terrain
Vamos a comenzar desde 0, para crear un terreno básico. No es
necesario crear un Nuevo Proyecto, pero sí una nueva escena.
File>New Scene
Creando el terreno
Selecciona la pestaña superior Terrain y haz click en Create Terrain.
Esto creará un terreno simple. Para cambiar el tamaño y algunas
cosas básicas del terreno, se puede seleccionar Terrain>Set
Resolution. Los valores por defecto están bien, pero no hay nada de
malo en variar algunos valores, en especial:
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Terrain Width: Anchura del terreno, en metros.
Terrain Heigth: La altura máxima del terreno cuando haya que
modificarlo.
Terain Length: Longitud del terreno, en metros también.
Apretando Set Resolution aplicará los cambios.
Unity crea los terrenos y estos son partes de un escenario con más
detalles como ríos, lagos, etc. Sin embargo, acabamos de ajustar la
altitud máxima, y el terreno está aplanado a una altura de 0 mts, lo
que quiere decir que podremos hacer montañas, cerros y elevaciones,
pero no hoyos o cuencas.
Es posible crear estos elementos, como un lago, si es que nos
interesa. El procedimiento es:
Terrain>Flatten Heigthmap.
Poner un valor en metros, para la altura base en la que el terreno
estará “elevado” de los 0 metros, como por ejemplo, 100 metros, si
es que dejamosla altura en 600 metros. Esto quiere decir que
podremos hacer montañas de hasta 500 metros, y cuencas de 100
metros.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Si fue hecho correctamente, se apreciará que el terreno se ha
elevado.
Cargando Recursos para el terreno
Procederemos a cargar elementos para nuestra escena. Aunque Unity
posee un paquete básico de recursos, es bastante simple, y para
obtener mejores resultados se pueden importar desde otras páginas:
1 Acceder a http://trinit.es/unity/packages
2 Hacer click en el archivo TerrainAssets.unitypackage, con lo que la
descarga comenzará. Se recomienda guardar el archivo en un lugar
conocido.
3 En Unity – una vez esté descargado el archivo- hacer click derecho
en la vista de proyecto, seleccionar Import Package>Custom
Package.
4 Busca el archivo que se acaba de descargar
5 Cuando termine la barra de lectura, aparecerá una ventana de
confirmación, seleccionando Import en la esquina inferior derecha y
esperar a que se carguen los recursos.
Una vez hecho esto los recursos estarán disponibles para ser usados
en nuestro proyecto.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Modificar el Terreno
Se procederá a trabajar en los accidentes geográficos como
montañas, cuencas, mesetas, etc.
Se recuerda siempre que la interfaz de Unity es totalmente
modificable y configurable a nuestro gusto. Por ello, procederemos a
realizar un cambio de Layout para poder tener un mejor campo visual
a la hora de trabajar en terrenos.
Primero se necesita tener el layout seleccionado en “2 by3”, o
cualquiera con el que se esté más cómodo.
Haz doble click en terreno – en la vista de Jerarquías para centrarlo.
Luego de esto, cierra las pestañas de vista de Juego, Jerarquía y
Proyecto. Para hacer esto, click en el Icono de la parte superior
derecha de cada vista y seleccionando Close Tab.
Y finalmente, vamos a guardar nuestra configuración de vistas, en
Window>Layout>Save Layout, y dándole el nombre que más nos
guste, en este caso, Terreno. Si lo hicimos bien, a la hora de
seleccionar Layouts tendremos nuestro nuevo Layout personalizado.
Cuando queramos trabajar en el terreno, podremos seleccionar
“Terreno”, y cuando queramos trabajar con elementos del proyecto,
ordenar jerarquías y otras cosas, seleccionaremos “2 by 3” o
cualquiera sea el de nuestra preferencia.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Editando el Terreno
Estamos preparados para poner las manos en el terreno. La manera
de hacerlo es poner la mira en la Vista de Inspector, y ver que sea
visible el componente Terrain (Script)
Existen 7 botones, y los 7 tienen funcionalidades distintas.
1 Botón subir y bajar
Nos proporciona la capacidad de crear elevaciones o hundimientos al
hacer click sobre el terreno.
Brushes es el tipo de pincel con el que se hará la deformación. Evite
usar aquellos muy circulares, o con formas que no sean muy
comunes en la naturaleza, para darle más realismo.
El parámetro Brush Size indica el perímetro del pincel, en metros.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
El parámetro Opacity determina la velocidad con la que se eleva un
terreno al hacer click. Para evitar pérdida de control al trabajar, evite
valores por sobre el 50%.
Para realizar perforaciones o hundimientos, en vez de alzamientos o
elevaciones, presiona la tecla shift mientras hace click. Tenga en
mente que hemos establecido una profundidad mínima – 100 metros
– y una altura máxima – 600 metros.
Dedique unos minutos a realizar un paisaje donde haya montañas,
cuencas, y otros accidentes geográficos. Para deshacer algún cambio,
es posible usar ctrl+z.
Este es un ejemplo de cómo podría verse su terreno.
2 Botón de aplanar
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
El principal inconveniente del anterior botón es que crea los
elementos con demasiada altura o profundidad, ya que es a mano
alzada y resulta excesivo. El botón aplanar es de gran utilidad porque
crea las elevaciones o hundimientos con la altitud máxima que
elijamos (es decir, podemos crear una meseta de exactamente 400
metros máximo, aunque el máximo del terreno sea 500). Esto puede
verse en la imagen anterior donde las cimas están planas.
Tiene las mismas características que el botón anterior, con la
salvedad que agrega un nuevo parámetro, Heigth. Este determina la
altura máxima de la brocha que se está utilizando.
3 Botón de suavizado
Este botón es especialmente útil cuando, al trabajar con elevaciones
y hundimientos, se crean triángulos o “picos”. Este botón puede unir
estos elementos y crear la sensación de unión y suavidad, haciendo
que se vea más real. Sirve mucho al crear subidas y bajadas de
montañas, mesetas, etc.
Así se ve un terreno antes del botón suavizar
Y así se ve después:
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
4 Botón de texturizado
En este momento se han terminado las ediciones de geometría, y
hemos trabajado en un terreno “en blanco” para reducir la
complejidad. Ya es hora de añadirle elementos gráficos.
La novedad es la inclusión del botón “Edit Textures”, al hacer click
sobre el podremos añadir, editar o eliminar texturas.
Aparecerá una pequeña ventana donde podremos elegir la textura
base donde trabajaremos. Cuidado, que el primero siempre es la
base, todo el terreno toma ese color.
Una vez elegido (haciendo click en el pequeño disco que se encuentra
a la derecha), se hace click en add y esta se añadirá en la vista de
Inspector. Se pueden editar o añadir más texturas en el botón “Edit
Textures”, pero siempre recordando que el primer espacio es el base.
Seleccionando Brushes, junto con diferentes texturas, tamaños y
opacidades logrará que el terreno se “pinte” de diferentes texturas.
Terrenos arenosos deberían ir en playas, áridos para caminos,
rocosos para montañas, blancos para nieve, etc.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Con trabajo y dedicación se pueden lograr que las texturas se
“fundan” y logren acabados realistas como el de la imagen de abajo.
5 Botón de árboles
El botón de arboles se asemeja mucho al de texturas. La diferencia es
que existen más parámetros los cuales sirven para determinar
aspectos a usar cuando se “pinten”.
De la misma manera, existe el botón “Edit Trees”, el cual puede usar
recursos para unirlos a la escena.
Brush Size determina el diámetro del pincel, en metros.
Tree Density es la cantidad de árboles por unidades de 100 metros,
este valor se parece mucho al opacity.
Color variation determina la variación de colores (al azar) entre un
árbol y otro, para que no todos se vean iguales. Tree Heigth y Tree
Width poseen una estructura similar, ambas con Variation.
Al usar el pincel se irán añadiendo más árboles al escenario. Intente
crear bosques y sectores con pocos árboles, y sectores con árboles de
distintos tipos. En este caso, no existe un “árbol base” como si
ocurría con las texturas.
6 Botón de Vegetación
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Este botón es muy similar al de árboles, ya que este puede añadir
pasto, hierba y flores. Procede de una manera muy parecida,
añadiendo distintos tipos de vegetación, con algunos parámetros
especiales.
Al añadirlo, llaman la atención los parámetros Healthy y Dry color, los
cuales son colores que toman cuando están saludables o secos. Se
pueden modificar.
Importante: Es necesario notar que el pasto es el elemento que
consume más memoria dentro de nuestro escenario. Usar este
elemento con moderación.
7 Botón de Configuración
Este último botón configura los aspectos generales del terreno y su
performance.
La proyección de sombras (Cast Shadows) indica si las elevaciones
realizadas proyectan sombra unas sobre otras, por defecto están
seleccionadas, pero pueden anularse para mejorar el rendimiento.
Detail Distance indica la distancia en la que los detalles de vegetación
– como el pasto- comenzarán a ser visibles. Recuerde que el pasto
consume mucha memoria, así que este valor deberá ser usado con
moderación. Tree distance funciona de manera muy similar.
Billboard Distance indica la distancia en que los árboles serán visibles
en baja calidad a la distancia. Aunque se vean de lejos, están en 2d
hasta que se acerquen lo suficiente para renderizarse en 3D.
Todo este trabajo de terreno incluye una gran cantidad de tiempo,
dependiendo de la calidad del terreno, por lo que guardaremos
nuestro trabajo.
Siguiendo los pasos de la primera parte de este tutorial –
Introducción a la GUI- Añadiremos un First Person Controller, que se
encuentra en Assets >Character Controllers y arrastrándolo al lugar
que prefiera. De este modo, podemos volver al modo “2 by 3” y jugar
nuestro videojuego.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Light and Sky
El siguiente paso es añadir luz y el cielo a nuestro juego. Si se mira al
cielo, solo verá la luz genérica de Unity, y el cielo de color azul – que
es el background genérico, si no lo hemos modificado.
Luz
Para tener nuestra propia fuente de luz, como un Sol, por ejemplo, se
debe seguir la siguiente secuencia
GameObject>Create Other>Directional Light
Tendremos un nuevo objeto de tipo Directional Light en nuestra Vista
de Jerarquías, aparecerá visualmente en la vista de Escena y
podremos editar características en la vista de Inspector.
Pruebe a mover la fuente de luz (que corresponde a un Sol
imaginario) pero en su rotación, que será la que decida como los
rayos de Sol incidan.
Existen parámetros nuevos que pueden ser útiles.
Type: Spot, Directional, Point. Spot ilumina en un cono en frente de
él, como una luz de automóvil, en un cono e intensidad definidos.
Directional hace referencia a una luz que se encuentra en el infinito y
se aplica a todos los objetos, como un Sol. Point Ilumina en todas
direcciones, como una ampolleta, pero solo los objetos dentro de su
rango.
Depués de eso, exiten parámetros adicionales que modifican la
intensidad, rango, o color de la luz. Es interesante cambiar estos
parámetros y observar los cambios para familiarizarse con estos.
Cielo
Una vez con nuestro Sol iluminando todo, es hora de añadir un cielo.
Edit>Render Settings nos mostrará una serie de características que
se harán visibles a la hora de renderizar cada escena y cámara. Como
solo nos interesa el cielo, de momento, localize el parámetro “SkyBox
material” y haga click en el pequeño icono circular a su derecha.
Centro de Estudios de Ingeniería de Software
LABORATORY OPENSOURCE SOLUTION
Esto nos abrirá una pequeña ventana donde podremos seleccionar el
cielo (o caja contenedora de nuestro escenario).
Nota: Si no aparecen cielos es porque probablemente no se hayan
importado desde un principio (solo añadimos controladores de
personaje). De ser así, haciendo click derecho en la vista de Proyecto,
para luego seleccionar Import Packages>SkyBoxes hará que
podamos tenerlos a disposición.
Guardando el trabajo
En estos momentos ya podemos guardar nuestras escenas y
proyectos. Genéricamente, Unity guarda el File>Save Scene o
File>Save Project, dependiendo de que queramos guardar.
Para poder crear un ejecutable y jugar el videojuego, se puede ir a
File>Build Settings, y en la vista de Inspector poder seleccionar el
parámetro Run in Background y habilitarlo, si no lo estuviese. Luego,
hacer click en Fil>Build para poder importar nuestro juego a una
localización conocida (recuerde seleccionar la plataforma).