[AUDIO EN BLANCO] Como hemos comentado, para desarrollar este curso vamos a utilizar el motor Unity. Unity es un motor comercial, muy utilizado actualmente en la industrial del videojuego, especialmente por las empresas pequeñas e independientes. Vamos a irnos al Unity, vamos a irnos a un nuevo proyecto y vamos a empezar. Para ello vamos a llegar a File, new project, vamos a dar la ruta donde queremos crear el proyecto, [AUDIO EN BLANCO] Vamos a llamar commando game, entro a la sesión 1. [AUDIO EN BLANCO] ¿Vale? Y le damos a crear. [AUDIO EN BLANCO] Unity nos va a crear ahora un proyecto vacío y a partir de aquí vamos a poder introducir los diferentes elementos para poder utilizar dentro de nuestro videojuego. Entonces, lo que vamos a hacer a continuación va a ser explicar cómo funciona Unity y su entorno. Bien, esta sería la ventana clásica de Unity, donde tenemos diferentes ventanas o paneles. Tenemos por un lado el panel de la escena, arriba a la izquierda, donde tendremos los diferentes elementos de nuestra escena actual. Ahora mismo, lo único que tenemos es una cámara. Luego tenemos el panel de abajo a la izquierda, que es el juego, que nos mostrará el resultado del juego como le damos al play. Siguiente panel que vemos es el panel de jerarquía, donde nos muestra todos los objetos que tenemos dentro de nuestra escena y también mostrados de forma jerárquica. Es decir, los que son hijos de un padre, pues seguirán dentro de ese padre. Actualmente el único objeto que tenemos es la cámara, como vemos aquí. Siguiente panel que nos encontramos es el panel de proyecto. Básicamente es como un explorador donde encontramos los elementos de nuestro proyecto, las carpetas. Esta carpeta assets viene reflejada del proyecto dentro de nuestro ordenador. Vamos botón derecho y le damos sobre el explorer, entonces mostrará la carpeta donde se encuentra la carpeta assets, donde podremos meter, dentro de esta carpeta, todos los elementos de nuestro proyecto. Además vemos que el proyecto contiene más carpetas y más elementos que no utiliza Unity, digo, de forma interna. El siguiente panel que vemos es el panel de inspector, donde nos muestra las propiedades de un objeto. Un objeto puede ser tan sencillo como un objeto, un game object vacío. Entonces, para ello, doy un botón derecho encima de la jerarquía y le doy a create empty, este es mi primer objeto. Como vemos, tenemos unas propiedades, estas propiedades se basan en componentes. Tenemos diferentes componentes como el más sencillo que sería el componente de transform, que es el componente mínimo que va a tener un objeto, que nos tiene la posición del objeto, la rotación y la escala, o podemos añadirlo a uso de componentes con el botón add component, que ya veremos a continuación que utilizaremos este botón para diferentes componentes. O podemos crear ya objetos predefinidos, como por ejemplo sería, crear un objeto 3D, que podemos crear un cubo o una esfera. Con el mismo podemos moverlo también. Como vemos, hemos creado un cubo dentro del game object y una esfera dentro del cubo. Por tanto, si movemos el game object, movemos todos los objetos, si movemos el padre movemos todos los objetos, si rotamos el padre rotamos los objetos. O podemos sacarlo fuera del padre, del game object de la jerarquía principal, hija de la parte principal de la jerarquía. Voy a hacer una escena muy sencilla, que es básicamente un cubo y una esfera y voy a poner la cámara para que se vean. Con el botón F centramos el objeto seleccionado. [AUDIO EN BLANCO] Con la W seleccionamos el logo de, perdón, sacamos el gizmo de trasladar y con la E el de rotar. Los voy a ver como acceso directo. Entonces aquí tenemos la cámara, que la estoy colocando para que se ve el asset. Como hablábamos antes, tenemos el componente, el objeto, mi cámara, que tiene el componente cámara, en donde podemos modificar parámetros de la cámara, como el color del background, blanco, negro, o el color que nos interese; capas de culling, que explicaremos en otro momento, el tipo de cámara si es de proyección ortográfica; el field view, que es el campo de visión de la cámara, desde 60 grados a cámaras como el field of view más cerrado, por ejemplo 23; el near y el far plane de la cámara, que define desde donde se empieza a ver la, los objetos, como podemos ver en la escena hasta el máximo que se llegan a ver. Ahora vamos a poner 200 metros. Vemos que la, el gizmo de la cámara se reduce en la parte de la escena. Ponemos 250 y se ve; el viewport rect, que reduce la el viewport, por ejemplo, si estamos en modo free aspect y modificamos el viewport rect, a entrada 0 y 1. Vemos que recorta el cuadro de visión. ¿Vale? Dejaremos aquí por defecto el 1, 1, 0, 0 y volvemos a dejarlo, en mi caso 16 novenos o 1280x720. Es el formato panorámico que utilizamos en los videojuegos actualmente. La cámara la vamos a dejar en 0.1, en near y eso sería el componente de cámara. Luego también tienen el componente de GUILayer, Flee layer y el Audio listener, que básicamente lo que viene siendo, nos va a permitir utilizar efectos de sonido 3D y que se reproduzcan a partir de la cámara. En el caso del cubo, por ejemplo, tendríamos el componente Mesh filter que renderiza una geometría. En este caso es una geometría de triángulos de tipo cubo, tiene un box collider, o sea tiene colisión, de tipo caja, y luego tiene el componente Mesh renderer, que lo que hace es coger la la geometría del Mesh filter y renderizarlo. Si desactivamos el Mesh renderer, dejamos de pintarlo y luego dentro del Mesh renderer tenemos, a parte de los materiales, que podemos modificarlos, tenemos 2 atributos, cast shadows y receive shadows, que significan que este objeto va a proyectar sombras o a recibir sombras, podemos activarlo o desactivarlo, no nos interesa. Entonces, para acabar este pequeño ejemplo de escena, voy a crear un plano. [AUDIO EN BLANCO] Aquí lo voy a poner en el suelo, lo voy a escalar con la E, con la R perdón, a hacerlo más grande, lo saco del del hijo, o sea del padre; la esfera la voy a subir un poquito y la cámara la voy a elevar también un poquito. [AUDIO EN BLANCO] Como vemos ahora mismo, no se diferencian las formas, ya que no hay ninguna iluminación dentro de la escena, entonces voy a crear una pequeña luz, voy a crear una luz de tipo direccional, entonces, creo una luz direccional, la voy a rotar, según lo que nos interese la dirección de la luz; ¿vale? Como digo es una luz direccional, quiere decir que lanza rayos de luz en esa dirección en todos lo puntos. Le voy a decir a esta luz, en su componente de luz, el tipo de color que tiene, le voy a poner que es un poco como un sol, más bien amarillenta anaranjada y voy a modificar la intensidad de la luz, valor entre 0.5 y 1, es lo que nos interesa. Podemos subirlo de 1 pero no es recomendable. Vemos nuestro 0.7 y le voy a decir que proyecte sombras. Vemos ya que en la esfera y el cubo están proyectando sombras. Podemos la fuerza, definir la fuerza de la sombra, quizá más dura o menos dura. Básicamente que sea más marcada o menos marcada. Voy a dejarlo 0,4. Si volvemos al ejemplo anterior que he dicho, de la esfera, podemos marcar que no reciba, no proyecte sombras, entonces dejamos de ver la sombra que proyecta este objeto. Nos puede interesar para hacer cualquier tipo de objetos. Esto sería componentes y objetos. Por otra parte, vamos a crear la la estructura del proyecto. Vamos a crear una carpeta que se llame Coursera. Dentro de Coursera, voy a crear una carpeta que se llama escenas, otra carpeta que se va a llamar GUI, otra carpeta que se va a llamar code, y de momento y otra carpeta que se va a llamar materiales. De momento con esto vamos a irlo haciendo. Hay una carpeta, perdón, que se va a llamar prefabs. Vamos a explicar qué es un prefab. Un prefab es un conjunto de elementos o un elemento que contiene un conjunto de cosas que podemos instanciar dentro de nuestro juego. Es decir, podemos crear de forma dinámica ese conjunto de elementos o ese elemento que contiene un conjunto de elementos. Por ejemplo, imaginemos que yo quiero crear un objeto que es un cubo con una esfera encima. [AUDIO EN BLANCO] Como vemos aquí, algo parecido a esto. Entonces, meteré la esfera dentro de, haré un objeto, voy a hacer el padre, que ahora se va a llamar coreprefab, y voy a meter dentro, voy a copiar la matriz de la formación del cubo, para que sea el padre la del padre, con el copiar la matriz, la voy a poner en el prefab. Y ahora, voy a bajar el cubo y la esfera y la voy a meter dentro del prefab, ¿vale? Si ahora me llevo el prefab, el coreprefab, muevo el objeto. Bien, si nosotros quisiéramos crear 20 objetos de este tipo, tendríamos que duplicar este objeto. Vale, entonces ahora lo que vamos a hacer es crear un prefab. Lo vamos a meter dentro del prefab, simplemente es coger coreprefab y arrastrarlo dentro de la carpeta de prefabs. Entonces, si nos fijamos, nuestro objeto dentro de la escena vas a ser de color azul, ¿vale? Y ahora puedo eliminar el objeto de la escena y este coreprefab lo puedo ir arrastrando a la escena tantas veces como me interese, entonces, tenemos un prefab, que sería un prefabricado, que todos los objetos son los mismos. Además, esto lo podemos hacer en código, en deep, como ven siempre el prefab sale de color azul. Si modificaramos alguna propiedad del prefab tendríamos que aplicar en el prefab, bajamos la esfera del padre y le digo aplicar. Entonces vemos que el resto de instancias también se ha aplicado, ¿vale? Entonces, con esto explicamos el tema de los prefabs, que nos van a ir bien para muchas cosas dentro de nuestro proyecto.