Saltar navegación

Tutoría 1 - DEIM - UT1 y 0 - Curso 24·25 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 14 de octubre de 2024 por Daniel M.

113 visualizaciones

Grabación de tutoría de DEIM en la que se habla de la instalación del Unity Hub, del Editor de Unity, así como se empieza a explicar la interfaz.

Descargar la transcripción

Pero Unity, donde podéis, digamos, encontrarlo si ponéis Unity, lo de Hub no es necesario. Al meteros en Unity, importante es que al dar a descargar, que os va a decir, hay varios planes, descargar para Windows, por ejemplo, yo que tengo Windows, lo que os va a instalar es un ejecutable que es el Unity Hub. 00:00:02
Es decir, para entrar a Unity, lo tengo aquí, lo abro, todo lo vamos a hacer a partir de un gestor, igual que sucede con el Creative Cloud que lo instalamos desde la aplicación Adobe Creative Cloud, 00:00:25
pues digamos que en Unity hay algo similar que es este Unity Hub. Este si lo instaláis, al final, a ver si me lo abre, está abriendo en la otra ventana, os va a abrir esta interfaz. 00:00:36
Es importante que en este caso uséis una cuenta propia de correo electrónico que no sea la de EducaMadrid. A diferencia de a lo mejor lo que hacéis con Maya, que son licencias un poco dependientes de que seáis estudiantes, aquí da un poco igual. 00:00:49
Es decir, como vais a ver, cuando luego activemos el Unity, vais a ver que hay licencias que te piden un dinero. Nosotros, si ya trabajáis más adelante, os puede interesar. De momento nos interesa lo de estudiante o aficionado. 00:01:04
Y en vez de estudiante, que sí que incluye más cosas, pero os puede pedir demostrar que sois estudiantes, tenéis otra versión completamente funcional que es la personal, ¿vale? Que es la que os recomendaría que usaréis, ¿vale? Cuando instaléis el Unity Hub, ¿vale? Vais a tener que hacer, si no lo podéis hacer antes, una... Mira, me voy a salir. Os tendréis que crear una cuenta, ¿vale? Todo se gestiona a partir de esa cuenta. 00:01:20
¿Por qué os digo que uséis la personal en vez de la del instituto? 00:01:48
Pues porque vamos a ir descargando como assets y paquetes en la Asset Store, 00:01:50
que es, bueno, pues os la voy introduciendo, también están los temas, 00:01:56
que es como una especie de base, una tienda virtual de Unity con assets, 00:01:59
o scripts, con un montón de cosas, y va asociado al perfil de la cuenta de Unity 00:02:03
que estéis empleando. 00:02:10
Entonces, para que cuando acabe el curso no lo perdáis y podáis seguir, 00:02:11
como da igual que tengáis la licencia de aquí o no 00:02:14
pues usad el correo que vayáis a seguir usando 00:02:18
para que sea operativo en el futuro 00:02:22
una vez instaléis ese hub 00:02:23
tendréis que hacer una cuenta, que registraros 00:02:25
y siempre para que funcione tanto el Unity Hub 00:02:28
como podéis emplear los paquetes 00:02:31
os tendréis que loguear 00:02:36
me lo ha introducido automáticamente 00:02:38
pero es un usuario y una contraseña 00:02:41
y ahí podéis verlo una vez tenéis el hub instalado vale tendréis que ir a una sección vale que es la 00:02:44
que se llama installs las instalaciones y aquí es donde se instala en donde vamos a estar trabajando 00:02:52
en unity que es el unity editor el editor de unity no de este hay muchas versiones vale y por ejemplo 00:02:57
podéis dar a instalar editor y aquí os salen algunas versiones yo sí que os he pedido de que 00:03:03
Si os instaláis una versión concreta, que es la que tenéis aquí, la 2023-48, y cuando vayáis a instalar no la encontraréis aquí por defecto. 00:03:09
Tendréis que ir a archivo. 00:03:18
Archivo dice, en archivo, visita nuestra página de archivo. 00:03:20
Y dentro de esta página, que van juntando todas las versiones de Unity, que sea más antigua no significa que no se siga revisando. 00:03:24
Como podéis ver, la que vamos a instalar es de este año de mayo. 00:03:31
Sí que es verdad que algunas opciones cambian, a veces a mejor, a veces a peor, a veces más estable, menos estable, pero de momento esta es la que mejor nos va a venir a nivel de funcionalidades. 00:03:34
Si más adelante en algún tema tenemos que subir de versión, lo haremos y sería también desde este archivo de versiones, de la misma forma. 00:03:46
Yo, por ejemplo, os he dicho que instaléis esta versión, ¿no? La 3.48. Si le dais a Unity Hub, yo ya la tengo instalada, pero me saltará, os pediría instalarla. Se pueden tener varias versiones de Unity, ¿vale? Imaginaos que yo quiero tener también la 2022 3.11, ¿vale? Imaginaos. 00:03:55
Si nos metemos en Unity Hub, pues de pronto va a salir aquí lo que se llaman los módulos. Los módulos son extensiones o partes de plugins, vamos a decirlo, que son necesarios para ciertas acciones. 00:04:12
Y una de ellas es que tenemos que tener instalado lo que se llama el IDE, que es el entorno de desarrollo, que es donde vamos a hacer nuestros scripts, la programación, que es a través de otro software que se llama el Visual Studio. 00:04:27
Lo mismo, aquí lo actualiza el 2022, os puede salir cuando instaléis la versión que yo os he comentado antes, la 2019 esa, marcarla e instalarla, porque es importante, es parte esencial del trabajo que vamos a hacer. 00:04:41
Entonces, luego, cuando tengamos varias versiones, al lanzar los proyectos, aquí solo tengo una, pero aquí se puede lanzar en varias versiones. ¿Por qué os pido que abráis una quizá anterior? Porque primero, hay assets que van a ser más compatibles con una versión anterior, ¿vale? 00:04:55
y también puede suceder 00:05:12
al contrario, que sea al contrario 00:05:15
que tengamos un asset que nos requiera subir 00:05:17
pero en principio no debería ser el caso 00:05:19
con lo que vamos a ir haciendo 00:05:21
y... vale 00:05:22
Jesús, gracias 00:05:25
y... ¿qué estaba diciendo? 00:05:26
Ah, bueno, que cuando creemos un nuevo 00:05:30
proyecto, importante, aquí 00:05:31
si solo tenemos una versión instalada, pues solo nos pondrá 00:05:33
esta, pero es muy importante antes de lanzar 00:05:35
el proyecto, escoger la versión 00:05:37
en la que queramos trabajar y en las tareas 00:05:39
os lo iré diciendo esta tarea hay que hacerla en esta versión importante 00:05:41
marcarla porque luego cambiarla puede traer problemas vale 00:05:46
no sé si hasta aquí alguno había intentado ya lo tenéis instalado por ver 00:05:51
un poco en qué punto estáis vale daniel como te había dicho eso sí 00:05:55
desde la propia web de unity ya podéis ir bajando el hub vale vale pues os 00:06:06
diría que lo fuera jce haciendo ya y fuera intentando hacer la tarea de 00:06:11
Sobre todo de la unidad 1, que es donde se ve si lo habéis instalado bien o no, porque cuando empezáis a hacer cosas, si van surgiendo problemas, pues es donde se va viendo. 00:06:15
Continúo, también para que a lo mejor, aunque lo suyo es que lo vayáis siguiendo en el material de contenidos, una vez tenéis aquí el hub con la versión ya instalada del editor, eso es esencial, tener al menos una versión del editor instalada. 00:06:30
En este caso esta es la que os pido nuevamente. Que por cierto, veis que aquí tiene una etiqueta LTS. No todas las versiones tienen esto de LTS. Esto significa Long Term Support, es decir, como soporte a largo plazo. Estas versiones son las más recomendables porque son, como ya os he enseñado antes, las que siguen revisando. 00:06:44
Que aunque ponga 2020, sí es que se siguen revisando. Simplemente que siempre es más aconsejable tener una versión LTS, que hay varias, que una que no lo sea. 00:07:04
Luego, a la hora de generar un proyecto, cuando empecé vuestro primer proyecto, 00:07:19
os van a salir aquí varias plantillas. 00:07:23
Y vuelvo a decir, son plantillas. 00:07:26
Luego, aunque cogiéramos una 2D, podríamos hacer un proyecto 3D, 00:07:27
pero exigiría que instaláramos lo que se llaman paquetes. 00:07:31
Os enseño aquí, por ejemplo, este template justo no tiene paquetes, 00:07:35
pero el de 2D sí tiene paquetes. 00:07:39
Vais a ver que tiene unos paquetes. 00:07:42
Los paquetes en Unity son funcionalidades como plugins, nuevamente, que en este caso es necesario. Para hacer juegos 2D tiene que haber un gestor de sprites. Como estos paquetes al instalarlos ocupan espacio en el disco duro, hay distintas plantillas porque si no vas a usar nada de 2D, ¿para qué te iban a instalar todos los paquetes de 2D? 00:07:43
Entonces, atención, ya vienen como bien catalogados, pero aquí vais a ver eso, que hay las plantillas y aquí se pueden ir filtrando las core, ¿vale? Veis que hay core, pues si queremos hacer algo para realidad virtual, que vais a ver que en los paquetes pues tienen unos cuantos, todos como muy enfocados a realidad aumentada, virtual, etc. 00:08:08
Esto de momento no nos va a interesar. Si vamos a hacer un proyecto de 3D, habría que escoger esta. Entonces es importante al empezar un proyecto, escoger bien el template, la versión, luego si a lo mejor queréis trastear escenas de prueba, por ejemplo estas son para tener flujos de render más avanzados, esto ya lo veremos. 00:08:28
Hay una sección con proyectos que son como que te instalas este proyecto y te va explicando cómo está hecho, te deja customizarlo. De momento, para empezar de cero, digamos, hacia el propósito que queramos, se usarían las core. Estas que están catalogadas como core. 00:08:51
Imaginaos que queremos hacer un proyecto de 3D, como de hecho se os pide en la tarea de la unidad 1. 00:09:07
Tendréis que poner un nombre a este proyecto, que es básicamente la carpeta que va a tener todo el contenido del proyecto. 00:09:15
Será como se llame, ¿no? Por ejemplo, la voy a llamar prueba, tutoría inicial, yo qué sé, cualquier cosa. 00:09:22
Y aquí es donde se define en qué parte del ordenador, del disco duro se va a guardar. Yo, por ejemplo, voy a poner en el escritorio, por tenerlo a mano, ¿vale? Pues voy a escoger que se guarde ahí, ¿vale? En la carpeta del escritorio. 00:09:30
una vez lo tengamos 00:09:46
en principio 00:09:48
en la versión que queremos 00:09:49
está en 3D, con su nombre 00:09:51
y en una ruta, ¿vale? pues creamos el proyecto 00:09:53
esto va a tardar 00:09:56
vais a ver que 00:09:58
en Unity, ahora no lo estáis viendo 00:10:00
porque tengo otro monitor 00:10:02
pero saldrá, aquí os lo muevo 00:10:03
que creando el proyecto, abriéndolo 00:10:06
Unity es un software que tarda 00:10:08
a veces minutos, según el número 00:10:09
de paquetes que tengáis 00:10:12
tardará más o menos, porque ahora mismo 00:10:13
Ahora os enseño la carpeta. Lo que está generando Unity es este proyecto en esta carpeta que os he indicado. Vais a ver que ya por defecto genera un montón de subcarpetas y directorios, etc. Entonces esto se toma un tiempo. Cuantos más paquetes tenga que incluir. Sigue cargando. Este ordenador no es especialmente lento y veis que tarda. Así que paciencia. Voy a esperar a que termine. 00:10:16
Y esta es vuestra primera vez, los que no la hayáis instalado, imagino que veis la interfaz de Unity. Hay otra cosa que he dicho que es que las tutorías se grabarán también, es decir, se irá más allá o menos si vais haciendo las tareas y también vais preguntando. 00:10:42
Lo digo que es importante, es decir, los contenidos van a estar, pero lo que importa es que vayamos. Vale, que no vea a nadie contestar. Vale, pues estamos aquí en la interfaz, ¿no? Y os voy a enseñar, antes de seguir con Unity, os voy a enseñar la carpeta que he generado. Voy a cerrar todo. Vamos, cerrar es ocultar. Dame un segundillo. 00:10:59
y vale estáis viendo esta carpeta en mi escritorio vale si nos metemos aquí vale veis que acabo de 00:11:18
generar un proyecto nuevo y ya de primeras fijaos dentro de esa carpeta lo que es el proyecto unity 00:11:29
la cantidad de cosas que tienen que esto es lo que por lo que en parte tarda tanto vale aquí 00:11:35
vais a ir viendo ya iremos viendo que uso tienen algunas carpetas vale que todo esto cuando queramos 00:11:40
moverlo de un ordenador a otro me queráis compartir el proyecto hay otra forma que es 00:11:46
generar un paquete vale pero de primeras vais a tener que compartirme esta carpeta padre vale 00:11:50
entonces que veáis que de momento tenemos aquí un mejunje de carpetas grande si queremos mover el 00:11:56
proyecto ya os digo habrá que mover esta carpeta entera mover sólo una de estas carpetas de 00:12:04
contextualizada no nos sirve para mucho vale prueba tutorial y prueba tutorial inicial y 00:12:09
Y vais a ver que aquí el proyecto, lo que es el conjunto de proyectos, se llama Prueba Tutoría Inicial, ¿vale? Os pondrá aquí, pues, para qué se está construyendo, esto ya veremos, para que, pues ahora mismo está configurado para que si este juego se exportara, esté destinado a PC, a ordenador, básicamente. 00:12:15
Y esta es la versión que estáis usando con la licencia personal, que es la que os he dicho que seleccionáis, si os lo pide. 00:12:32
Lo mismo, si no habéis visto todavía el tema, vais a ver que la interfaz, como sucede en todos los softwares que iréis viendo, 00:12:42
se compone de una cantidad de paneles que son movibles. 00:12:52
Es decir, podemos estar configurando el espacio de trabajo de manera totalmente flexible arrastrando, muy similar, por ejemplo, a lo que haréis con las aplicaciones de Adobe. En el tema 1 se explica un poco con detalle qué es cada uno de estos paneles. Os animo a que lo veáis y lo vayáis usando. 00:12:57
Recordad también cuando instalamos el Unity, el editor en installs, que había que instalar el Visual Studio. ¿Os acordáis? Imaginaos que no marcasteis el tick de instalar Visual Studios y decís, pues no tengo Visual Studio y ahora lo vamos a necesitar. 00:13:20
Si vais a installs, vais a ver que cada versión que hayamos instalado tiene una tuerquecilla aquí 00:13:40
Que es para mostrar los módulos 00:13:45
Si damos a add modules, nos vuelve a aparecer esa ventanica 00:13:47
Porque a lo mejor en cierto momento vamos a hacer una aplicación, un juego para Android 00:13:50
Pues habrá que instalar esto, ¿vale? 00:13:55
Y se irá sumando 00:13:57
Lo mismo, no se instala todo de golpe porque fijaos que peso tiene 00:13:57
Pues si no se va a usar, pues peso que nos vamos ahorrando, ¿vale? 00:14:01
Pero siempre se puede volver, ¿vale? 00:14:05
Veis que por defecto, antes ponía 2022, la 2020 va a tener una versión de Visual Studio que es la 2019. Yo ya lo tengo instalado. Hay una cosa importante cuando estemos luego trabajando, que es que cuando vayamos a tocar el código, que ahora hacemos alguna prueba si queréis, vamos a tener que decirle qué IDE, qué entorno de desarrollo es el que queremos emplear, que será ese Visual Studio. 00:14:06
Pero por defecto no viene vinculado. No os voy a hacer un repaso, para eso leed la lección 1, iréis viendo un poco más en detalle y también hay algún vídeo de Álvaro que os cuenta más qué hace cada una de las secciones. 00:14:34
Lo podéis ver ahí, creo que está bien explicado, no es algo que tenga más complejidad, pero es importante, aunque también se ve que es posteriormente para usar scripts habrá que ir a la sección de edit, preferencias y algo importante, la sección de external tools, herramientas externas. 00:14:52
Aquí es donde le decimos cuál va a ser el editor de scripts que vamos a usar. 00:15:12
Si habéis hecho ya la instalación de Visual Studio, os aparecerá aquí. 00:15:16
Si no, lo podéis buscar en plan en vuestro ordenador, 00:15:21
ver dónde está el ejecutable de Visual Studio y lo asociáis ahí. 00:15:24
Según lo pongáis, os recomiendo que le deis a esto de regenerar project files, 00:15:28
porque a veces hay como cachés que se quedan ahí por detrás y puede dificultar algo. 00:15:32
Y para que no de error, si le damos no pasa nada. 00:15:37
Esto es necesario para que luego cuando usemos scripts directamente nos asocie esta versión de Visual Studio para hacer lo que es el código que nos va a permitir controlar prácticamente todo lo que vayamos diseñando y desarrollando. 00:15:39
Importante. Cuando descarguéis un Visual Studio, aquí no voy a poder descargar otro, os saldrá una ventana de Visual Studio que os dice si queréis instalar extensiones de Visual Studio. 00:15:55
En principio, la que deberíais instalar, ¿vale? Visual Studio, Unity, Extension. A ver si sale una foto aquí de lo que os estoy comentando. Vale, os pedirá... Va a salir una ventana que va a empezar a mostrar, como dicen, muchos paquetes y tendréis que buscar una que pondrá herramientas para Unity. 00:16:08
Esta es una versión más antigua, a ver si encuentro otra foto, ¿vale? Eso lo instaláis también. Vale, aquí, cuando salga esta desplegable como de workloads, ¿vale? Seleccionar el de game development con Unity, ¿vale? Y lo instaláis también, ¿vale? Importante. Esto irá saliendo solo a medida que vayáis instalando lo que hemos visto. 00:16:31
vale, hasta aquí que tal 00:16:52
tampoco voy a avanzar mucho 00:16:53
porque prefiero que vayáis viendo el tema 00:16:56
y en la próxima tutoría si que avanzamos más 00:16:58
pero básicamente 00:17:01
importante, y esto lo digo porque 00:17:02
es uno de los errores iniciales que sucede 00:17:04
en el panel 00:17:06
de jerarquía, que bueno 00:17:09
hay un menú de window 00:17:10
que es digamos donde configuramos 00:17:12
el espacio de trabajo, la distribución 00:17:16
de paneles 00:17:18
del software, entonces aquí 00:17:19
hay muchas desplegables 00:17:22
pero hay uno que es paneles y aquí están los seis 00:17:25
paneles principales que aquí ya están desplegados 00:17:28
pero si por ejemplo no vierais la consola, voy a cerrar 00:17:31
este tab, esta pestaña 00:17:35
no la tengo, pues siempre se puede abrir desde paneles 00:17:37
y decís que queréis la consola 00:17:41
mira, se me ha ido, que queremos otra vez 00:17:44
reconfigurar un espacio de trabajo 00:17:47
Vale, pues le decimos quiero el de por defecto y ya os lo abre con todas las pestañas abiertas, vaya, las pestañas como por defecto. Entonces tened en cuenta que los layouts son estos espacios de trabajo que se pueden ir abriendo, ¿vale? 00:17:49
Aparte, si solo queréis abrir un panel, pues aquí vais a ver que hay muchos paneles, ¿vale? 00:18:06
Esta sección, y la consola la podría haber recuperado otra vez dando aquí, ¿vale? 00:18:11
Con este, un poco como en Adobe. 00:18:14
En esta sección, pues se van abriendo los paneles. 00:18:17
Por ejemplo, uno de animación, el animator, pues lo abro y aquí tengo otra pestaña, ¿vale? 00:18:21
Que es donde iremos metiendo los distintos estados de animación. 00:18:27
Ya veremos qué es esto. 00:18:30
Vale. 00:18:32
veréis que por defecto sale este fondo 00:18:32
esto pues evidentemente 00:18:35
se ve, podrá ir cambiando 00:18:38
y hay dos paneles, escena y juego 00:18:39
en escena es donde nosotros vamos a ir 00:18:41
operando, haciendo 00:18:43
disponiendo los elementos 00:18:44
podremos navegar 00:18:46
lo digo porque si de pronto veis un fondo que 00:18:48
intentáis navegar con los atajos de navegación 00:18:51
que os pongo los apuntes 00:18:53
y no se mueve, es porque estáis en la ventana 00:18:55
juego, que se parecen 00:18:57
según la posición de la cámara se parecen más o menos 00:18:59
Luego aparecen gizmos, ¿no? 00:19:02
Como estos elementos que se ven aquí, la rejilla. 00:19:03
Pero bueno, más o menos se parece. 00:19:06
Y puedo decir, anda, si esto no va. 00:19:07
Eso es porque estáis en una ventana destinada a testear el juego, ¿vale? 00:19:09
Veis que incluso se pueden separar. 00:19:13
Y aquí tenemos en la que sí nos podemos mover 00:19:16
y otra que no, solo nos moveremos cuando le demos al play para probar el juego. 00:19:18
¿Vale? Importante. 00:19:22
Que las distingáis para no tener conflicto de que no responde el programa, ¿vale? 00:19:22
en el panel jerarquía es donde vamos a ir 00:19:28
pudiendo meter 00:19:30
los elementos como 00:19:32
en Maya el outliner o las capas en Photoshop 00:19:34
etcétera, entonces 00:19:37
por ejemplo, para que veáis, voy a añadir un cubo 00:19:38
¿vale? pues se me ha 00:19:41
creado un objeto cubo 00:19:43
está aquí con su gizmo de las direcciones 00:19:44
que yo podría mover, subir, bajar 00:19:47
bastante similar a un editor de 00:19:48
¿no? estándar 00:19:52
cuando seleccionamos un objeto 00:19:53
y vais viendo que yo a medida que voy seleccionando objetos en esta jerarquía, aquí van cambiando los menús, el inspector lo que hará es mostrar las opciones asociadas a ese objeto. 00:19:56
Por ejemplo, el cubo trae ya unos cuantos de los que se llaman componentes y los componentes, si voy recogiendo todo esto, son digamos como fragmentos de código que están configurados para que cumplan funciones. 00:20:10
Cuando digo esto de componente, es importante saber lo que es un componente porque por código luego tendremos que poner componente. Me estoy refiriendo a un componente. Quiero coger un componente. Componente es cada uno de estos bloques con funcionalidades. 00:20:23
que, por ejemplo, todo lo que se ocupa de dónde están las coordenadas del objeto, 00:20:35
veis que si yo voy aquí desplazando el objeto en X o lo desplazo en cualquier eje, 00:20:42
pues se ve reflejado aquí, esto es el componente llamado transform. 00:20:47
Cuando luego por código queramos cambiar algo del transform, 00:20:51
pues será el componente con este nombre. 00:20:54
¿Que queremos cambiar algo de un box collider? 00:20:56
Pues tened en cuenta que el componente se llama box collider. 00:20:58
Y aquí si quisiéramos ir metiendo más funcionalidades, 00:21:01
Pues tenemos este añadir componentes, que hay unos cuantos, ¿no? Pues de física, por ejemplo, un RigidBody, lo agrego y ahora hay otro componente, ¿vale? Que tiene unas cuantas secciones, unos cuantos parámetros posibles, desplegables, etc. 00:21:04
Al final, lo que tenéis que ir haciendo en vuestra cabeza es la idea de que todo esto que vamos viendo aquí, que son menús, ¿vale? Pues este campo que se puede poner un 5. Todo esto va a ser accesible mediante código. Entonces, aquí, digamos que es la versión asequible, ¿no? Como habéis hecho normalmente en todos los softwares que usáis, pero detrás hay código. 00:21:20
Aquí lo que vamos a hacer es que vamos a poder alterar el código directamente en nuestros scripts escribiendo. 00:21:42
Entonces, cuando queráis recurrir a, por ejemplo, cambiar la masa de este RigidBody, 00:21:49
tened en cuenta que hay un componente que se llama RigidBody y luego un parámetro que se llama masa. 00:21:56
Entonces, sabiendo esto, ya sabremos acceder. 00:22:01
Si empecéis a leer el tema 0, el inicial, que es bastante árido, sobre todo cuando comencéis, 00:22:04
Va a hablar de programación orientada a objetos, de clases, de cosas así. Las clases al final son como objetos, son un poco relacionados, son fragmentos de código que se recogen bajo un nombre. 00:22:09
Entonces, este componente RigidBody significa que hay un objeto con una clase, ahora vemos que es una clase de una forma menos abstracta, que se llama RigidBody. Entonces, cuando queramos recurrir a este componente, será lo mismo que recurrir a una clase también. 00:22:27
Voy a poner un ejemplo. Yo cuando hago un script nuevo, y para eso os presento el panel Project, aquí es donde vamos a ir teniendo los paquetes que vayamos instalando, los assets, aquí podremos ir metiendo los modelos, 3D o 2D, los sprites, todo se va a centralizar en estos assets. 00:22:44
E importante, si os fijáis en la estructura de carpetas, y vuelvo a abrir lo que nos ha generado antes, vais a ver que algunas de estas carpetas sean igual. 00:23:04
Por ejemplo, assets o packages. Packages está aquí y ahí. 00:23:13
Si nos metemos aquí, vais a ver que dentro de assets hay una carpeta que se llama escenas, que casualidad se llama igual. 00:23:18
O en Packages, si me meto, voy a tener unas cuantas carpetas, aquí no se ven porque están instaladas de otra forma, por código también, pero digamos que están ahí dentro también. 00:23:25
Cuando se vayan incorporando más paquetes, ahí se verán. Incluso los Project Settings que se pueden ir alterando, como aquí, se van guardando todas esas configuraciones en esta carpeta. 00:23:39
Entonces, por ejemplo, en Assets vais a ver que dentro de Assets ya hay lo que se llama una escena. Esta escena se llama Sample Scene. Cuando no veáis bien el nombre o tal, tened en cuenta que tenéis aquí una palanquita que os permite, incluso si lo lleváis al mínimo, que os lo ponga en forma de verlo en vista. 00:23:50
si le dais a la tecla control y a la ruleta del ratón 00:24:10
también podéis ir haciendo como zoom 00:24:13
esto para cosas como el prefaz 00:24:15
que el icono es muy representativo 00:24:17
es importante conocerlo 00:24:19
y veis que hay una escena 00:24:21
ya por defecto que se llama 00:24:23
sample scene y si veis aquí 00:24:25
también además con el mismo iconito 00:24:27
en la parte superior de la jerarquía 00:24:29
está sample scene 00:24:31
las escenas 00:24:33
la forma más fácil que yo 00:24:35
creo que hay para explicar lo que es 00:24:37
son lo que se podrían llamar 00:24:39
pantallas o niveles en el juego 00:24:41
pues el nivel 1, luego nos pasamos 00:24:43
a ese nivel y vamos al nivel 2 00:24:45
todo lo que tengamos aquí dentro pues será 00:24:46
la escena 1, podremos ir creando 00:24:49
más escenas para ir cambiando entre una u otra 00:24:51
¿vale? o incluso se podrá 00:24:53
abrir una estando en otra 00:24:55
para ampliar un mundo ¿no? porque no se carga todo 00:24:57
sino primero una parte del nivel 00:24:59
y luego se va ampliando el mundo pues cargándose 00:25:00
más escenas ¿vale? esto es importante 00:25:02
porque si veis este asterisquito 00:25:04
significa que esta escena no está guardada también aparece aquí arriba vale si yo le doy al control 00:25:06
s pues básicamente todo lo que hemos hecho en esta escena se ha guardado importante hay que 00:25:12
ir guardando las escenas a lo mejor estamos trabajando puedo crear aquí con clic derecho 00:25:18
crear otra escena aquí está y llamarla nivel 2 vale y me meto en el nivel 2 y veis que ahora 00:25:24
porque el fondo es el mismo pero veis que cuando me meto en el nivel 2 aquí pasó el nivel 2 y está 00:25:34
virgen otra vez es decir no tiene el cubo que teníamos antes entonces yo a lo mejor aquí creo 00:25:39
una esfera no por poner algo cuando yo voy al sample 2 te va a pedir guardar vale porque hasta 00:25:45
que no guardes no te deja irte todo es importante para ir cambiando el nivel damos doble clic y 00:25:52
podremos ir variando esto ya lo veremos de todo modo más avanzado pero que sepáis que las escenas 00:25:58
son como los niveles y siempre hay que estar trabajando dentro de una escena. 00:26:03
Por defecto nos crea esta sample, pero podemos decirle que la renombremos a nivel 1, 00:26:07
por tenerlo así. 00:26:13
Dice, bueno, va a cambiar en el assets, themes, ¿vale? 00:26:15
Nos está diciendo que en esta carpeta van a ir cambiando el nombre, ¿no? 00:26:18
De hecho, ya si nos metemos, veréis que dentro de la carpeta de escenas, 00:26:23
que es esta aquí, ya hay dos niveles, ¿vale? 00:26:27
Veis que todo lo que se vaya haciendo en este panel de proyectos luego se ve reflejado en esta carpeta. 00:26:30
Y ha creado el nivel 2. 00:26:34
Y vais a ver también, esto simplemente para que lo veáis, que asociado a cada elemento va a haber otro archivo llamado igual con finalización en .meta. 00:26:36
Estos archivos, no los borréis, son metadatos, ¿vale? 00:26:44
Son como archivos que genera automáticamente con los cambios que vayamos haciendo. 00:26:46
Entonces, que no os asuste, que no veáis aquí esos archivos porque están destinados para trabajar por debajo. 00:26:50
Nosotros no los vamos a manipular directamente. 00:26:56
Pero veis que se va viendo reflejado, ¿no? 00:26:59
Uy, va, que aquí me ha salido otro lado. 00:27:03
Vale, lo voy a recargar con el nuevo nombre de escena, 00:27:05
porque le cambié el nombre y ahora se llama nivel 1 00:27:08
y en la carpeta también se llamará nivel 1, ¿vale? 00:27:10
Vuelvo a los assets, que aquí ahora mismo solo tengo esta carpeta de escenas. 00:27:14
Igual que tenemos esta carpeta de escenas, 00:27:18
pues ahora podemos, por ejemplo, en el clic derecho y crear, 00:27:20
crear otra carpeta, ¿no? 00:27:25
Podemos hacer todas las carpetas que queramos. 00:27:26
Y aquí vamos a hacer una, y esta es buena práctica, una carpeta que es la que tiene los scripts. Los scripts básicamente van a ser los fragmentos de código con los que nosotros vamos a dar instrucciones, tanto automáticas de que se mueva un objeto, es decir, en Unity siempre hay un panel de animación muy parecido al típico que veréis en Maya con keyframes, etc. 00:27:28
Claro, pero eso va a ejecutar animaciones prehechas. Lo bueno y diferente de Maya con respecto a esto es que también aquí lo que vamos a querer es que los elementos interactúen a medida que nosotros vamos introduciendo inputs en el teclado, en el ratón, en el móvil o donde sea. Eso lo tenemos que hacer mediante scripts y mediante programación. 00:27:50
Pero sí que hay, esto no lo vamos a ver en el curso, porque aparte de ser más avanzado, es una forma menos controlable, hay lo que se llama el Visual Scripting, que es una especie de paquete, esto lo digo para que os suene, de paquete que se instala y os permite hacer todas las acciones que se pueden hacer por código, o muchas, no todas, no es tan customizable, mediante nodos. 00:28:09
Un poco, los nodos seguramente ya también los habréis visto en algún momento en otro software, pues mediante nodos. Pero es verdad que primero para saber qué estás controlando con esos nodos tienes que saber a qué hacen referencia y básicamente es a lo mismo que la programación. 00:28:33
Entonces esto os puede simplificar cosas pero es bastante más avanzado. Si alguno a lo mejor habéis usado otro motor de render como Unreal, tiene lo que se llama los Blueprints y esos Blueprints son como fragmentos de código muy similar a esto del Visual Scripting y están más desarrollados aún que en Unity y hay gente que usa eso en nodos para programar. 00:28:46
Pero, llegados a ciertos puntos, pues se pueden encontrar con límites o que no puedan customizar lo que quieran, que es lo que vamos a intentar hacer aquí todo lo posible. 00:29:08
Entonces, para hacer esos códigos, básicamente tendremos que generar scripts, ¿vale? 00:29:21
En esta carpeta de scripts me meto, vamos a crear, y este momento es importante, nuestro primer script, ¿vale? 00:29:25
Es una tarea que vais a hacer de manera muy recurrente, ¿no? 00:29:31
Para crear un script se puede hacer con clic derecho, crear, como casi todos los elementos que vamos a crear en el panel proyecto estarán dentro de esta opción de crear, porque hay un montón de cosas. 00:29:34
Y aquí podéis generar lo que es un C-SARP script. Esto de C-SARP o C almohadilla, no sé, es el lenguaje de programación que se usará en Unity. 00:29:45
En otros, por ejemplo, en Unreal se usa uno que se llama C++. En este se usa César. Cada uno es programación con unas reglas y una sintaxis diferenciada. 00:29:55
Lo que os decía, César es el lenguaje de scripting que usamos, de programación, y cuando lo creéis, al crearlo, lo primero que os va a dar fallos, cuando le deis, os pide un nombre. 00:30:09
Por defecto os pone esto de new behavior script, ¿vale? 00:30:21
Y aquí es donde vamos a crear el nombre de una clase, ¿vale? 00:30:24
Antes os he dicho, voy a poner ya el nombre, ¿vale? 00:30:29
Y luego os sigo explicando. 00:30:31
Voy a poner esto, script1, así con letras. 00:30:32
Fijaos además, cuando escribo este nombre, que no ponemos espacios, 00:30:38
esto lo ponen los temas, que no ponemos espacio. 00:30:42
En el nombre de una clase, de un método, hay que empezar con una mayúscula, 00:30:44
Se escribe luego en minúsculas y si vamos a usar otra palabra en vez de dejar un espacio, es todo seguido y lo vamos distinguiendo con las mayúsculas. Y una vez ya tengamos el nombre, script1, pincho fuera, donde sea, y se guarda. 00:30:48
importante 00:31:03
cuando ponemos este nombre 00:31:04
la primera vez 00:31:07
si luego lo vamos a cambiar el nombre 00:31:08
hay que hacer más operaciones, no solo cambiar el nombre 00:31:10
por eso, es fácil 00:31:13
tampoco tiene mucho misterio 00:31:15
pero de primeras para no liarnos 00:31:17
y que no de error, tened en cuenta 00:31:19
que el nombre en principio solo se puede poner 00:31:21
una vez y ponerlo bien 00:31:23
ahora os explico el porqué 00:31:24
tened en cuenta lo que os he dicho 00:31:26
que teníamos un montón de bloques 00:31:28
de funcionalidades, por ejemplo 00:31:31
El RigidBody para dar atributos de gravedad a nuestros objetos. 00:31:32
O el BoxCollider sirve para que se detecten las colisiones en el área de este cubo, por ejemplo. 00:31:37
Pues si nos acercamos al cubo y lo pongo en otra vista de shading, por ejemplo, WideFrame, 00:31:42
cuando nos acerquemos, aquí, y le damos aquí, a ver, perdonad, van a salir, 00:31:48
Y aquí, esto por defecto debería estar marcado, Composite Collider. Este cubo viene por defecto, pero la malla que muestra tiene unos límites que sirven de límites de las colisiones y es independiente de la geometría. Esto ya lo veremos. 00:31:59
Entonces, cada una de estas funcionalidades, si no tuviera el Box Collider, no detectaría las colisiones. De hecho, como un ejemplo rápido. 00:32:24
Ah, vale, perdón, no lo veía. Este cubo verde es el collider. De hecho, veis que cuando lo activo y lo desactivo es el collider. Aunque la geometría esté ahí, si el collider está aquí, esto lo veremos en un tema solo de física, ¿vale? 00:32:33
Pero si no configuramos dónde tienen que estar las colecciones, pues actuará de una forma diferente. Si vemos aquí, podemos activar y desactivar este collider. Y como ejemplo, hemos puesto un componente, una funcionalidad que es que tenga gravedad, por ejemplo. 00:32:45
El RigidBody de momento puede ser que tenga gravedad. Cuando yo le doy al play, ejecuto el juego, vais a ver que este objeto, y lo estamos viendo en la escena juego, recordad que cuando le damos al play nos vamos a la sección de juego. 00:33:03
Y podemos tener abiertas las dos, porque habéis visto que aunque yo estaba viendo escena, de pronto me salta juego que está viendo lo que ve la cámara principal. 00:33:17
entonces a veces queremos seguir 00:33:27
aunque esté en play el juego 00:33:29
vamos a querer seguir tocando nuestros objetos 00:33:31
entonces es buena práctica tener 00:33:33
el panel de escena y el panel de juego 00:33:35
los dos abiertos 00:33:37
y vais a ver ahora que sí que se va a ver 00:33:39
aunque esté fuera de cámara 00:33:41
que a ver yo podría llevar el objeto 00:33:42
adelante de cámara 00:33:43
a ver dónde tenemos la cámara 00:33:44
la tenemos ahí 00:33:45
y no se ve porque está 00:33:48
vamos a ver 00:33:50
porque está por detrás de la cámara 00:33:52
Yo voy a ponerlo aquí, lo bajo y ya se empieza a ver el objeto. Estáis viendo que aquí, si pincho en la cámara que viene por defecto, sale el frustrum. No sé si es un término que habéis estudiado en otros módulos, que es la representación visual de que está captando la cámara. 00:33:55
Está apuntando para ahí y hasta que el cubo no está dentro de ese frustrum, no se ve. 00:34:12
Tenemos por un lado en la ventana juego la vista de ese juego y aquí en escena donde podemos navegar. 00:34:19
Cuando demos a play, como ese cubo tiene el RigidBody, vais a ver que por defecto va a hacer... 00:34:26
¡Piu! Y se va a ir cayendo con la gravedad que tenga. 00:34:33
Si yo, por ejemplo, con estos puntitos que tengo aquí, quito este componente, vais a ver que el cubo no se cae, porque no se le está aplicando esta fuerza de la gravedad, de fuerza física. 00:34:35
Entonces, importante, cada uno de estos componentes, este nombre que tiene aquí, se corresponde con, cuando estudiéis la parte de programación orientada a objetos de la unidad 0, 00:34:49
Que vais a decir, joder, qué árido es esto. Básicamente cada objeto o clase, ahora nos relacionamos, es el nombre con el que se ha guardado a cada una de estas funcionalidades. Voy a ir más allá y lo vais a entender mejor. 00:35:01
Esto es importante para ir haciendo la cabeza. Cuando abramos el script, tenemos aquí el script esperando algo. Para abrirlo, recordad que tiene que estar asociado en External Tools el Visual Studio correspondiente que lo va a gestionar. 00:35:17
Entre el 2019 y el 2022 habrá diferencias para programadores avanzados, para nosotros es lo mismo, pero esta versión es verdad que la que yo os digo 2020, la asociada que instala como módulo por defecto es la 2019. 00:35:32
Para abrir, doble clic sobre este botón. Se os abrirá una ventana de Visual Studio, cargará y os abrirá esto por defecto. Esperamos un poco, que sobre todo el primero tarda más. A ver, que lo tengo con bastante zoom. Aquí podemos cambiar un poco el zoom. 00:35:44
Bueno, no voy a dejar 150, yo creo que se ve bien, ¿verdad? Vale, esta parte de código, que es de la forma que viene planteada de primeras, pues tranquilidad, esto lo iremos viendo, pero vais a ver que hay una cosa que nos suena, que es este script1, que se llama así, igual que el script que hemos creado aquí. 00:36:01
Y se llama igual, ¿vale? Porque cuando creamos un script, ¿vale? Lo que estamos generando es una clase nueva, un objeto nuevo de programación. Entonces, aquí vais a ver, aunque todavía no sepamos muy bien qué quiere decir todo esto, que se ha creado, esto aquí hay una clase que se llama, ¿vale? Script1, ¿vale? 00:36:23
Para que este objeto que está en Unity se asocie bien al código que estamos tocando en Visual Studio, se tiene que llamar exactamente igual, ¿vale? Si yo aquí, por ejemplo, digo, lo voy a hacer aquí, es decir, ahí va, me he equivocado del nombre y no, yo lo quería llamar disparar porque es el script que vamos a usar para disparar y lo guardo, ¿vale? Nada te va a dar error, ¿eh? Pero como aquí, vuelvo al Visual Studio, bueno, de hecho, mira, ya no lo está reconociendo y algo pasa, ¿vale? 00:36:42
yo aquí cuando abra le dé doble clic como esto se va a llevar a seguir llamando que no se va a 00:37:10
actualizar solo escribir uno todo lo que vayamos haciendo este código no no se va a traducir bien 00:37:15
de hecho cuando clic aquí vais a ver que sale el mismo código y sigue poniendo escrito uno 00:37:21
vais a ver que no no se van a relacionar os va a dar fallo vale por eso si se cambia el nombre 00:37:25
aquí hay que ir con mucho cuidado aquí y cambiar el nombre de la clase vale se tienen que llamar 00:37:30
siempre igual y cuidado con las líneas de los saltos vale disparar 00:37:35
luego importante y esto también pasa en todos los softwares igual que os he 00:37:42
dicho antes aquí hay una estrellita un asterisk y yo que nos indica que no está 00:37:45
guardado este los avances los cambios que hemos hecho para guardar como 00:37:50
siempre control s vale le dado y se ha guardado para que los cambios que yo vaya 00:37:54
haciendo del código también se vean reflejados veis que ahora cuando clico 00:37:59
aquí y así pone disparar para que se vean reflejados de hecho mira si yo si 00:38:02
mira si yo pongo aquí disparar 2 vale y vuelvo a unity no he guardado pues 00:38:06
aunque yo le dé aquí no se ha actualizado así que importante todo 00:38:11
cambia y vuelvo a poner el mismo que el nombre que tiene el script todo cambia 00:38:15
que vayamos haciendo control s vale para que no dé problema vale 00:38:19
cuando vayamos viendo ejemplos de que se hace con scripts vais a ver qué pasa 00:38:25
Otra cosa que es que igual estáis aquí diciendo, esto ya lo veremos, pero transformPosition es igual a, las coordenadas que doy donde tiene que estar la posición es, esto ya lo veremos, ¿vale? 00:38:30
Pero aquí estoy diciéndole que al empezar el juego, ¿vale? Y guardo, al empezar el juego el objeto se ubique en las coordenadas 0, 0, 0, ¿vale? 00:38:42
Y esto, vamos a ver, que hemos guardado y todo eso, pero yo, si voy al objeto, importante, para hacer zoom al objeto y verlo de cerca, en el panel de escena podéis seleccionarlo y darle a la tecla F, ¿vale? O, me vuelvo a alejar, darle doble clic al objeto y os acerca a ese objeto, ¿vale? 00:38:53
Todo esto creo que, vamos, lo ponen los contenidos 00:39:14
Igualmente, ¿vale? 00:39:20
Las coordenadas que tiene ahora mismo este cubo 00:39:21
Pues las voy a poner en 00:39:24
Las que sean que no sean 0 00:39:25
Por ejemplo, 0, 62, 0, 5, 17, 52 00:39:28
Es decir, muy alejados del 0, 0, 0 00:39:31
Cuando yo le dé al play 00:39:33
Vais a ver que yo le he dicho 00:39:35
Cuando empiece el juego 00:39:37
Que la posición del objeto vaya a 0, 0, 0 00:39:38
Le doy al play y el objeto no se ha movido en absoluto, siguen las coordenadas que estaban. ¿Por qué? Y esto es la lógica que hay que seguir también. ¿Por qué? Primero, porque en qué momento hemos dicho que el script que estamos escribiendo se asocia a este cubo. 00:39:43
Podría estar hablando de la cámara o de la luz que viene por defecto, ¿vale? 00:39:59
Hay que pensar siempre que queramos que un script se aplique a un objeto, a un GameObject, ¿vale? 00:40:03
Aquí todo se llama GameObjects, todos los cubitos estos, ¿vale? 00:40:08
Todos los elementos que veis que tanto la luz como las cámaras suelen tener el mismo iconito. 00:40:11
Algunos variarán, pero de momento todos son GameObjects. 00:40:16
Al final, hasta que no le asociemos este script, que es otro componente, ¿vale? 00:40:20
Pues no vas a ver que hay que aplicarlo. 00:40:24
¿Cómo se aplica este script a este objeto? Pues lo seleccionamos y el script que queramos, que puede haber más, pues este disparar, que en realidad sirve para que se reubique la posición, lo arrastramos como componente y veis que se añade como componente, ¿vale? 00:40:26
ya sí que el cubo 00:40:42
sabe que tiene un script que dentro tendrá 00:40:44
código tal que en este caso es que se reubique 00:40:46
y si le damos al play ahora 00:40:48
vais a ver que al comenzar 00:40:50
el juego se ha movido y si selecciono 00:40:52
el cubo pues está en el 0, 0, 0 00:40:54
¿vale? hasta que no se aplique 00:40:56
este script en el 00:40:58
objeto que lo quiera, hasta que no asociemos el 00:41:00
componente pues no 00:41:02
no está 00:41:04
nadie sabe a quién 00:41:06
tiene que aplicarse este script ¿vale? 00:41:08
importante que son como los primeros errores que surgen vale importante también para que vayáis 00:41:10
viendo la lógica al meterlo es como otro componente es decir otro objeto con otra clase vale que en 00:41:15
este caso se llama disparar que es la que hemos puesto aquí y vais a ver también que si yo este 00:41:22
nombre lo llamo disparar lo voy a poner mover objeto recordad que no se pueden poner espacios 00:41:26
todo seguido y con lo que vemos la separación de palabras es con las mayúsculas vais a ver que 00:41:35
primero ya como que me está dando aquí hay un fallo raro de que no me lo reconoce vale a veces 00:41:42
no lo hace y cuando voy a cubo no está funcionando porque no está detectando el en qué clase es a la 00:41:46
que estamos hablando porque nuevamente porque no está asociada el nombre del objeto que es mover 00:41:54
objeto con la clase que está gestionando este script por tanto como he vuelto a cambiar el 00:41:59
nombre aquí con cuidadete mover objeto y guardamos y ahora cuando volvamos a unity pues recargará y 00:42:04
ahora sí que si volvemos a cubo vale y ahí está mover objeto y fijaos cómo es que aquí nos ha 00:42:14
puesto un espacio vale esta es la forma en la que el editor el inspector lo visual que vamos viendo 00:42:20
aquí cómo se reflejan todos los parámetros no lo intenta hacer fácil y amigable tan amigable que 00:42:26
Aunque a nivel de código hay que escribirlo así, porque si no da fallos, aquí nos lo va separando cuando detecta que estamos poniendo estas mayúsculas. 00:42:32
Y recordad, os he dicho, cada componente es una clase, un objeto. Estos que vamos añadiendo aquí son ya clases como esta, que se llamarán BoxCollider. 00:42:40
Ahí en algún punto, si buscáramos un código, un script que se llama BoxCollider, que lo han configurado a otro iconito y ciertos parámetros, pero al final es otro código cuya clase es BoxCollider, ¿vale? Entonces, pensar en cada uno de estos apartados o de los componentes, pues por ejemplo, en, pues yo que sé, cualquier cosa, el PhysicsRayCaster, pues esto es otro componente. 00:42:53
Hay otro componente que es la cámara, ¿vale? Pues si nos vamos metiendo en el código, pues llegaremos a la cámara. Hasta aquí, ¿qué tal? Más o menos. Muchas cosas, ¿no? Imagino. Pero bueno, poco a poco iremos viéndolo. 00:43:15
Si veis aquí hay bastantes 00:43:29
Muchas cosas, sí, sí 00:43:33
Y Saúl, muchas más que va a haber 00:43:34
Este 00:43:37
Módulo es complicado 00:43:37
Bueno, yo hago un inciso también para procesar 00:43:40
Yo no soy 00:43:43
Desarrollador de videojuegos de profesión, nunca lo he sido 00:43:44
Bueno, por cómo se asignan 00:43:46
Los módulos me toca a mí 00:43:49
Desde el año pasado, es verdad que llevo el año pasado 00:43:50
Sí que tuve que tocar por primera vez Unity 00:43:52
Y formarme, este año ya voy más suelto 00:43:54
Pero mi nivel tampoco llega a ser 00:43:56
súper súper avanzado entonces creo que vamos a ver un montón de cosas muchísimas pero en cierto 00:43:58
momento si me preguntáis algo un poco que se sale de lo que estamos viendo pues os intentaré 00:44:04
responder de la mejor forma o daros otros recursos vale pero no voy a negar que yo no soy desarrollador 00:44:10
a nivel profesional de hecho me sé todas las cosas que pueden pasar pero bueno aún así vais a 00:44:15
ver que hay muchas cosas por tanto creo que no se va a dar esta circunstancia menos en cosas que 00:44:21
plantéis muy alejadas y tampoco soy programador este módulo un poco es de desarrollo es de 00:44:27
programación pero ten en cuenta que somos de la familia de imagen y sonido de los profesores de 00:44:34
imagen y sonido entonces es como una programación digamos orientada a iniciación para gente de 00:44:38
imagen y sonido si alguno que a veces pasa es programador pues probablemente sepa programar 00:44:42
mejor que yo y lo entienda todo mejor que yo entonces bueno simplemente para que sepáis que 00:44:47
está esto sucede cuando si ya os digo en el propio tema también hay un tutorial explicando esto a lo 00:44:53
mejor una forma más sucinta y en el propio tema está todo esto que no es que esto si no vierais 00:45:01
el vídeo no sabréis hacerlo pero sí que estoy intentando ver las primeras cosas que dan fallo 00:45:07
o que nos vuelven un poco locos de en plan no me funciona pues por ejemplo es que la clase 00:45:12
del script no se llama como 00:45:17
el objeto, ¿vale? 00:45:18
que tenemos el game object 00:45:20
vamos, el script que tenemos en Unity 00:45:22
aquí vais a ver que hay 00:45:25
muchos elementos 00:45:27
que son como lo que se llaman 00:45:28
librerías o namespaces 00:45:31
que importante, cuando os ponéis encima de cualquier 00:45:32
elemento en el Visual Studio 00:45:35
tiene muchas ayudas 00:45:36
y de hecho es bastante esencial 00:45:38
que por ejemplo la primera línea vais a ver que os pone 00:45:40
de qué tipo es este objeto 00:45:42
y aquí os pone namespace 00:45:44
Si por ejemplo nos ponemos en Start, os pondrán voy a moverObjeto.Start y paréntesis. Esto es lo que se llama una función. En MonoBehavior vais a ver que es una clase. Otra vez lo de clase. Si me pongo en moverObjeto al ponerme encima, te dice esto es la clase moverObjeto. Aquí está muy claro porque está aquí lo de clase, pero es que luego en cierto momento también vamos a poder recurrir a moverObjeto sin ponerlo de clase y pues está muy útil saber que esto es moverObjeto y es una clase. 00:45:46
aquí ya habría que hacer más operaciones 00:46:15
etcétera, bueno esto ya lo veremos también 00:46:17
pero que tengáis en cuenta que al poneros 00:46:19
encima de los objetos os va diciendo 00:46:21
pues posición es de la clase transform 00:46:23
un parámetro que se llama posición 00:46:25
un vector 3 es 00:46:27
tiene una estructura de 3 floats 00:46:28
todo esto 00:46:32
lo iremos viendo, pero bueno 00:46:33
que es importante, igual que cuando vayamos 00:46:35
escribiendo ciertas palabras 00:46:37
pues nos va ayudando y a veces nos sugiere 00:46:38
pues transform 00:46:41
Ya os diré qué hago, pero hoy no quiero ir demasiado lejos 00:46:42
Y os va sugiriendo opciones dentro de lo que tenga lógica en el momento que estáis escribiendo 00:46:47
Entonces es una ayuda como importantísima 00:46:53
Igual que cuando vamos escribiendo ciertas cosas 00:46:56
Si salen estos tachados rojos, estos subrayados rojos 00:46:59
Significa que hay un error, un error además grave 00:47:02
Si aparece ese rojo y guardara, esto lo he escrito al tuntún 00:47:06
Es decir, hay un código que no sabe qué hacer el programa 00:47:10
Y cuando el programa se pone, hay algo que no sabe qué hacer, se pone de esta guisa, que es que sale un aviso rojo y cuando intento ejecutar el juego no me deja, ¿vale? 00:47:12
Vais a ver que la programación en sí es muy exquisita porque con tener una letra mal escrita ya sale, por ejemplo, aquí, que se me ha olvidado poner la S. 00:47:23
Y de pronto sale este error y yo digo, ah, vale, voy a seguir. Pues no os deja jugar, no os deja testear el juego, no os va a dejar avanzar. 00:47:33
Entonces, siempre que veáis este subrayado rojo, sabéis que os va a dar error, que no es lo mismo que si en cierto momento, a ver, un ejemplo, voy a poner una cosa que tampoco sabemos qué es, yo qué sé, vale, y hacemos esto y sale un subrayado verde. 00:47:41
El subrayado verde, como los propios colores indican, significa que algo pasa, pero esto no es un error fatal, ¿vale? Esto, aunque hayamos declarado algo y nos dé esa especie de error, ahora nos sale un warning que es amarillo y este sí deja testear el juego, ¿vale? 00:48:03
Si dejará hacer lo que haya que hacer, ¿vale? En este caso es que ha puesto el objeto en el 0, 0, 0. Cuando hay este tipo de subrayado verde significa, esto ya lo veremos también, que hemos declarado una variable pero luego no se usa, es decir, que ahora mismo esta línea no molesta pero no aporta nada, no está mal escrita, sabe que es, pero no está aportando nada, ¿vale? 00:48:18
De hecho, cuando nos ponemos encima, veis que os pone aquí una cosa en plan, a ver, vamos a ver qué es lo que pone, pone la segunda línea. La variable comprobación se ha declarado, pero nunca se usa, ¿vale? Pues no es un problema error fatal, pero bueno, pues si no se va a usar, pues fuera y todo más tranquilo. 00:48:39
Pero los verdes se pueden dejar ahí, no hay problema, ¿vale? Cosas que os irán surgiendo. El próximo día que tengamos tutoría me meteré un poco más en sintaxis, ¿vale? Pues que son estas llavecitas y tal para quien haya hecho HTML o lo haya visto, pues sabrá más. 00:48:56
pero bueno 00:49:11
todas estas funcionalidades 00:49:14
que digamos que van saliendo aquí a medida que escribimos 00:49:16
no salen de la nada, es porque se están 00:49:18
viendo librerías 00:49:20
aquí que tienen un montón de 00:49:22
configuraciones prehechas 00:49:24
que nos permite ir detectando 00:49:26
parámetros 00:49:28
que dice, ah pues hay un parámetro 00:49:29
que se llama transform, otro red transform tal 00:49:32
eso es porque tenemos aquí 00:49:34
librerías instaladas, más adelante tendremos 00:49:35
que ir incorporando más 00:49:38
librerías, pues como por ejemplo 00:49:40
Unity 00:49:42
Unity Engine 00:49:43
bueno, pues una 00:49:49
cuando queramos hacer gestión de 00:49:50
escenas, hasta que no pongamos 00:49:52
esta línea, no nos van a salir 00:49:54
por ejemplo 00:49:56
estos parámetros 00:49:57
imaginaos que pongo aquí Scene Manager 00:50:00
voy a poner algo que no de error 00:50:02
Active Exchange 00:50:06
y uno, a ver 00:50:08
si esto no da error 00:50:12
get active scene, por ejemplo 00:50:14
y ahora no da error 00:50:21
¿vale? no sabemos que es 00:50:23
pero vemos que no da error, importante cuando más adelante 00:50:24
estamos trabajando, imaginaos 00:50:27
que yo borro esta línea porque 00:50:29
no está o tal, veréis que 00:50:31
da error, ¿por qué? porque 00:50:33
no está detectando una librería que 00:50:35
contiene la información de qué hace esta orden vale importante vale de por defecto vamos a ir 00:50:37
tirando con estas tres librerías y ojo con esto que pone mono behavior que es otra clase digamos 00:50:43
que tiene unity específica de unity de la que heredan todas las clases que iremos yendo viendo 00:50:50
con también atributos es decir hay como librerías externas vale y luego el propio de los propios 00:50:55
códigos que ya tiene unity por como incorporado a través de una programación especial que que 00:51:01
tenía. Bueno, de hecho lo pone ahí. 00:51:07
Bueno, behavior es la base clase 00:51:09
desde la cual cualquier script de Unity 00:51:11
deriva. Vale, pues 00:51:13
esto que es una operación de herencia, bueno, 00:51:14
pues al final también permite 00:51:17
que haya ciertos comportamientos 00:51:19
que si no, no estarían por 00:51:21
defecto en el lenguaje C Sharp. 00:51:23
¿Vale? Esto quiere 00:51:26
decir que no podemos, por ejemplo, 00:51:27
borrar cosas al tun-tun, porque 00:51:29
va a empezar a dar fallos. Por ejemplo, 00:51:31
el transform no viene de estos namespace. 00:51:33
El transform es una instrucción, una palabra clave, por decirlo de alguna forma, que viene de MonoBehaviour. Si de hecho le dierais a Control y a esta clase, os abre aquí un montón de cosas que es lo que hay detrás de estas clases. 00:51:35
Y podemos ir entrándonos en el agujero hasta infinito, porque ya es cosa muy avanzada, pero digamos que todo está heredando de otra información que ha hecho quien haya desarrollado Unity, por ejemplo. 00:51:49
Vale, cuando empezamos a trabajar en Unity vais a ver que están, esto por ejemplo, quien antes ha mencionado lo de HTML, estas llavecitas que vais a ver constantemente. Las llavecitas digamos que es, la llavecita de abertura y cierre implica el ámbito dentro del que se van a dar ciertas instrucciones. 00:52:06
Por ejemplo, esto que es un método, ya veremos que es un método, que implica que todo lo que esté aquí dentro de estas llaves asociado a este método, esto digamos que es un paquete, todo lo que pongamos aquí se va a ejecutar en el start. 00:52:30
Si yo, como he hecho antes, pongo transform position new vector 3 bla bla bla, que es una ubicación, pues al empezar el juego o cuando se inicie este script, que puede ser porque lo lancemos durante el juego, todo lo que esté en start se va a aplicar en el primer momento que se use este objeto. 00:52:43
Por eso, al empezar el juego, el objeto cubo al que le hemos aplicado este script, que sigue estando aquí, mover objeto, pues al empezar el juego se ha aplicado. 00:53:05
Sin embargo, hay otra sección, otro método, se llama, otra función, que es el update. 00:53:16
Y de hecho, aquí vais a ver que ya por defecto vienen estas dos líneas verdes, una referida al start y otra al update. 00:53:23
Vale, esto son lo que se llaman comentarios 00:53:28
Cuando el código se va ejecutando 00:53:32
Toda línea que veáis que empieza con estas dos barras 00:53:34
Así inclinadas 00:53:38
Significa que es como un comentario que se ha dejado 00:53:40
Que no se va a tener en cuenta a nivel de ejecución 00:53:43
Pero por ejemplo para aclarar en plan 00:53:47
Yo ahora mismo aquí puedo poner dos líneas de estas 00:53:48
Que veis que se vuelve verde 00:53:50
Y ponerme un comentario en plan 00:53:53
Con esto consigo que el objeto 00:53:54
bla bla bla, se vaya a cero 00:53:57
por ponerlo rápido, ¿vale? 00:53:59
esto es muy útil para ir comentando 00:54:01
para ir dejándote notas 00:54:02
si os fijáis aquí pone, justo antes 00:54:04
como aclaración, start, este método 00:54:07
y lo que hay en sus llaves, se llama 00:54:09
es decir, se activa 00:54:11
antes justo del primer frame 00:54:13
de actualización, es decir 00:54:15
en el primer frame en el que se 00:54:17
ponga en uso este script 00:54:19
va a ocurrir esto, ¿vale? 00:54:21
y el comentario de lo que esté 00:54:23
dentro de este void, nos ha dejado 00:54:25
hay que programar update, es llamado una vez por frame. 00:54:27
Cuando vais jugando a un juego, igual que pasa también al ver un vídeo 00:54:30
o al hacer cualquier cosa audiovisual, la reproducción se compone de frames. 00:54:34
Es decir, se irá desarrollando en un número de frames determinado por, 00:54:40
en este caso, la potencia del ordenador. 00:54:45
Cuanta más potencia tenga, más frames por segundo podrá ir ejecutando. 00:54:47
De hecho, si alguna vez habéis jugado a videojuegos 00:54:52
Muchas veces podéis, en las opciones en el menú del videojuego 00:54:58
Podéis seleccionar cuántos frames por segundo 00:55:01
Incluso podéis decir a qué velocidad de reproducción se va generando 00:55:03
Porque a diferencia de lo que ocurre en algo renderizado 00:55:08
Como un render que hagáis de Maya 00:55:11
Por poner un ejemplo, de Premiere o de After 00:55:14
O de un video cualquiera 00:55:16
Ahí ya está definido el número de frames que tiene ese video 00:55:17
Pero en un videojuego se va generando a lo largo de la... vamos, se va creando a medida que se va jugando, ¿no? Entonces, podremos ir definiendo cuántos fotogramas por segundo tiene el juego. Aquí, por defecto, lo que va a intentar es hacer tantos fotogramas por segundo se puedan con respecto a la potencia que tenga el ordenador, ¿vale? 00:55:21
Entonces, cuando lanzamos este script le decimos, quiero que la posición transform esté en el 0, 0, ¿vale? Pero a lo mejor queremos que luego otra orden, cada fotograma vaya variando, ¿vale? Y para eso tendríamos que meterla dentro de esta función de update, de actualización, ¿no? 00:55:43
Por ejemplo, se me ocurre 00:56:00
Para no llevarlo a algo muy avanzado 00:56:04
A ver si se me ocurre algo 00:56:08
Voy a hacer como un contador 00:56:10
Esperad un segundillo que hago una cosa 00:56:15
Esto ya lo iremos viendo 00:56:18
Esto ya lo veremos 00:56:20
Vale 00:56:37
Y ahora os explico alguna cosilla de esto que estoy poniendo. No todo, pero alguna cosilla. Esto ya es avanzado, pero lo que os digo es básicamente que he hecho un bucle que va a estar leyendo lo que hay dentro de estas llaves. 00:56:37
Recordad que hay una llave de apertura y una de cierre que están asociadas y lo que hay aquí dentro, lo que le estábamos diciendo es que nos represente un número que se está ejecutando cada fotograma hasta llegar al número 9. 00:56:58
perdonad porque tengo que poner menor 00:57:12
hasta el número 9 00:57:14
si esto lo vamos ejecutando 00:57:15
cada fotograma 00:57:19
cuando le demos a 00:57:21
play al juego 00:57:23
si vamos a la consola 00:57:24
la consola al final lo que 00:57:28
hace es darnos 00:57:31
comprobaciones de que está haciendo el juego 00:57:32
de ciertos parámetros que vayamos poniendo 00:57:34
entonces 00:57:37
cuando queréis por ejemplo poner una 00:57:37
orden, voy a parar el juego 00:57:41
queréis hacer una orden 00:57:42
creo que ha escrito alguien en el chat 00:57:44
vale, cuando queramos ir comprobando 00:57:48
algo del juego 00:57:50
lo vamos a tener que mandar a esa carpeta 00:57:51
que se llama consola 00:57:54
por ejemplo, imaginaos que yo tengo 00:57:55
una opción que es decirle 00:57:58
cuando 00:57:59
a un objeto le toque otro 00:58:00
pues que se muera, eso ya 00:58:03
diremos que eso lo haga efectivamente 00:58:05
juego, pero si yo 00:58:08
quiero verlo en consola, hay un comando 00:58:12
que se llama debug. 00:58:14
Log, ¿vale? Esto lo tenéis que aprender, lo veréis también en el primer tema. Y dentro de los paréntesis, ¿vale? Es donde ponemos qué mensaje tiene que mostrar esa consola a medida que juguemos. 00:58:16
Por ejemplo, yo voy a querer que al empezar el juego, en el start lo pongo todavía, voy a poner que me diga, pues por ejemplo, hola mundo, que es como se suele poner. Entonces cuando arranque el juego, al empezar en la consola se va a ver este mensaje de hola mundo como comprobación. 00:58:31
E importante, como ahora solo quiero ver este debug log de Hola Mundo, que antes he puesto un código, ahora vuelvo a explicarlo, que igual me he adelantado un poco. Imaginaos que yo este código no quiero que se ejecute, pero tampoco quiero borrarlo porque ya lo tengo escrito y igual más adelante lo recupero. 00:58:51
Para esto vuelven a servir los comentarios. Si yo en una línea vuelvo a poner las dos líneas, veis que de pronto se comenta, se convierte en verde todo, y entonces esto lo tengo aquí, que en cualquier momento yo lo puedo borrar y vuelve a activarse, pero es muy útil para ir dejando en comentario, en algo que a lo mejor luego uso, ciertas líneas, para ir comprobando el código. 00:59:07
Esto está muy bien para eso, para ir sin borrar. Estamos probando cosas y hemos escrito bastante código, en vez de borrarlo, que a lo mejor luego solo estamos testeando que funciona o no, pues se comenta y listo. 00:59:29
¿Qué pasa? Aquí, por ejemplo, claro, digo, voy a comentar esto que no me interesa. Aquí he comentado esta línea, pero es nada más incluido hasta la llave y ahora esta llave de cierre no está cerrando aquí, sino que está cerrando esta llave de aquí. 00:59:42
Entonces, al final hay una llave aquí que no está cerrando nada porque las he desemparejado, ¿vale? Entonces, habría que ir comentando todas las líneas, ¿vale? Hasta que todo lo que tenga lógica, veis que se ha quitado ya el error. 00:59:56
O hay otra forma de comentar, esto creo que no lo ponen los apuntes, ¿vale? Que es para comentar varias líneas de golpe, ¿vale? Hay otra forma que es poner la línea en vez de 2, 1 y un asteriskillo, ¿vale? Y en la línea que queramos que deje de comentar, al revés, asteriskillo y línea. 01:00:08
Y ahora veis que se ha comentado todo esto, está en verde. Ahora mismo este código yo lo podría recuperar enseguida borrando esto, y ahí está otra vez. Bueno, aquí como he comentado antes esto también, pero no lo borro. 01:00:26
Entonces esto es muy útil para, en plan, estoy probando una línea y no me funciona, la voy a dejar comentada y luego vemos. Entonces ahora mismo en el update no se está ejecutando nada, y en el start, al empezar, el objeto que tenga el script se va a ir al 000, 01:00:39
cero y aparte quiero que la consola vale esto ahora mismo es muy abstracto por decir si para 01:00:55
qué voy a querer que ponga hola mundo la consola bueno ya veremos que esto tiene más aplicaciones 01:01:01
en el futuro pero guardo y si voy aquí ahora al editor al darle a play vale en la consola 01:01:06
vais a ver que va a poner hola mundo vale a funcionar y solo una vez porque solo se ha 01:01:13
ejecutado al empezar el juego vale que no es lo mismo y vuelvo al código que corto esta línea 01:01:20
control x y la pego en el update vale y ahora lo que le estoy diciendo es esta línea esta 01:01:27
comprobación este hola mundo que aparezca en cada fotograma del juego vale esta instrucción vais a 01:01:34
ver que ha cambiado radicalmente en el sentido de que cuando desactivó y en la consola cuando 01:01:39
ya tengáis muchos elementos para no confundir es entre un play y otro aunque lo suelo hacer 01:01:44
por defecto le podéis dar a clear vale que son los mensajes no pasa nada no estáis borrando nada 01:01:49
si volvemos a ejecutar el juego ahora se generará los mensajes de esta nueva reproducción y vais a 01:01:53
ir viendo que aparecen muchos hola mundo uno por cada fotograma vais viendo que aquí pone la hora 01:01:59
en la que se está ejecutando y como habrá pues bastantes fotogramas por segundo pues por eso 01:02:04
hay varios de cada segundo vale para el juego se quedan aquí los comentarios y a lo mejor en cierto 01:02:10
momento quiero decir esto vais a ver que al pulsar os pone cosas como en qué 01:02:15
script que es el mover objetos incluso dicen qué línea es la que está 01:02:20
ejecutando esto que está ocurriendo que si vamos aquí vamos a ver que la línea 01:02:24
22 es donde estamos dando esta orden fijaos que aquí os dice en qué línea se 01:02:29
está ejecutando la orden incluso si damos a doble clic aquí cuando salgan 01:02:33
errores o lo que sea al dar doble clic te lleva al sitio del script donde que 01:02:38
se ha provocado que aparezca este mensaje. 01:02:43
Esto es útil. ¿Vale? Veis 01:02:46
que no es lo mismo ejecutar 01:02:47
las órdenes en Start que 01:02:50
en Update, que va un fotograma 01:02:52
tras otro. Si yo, por ejemplo, 01:02:54
voy a 01:02:57
comentar, ¿vale? Para no borrar, 01:02:58
este de Backlog, ¿vale? Y vuelvo 01:03:00
a coger este for, ¿vale? 01:03:01
Simplemente, y lo pongo, sin 01:03:04
comentar, en Start. Es decir, solo 01:03:05
una vez se va a ejecutar que me enseñe la 01:03:08
consola, esto de Backlog, veis 01:03:09
que otra vez está aquí que se ejecute hasta el número 8 en realidad menor de 9 vale esto ya sé 01:03:12
que igual vamos seguro que no estaréis siguiendo pero voy explicando lo que hace ya veremos cómo 01:03:18
se hace pero quiero que veáis el funcionamiento de la consola al darle a play vais a ver que va 01:03:23
que se ha generado el 0 al 8 una vez y ya está porque al arrancar el juego le he dicho ponme 01:03:28
una cuenta del 0 al 8 01:03:36
al comenzar el juego y me la ha hecho 01:03:37
y lo ha hecho todo, independientemente 01:03:40
de que haya más frames en ejecución después 01:03:42
me la ha hecho en el primer frame 01:03:44
en el first frame, que no es lo mismo 01:03:45
que si esto lo vuelvo a mover, corto 01:03:48
y pego aquí en el update 01:03:50
guardo 01:03:52
y lo ejecuto aquí, que lo que vais a ver 01:03:52
es que en cada 01:03:56
limpio el código, en cada fotograma 01:03:58
me va a contar hasta 8 01:04:00
le doy 01:04:01
y veis que aquí se está moviendo, están cambiando los segundos 01:04:03
y aunque no se vea muy claro 01:04:06
veis que aquí hay 01:04:08
más de 999 mensajes 01:04:10
ya llega un punto que se para 01:04:12
si yo paro y empiezo a comprobar, veréis que ha contado 01:04:14
hasta 8, pues cada fotograma 01:04:16
de los que lo ha ido haciendo 01:04:18
entonces imaginaos que queréis hacer 01:04:19
un contador de tiempo 01:04:22
pues tendremos 01:04:24
que ir consiguiendo que cada uno de estos 01:04:25
fotogramas en el update 01:04:28
vaya generando un nuevo 01:04:30
número que vaya sumando uno a uno vale para empezar estas dos funciones que como ya hemos visto vienen 01:04:32
de lo que tenemos aquí arriba sirven para decir que esto no ocurre en cesar por defecto para decir 01:04:38
en qué momento se tiene que ejecutar tal código de hecho hay más momentos de ejecución ahí está 01:04:45
el void update pero ahí por ejemplo otro que sería esto ya lo veremos nuevamente el awake pues aquí 01:04:51
Y aquí, en estas llaves de aquí, lo que iremos poniendo son los eventos que se van realizando según se arranca el juego. 01:04:58
Es decir, aunque no se esté ejecutando un frame porque este screen todavía no está en juego, no ha aparecido ese objeto, no se ha provocado, 01:05:10
esto ya ha cargado en ese objeto en potencia ciertos parámetros, lo hace a priori. 01:05:19
Bueno, esto ya lo veremos. Que sepáis que hay más métodos. 01:05:24
hasta aquí ya creo que voy a ir parando 01:05:28
porque es mucha información, me interesa mucho 01:05:31
que vayáis viendo el tema 1 sobre todo 01:05:33
que se lo vayáis haciendo 01:05:35
y también ya una vez 01:05:37
digamos el tema 1 os pongáis con la tarea 01:05:39
que vayáis chequeando también el tema 0 01:05:41
que es como el que va a ser más denso 01:05:43
y ya os he dicho que va a ser a lo largo 01:05:45
de todo el curso, el próximo día 01:05:47
veremos lo relativo a variables 01:05:49
que es una función, un método 01:05:51
más componentes, como se hace 01:05:53
de componentes. También los game objects veremos, pues eso, en la primera tarea tenéis que hacer 01:05:57
una nave a partir de las formas de las geometrías básicas y hacer vuestro primer script de instanciación. 01:06:03
Subido por:
Daniel M.
Licencia:
Todos los derechos reservados
Visualizaciones:
113
Fecha:
14 de octubre de 2024 - 18:54
Visibilidad:
Clave
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
1h′ 06′ 17″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
469.47 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid