Tutoría 1 - DEIM - UT1 y 0 - Curso 24·25 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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.
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
3D
00:19:51
¿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
el
00:58:08
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