Tutoría 11 - DEIM - UT7 y examen - Curso 24·25 - 13 de mayo - 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 la tutoría 11 de DEIM
Bienvenidos a esta tutoría número 11 de DAME.
00:00:01
Bienvenidos.
00:00:05
No he visto ninguna duda planteada en los foros,
00:00:07
por lo que no sé...
00:00:10
Bueno, si me queréis comentar alguna duda que tengáis del tema,
00:00:12
de la UT7,
00:00:16
o sobre la tarea, quienes estéis haciéndola,
00:00:18
que espero que seáis varios,
00:00:22
porque es una tarea con la que se ponen en práctica muchas cuestiones,
00:00:24
en esta ocasión más que referidas a código,
00:00:27
que también más referidas a la interfaz de Unity y cómo funciona este motor de render en concreto,
00:00:29
que es análogo a cómo se haría con otros softwares, con otros motores, por ejemplo Unreal,
00:00:37
que evidentemente cambian mucho sus configuraciones y dónde está en la interfaz cada cosa,
00:00:42
pero bueno, tiene siempre una equivalencia, una aproximación, que cada software tiene sus peculiaridades, por supuesto,
00:00:47
pero un poco la base parten de los mismos aspectos.
00:00:53
Lo dicho, no sé si hay alguna duda que queráis. He visto que se acaban de conectar un par de compañeros.
00:00:59
Vale, también como puse en el planteamiento de la tutoría, mi idea era hacer un repaso ágil de los distintos temas.
00:01:08
También si tenéis alguna duda la podemos ver.
00:01:16
Un poco, bueno, pues enfatizando aspectos de cara al examen que considero relevantes.
00:01:19
Eso no significa nunca que vaya a ser una pregunta de examen ni nada.
00:01:27
Pero bueno, ni que debáis de dejar de estudiar el resto de temario, por supuesto, pero bueno, un poco poniendo énfasis en algunos aspectos que en realidad ya en las propias tareas que se han ido planteando y en las distintas tutorías ya se ha hecho, ¿vale? Pero bueno, un poco a nivel de repaso.
00:01:30
en principio
00:01:47
esta tutoría está planteada
00:01:48
como última tutoría, si nos da tiempo a ver
00:01:51
un poco todo lo del examen
00:01:53
eso no significa que no podáis
00:01:55
plantear dudas
00:01:57
en el foro correspondiente
00:01:59
de la unidad o donde es, el punto del temario
00:02:01
¿vale? que se responderán
00:02:03
incluso si es
00:02:06
muy relevante
00:02:07
pues bueno, se va viendo como resolverla
00:02:09
pero siempre tenéis los foros
00:02:11
como durante todo el curso
00:02:13
Lo he dicho, ¿alguien que quiera plantear alguna duda ahora de comienzo de la tutoría? No sé, por dar un poco de peso, no sé si los que hayáis leído, que espero que seáis la mayoría, si habéis visto el tema, el contenido, dudas que os surjan, lo habéis seguido más o menos bien, algo que queráis que repasemos o veamos.
00:02:14
¿No? Vale. Entiendo entonces que está más o menos explicado y con los vídeos que están incorporados.
00:02:45
Vale. En primer lugar, en este tema se habla, en el tema número 7, el último,
00:02:52
bueno, veréis que hay muchos apartados especialmente referidos en su primera mitad,
00:02:59
aspectos tanto de la visualización, más, pues eso, del acabado del producto a nivel visual y a nivel sonoro.
00:03:05
Tenéis ahí ese apartado. Luego tenéis otra sección esencial más referidas a cómo exportar o compilar en nuestra aplicación o videojuego. Tenga en cuenta también cómo se puede optimizar al máximo herramientas para ver el coste de procesamiento que está teniendo la ejecución de nuestro juego.
00:03:13
Y por último, y os lo puse cuando se abrió el tema, hice énfasis en ello, hay unos últimos apartados referidos al intercambio y uso de un motor de videojuegos, en este caso, con dispositivos externos, que como señalaba, en este caso, claro, no es obligatorio ni contáis en muchos casos seguramente con algunos de los dispositivos.
00:03:34
Por ejemplo, la gafa de realidad virtual, algunos las podéis tener, pero no se espera que las tengáis. Igual que, bueno, móvil sí tendréis, pero a lo mejor que queráis usar para probar la realidad aumentada. Entonces, habréis visto que estas secciones son un poco introductorias, sobre todo a nivel conceptual en algunos casos, por ejemplo, en esto de qué es la realidad virtual, los distintos tipos de realidades que hay ahora.
00:03:55
y aunque luego se hace una pequeña introducción, que está muy bien y si la podéis seguir porque tenéis los dispositivos correctos,
00:04:16
os animo a que lo hagáis, pero no se espera de cara al examen que sepáis hacer configuraciones concretas.
00:04:25
Eso no quita que no debáis conocer, por ejemplo, lo conceptual, que son estas distintas realidades,
00:04:31
un poco cuál es la plataforma, en el caso de MetaQuest, que se usaría para configurar,
00:04:38
cuando se diseña para móviles pues lo mismo que entornos de desarrollo para exportar esto sí esto
00:04:43
sí que puede ser material examen pues que hay distintas distintos módulos o plataformas de
00:04:50
exportación no dependiendo de qué tipo de dispositivo se va a exportar y bueno pues
00:04:55
por ejemplo aquí hay distintos dependiendo de la versión de unity que estáis usando por eso
00:05:02
también aquí se os anima a ir cambiando de versión para que recordéis cómo se instalan distintas
00:05:06
versiones porque a veces podéis estar trabajando en un proyecto y paradójicamente tengáis que
00:05:11
volver a una a una versión anterior porque tiene una herramienta que en ese momento tenía cierta
00:05:16
configuración de cierto dispositivo en concreto que a lo mejor en la siguiente lo han quitado o
00:05:21
algo más lógico al contrario tener que aumentar de versión buscando nuevas capacidades nuevas
00:05:26
funcionalidades por ejemplo aunque no lo uséis que se deja documentación y se dejan vídeos etcétera
00:05:32
pues saber que si quisiéramos probar un juego que hace uso de inputs físicos o incluso probarlo directamente viendo en un móvil, pues existen aplicaciones como este Unity Remote para hacer un testeo sin necesidad de exportar por completo el juego,
00:05:40
sino hacer lo que se llama un build and run, que aquí lo indica, que no es necesario hacer la compilación del juego
00:05:56
y poder probar el juego directamente en vuestro móvil para poder usarlo.
00:06:07
Lo dicho, creo que todas las secciones, aparte de los vídeos de los profesores, de Álvaro Holguera en este caso
00:06:16
y otros que se van incorporando. Más o menos creo que hay una introducción.
00:06:23
Este módulo tampoco busca profundizar mucho en los aspectos de este tema, sobre todo en los últimos.
00:06:28
Como os comenté, hay un curso de especialidad posterior que se centra más en los motores de videojuegos a nivel global,
00:06:35
también en lo que se refiere a realidad virtual. De hecho, realidad virtual es parte del nombre de ese curso.
00:06:44
Y bueno, esto es una introducción. Igual que se habla de los GPS, están aplicados siempre a dispositivos móviles, se habla un poco de cómo se podría usar o aplicaciones que hay. Todo un poco introductorio, pero eso no significa que esto no lo podáis conocer a nivel conceptual y se os pueda preguntar en el examen.
00:06:49
Lo mismo sucede con los sistemas de captación de vídeo. Aquí si tenéis una webcam, por ejemplo, podéis probar este código. Aquí se habla un poco conceptualmente de qué uso puede tener el vídeo, qué es un QR y dónde se podría usar, un poco en qué consiste este código visual basado, en el caso de los QR en dos dimensiones, en un plano de puntos que va generando códigos que cuando es leído por un dispositivo con cámara,
00:07:07
nos permite enlazar con elementos de otra web, otra URL, para así incluso en el mundo físico poder conectar directamente al mundo virtual.
00:07:35
Eso también a nivel conceptual lo debéis saber de cara al examen, que es un QR o un código de barra, los códigos visuales y un poco lo que aquí se cuenta.
00:07:48
Más allá de aplicarlo, pues saber qué es.
00:08:00
La tarea, alguno no sé si la ha comenzado y tiene dudas, pero entiendo que sí, se entrega este domingo, si no me equivoco.
00:08:03
Dudas que os surjan.
00:08:13
Hay un aspecto importante, que también por eso se aplica en esta tarea, que es que a diferencia del resto de tareas del curso, se emplea un render pipeline distinto.
00:08:18
De hecho, cuando creáis, voy a sacar aquí Unity Hub, cuando creáis un nuevo proyecto en Unity Hub, a ver si quiere abrírmelo, dependiendo de la versión, ya lo vimos al comienzo del curso, hay distintos tipos de plantillas y de sistemas.
00:08:28
Al final estas plantillas o estos tipos Core, cuando ponéis All Templates aparecen todos los tipos de proyectos que se pueden crear optimizados ya para un uso u otro.
00:08:49
Al final en lo que consisten, y aquí vemos por ejemplo este Universal 3D, referido al Universal Render Pipeline o URP, se habla del tema, que es uno que tiene un mejor rendimiento físico,
00:09:01
pero está optimizado para dispositivos móviles
00:09:15
y que no son de altísimas prestaciones
00:09:18
pero sí que tiene un acabado mejor que el del Build-in Render Pipeline
00:09:20
y luego cuando ya, si se quisiera hacer un videojuego
00:09:24
de altas prestaciones, por ejemplo para consolas de última generación
00:09:27
en plan Playstation 5, por ejemplo
00:09:31
el que habría que escoger es este High Definition Render Pipeline
00:09:34
o HDRP
00:09:39
Al final, en lo que varían a nivel creación de proyecto es que cuando vais escogiendo cada uno, si le dais al Read More, aquí os va a poner, aparte de una descripción, os va a indicar qué paquetes están incluidos.
00:09:41
Es decir, si crearais un proyecto que no fuera Universal Render Pipeline, como se indica en el tema también, y es un Building Render Pipeline, el básico que hemos usado hasta ahora, que venimos usando sobre todo porque es el más eficiente, es el que menos consumo va a hacer a nivel gráfico y por tanto el que menos problemas os va a suponer para trabajar y por eso para aprender las herramientas es el que se emplea.
00:09:55
Pero incluso creando este Building Render Pipeline, si luego quisierais actualizarlo al Universal, se podría hacer siempre mirando qué paquetes tiene instalados. Aquí la clave, por ejemplo, es que está instalado este paquete de Universal Render Pipeline.
00:10:18
¿Vale? Recordemos que en Window Package Manager está el gestor de instalación de paquetes donde se pueden ir instalando distintos paquetes. Si este paquete que aquí ya está instalado al hacer un proyecto de Universal Render Pipeline, si no lo tuviéramos siempre se puede buscar. ¿Vale? En Unity Registry, pues sabiendo que se llama Universal Pipeline, aquí os saldrá este paquete. Aquí, en caso de que no estuviera, os permitiría instalarlo.
00:10:33
Como indica el tema y la tarea también, cuando se instala un nuevo motor de render, mejor dicho, otro render pipeline, aparte de que puede surgir alguna opción añadida o más funcionalidades,
00:11:01
Lo que puede ocurrir es que, si hemos estado trabajando en otro de los render pipelines, aparezcan materiales con este color. En el tema había un ejemplo, por ejemplo, en materiales, cuando se habla de URP y HDRP, esta descripción que acabamos de hacer, pueden aparecer materiales con este rosa, más bien magenta, que significa que el motor de render no está leyendo ese material.
00:11:17
Para hacer una actualización de esos materiales hay que usar esta opción, Edit Render Pipeline, Universal Render Pipeline. Aquí lo tenemos, en Edit Render Pipeline habrá una opción, si hubiera sido el HDRP tendría las correspondientes y con esta opción se puede actualizar todos los materiales.
00:11:44
¿Qué ocurre? Que como se habla en el tema
00:12:06
También puede haber materiales
00:12:08
Que hagan uso de otro tipo de shaders
00:12:10
¿Vale? Normalmente los que se crean
00:12:12
Con el shader graph, que no lo reconozcan
00:12:14
Por defecto, en ese caso
00:12:17
Claro, si vamos a querer
00:12:18
Usar un
00:12:20
Material de ese tipo
00:12:22
¿Vale? O creado con ese tipo
00:12:24
Pues porque nos lo ha pasado un tercero, etc
00:12:26
En el proyecto anterior
00:12:28
No se debería estar viendo bien
00:12:31
En el que se hizo con el
00:12:32
Build in render pipeline
00:12:34
Porque no es nativo de ese motor de render. Pero cuando estamos usando materiales de este estilo, que al final son materiales que hacen uso de un shader creado en Shader Graph, si os fijáis este Water Shader que tenemos aquí configurado, que os lo paso también en la tarea, esto es bastante avanzado, sería más incluso referido a módulos como color, etc.
00:12:35
a la creación de shaders, aquí, bueno, es un poco por mencionarlo, pero los shaders creados con esta herramienta, cuando usamos este motor de shader, nos permite, este motor de render, perdón, de este URP, nos permite usar estos shader graphs que vayamos creando, ¿vale?
00:12:59
Aquí hay varios y este es uno, por ejemplo, que se ha creado aquí, si os fijáis en el nombre, que se ha creado aquí con este nombre y que luego podremos ir configurando, ¿vale? En el tema hay una introducción, se os dejan vídeos bastante más, vamos, tiene un sinfín de aspectos, un campo muy amplio.
00:13:18
De hecho, cuando se desarrolla un videojuego, igual que cuando se hace una película, hay profesionales simplemente dedicados al texturizado o al desarrollo de shaders. Que sepáis que existe. Y este Render Pipeline cuenta con herramientas propias que no teníamos en el otro Render Pipeline, en el que podíamos crear, como también se habla en el tema, distintos materiales con distintos mapas.
00:13:37
Se pone el ejemplo del Standard Surface del Building Renderer, del que hemos estado usando hasta ahora, pero bueno, cada shader al final, aquí lo tenemos, distintos mapas que puede haber en un shader, pero dependerá de ese shader y dependerá del motor de renderer.
00:14:05
Entonces, sobre todo es conocer un poco, que suelen tener esta nomenclatura, qué es cada mapa para ir preparando los materiales o configurarlos, para que se vean de un modo u otro, cambiar el color desde el albedo, darle metalicidad, relieves, un poco en semejanza a lo que ya habréis hecho en otros softwares de 3D, en otros módulos que tenéis más dedicados a esto.
00:14:29
Además en esta tarea también se pone en juego lo que es el tema del sonido
00:14:54
Y para ello hay un par de componentes fundamentales
00:15:00
Uno, que siempre ha estado ahí, lo hayáis visto, que es que cuando se crea una cámara
00:15:05
A no ser que la hayáis borrado de manera activa, se genera o viene mejor dicho con este componente llamado audio listener
00:15:10
Y por eso es por lo que vamos a poder escuchar durante el juego los sonidos que se vayan incorporando
00:15:17
Al final el audio listener se tiene que entender como los oídos de nuestro juego. Igual que la cámara en sí es lo que estamos visualizando, dependiendo de dónde la ubiquemos, se verá una cosa u otra hacia donde esté mirando, también viene ya con un audio listener.
00:15:23
Este AudioListener tiene una pega que es que si vamos creando varias cámaras o vamos incorporando más AudioListeners en una misma escena, va a generar conflicto en general. Por tanto, la opción es ir activando o desactivando, se puede hacer por código, ya sabéis cómo se puede llegar a un componente, creando una variable de ese tipo llamada como el componente y capturándolo, pues se tendría que ir activando o desactivando esa escucha para que no haya varias.
00:15:38
Es decir, es extraño tener varios oídos a la vez en una misma escena. Entonces, este audio listener sirve para escuchar los sonidos que luego se pueden ir incorporando con este componente de audio source, que por un lado tiene un montón de opciones referidas a cuál es el volumen de ese audio que vamos a incorporar y a cuánta distancia.
00:16:06
Si nos fijamos aquí, al añadir este objeto y al poner que es de tipo 3D, en este espacio, bueno, este justo no es, pero el de la balsa que tiene un altavoz, si os fijáis, este altavoz que tiene un audio source, su forma de trabajar es en base a un espacio 3D.
00:16:29
¿Por qué? Los Audiosource pueden trabajar de dos modos, 2D o 3D.
00:16:56
2D, imaginaos que tenéis una música, que es independiente de que la cámara esté en una ubicación o esté en otra.
00:17:01
Es una música que queremos que se oiga en todo el juego.
00:17:08
Por ejemplo, voy a dar play. Entiendo que vais a escuchar ahora un audio, ¿vale?
00:17:11
Si no, decídmelo, porque lo estoy compartiendo.
00:17:14
Ahora mismo, si os fijáis, se están escuchando los ruidos de un ambiente de fondo.
00:17:19
Y quiero que independientemente de donde esté, se estén escuchando.
00:17:24
Eso se debe a que es un ambiente que está configurado como 2D
00:17:28
Se va a oír siempre, no depende de dónde esté ubicado
00:17:33
Pero si me voy acercando
00:17:36
Lo voy a quitar aquí un segundo
00:17:38
Si me voy acercando a ese altavoz que veis ahí, pequeñito
00:17:40
A medida que me vaya acercando vais a ver que hay una música
00:17:43
Lo percibís, entiendo
00:17:48
Eso se debe a que ese objeto del altavoz sí está configurado como un objeto que tiene el Spatial Blend en 3D y si vamos y lo vemos vais a ver que hay aquí una esfera que se refiere a hasta dónde llega esa audición.
00:17:57
Si se quisiera cambiar, se puede ir modificando en estos valores que tenemos aquí abajo en 3D Sound Settings. Cuando es 3D, esto sí que funciona. ¿Qué significa esto? Que cuando vayamos decidiendo la distancia, fijaos que hay ahí una esfera que se puede ir variando la distancia y también cómo a medida que nos vamos alejando con esta curva se va captando este audio o no en el espacio 3D.
00:18:17
Este audio source viene con dos tipos también de asset, uno es el audio clip, que se refiere al clip de audio que se va a reproducir, que podemos importar aquí dentro, MP3, WAVs, distintos tipos de archivo de audio,
00:18:45
Como podéis ver aquí, es un archivo de audio que hemos incorporado al audio source. Por lo que ese audio source, que está como componente de ese elemento, está emitiendo sonido es porque lo estamos aquí vinculando como audio clip.
00:19:04
Por código, evidentemente, estos audio clips también se pueden ir, aquí lo tengo, esos audio clips, y aquí vamos viendo lo que os comentaba de que se puede referenciar cada uno de los componentes y tipos de archivo que vamos a ir usando.
00:19:21
si tenemos un audio clip aquí con un serialized fill, ¿vale? Desde el propio código, si vamos a ese código que estamos aplicando a sonidos, ¿vale?
00:19:37
Podemos arrastrar sonidos también, ¿vale? Es decir, podemos por un lado incorporar clips de audio que luego vamos a referenciar en nuestro código
00:19:48
con este nombre de variable. Audio source, ¿vale? Y veis que el iconito cambia. Cuando es un clip de audio salen estas corcheas.
00:19:57
cuando es el audio source, es decir, el emisor de audio, el altavoz, va a salir esta bocinilla,
00:20:05
vamos a poder referirlo y cambiar por aspectos como el volumen.
00:20:12
Si vamos, por ejemplo, remitiendo el audio clip con el código,
00:20:16
si en algún momento decimos que al empezar el juego el Thunder se ejecute,
00:20:23
A ver, audio source, que ejecute el audio que tenemos aquí previsto, ¿vale? Pues con este tipo de método podemos hacer que sea un play, ¿vale? También se puede decir en este paréntesis de play, pues que el sonido que se reproduzca sea el de Thunder.
00:20:32
Como aquí hemos capturado un clip concreto de audio, aunque yo aquí no hubiera puesto nada, aunque me refiero a este sonido que tenemos aquí, cuando vayamos incorporando los audios con el audio clip,
00:20:54
Si hacemos referencia a ese audio source, que en este caso es el de trueno, si aquí no hay ningún clip de audio, si os fijáis, con código yo le estoy vinculando que se reproduzca el del trueno, que es el que luego he vinculado aquí, el Thunderclap.
00:21:20
Esto que hace que cuando yo, por ejemplo, haga play, vais a ver que el clip que va a coger es este que tenemos aquí, ¿vale? Lo estamos haciendo en este que tenemos aquí.
00:21:39
Vale, hemos creado en este caso por ejemplo una corrutina que al final lo que dice es
00:21:59
reproduce el sonido del trueno con este volumen y en ese momento lo que va a ir haciendo es
00:22:09
reproducir en ese audio source ese clip de audio que tenemos vinculado y con un volumen
00:22:16
Que le digamos, ¿vale? El primer parámetro se refiere al clip de audio que hemos incluido con el serialized fill y el segundo es el volumen al que queremos que se escuche.
00:22:24
Que el volumen, nuevamente, se puede referir a un float, que nosotros digamos que sea aleatorio o definirlo nosotros con el valor que creamos conveniente, ¿vale?
00:22:34
Por último, además, vais a ver que la salida de ese audio source, por defecto, si yo en otro elemento añado un audio source, por defecto va a venir vacío y se puede incorporar un clip de audio y se va a escuchar.
00:22:45
Pero es verdad que si queremos tener un control más avanzado, voy a borrarlo para que no se confunda, un control más avanzado de cómo se gestiona ese audio source, se puede crear lo que es un audio mixer.
00:23:03
¿Vale? Eso sí, damos aquí a los assets, al panel de proyecto y creamos un asset de tipo audio mixer, que lo tenemos por aquí, se generará este tipo de icono, ¿vale? Que es prueba audio mixer.
00:23:18
Si nos metemos aquí, lo que vamos a poder hacer es que dentro de los paneles que tenemos en Unity hay uno dentro de la sección de audio, que es este audio mixer, en el que vamos a poder controlar distintos sonidos que vayamos teniendo.
00:23:31
Lo vamos incorporando y de este modo vamos a poder ir añadiendo nuevos audios que tengamos en la escena.
00:23:51
Por ejemplo, con este audio mixer lo que vamos a poder ir controlando es, dentro de sonidos en el que estamos accediendo a ese mixer,
00:24:07
poder ir controlando los distintos niveles de distintos sonidos que hemos ido incorporando dentro de los grupos.
00:24:13
Por eso, vais a ir viendo que cada uno de estos mixers, si aquí vinculamos el nuevo mixer que hemos creado, si vamos añadiendo en el mixer los distintos sonidos, pues se irán escuchando allí.
00:24:19
¿Vale? ¿Qué tal hasta aquí? Más o menos me vais siguiendo
00:24:41
Esto está explicado en el tema y se puede ir, vamos, es irlo siguiendo
00:24:50
Pero básicamente es un poco en lo que consistiría el tema del sonido
00:24:55
Luego se habla, por ejemplo, de la diferencia entre el método play y el método play once
00:25:01
¿Vale? Aquí por ejemplo el play one shot
00:25:06
Que la diferencia que tiene es que con el de play, si vinculamos un sonido, un audio, un clip de audio, se reproducirá hasta el final y no se puede interrumpir, digamos.
00:25:09
Cuando decimos el play in one shot, como sucede en este caso, por ejemplo en este código, si pulsamos la tecla espacio, se ejecuta este método de play thunder, que es que se ejecuta, vamos a decir que se reproduzca ese audio.
00:25:21
Si damos varias veces al intro, a la barra espaciadora, fijaos, se ha oído varias veces ese trueno y le he dado varias veces a la barra espaciadora.
00:25:39
Eso permite que ese reproductor, ese audio source, reproduzca un sonido o el que vayamos haciendo, porque podríamos hacer también un array de distintos clips de audio, se puedan reproducir uno tras otro desde ese altavoz.
00:25:59
Si solo usáramos el método play, ¿vale? Hasta que no. A ver, play once va a ser. Vale, sí, lo que pasa es que play solo va a permitir el primer método, el primer parámetro. Ah, bueno, y si lo escribo entero, claro.
00:26:10
y aquí lo que va a hacer es reproducir directamente el audio que tengamos aquí incorporado
00:26:32
como en el componente introducido y lo reproducirá solo una vez
00:26:44
hasta que no acaba ese clip de audio, no se puede reproducir más veces
00:26:51
por eso es normalmente mucho más eficiente usar este play one shot
00:26:54
y lo tenemos
00:26:58
que nos permite ir cambiando
00:27:00
en vivo cuál es el clip
00:27:03
que tenemos
00:27:04
que estamos incorporando
00:27:06
a este componente de Audiosource
00:27:09
dudas hasta aquí
00:27:10
eso es
00:27:19
un poco en el tema
00:27:21
se va explicando todo esto
00:27:22
¿vale?
00:27:25
hola
00:27:30
bueno, se oye por ahí un audio
00:27:30
no sé si alguno sea
00:27:32
Oye, perdona, la parte de estar one shot
00:27:34
entiendo que es solo un evento
00:27:36
programas una acción y
00:27:38
solo cuando se ejecuta esa acción
00:27:40
Sí, es decir, mira, si veis el tema
00:27:42
al final lo que se puede hacer
00:27:45
y aquí es el ejemplo de que se pueden incorporar
00:27:46
distintos audio clips
00:27:49
y meterlo en otra variable de un array y que sea
00:27:50
esa la que llama, pero sí, es un evento
00:27:52
está pensado para que
00:27:54
cuando pulses una tecla, por ejemplo
00:27:56
como lo que acabo de comentaros de
00:27:58
dar a la barra espaciadora, se lance
00:28:00
ese clip de audio, que puede ser el que sea
00:28:02
y con un volumen concreto
00:28:04
es independiente de que se haya
00:28:05
ejecutado en otro momento
00:28:08
cada vez que le des
00:28:09
permite ejecutar dos o más clips
00:28:11
incluso de forma simultánea
00:28:13
no se anulan, es decir, en el de play
00:28:15
tú le das
00:28:17
y no se van a reproducir a la vez
00:28:19
sino que uno va a pisar al otro
00:28:21
digamos que el audio source, cuando usas play
00:28:23
usa en exclusiva el audio que está lanzando
00:28:25
y en el
00:28:28
play one shot lo que haces es
00:28:29
que puede ir lanzando distintos eventos
00:28:31
como tú has indicado
00:28:33
de ese audio
00:28:34
la diferencia es con lo que sea simultáneo
00:28:36
eso es, sí, y bueno también
00:28:39
que es más sencillo incluso de configurar
00:28:41
porque el play como puedes ver
00:28:44
aquí al final lo que dice es
00:28:45
vale, tú lanzas el sonido
00:28:47
y ese sonido ya tiene que estar colocado de algún modo
00:28:49
previamente en este
00:28:51
campo de audio clip del audio source
00:28:53
sin embargo
00:28:55
como puedes ver aquí en el de play one shot
00:28:56
puedes remitir directamente, incluso con el volumen,
00:29:00
cuál es ese clip que quieres que se lance.
00:29:03
Entonces, sin tener que tener preconfigurado el componente en Unity
00:29:05
ni por código introducirlo de formas más enrevesadas,
00:29:09
aquí directamente, mira, cuando hagas esto,
00:29:12
que este audio source ejecute tal audio y a este volumen.
00:29:15
Y ya está.
00:29:18
Entonces es más eficiente.
00:29:19
Más directo, vaya.
00:29:22
lo he dicho, el audio mixer también está
00:29:23
mezclado aquí
00:29:29
y bueno, pues al final lo que se puede
00:29:33
ir haciendo es que incluso por código se puede acceder
00:29:37
con métodos que están aquí
00:29:41
remitidos en el audio mixer, igual que había por ejemplo en los
00:29:44
aquí está, en los animators
00:29:49
en las animaciones de los animators
00:29:52
pues hay un setfloat, un getfloat
00:29:53
por si nos interesa en el getfloat
00:29:55
saber que volumen por ejemplo tiene
00:29:57
tal elemento
00:29:59
del mixer, tal canal
00:30:01
del mixer, para eso hay que usar
00:30:03
la opción de expose
00:30:05
parameters que tenemos aquí
00:30:07
y si se crea un nuevo
00:30:09
un nuevo
00:30:11
esto se
00:30:13
espera
00:30:15
Perdón, que esto se me acaba de... Ah, bueno, sí. Hay que ir a uno de los canales y si le dais a clic derecho se puede hacer que se vea. Por ejemplo, el volumen no deja, pero si vamos a Low Pass y queremos exponer alguno de estos parámetros, por ejemplo, en un filtro paso bajo, por ejemplo, en el módulo de RMPA se habla de ello,
00:30:19
Si los ponéis, aparecerá aquí junto a un nombre que se puede cambiar de esa exposición, ¿no? Entonces, ya si vamos a My Exposed Parameter o le cambiamos el nombre, si aquí ponemos 14, por ejemplo, nosotros luego vamos a poder, a través del mixer, ¿vale? Poder acceder a ese parámetro en concreto y ponerle un valor.
00:30:42
Entonces gracias a los parámetros expuestos podemos acceder por código. Siempre a través de declarar la variable de tipo mixer vamos a poder ir cambiando los valores.
00:31:07
Por ejemplo, en este caso, yo he configurado que cuando se mueva la ruleta del ratón, en el enunciado viene cómo definir los valores para que tengan en niveles de decibelios un volumen concreto.
00:31:23
Los decibelios es un valor logarítmico y hay que hacer una pequeña fórmula para que al final transforme el valor que nosotros introduzcamos en decibelios.
00:31:38
Pero en esencia lo que podemos decirle es Mixer a Music Volume, que es el volumen de música que tiene en el Mixer, en el Audio Mixer, que tiene el Master, el volumen que tenemos aquí.
00:31:47
¿Vale? Pues, bueno, no, aquí, este
00:32:02
¿Veis que tiene esta flechita, eso que está expuesto?
00:32:07
Pues el volumen de esa música yo lo voy a cambiar
00:32:09
Con esta segunda variable, que son los decibelios
00:32:12
¿Vale? Que en este caso estarán cogiendo el volumen sonido
00:32:16
Que yo he capturado antes de un slider, ¿vale?
00:32:19
Que es este slider que tengo aquí
00:32:21
Entonces, con este slider
00:32:23
Fijaos aquí
00:32:25
He conectado el valor de una cosa con la otra a través de código.
00:32:35
Sobre el audio es un poco eso, ir siguiendo las instrucciones e ir incorporando distintos elementos.
00:32:46
A ver, una cosilla que os quería comentar.
00:32:59
Vale.
00:33:04
Pues sobre sonido eso es lo principal, la diferencia entre el audio listener, el audio source, que es un audio clip, que existe el audio mixer y desde ahí se pueden incorporar distintos efectos de sonido.
00:33:04
Con este app hay distintos efectos de sonido que se van a ir incorporando.
00:33:19
Otro aspecto importantísimo de este tema es el panel de Build Settings que ya vimos para ir navegando, para ir cambiando entre diferentes escenas de nuestro proyecto
00:33:25
que también sirve aparte de para esa organización de eventos con el índex de las distintas escenas que podemos ir incorporando
00:33:38
Entiendo que eso todo lo recordamos desde la unidad 4 principalmente, aunque ya se adelantó en la tarea de la unidad 3
00:33:46
Pero hay otro aspecto importante que es que en nuestro juego vamos a poder querer que salga por defecto para ordenador, que sea un ejecutable de ordenador, pero también nos puede interesar que salga como en una exportación para subir a una página web.
00:33:53
Si os fijáis aquí, HTML5 hace mención al lenguaje de Internet, que se usa en Internet, el lenguaje de marcado, el HTML, y se puede sacar el juego para que a través de, esto lo tenemos aquí, archivos que son exportar para web, que básicamente consiste en un HTML, archivo de Javascript y distintas carpetas, se puedan subir a páginas web y ejecuten nuestro juego.
00:34:09
Es lo que, por ejemplo, ocurre o lo que os va a pedir cuando os metáis en Unity Play y queráis subir un juego. Aquí no os va a pedir un ejecutable, os va a pedir una estructura web para que el juego se pueda reproducir.
00:34:35
Lo mismo ocurre en otras plataformas como por ejemplo itch.io. Aquí no os va a pedir subir un ejecutable, os va a pedir, como se reproduce en el web, que se ejecute mediante instrucciones escritas en HTML y otras carpetas que genera.
00:34:53
Para ello, cuando exportemos el juego, tendremos que seleccionar la plataforma que queramos y darle a cambiar plataforma. Si os fijáis, aquí sale un iconito de cuál es la que está seleccionada y en base a la cual se va a construir el ejecutable o el compilado que tengamos.
00:35:09
este botón de build cuando se pulse
00:35:25
se va a básicamente
00:35:28
entre comillas exportar
00:35:30
nuestro juego, se va a hacer
00:35:32
esa compilación, si queremos que
00:35:33
ese juego salga para WebGL
00:35:36
habrá que dar a switch platform, pensará
00:35:38
un poquillo y aquí arriba
00:35:40
que antes ponía esto de PC, Mac
00:35:42
y Linux, ahora pasa a poner WebGL
00:35:44
y vais a ver que pasa
00:35:46
también a tener el iconillo que representa
00:35:48
que es WebGL la que
00:35:51
la que va a exportar
00:35:52
cuando vemos al build. Lo mismo hay para Android, si quisiéramos exportar nuestro juego para móviles, para iOS y luego para otras plataformas,
00:35:55
por ejemplo, PS5, bueno, algunas más avanzadas. A ver cuando acabe yo os enseño. En este momento, cuando acabe esto, vais a ver que el icono se va a poner aquí.
00:36:04
Venga, ya queda poco. Bueno, ahí está, ¿vale? Y puede, bueno, veis que está aquí el botón Z y cuando diéramos a build se construiría este build. No obstante, os pueden ocurrir, oye, para poder construir la build, para poder hacer el compilado, ve a player settings, que de hecho son los mismos player settings que tenemos en edit, project settings y player, que ahora hablamos un poco de ello, ¿vale?
00:36:13
Pero bueno, aquí da un botón directamente para ir a ello y dice hay una incompatibilidad con el espacio de color. Si le dais lo que os va a pedir es, bueno, pues si vais a exportar para ese tipo de dispositivo, os va a pedir que lo cambiéis a gama.
00:36:52
Entonces, esto ya dependiendo de cuál es la plataforma, pues tendréis que ir viendo qué obstáculos os pone, que os lo irá avisando y vais a ver que cuando se hace este cambio sí que os lo va a permitir.
00:37:05
vale mientras se hace eso estos estas plataformas de exportación si no se aparece por defecto puede
00:37:20
deberse a que no esté instalado el módulo que permite esa exportación si recordáis de los
00:37:28
primeros momentos que dimos clase al instalar las distintas versiones de unity también se pueden
00:37:33
instalar lo que se llaman los módulos vale con esta tuerquecilla si damos a add módulos salían
00:37:39
distintos módulos que en algunos casos como el visual estudio instalábamos siempre pero luego
00:37:44
hay otros como este de android que para que se pueda exportar en android es decir para que
00:37:50
aparezca aquí seleccionable hay que añadir si no habrá otros como veis estos dos que no están
00:37:55
incorporados vale y algunos os dirá instalado desde unity hub esto de tv o ese si vamos a
00:38:02
a Unity Hub, habrá que instalar
00:38:08
este tvOS
00:38:10
build support, incluso el de IOS
00:38:12
tampoco está incluido
00:38:14
bueno, pues habrá que instalarlo y una vez se instale
00:38:16
pues permitirá
00:38:18
hacer el compilado
00:38:20
de nuestro juego
00:38:22
el de Android
00:38:23
está instalado y por eso se ve, el de IOS
00:38:26
no está instalado el módulo de IOS
00:38:28
instalado con Unity Hub
00:38:30
os lo abre directamente, marcado
00:38:32
para que lo instaléis, cuanto más instaléis
00:38:34
lo de siempre más peso va a tener el proyecto vuestro ordenador más espacio va a tener que
00:38:36
ocupar para instalar estos módulos por eso si no lo vais a usar pues no se selecciona veis ahora
00:38:41
que en web gl ya podría exportar va a tardar bastante pero al final lo que genera web gl es
00:38:46
una estructura de carpetas con html un índice de html y distintas carpetas que contienen el
00:38:51
juego gestionados gestionados desde html por tanto si queréis exportar para subirla a una
00:38:57
plataforma que corre en web sería esta la forma de exportar si bueno luego hay otros como la de
00:39:02
playstation 5 que directamente piden no que instale y sólo un módulo sino que tenéis que contar con
00:39:09
unas credenciales que orden los desarrolladores son y en este caso para poder exportar que no se
00:39:15
la dan a todo el mundo hay que seguir unos procedimientos y bueno aquí os si le dais a
00:39:22
ese botón que hay ahí, pues aquí os da la documentación
00:39:28
de cómo conseguir el módulo de compilado
00:39:30
para distintas consolas, ¿no?
00:39:33
Por ejemplo.
00:39:36
Cuando, ¿vale?
00:39:40
Aquí hay distintas opciones que en principio no hay que tocar,
00:39:41
excepto, por ejemplo, si estamos trabajando en Mac,
00:39:43
a veces nos puede permitir cambiar de plataforma.
00:39:46
Si trabajamos en Windows, solo nos deja en Windows, ¿vale?
00:39:49
Y hay otras más relacionadas con desarrollo.
00:39:52
Lo importante es que cuando demos a ese build,
00:39:55
se va a generar, en el caso de PC
00:39:57
un ejecutable
00:39:59
y os enseño por ejemplo este
00:40:00
este es el ejecutable de cuando
00:40:03
he exportado el juego
00:40:05
con esta opción marcada
00:40:06
no lo voy a cambiar otra vez pero tal y como está
00:40:09
dándole
00:40:11
se crea esta estructura de carpetas
00:40:12
en los cuales lo más importante va a ser
00:40:15
este .exe, esta es la forma
00:40:17
en la que tendríais que exportar vuestro videojuego
00:40:19
o proyecto cuando está finalizado
00:40:21
si lo que queréis es que sea
00:40:23
un ejecutable de Windows, ¿vale?
00:40:24
Si queréis que sea para subirlo a plataformas de Android,
00:40:28
pues habrá que sacarlo para Android.
00:40:30
Si os fijáis en esas carpetas de ejecutables,
00:40:32
aparecen más archivos que se deben compartir, ¿vale?
00:40:34
No se deberían borrar porque tienen información
00:40:37
vinculada a este ejecutable.
00:40:39
Y veréis que tiene como un iconito propio
00:40:41
que he incorporado yo, que pone Tarea de M7.
00:40:44
Todo eso se configura desde los Player Settings
00:40:46
que hemos dicho antes que estaban en Edit,
00:40:50
Project Settings y Player, ¿vale?
00:40:51
Aquí os deja cambiar desde el nombre del compilado, incorporar una miniatura, ¿vale?
00:40:54
Y dependiendo de las distintas plataformas, veis que este iconito de HTML5 se refiere a exportación a WGL.
00:41:01
Si me pongo encima, este es el de Android, ¿vale? Este es el de PC.
00:41:07
Os puede pedir distintas versiones según el dispositivo de vuestro, por ejemplo, para Android,
00:41:11
pues el que se vería en una pantalla de tales dimensiones.
00:41:17
Y se pueden ir incorporando distintos assets, distintas imágenes 2D para ir, digamos, adaptándose a las diferentes necesidades de distintos dispositivos. Por defecto, si no se van seleccionando una a una, por defecto se puede incorporar una general. Igual que también se puede incorporar el cursor de juego.
00:41:20
Veis que yo cuando me voy moviendo en game, ahora nos sale la cruceta, el cursor, perdón, del ratón habitual. Eso es porque he incorporado una textura 2D, pues en este caso, por lo que he dicho, con una forma de diana, esto es para enseñaroslo, que es la que se verá.
00:41:41
Entonces, se puede cambiar también el cursor desde ese punto, ¿vale? Y el nombre también que tendrá nuestro proyecto al exportarlo, pues, está relacionado con este product name.
00:41:56
Aparte de otra información relevante, si lo vamos a subir, por ejemplo, a plataformas como Google Play, etcétera, según cómo se haga el compilado, pues, información casi como metadata, ¿no?
00:42:06
Que se va a usar, pues, para tener un seguimiento de versiones, para que quede claro también cuál es la compañía o si somos nosotros el desarrollador, pues, quiénes somos y etcétera, ¿vale?
00:42:17
Todo eso se gestiona desde el Player Settings, que es una de las secciones de Unity bastante relevante cuando se va cambiando de plataforma para, por ejemplo, configurar un código de publicación que piden si, por ejemplo, se va a subir a un archivo Android a Google Play, a la Asset Store, vamos a decir, a la plataforma de venta de aplicaciones que tiene Google.
00:42:30
Os puede pedir distintas configuraciones aquí para validar de seguridad y también para validar que sois vosotros el desarrollador, etc. En estas secciones es donde se encuentra este tipo de cosas.
00:42:56
Por mi parte de esta tarea, a no ser que tengáis dudas, más o menos era el repaso que quería que viéramos
00:43:08
En el tema también se habla de los tipos de iluminación, se habla de la iluminación en tiempo real y la paqueada o la precocinada
00:43:17
Pero eso se habla en el tema y en algunos de los vídeos también se trata, no quiero ser redundante
00:43:28
Y al menos que me planteéis dudas o que os surjan, paso a ese repaso que os indicaba de los temas. Así rápido, pero espero que conveniente lo que me digáis. Las tutorías, como ya sabéis, es un poco para que me planteéis dudas, sobre todo.
00:43:34
Yo por mí no como a repaso.
00:43:55
Sí, ¿alguien quiere ver algo de esta unidad 7? Luego volvemos a la unidad 7, pero como este repaso que os digo, pero si queréis ver algo en concreto de la unidad, es el momento. Vale, pues vamos a ello.
00:43:57
Vale, pues aquí tenemos el aula virtual. Vamos a ir por temas. En el primer tema, de los contenidos del primer tema, el primer tema es un poco, y por eso se llama cero, es el tema transversal en el sentido de que se aporta la introducción a la programación que muchos de vosotros no tendríais.
00:44:17
Porque algunos compañeros si venís sois informáticos y este tema pues más o menos lo conocéis ya. Pero bueno, es la base desde la que aprendemos a programar en este módulo, en este curso.
00:44:39
De este tema, cosas importantes. Es importante saber un poco qué es programar, qué son los lenguajes de programación. Puede haber alguna pregunta conceptual. Tampoco sé lo que más me centraría, pero hay que saber, por supuesto, que hay distintos lenguajes de programación.
00:44:54
un poco qué es el lenguaje de alto nivel o de bajo nivel, qué son los IDEs y qué es lo que, bueno, para lo que sirven,
00:45:14
que es esta ayuda para depurar y ayudarnos a programar, que en nuestro caso el que usamos es el de Visual Studio,
00:45:23
que es el más compatible o al menos el que está más asociado desde Unity, dado que, por ejemplo, permite instalarlo como módulo,
00:45:30
como hemos visto antes, ¿vale? Y, bueno, un poco esta teoría es importante conocerla.
00:45:39
Una vez pasamos, aquí ya empieza lo que me importa aún más, que es saber qué son cada uno de estos cuatro conceptos,
00:45:46
las variables, pues saber qué es una variable, cómo se declara, cómo se inicializa.
00:45:53
Bueno, a esta altura del curso creo que deberíais saber bastante bien ya qué es una variable, para qué se usa,
00:45:57
que facilita, ¿no?, que es este reempleo a través de una palabra que designamos, pues poder guardar valores, etc.
00:46:04
Bueno, pues cómo se declaran, por supuesto, los tipos de variables que hemos estado usando, principalmente, pues eso, los int, los flow, los strings.
00:46:11
También que hay tipos de variables que hacen referencia a componentes, ¿vale?, que es como nosotros por código nos podemos conectar con los componentes
00:46:20
que tenemos, que vamos incorporando
00:46:29
a nuestros GameObjects, ¿vale? Pues
00:46:31
saber los tipos de variables,
00:46:33
lo que es lo booleano, que es un array,
00:46:36
cómo se declara, eso es importante,
00:46:37
¿vale? Entiendo que en este momento
00:46:39
del curso entendemos que esto es básico
00:46:41
y espero que, bueno, pues
00:46:43
que en el examen va a haber preguntas
00:46:45
referidas a ello. Igual que va a haber preguntas
00:46:47
a sintaxis, me refiero,
00:46:49
por ejemplo, ya no sólo a cómo
00:46:51
se declara, realmente,
00:46:53
vamos, de forma que no de
00:46:55
error que sea la correcta en cesar que es el programa que hemos usado durante
00:46:57
todo el curso y también atajos como estos que tenemos aquí es muy muy muy
00:47:01
probable que haya una pregunta que haga mención bueno pues un pequeño
00:47:05
un pequeño código que diga si tenemos este número guardado en una int y le
00:47:11
ponemos este más más y luego me lo muestras en consola cuál es el resultado
00:47:16
o cuando operan dos variables cuál es el resultado preguntas de ese tipo va a
00:47:20
ver seguro vale aquí por ejemplo lo que os hablaba que no sólo son las variables más básicas sino que
00:47:26
también hay de tipo game object la del componente los vectores transform etcétera los arrays igual
00:47:32
es algo un poco básico pues saber qué son y cómo se declaran eso es importante eso operaciones pues
00:47:38
operaciones va a haber alguna pregunta de cómo operar vale pues qué resultado daría esta suma
00:47:45
no que entiendo por ejemplo si os preguntara si es muestra en consola en leer este código en este
00:47:50
punto hago un debate de resultado cuál sería el resultado esa pregunta por
00:47:55
ejemplo de ese estilo con los operadores que antes os indicó del más más el menos
00:48:03
menos el incremento decremento etcétera o multiplicaciones etcétera bueno por si
00:48:06
alguien no bueno aunque lo pone aquí el resultado sería 7 pues eso puede ser
00:48:12
perfectamente una pregunta vale saber cómo se opera estos los primeros vídeos
00:48:16
del curso de las tutorías grabadas que os dejé al principio de curso se habla
00:48:21
de ello, ¿vale? Lo he dicho. Y se recuerda aquí. Estos operadores son importantes. También la inversión en las booleanas de lo que vale una booleana, ¿vale?
00:48:25
Para que pase de true a false o de false a true. Eso es muy importante. Del mismo modo, bueno, pues, ¿qué son las estructuras SILF? ¿Cómo se usan? ¿Vale?
00:48:35
En el propio... déjame un segundo, me quedo aquí. En el propio simulacro de examen ya se os ponía algunas preguntas y lo voy a abrir ya que lo tengo por aquí.
00:48:45
En recursos generales, bueno, ya hace mucho os dejamos los profesores estos simulacros donde se ven algunas preguntas. Bueno, pues algunas de ejemplo, tampoco. Pues eso, cómo se declararía bien una RAI, los tiempos de ejecución, etc. Bueno, esto lo podéis ver.
00:48:55
Una, por ejemplo, de una corrutina. También se va a hablar de corrutinas. Va a haber alguna pregunta que haga mención a una corrutina, un poco como, por ejemplo, hace aquí. Pero va a haber una pregunta 100% de desarrollo de este tipo.
00:49:12
Que va a haber unas líneas de código, ¿vale? Un código, un script básicamente, en la que se os va a pedir que digáis con respecto a alguna línea qué es esa línea, es decir, qué hace esta línea, con qué se conecta para explicar que, por ejemplo, esta variable anim en esta línea está cogiendo un componente, está capturando un componente de tipo animator, ¿vale?
00:49:28
Que se había declarado como variable global al comienzo de la clase, ¿vale?
00:49:51
Y que en el GameObject que tenga aplicado este script tendrá que haber un componente animator aplicado
00:49:55
para que se pueda guardar esta variable y luego se pueda ir usando.
00:50:03
Por ejemplo, aquí, esta línea más adelante que hace uso de ese anim, ¿vale?
00:50:06
De esa variable anim, si no estuviera bien capturada no funcionaría, no estaría aplicándose a ningún componente, ¿vale?
00:50:10
Pues un poco este tipo de, o aquí, este tipo de axis, pues que es la clase input para que se usa, ¿no? Que es para las interacciones que hacemos. Pues un axis que es, ¿no? Que son ese tipo de captura que se basan en un eje que puede ir de un valor 1 a un menos 1 con valores intermedios y, bueno, pues que en este caso se ha llamado en el Axis Manager horizontal, ¿vale?
00:50:18
Pues a través de esta captura de un eje, por ejemplo en un mando con dos teclas opuestas, esta variable x-axis, que es de tipo float, pues irá capturando previsiblemente los valores de movimiento en x que vayamos introduciendo en nuestro mando o en nuestro teclado, ¿vale?
00:50:40
Aquí igual con el AdForce, hablando del RigidBody, una pregunta de este estilo va a haber, porque es una pregunta que lo que busca es saber o ver que habéis entendido, que tenéis el criterio suficiente para escribir vosotros el código, como no vamos a hacerlo en ordenador, saber interpretar y saber qué es lo que se está realizando en un conjunto de líneas con instrucciones.
00:51:00
Y bueno, pues saber que conocéis la sintaxis y también el sentido de distintos métodos, propiedades, códigos en César aplicados a Unity. Entonces, preguntas de este estilo va a haber seguro.
00:51:26
Pero nada, te interrumpo. La idea es más analizar un código escrito que andar escribiendo nosotros código.
00:51:40
¿Puede haber alguna pregunta?
00:51:47
No, ya, eso. No, ya, desarrollame, no sé, cuatro procedimientos para hacer X.
00:51:48
Se os puede preguntar en otra de las preguntas de desarrollo, pues por ejemplo, yo que sé, ¿para qué se usa el onCollisionEnter y qué diferencia hay con el onTriggerEnter? Por ejemplo, ¿vale? Y que expliquéis y que pongáis un pequeño ejemplo. En ningún caso va a haber que escribir mucho código.
00:51:54
¿Vale? Sí que a lo mejor alguna línea concreta o explicar para qué sirve y poner la línea, eso a lo mejor sí podría haber, ¿vale? Pero lo que seguro que sí que va a haber es analizar código, ¿vale? Porque al final es de la forma que más veo yo que entendéis que hacen los códigos y cómo se interrelacionan las distintas líneas.
00:52:13
puede haber en alguna pregunta de desarrollo
00:52:33
en las de tipo test son cerradas
00:52:36
son escoger entre opciones, ahí no vais a
00:52:38
tener que escribirlo, en las de desarrollo
00:52:40
que tenéis, podría haber
00:52:41
aunque ya os digo que no va a ser
00:52:43
lo prioritario, lo adelanto
00:52:46
eso no quita que se os pueda pedir, oye, ¿cómo sería
00:52:47
la línea para que eso, para que funcionara
00:52:50
un collision enter o explícame
00:52:52
cómo se aplica
00:52:53
un collision enter, ¿vale?
00:52:55
eso sí puede ser, igual que pueda haber
00:52:57
eso también, por ejemplo, un ejemplo
00:52:59
de código con una parte subrayada
00:53:01
en rojo de que está dando error
00:53:03
¿cómo habría
00:53:05
que reescribirla para que no dé ese error?
00:53:07
Eso sí podría haber. Serán
00:53:10
cosas concretas, pero no
00:53:11
va a ser un... Escríbeme el
00:53:12
script completo de
00:53:15
cómo hacer que con un RigidBody
00:53:17
aplicando fuerzas se mueva
00:53:19
una pelota. No va a ser algo
00:53:21
tan complejo, sino cosas concretas.
00:53:23
Eso sí puede haber.
00:53:26
No sé si te resultó la verdad.
00:53:27
Sí, sí, perfecto.
00:53:29
Pues eso, de análisis de un error y ver cómo se soluciona, también puede haber alguna pregunta de desarrollo o alguna pregunta de tipo test. También puede haber un código mal escrito y decir, oye, ¿por qué esto da error? Da ese error. Y bueno, pues hay opciones y tengáis que escoger o el art de desarrollo, escribirlo.
00:53:31
Importante, esto se dijo y aparecen estas instrucciones.
00:53:49
La segunda parte, lo que se llama ejercicio 2, que son las preguntas que no son de tipo test
00:53:53
y que valen tres puntos en total, el cómputo total de esa parte,
00:53:58
para poder aprobar el examen, aunque el test esté perfecto, tenéis que sacar un mínimo de un punto.
00:54:03
Y esto lo digo porque en otras ocasiones hacéis el test que, aunque resta,
00:54:09
No deja a veces de ser un poco descartar, evidentemente, por eso suma nota y por eso está, pero en estas preguntas muchas veces las dejabais en blanco. Y a mí estas preguntas me parecen esenciales, porque es donde se ve que de verdad estáis aplicando lo aprendido, ¿vale?
00:54:15
estas no restan como tal
00:54:30
es decir, si esta pregunta vale un punto
00:54:34
¿vale? máximo, pues hombre
00:54:36
si no decís nada correcto no va a sumar
00:54:38
pero no restan como las de tipo test
00:54:40
entonces, queremos
00:54:42
es decir, hemos puesto este tipo de preguntas
00:54:43
porque queremos ver primero
00:54:46
cómo escribís, si entendéis
00:54:47
cómo os expresáis y si de verdad habéis asimilado
00:54:49
los conceptos
00:54:52
escribiéndolo vosotros
00:54:52
si lo dejáis en blanco, no vais a aprobar el SAT
00:54:54
entonces, siempre, vamos
00:54:57
Me extraña que el que haya seguido el curso no sepa decir nada de estas líneas, ¿vale? Pues intentad, evidentemente con criterio, intentando hablar de lo que es la respuesta, ¿vale? Pero aún así no la dejéis en blanco e intentad desarrollar un poco qué es cada cosa.
00:54:59
si os vais por los cerros de V, aunque habléis del animator
00:55:14
no tiene nada que ver con lo que se os pregunta
00:55:16
probablemente no puntúe nada
00:55:18
pero lo que os quiero transmitir es
00:55:20
que es preferible
00:55:22
que escribáis intentando
00:55:24
el sentido, que a lo mejor
00:55:26
no sabéis que es el getComponent, pero sí que
00:55:28
este anim viene de que lo hemos declarado
00:55:30
como variable global en la clase
00:55:32
bueno, no vais a tener la parte
00:55:34
correspondiente, es decir, toda la nota
00:55:36
pero algo sí se puede valorar
00:55:38
igual que en las que haya
00:55:40
a lo mejor hay alguna teoría también de desarrollo
00:55:42
por ejemplo, explícame
00:55:44
qué es un código QR y para qué se usa
00:55:46
y dos ejemplos, si no escribís nada
00:55:48
es cero, escribid
00:55:50
porque por ejemplo en esa pregunta me extraña que nadie
00:55:52
sepa nada de un QR
00:55:54
evidentemente no es solo un QR, es
00:55:55
unos cuadraditos que he visto alguna vez
00:55:58
hay que desarrollarlo más, pero bueno
00:55:59
que de verdad
00:56:02
que a veces, esto para quien
00:56:04
corresponda por supuesto, que por pereza
00:56:05
de escribir o no sé qué bloqueos
00:56:08
a veces gente que no me ha escrito
00:56:10
nada del examen, luego ha hablado y sí
00:56:12
sabía algo. Y es por, como, no sé si es
00:56:14
por pereza, no sé si es por
00:56:16
vergüenza, no lo sé.
00:56:18
No la dejéis en blanco si tenéis algo que
00:56:20
contar sobre ello, ¿vale? Porque ya os digo,
00:56:22
si en estos
00:56:24
total de tres puntos no se saca un uno,
00:56:24
no se aprueba el examen.
00:56:29
¿Vale? Pues son preguntas
00:56:30
que dan fe, que consideramos,
00:56:31
o considero yo en este caso, que mezclan
00:56:34
un poco todo el temario
00:56:36
para tener una perspectiva de que entendéis.
00:56:38
Bueno, pues que
00:56:41
Que se cumple un poco lo que se busca. No se busca la perfección, pero al menos un 1 de 3 es un 3,33. Pues un mínimo tiene que haber, ¿vale?
00:56:42
Luego, aparte de, por supuesto, lo que sume, que aquí, atención, que sí que las respuestas incorrectas en el tipo test restan un cuarto de lo que vale cada pregunta, ¿vale?
00:56:50
Eso es para que no se convierta esto en probar, ¿vale? En una suerte de lotería. Bueno, pues por eso ponemos una pequeña penalización en las que no sean correctas.
00:56:59
correctas. Sí, no sé si hay dudas con esto
00:57:09
o dudas
00:57:11
y si no, sigo. ¿Dudas?
00:57:11
Ya os digo, pregunta de este estilo
00:57:17
con otro código, evidentemente, y que
00:57:18
no sean exactamente los mismos conceptos
00:57:20
y yo que sé
00:57:22
pues que en vez del getAxis
00:57:24
pues se hable del
00:57:26
mouseButton o otro tipo
00:57:28
de axis o por ejemplo
00:57:30
que
00:57:32
el setTrigger que tenemos aquí
00:57:33
pues que sea esta la línea
00:57:36
¿vale? Y de lo que hablé de cómo
00:57:38
se puede afectar a un parámetro de animación
00:57:40
que es de tipo trigger
00:57:43
y con esta línea estamos afectando
00:57:44
a que el animator cambie su parámetro
00:57:46
para que luego se pueda ejecutar
00:57:49
una transición entre los distintos
00:57:50
estados de animación del animator
00:57:52
controller, vale, pues eso podría ser
00:57:54
o yo que sé
00:57:57
por deciros más
00:58:00
cosas, pues eso puede ser una
00:58:02
en el que de pronto
00:58:04
esta fuerza salto aparece con una línea roja
00:58:05
de error y es porque a lo mejor la variable
00:58:09
ha sido declarada dentro del update
00:58:13
y no es una variable global, sino que es una variable local encapsulada
00:58:15
en el update. Entonces aquí daría error. Pues decir
00:58:19
oye, ¿y por qué da este error y qué habría que hacer para solucionarlo?
00:58:22
Pues habría que decir, claro, esa variable ha sido declarada
00:58:25
como local dentro de otra
00:58:28
cápsula, que no es la global, habría que
00:58:31
declarar esa variable fuera de los distintos
00:58:33
métodos de ejecución, por ejemplo, métodos que tengamos
00:58:36
como variable global.
00:58:39
Y entonces ya se podrá llamar a esa variable
00:58:41
desde los distintos métodos que sean jerárquicamente inferiores.
00:58:44
¿Sí?
00:58:50
O ese tipo de cosas son importantes.
00:58:51
¿O qué es una variable destroy?
00:58:55
Aquí pone un destroy, destroyGameObject,
00:58:57
que es el método destroy que, por ejemplo,
00:58:59
en la tarea de la unidad 2 se usó para ir eliminando
00:59:01
los distintos pivotes.
00:59:07
Tiene una sección también en el tema. ¿Qué es Destroy? Entre paréntesis, el método Destroy. Bueno, pues un poco contar qué es lo que hace. Entiendo que son muchas cosas, pero se busca que siempre sean, no ni las más complejas posibles, sino las que se han ido viendo las tareas.
00:59:08
Y bueno, que tampoco... Vamos, al menos mi intención no es ir a pillar, es que de verdad ver, pues oye, que tenéis un cierto conocimiento de... Por ejemplo, este código no es especialmente avanzado, con lo que hemos visto en los últimos temas, por ejemplo, es bastante asequible.
00:59:27
Pues un poco saber, leyendo este código, qué es lo que hace cada cosa o inferirlo al menos. Esto lo digo también porque llegará un punto, ya está empezando, que cuando se programe muchas veces el código te lo dé una inteligencia artificial.
00:59:43
Le digas, oye, quiero un código que lo que haga es que cuando pulse la barra espaciadora salte y que al saltar se reduzca aunque haya un parámetro del controller que se cambie y se aplica una fuerza hacia arriba y te dará este código.
01:00:00
Pero claro, lo que tendrán que hacer los programadores es entender un poco ese código y decir, oye, esta línea no está bien, ¿por qué tal? Cámbiamela e interpretarla.
01:00:16
Más que escribirla, interpretarla, que evidentemente luego hay que escribir porque hay que adaptarlo a nuestro proyecto.
01:00:24
Pues es un poco el problema que va a surgir cuando además no somos programadores súper avanzados, pues que vamos a recurrir también a ayudas que nos da la tecnología.
01:00:28
Bueno, pues esta forma digamos que es una en la que se pondría en, vamos que se aplicaría como trabajar en ese flujo de trabajo, aunque hable redundantemente.
01:00:39
O por ejemplo, la línea puede ser, ¿qué tiempo de ejecución? Aquí hay una flecha y pone esta línea y pone fix update. Pues ahí habrá que decir, es un método de tiempo de ejecución que a diferencia del update que reproducirá el código, lo que haya en su interior, en cada fotograma que pueda reproducir el ordenador, lo va a hacer en periodos fijos.
01:00:55
Esto, por ejemplo, se podría explicar aquí, porque aunque sea esta la línea, está dentro de este método, pues se ejecuta en el Fixed Update porque es el método de tiempo de ejecución idóneo para el motor de físicas.
01:01:15
Aquí estamos usando el Reboot y el AddForce, ¿vale? Pues como se dice en el tema en varios puntos, el FixUpdate es el que tiene un tiempo de ejecución estable, es decir, nosotros señalamos qué lapso hay entre cada, digamos, llamada de ejecución de lo que hay en el interior del FixUpdate.
01:01:28
Bueno, ¿vale? No sé si hay alguna duda más del simulacro o sigo con los temas. Si no, bueno, voy abriéndolo aquí por donde nos hemos quedado.
01:01:47
¿Qué tal hasta aquí? ¿Me vais? Sí, ¿no? Digo, no va a haber... Vale, perfecto. Estructura de control, pues cómo funciona un if, un else if, un else, bueno, qué cosas, las condicionales. Esto lo hemos usado durante todo el curso.
01:01:59
bucles, igual, bueno, un poco entender
01:02:16
que son los while, los for
01:02:20
me interesan menos que las estructuras de control
01:02:21
pero también, en algún momento los hemos visto
01:02:23
en los temas, también podría ser
01:02:25
también ponen en juego, por ejemplo, los operadores
01:02:27
de incremento o decremento
01:02:29
el for each, podría ser
01:02:31
es menos probable que os pregunte por un for each
01:02:33
que es un poco más avanzado
01:02:35
pero bueno, también es parte del temario
01:02:37
que es una función
01:02:39
cómo se declara
01:02:41
y cómo se
01:02:43
luego se llaman
01:02:44
dentro del código, que son los distintos parámetros y argumentos
01:02:46
que pueden tener.
01:02:52
Eso también hay que saber lo que es.
01:02:53
El ámbito de las variables, pues importantísimo.
01:02:57
Aparte de lo que os he dicho, que puede salir un error
01:02:59
y que resulte que el error es porque se ha declarado
01:03:01
sin ser una variable global, pues ese tipo de preguntas de ámbito,
01:03:04
que es un ámbito privado, que es un ámbito público,
01:03:09
para qué sirve el serialized field, que tantas veces hemos usado,
01:03:12
Pues ese tipo de aspectos es muy importante. Entiendo que lo entendéis. Si tenéis dudas, me lo preguntáis.
01:03:16
Pues aquí volvemos a hablar del ámbito de las variables, que son las privadas, que son las públicas, cuál es la estática, recordad que por ejemplo en la tarea 4 cuando había que guardar el nombre del jugador en las distintas escenas, pues se recurría a una variable estática que es de un nivel superior en el sentido de que guarda en todo momento durante la ejecución del juego el resultado de una variable
01:03:24
Y no la va reiniciando cuando se va cambiando de escena. Por ejemplo, que es una variable estática también puede ser importante. Bueno, esto es la estructura de cómo se declaran las clases, un poco que es la programación orientada a objetos.
01:03:51
Bueno, pues este tipo de cosas. Esto es más avanzado, por ejemplo, la instanciación podría entrar y la herencia, pero bueno, no lo hemos visto mucho en el curso, aunque lo usamos siempre porque cuando tenemos una clase aquí hay una herencia con estos dos puntos, pero bueno, no lo hemos visto tampoco creo que se os pregunte de eso.
01:04:09
¿Vale? Importante, esto sí, no solo en este punto, sino en los distintos temas. Las distintas librerías que hay que incorporar según lo que vayamos a usar. Por ejemplo, recordad que si vamos a recurrir a un slider o a un text, ¿vale? Si yo no he añadido esta línea, da error, ¿vale? Hay que ir añadiendo librerías según, por ejemplo, en audio sucede lo mismo.
01:04:31
Pues en cada tema ha habido, por ejemplo, si es cinemachine hay que usar un using cinemachine. Si se usan elementos de user interface, como esta DOI, como este slider, si recordáis del tema 4, pues hay que tener esta línea.
01:04:54
Es muy fácil que salga una pregunta en la que salga esto y diga por qué este error. Y sea porque se está declarando una variable de tipo slider, que es uno de los componentes de User Interface, y hasta que no se añada una línea que aumente las funcionalidades o que añada esas funcionalidades mediante una librería, como en este caso, pues el código no va a saber a qué se refiere.
01:05:07
No existe como tipo de variable, ¿vale? Eso, el serializeField también es importante que es y que no es lo mismo privado que público que serializeField.
01:05:34
Que el serializeField, independientemente de que sea público o privado, perdón, que estoy aquí buscando el tema, ¿vale? Independientemente de que sea público o privado, ¿vale?
01:05:45
Se puede hacer serialize fill y el serialize fill es para que aparezca en el editor, ¿vale? Pues como por ejemplo en este código, ¿vale? Para que aparezca aquí. Si la variable es pública también va a aparecer aquí, pero público y privado se refieren a que se pueda acceder y modificar ese código desde otras clases o otros códigos, ¿vale?
01:05:55
Pero puede ser perfectamente privada y ser serialized field para poder nosotros manipular o incorporar assets en estos campos, pero que sea privada y no se pueda acceder a esa variable desde otras clases o desde otros scripts.
01:06:15
¿Vale? Entiendo que esto está claro, también lo hemos visto en otras tutorías, si no me equivoco, ¿vale? Y cómo se usa. Entonces, bueno, entiendo que de este tema cero, pues un poco es básico, sé que he dicho prácticamente todo es importante, pero como es de los esenciales y transversales, pues es importante conocerlo.
01:06:29
Va a haber preguntas de este tema, seguro.
01:06:53
Vale, vamos con el tema 1.
01:06:58
El tema 1, como tal, puede haber alguna pregunta en concreto de qué es
01:07:00
o cuáles son los distintos motores de videojuegos en el juego.
01:07:06
Yo qué sé, son preguntas que si habéis usado el software,
01:07:13
pues más o menos deberíais tener claras.
01:07:17
pues yo que sé, cuáles son las primitivas
01:07:20
que distintos game objects
01:07:22
se pueden crear, que son los prefabs
01:07:24
importante, pues este iconito azul
01:07:26
es un prefab, que es un prefab
01:07:28
eso es muy importante
01:07:30
las jerarquías
01:07:31
bueno, pues que es un componente
01:07:34
lo acabamos de ver, que son las jerarquías
01:07:35
que son las tags y las layers
01:07:37
bueno, pues sobre todo
01:07:39
un poco eso
01:07:44
que son los
01:07:45
módulos, pues lo que acabamos de hablar
01:07:48
de los módulos referidos a los builds
01:07:49
pues si queremos exportar
01:07:52
para Android
01:07:54
en el Unity Hub tendremos que tener
01:07:55
el módulo
01:07:58
de Android instalado
01:08:00
del SDK
01:08:02
de los distintos
01:08:03
módulos de Android
01:08:06
bueno, pues saber que eso existe
01:08:08
y se haría a través de la Unity Hub
01:08:09
por ejemplo, las jerarquías
01:08:11
pues esta jerarquía, si muevo
01:08:16
hijo2
01:08:17
¿qué se mueve con hijo 2?
01:08:18
el nieto, el padre
01:08:20
evidentemente por jerarquía pues se movería el nieto
01:08:22
que es el que es hijo
01:08:24
de hijo 2
01:08:26
hijo 1 no se movería, bueno pues a ver un poco
01:08:28
la relación de jerarquía, que son similares
01:08:30
en realidad a las de otros softwares
01:08:32
de 3D, pero también puede haber preguntas
01:08:34
de ese estilo
01:08:36
¿cómo se añade un script y qué estructura
01:08:37
tiene, etcétera?
01:08:40
pues evidentemente puede entrar
01:08:42
¿vale? porque es como básico
01:08:43
sí, como tal
01:08:46
estudiárselo, pues se puede estudiar, por supuesto
01:08:48
los tiempos de ejecución, el start, el update
01:08:50
estos que tenemos aquí
01:08:52
que en este primer tema se ponía así un poco
01:08:54
en resumen, pero luego se han ido
01:08:56
desarrollando en siguientes temas, que es el
01:08:58
fix update, que es el awake
01:09:00
que ya hablamos
01:09:02
alguna vez, por supuesto que son el start
01:09:04
el update, eso es importante
01:09:06
la consola, como se llama la consola
01:09:08
con este print o el debug log
01:09:10
que tenemos aquí, pues esto
01:09:12
es importante también, pero bueno
01:09:14
son como cosas básicas
01:09:16
También, pues, a lo mejor pedir, si en debug.log pongo saludo y es un string, ¿cómo se va a ver? Vale, pues, se puede poner un pantallazo de una consola y decir, vale, ¿cómo se declararía esa línea? Sería debug.log, punto, vale, y cuatro opciones en el test o pedirlo en el at de desarrollo.
01:09:17
Variables públicas. Pues aquí se habla del serialized field también. Entiendo. Aquí lo tenemos. Pues un poco de lo mismo. Aquí está aplicado a Unity. El primer tema es un poco más general para distintos códigos, pero para distintos lenguajes que pueden tener cosas en común. Pero aquí ya es más aterrizado el uso en Unity. Bueno, pues esto hay que saberlo.
01:09:38
Las convenciones de escritura, si se os pidiera esa línea que he dicho que se puede escribir o alguna línea, pues hay que intentar, lo que se espera es que sepáis escribirlo con la sintaxis correcta, respetando un poco las mayúsculas, el Pascal case, el camel case, pues como hemos estado haciendo durante todo el curso.
01:09:57
instanciar, bueno pues es como el primer método
01:10:15
que usamos, pues como se usan los métodos
01:10:18
y los distintos argumentos o parámetros
01:10:20
que se pueden declarar
01:10:24
pues también, en un método también es importante
01:10:26
bueno, aquí hay distintos ejemplos
01:10:30
pues sí, principalmente eso
01:10:35
package manager, pues bueno, se puede preguntar alguna cosa
01:10:38
de los project settings, etcétera
01:10:41
Sí, esto si lo habéis estado usando, pues más o menos, os va a sonar todo.
01:10:43
Pero bueno, no es tanto aprenderse qué es cada cosa con la descripción, ¿vale?
01:10:49
Porque además este tipo de preguntas serían más de tipo test.
01:10:55
A lo mejor se pregunta, ¿qué es una tag?
01:10:58
Y hay cuatro opciones, pues si sabéis lo que es, vais a saber responderla.
01:11:00
Las tags, de esto también hemos hablado en siguientes temas.
01:11:04
Entonces, bueno, las de textor, pues esto no se va a preguntar nada en principio.
01:11:07
Vamos al tema 2
01:11:13
Voy a ir rápido, ¿vale?
01:11:15
Pero lo dicho, si hay dudas concretas
01:11:23
¿Qué son los vectores?
01:11:25
¿Para qué sirven? ¿Cómo se operan con ellos?
01:11:27
Pues eso, que se pueden sumar
01:11:29
Las tres posiciones que tiene un vector 3
01:11:31
Se pueden sumar entre ellas
01:11:34
Esto ya lo vimos también
01:11:35
¿Qué resultado daría sumar el vector 3, 5, 4, 7
01:11:36
Con el vector 3, 3, 2, 4?
01:11:41
Que si se hace un devalut de la suma
01:11:44
Que saldría en consola
01:11:46
Eso podría ser una de las preguntas. Muy importante, y seguro que hay alguna pregunta que hable de esto, los métodos simplificados de escribir vectores 3. Por ejemplo, este vector 3, 0, el app, pues cómo sería ese... Si queremos escribir vector 3, 0, 1, 0, pues se puede poner con este, entre comillas, atajo.
01:11:47
Pues esos atajos, muy probable que alguna preguntilla pueda haber. Posicionar y controlar objetos, pues bueno, sí puede haber preguntas de qué es el transform translate, cómo se puede capturar un transform mediante un serialize fill, que es básicamente declarar esa variable y se arrastra al editor, como tenemos aquí.
01:12:11
Pues con eso ya podemos llamar, con esa variable, a las propiedades, como la posición, rotación o escala del transform de ese objeto.
01:12:35
La escala, bueno, pues sí.
01:12:47
¿Puede haber alguna pregunta relacionada con rotación?
01:12:52
Bueno, tampoco creo que haya mucho de esto, pero puede haber alguna pregunta.
01:12:55
¿Crear movimiento?
01:12:58
Pues es que esto lo tenemos que saber, ya de bastante comienzo del curso, pues un poco cómo funciona asignar posiciones y con el método transform y rotate, que tenemos aquí, translate y el rotate, pues cómo si lo incorporamos en un update, pues se va a ir haciendo un desplazamiento fotograma a fotograma o una rotación fotograma a fotograma.
01:12:59
El look at podría entrar, tampoco es lo más esencial, pero podría entrar. El tiempo, importante, sí. Saber qué es el time scale, si queremos, por ejemplo, ejecutar, si queremos parar la velocidad de reproducción o queremos que vaya al doble de rápido, pues esto es importante.
01:13:24
estos conceptos son importantes
01:13:44
¿vale? por supuesto
01:13:47
que es el time delta time
01:13:49
hemos hablado en más de una ocasión
01:13:50
y es importante saber
01:13:53
por qué se usa en un update
01:13:54
¿por qué? para compensar
01:13:56
esa velocidad de ejecución y que sea estable
01:13:58
porque compensa pues eso
01:14:00
las variaciones de rendimiento que puede haber
01:14:02
entre un dispositivo y otro para que en todo
01:14:04
se reproduzca de manera equivalente
01:14:06
¿sí? esto también
01:14:09
lo hemos visto
01:14:10
otro uso del time delta time pues para contadores
01:14:11
como lo que vamos haciendo es sumar, este operador también importante, se pueden ir sumando los lapsos de tiempo, pues se puede usar, por ejemplo, para hacer contadores
01:14:14
y que esos contadores incluso sirvan para ejecutar luego condiciones con estructuras de control.
01:14:23
Las corrutinas, igual, saber cómo se declaran con esa función enumerator y cómo funcionan, ese wait for seconds, ese yield return,
01:14:31
y wait for seconds y poner el número de tiempo que hay, pues importante.
01:14:41
Entiendo que se entiende, pero hay unos tiempos de ejecución,
01:14:47
pero nosotros podemos abrir otras vías, otros tiempos de ejecución paralelos,
01:14:50
por eso se llama corrutina, porque a la rutina, digamos, de ejecución habitual
01:14:54
se pueden añadir otras, se abren otros, con estos start corrutins,
01:14:58
se van abriendo otras líneas de ejecución, a través de este método,
01:15:02
esta función de un numerator, como las declaremos, que además nos permiten
01:15:06
que no sean fotograma a fotograma, por ejemplo, sino que podamos establecer lapsos de ejecución, ¿vale?
01:15:09
Pues este apartado, alguna pregunta también puede haber. Vamos, la va a haber, os lo adelanto.
01:15:15
Sobre el nuevo Input System, ¿no va a haber preguntas? A lo mejor existe alguna otra forma de capturar que no sea la clase Input.
01:15:24
Sí, bueno, no creo que haya preguntas, pero de la clase input y estos métodos que tenemos aquí, el GetAxis, la diferencia entre el GetKeyDown, GetKeyUp, el GetKeyAsepCast, eso va a haber preguntas, tanto en lo de desarrollo como en tipo test puede haber preguntas, segurísimo, ¿vale? Porque es básico, ¿no?
01:15:33
Es lo que esto cambia, que estemos en un software modelado 3D con uno de videojuegos con interacciones.
01:15:53
Pues estas interacciones se capturan con este, al menos como lo hemos estudiado nosotros en este módulo,
01:16:00
ya sabemos eso, que está el Input System, puede haber plugins más,
01:16:07
pero la forma básica y esencial es mediante la clase Input, ¿vale?
01:16:10
Que es la tradicional y la que se sigue usando, vaya.
01:16:15
El GetAxis es esencial, saber por qué.
01:16:18
Esto también en alguna tutoría lo hemos hablado en detalle.
01:16:20
Movimiento asociado. ¿Puede haber alguna pregunta? Puede. No creo que haya mucho. También es verdad que en las tareas, por ejemplo, en el smooth down para las cámaras, también es algo que se ha hablado en alguna ocasión. Bueno, no es lo más importante, pero como siempre, no os digo que no la vaya a ver, pero no sería lo que más énfasis le pondría. Pero evidentemente, si trabajáis con Unity, son métodos muy recurrentes y que hay que conocer.
01:16:24
Vale, tema 3.
01:16:52
¿Alguna duda mientras lo voy abriendo?
01:16:54
Digo que yo sigo, pero que me...
01:16:56
Mira, a ver, no había leído en el chat, perdón.
01:16:58
Una duda, Daniel.
01:17:01
Entiendo que en el ejemplo número 3 habría que indicar que se llama el método saltar, ¿no?
01:17:01
Así estaría bien contestado.
01:17:05
¿Te he contestado a esa duda o no?
01:17:07
Porque igual le he seguido hablando al examen tipo.
01:17:09
¿Sigue habiendo la duda o la contesté?
01:17:12
Porque sí, creo que sí que lo dije.
01:17:15
Vale, voy para atrás.
01:17:19
Lo vuelvo a abrir. Perdona, que es que si no me interrumpís yo sigo hablando y os leo de Pascua a Sarramos. Vale, y aquí voy a ir para tener el tema 3. Vale. Me hablas de la línea 3 del ejemplo. Disculpa. Vale, dice que se ha incorporado tarde. Vale.
01:17:21
En la línea 3, esta, aquí, ¿no? Saltar. A ver, espera que amplío. La línea 3, que sería esta llamada al método saltar. A ver, un segundo. Entiendo que en el ejemplo 3 habría que indicar que se llama al método saltar.
01:17:43
Sí, aquí habría que decir que, aunque sea esta línea, se va a pedir el contexto. No solo saltar es un método que he declarado, llamado saltar, no. Habrá que decir que este método se va a ejecutar si pulsamos la tecla espacio, ¿vale?
01:17:56
Y que además se encuentra dentro del update, hay que contextualizar todo lo posible y luego saltar lo que va a derivar es en un método que lo que hace es añadir una fuerza hacia arriba, ¿vale? Multiplicada por una fuerza de salto que es esta variable in que hemos declarado antes y aparte va a modificar un parámetro de tipo trigger que es el que se usa para acciones puntuales, estos triggers, ¿vale? Va a cambiar ese parámetro llamado jump.
01:18:14
Es decir, no solo va a decir saltar y ya está.
01:18:44
Evidentemente hay que decir, hay un método que hemos creado nosotros,
01:18:46
porque saltar no viene por defecto y por eso aparece con este amarillito, ¿vale?
01:18:51
De tipo void, por eso no se va a solicitar que retorne un resultado, ¿vale?
01:18:55
Sino que va a ejecutar este código de arriba a abajo y ya está.
01:19:02
Pero se ejecuta cuando se da el espacio.
01:19:05
Todo lo que contextualicéis, más correcta será la duda, la respuesta.
01:19:07
Se trata de decir, esta línea está aquí, ¿por qué está aquí y qué hace? Vamos, lo que va a poner, el enunciado igual cambia, pero la respuesta no se debe ceñir a la mera indicación de qué hace la línea, sino por qué lo hace en relación con el resto de líneas. Se refiere a eso.
01:19:12
Más dudas de esto
01:19:31
La de desarrollo va de que
01:19:33
Desarrolléis y veamos
01:19:36
Vea vuestra capacidad de desarrollo
01:19:37
¿Vale? No solo de decir
01:19:40
A, C, D
01:19:42
Es que casi eso es mejor
01:19:43
Explicar el código entero, ¿no?
01:19:47
Que línea por línea
01:19:48
Es que si tienes que explicar todo el código
01:19:49
Te tiran muchísimo tiempo
01:19:53
Entonces es centrarse en tres
01:19:55
Bueno, cuatro en este caso
01:19:57
En cuatro puntos concretos
01:19:58
Bueno, pero por ejemplo ese código
01:20:00
yo creo que, a ver, no sé, a lo mejor
01:20:01
el código que pones es súper largo, pero un código
01:20:03
así, ¿no? Porque es que
01:20:05
si, por ejemplo, yo quiero decir, ¿qué hace saltar?
01:20:09
Pues sí, tengo que explicar
01:20:12
qué hace el update, qué hace
01:20:13
luego la función saltar. Pues lo estoy
01:20:15
explicando ya casi todo. Claro.
01:20:17
Pero la pregunta es, ¿qué hace esa línea?
01:20:18
Hay que responder a esa pregunta.
01:20:21
Digo, sí, bueno, a ver,
01:20:23
os estoy diciendo ideas, que el examen
01:20:25
luego será el que será. Igual hay uno
01:20:27
de explícame todo el código de arriba abajo,
01:20:29
pero esta pregunta en concreto lo que te está pidiendo
01:20:30
es que esas cuatro líneas las expliques
01:20:33
porque igual
01:20:35
en estas líneas
01:20:36
fuerza de desplazamiento
01:20:38
igual alguno de estos elementos no está en juego
01:20:40
pues ya está, ese no hay que
01:20:43
por ejemplo, estas líneas de arriba
01:20:44
hombre, siempre se puede hablar de ellas
01:20:46
pero en este caso al menos concreto
01:20:48
ninguna de las líneas dice que me expliques
01:20:50
qué son las librerías, si hubiera puesto
01:20:52
un slider como he dicho antes, que usa
01:20:54
un unityengine.ui
01:20:56
que es otro, pues ahí sí porque es relevante
01:20:58
Pero esto aquí no es relevante. Y esto casi tampoco, ¿vale? Esta línea de declaración. Pues si quieres decir aquí, en el método de estar de la clase, si te quieres remontar mucho, puedes, pero aquí habla de contextualizar y hablar de estas cuatro líneas.
01:21:00
ok
01:21:15
la pregunta es esa
01:21:17
no responded a la pregunta
01:21:19
más cosas
01:21:23
vale
01:21:25
vamos con el tema 3, físicas
01:21:29
bueno que además
01:21:31
en la última unidad hice otro repaso
01:21:33
ya lo vimos
01:21:35
cuando vimos el carácter controller de que es kinemático
01:21:36
la forma de moverse kinemática
01:21:39
la forma de moverse
01:21:41
en base a físicas
01:21:43
y también la que añadía el carácter controller
01:21:45
incluso puede haber más, pero son las tres que hemos visto
01:21:47
pues que es el RigidBody
01:21:50
esencial, para qué sirve
01:21:53
estas propiedades, también es importante conocerlas
01:21:55
que es la masa, que son el drag
01:21:57
por supuesto
01:21:59
pues eso
01:22:00
saber que el RigidBody lo que hace es
01:22:03
permitir por un lado
01:22:05
que ese GameObject
01:22:07
se vea sometido a las leyes físicas
01:22:09
del motor de render
01:22:11
por ejemplo puede, evidentemente
01:22:12
luego dependerá de cómo lo vayamos configurando
01:22:15
si esto está marcado o no, pero puede tener
01:22:17
gravedad en base a físicas
01:22:19
podemos nosotros, sin Rigidbody
01:22:21
no podemos aplicar fuerzas
01:22:23
podemos hacer kinemáticas
01:22:25
es decir, mover el transform, pues la posición
01:22:27
es decir, vete a esta coordenada tal, pero no
01:22:29
aplicar fuerzas, que es con lo que
01:22:31
luego vamos a ver con el AddForce y el
01:22:33
AddTorque, pero
01:22:35
es importante el concepto de
01:22:37
Rigidbody que es un poco
01:22:39
los principales
01:22:40
las principales propiedades
01:22:42
que hemos visto, saber qué es.
01:22:45
También el getComponent para qué sirve,
01:22:47
pues es muy básico. Hay que saber para qué son
01:22:49
los getComponent, que es esta forma de poder
01:22:51
capturar,
01:22:53
a menos que lo hagamos con un serializeField,
01:22:55
que directamente lo arrastramos
01:22:57
en el inspector
01:22:59
de Unity. Si queremos
01:23:01
capturar un elemento por código
01:23:03
para que esa variable guarde algo
01:23:05
en su interior, hay que usar siempre el getComponent.
01:23:07
¿No? Entiendo que esto
01:23:09
ya lo hemos visto más de una vez
01:23:11
y es importante.
01:23:13
Pues eso, hablamos un poco de serialize fill otra vez, etcétera, pues eso. El add force, el add torque, pues que son un poco los métodos que tienen, pues también son importantes.
01:23:15
¿Que la física se puede cambiar? Bueno, también saberlo. Pues aquí hablamos otra vez del fix update que os he dicho, que se pueden cambiar los lapsos de tiempo, estos steps, esos time steps, para que el tiempo de ejecución lo adaptemos a la velocidad entre comillas que nosotros queramos.
01:23:28
A diferencia del update
01:23:47
Tiene una frecuencia distinta
01:23:49
Más
01:23:55
El componente
01:23:57
Aquí hay una imagen
01:23:58
Que no está
01:24:04
No es muy relevante
01:24:05
Pero no sé por qué no se ve
01:24:07
Básicamente esto dice que en otras versiones de Unity
01:24:08
Había un apartado dentro del RigidBody
01:24:13
Al final
01:24:14
dentro del Rigipodi
01:24:15
que era info y que permitía ver
01:24:18
la velocity, por ejemplo, que es la velocidad
01:24:20
que tiene de desplazamiento, pero se la han cargado
01:24:22
la versión que estamos usando
01:24:24
así que no sé por qué no se ve
01:24:26
como que intento, bueno
01:24:27
en algún momento sí que se ha visto, pero bueno
01:24:29
no es relevante para el examen
01:24:31
el velocity, pues mira, aquí habla del velocity
01:24:34
es importante
01:24:36
bueno, saber que existe, que se puede
01:24:38
aludir a ello, pues sí
01:24:40
pero tampoco es lo más importante
01:24:41
el actor, que sí, sí es importante
01:24:43
Luego, ¿qué son los colliders? Pues esencial, las condiciones básicas, que es que para que dos objetos se puedan detectar como físicos, es decir, como que tienen límites físicos que pueden chocar, ambos tendrán que tener algún límite marcado por esos colliders, es decir, cada objeto implicado tendrá que tener un collider y al menos uno de ellos un rigid body, porque si no, no están dentro del motor de física ninguno de los dos.
01:24:45
los tipos de colisionadores
01:25:11
pues sí, evidentemente
01:25:15
importantísimo, que es el isTrigger
01:25:17
aunque se habla después, y los métodos
01:25:18
pues esto hay que saberlo, los onTrigger
01:25:20
los onCollisionEnter
01:25:23
que es el physicsMaterial, que se habla aquí también
01:25:24
importantísimo
01:25:27
bueno, pues los colliders
01:25:28
es como algo bastante básico, entonces
01:25:30
hay que sabérselo, que son los colliders
01:25:32
que sucede
01:25:34
cuando uno es de tipo isTrigger
01:25:35
¿vale?
01:25:38
que es básicamente lo que cambia
01:25:39
que un collider se puede usar
01:25:42
para detectar límites físicos
01:25:44
entre objetos y no se atraviesen
01:25:47
o poder en multitud
01:25:48
de ocasiones, poder mediante
01:25:50
un collider establecer zonas
01:25:52
de nuestro escenario
01:25:54
o vinculadas a un
01:25:57
gain object que aunque se pueda atravesar
01:25:58
pero al atravesar esos límites
01:26:00
estos límites verdes por ejemplo en este
01:26:02
sphere collider pues
01:26:04
que pueda servir para lanzar
01:26:06
acciones que es básicamente de lo que se habla aquí vale con este nuevamente esto también puede
01:26:08
ser es importante lo del istrigger básicamente estos dos métodos y sus otros vale el on collision
01:26:14
enter el stay y el exit que son y cómo se usan y qué diferencias hay entre ambos y que por supuesto
01:26:26
es esencial para la diferencia entre que sea con un collision o que lo detecte como un trigger es
01:26:32
es que esté marcada la casilla East Trigger. Eso es muy importante, muy muy importante.
01:26:37
A ver, más... Distancias y Raycast. Pues qué es un Raycast y un poco cómo funciona, también es
01:26:45
importante saberlo. También está el Raycast 2D, pues es importante. Como hablamos otras veces, los
01:26:53
para saber más no entran, siempre ayudan a ampliar para aquellos que queráis profundizar más, ayuda
01:27:00
también a contextualizar, pero el núcleo no está en los saber más
01:27:06
para el examen. Que es un check sphere, que es otra forma de
01:27:10
poder revisar
01:27:14
si un área está siendo atravesado por otro objeto
01:27:17
para, por código, detectar si algo está ocurriendo dentro de una zona
01:27:21
pues sin usar un componente como un collider, se puede hacer también
01:27:26
por código. Que a partir de este punto hay una esfera de tal radio en la que si hay algo
01:27:30
dentro, pues me lo des
01:27:34
como que sí, como un true, la condición
01:27:35
y entonces ejecute tal cosa
01:27:37
pues importante
01:27:39
que es un poco
01:27:40
la versión
01:27:43
simple del overlap sphere
01:27:44
el overlap sphere lo que permite es un poco lo mismo
01:27:47
solo que a través
01:27:49
no solo permite
01:27:51
bueno pues
01:27:53
decir si es falso o verdadero
01:27:55
que se encuentra algo dentro de esa esfera
01:27:58
sino que dentro de una esfera, caja o cápsula
01:27:59
que creemos, pues lo que haya
01:28:01
adentro se le puede aplicar a todos los objetos que hay adentro, pues que se les añada daño.
01:28:03
Esto es más avanzado, más allá del concepto de qué es, no debería entrar.
01:28:09
¿Y qué son los materiales físicos o physics materials? Para simular las fricciones y rebotes
01:28:16
de los objetos y que se añade en el collider, dentro de cada collider, o de muchos tipos
01:28:23
de Collider tiene este apartado de material que no
01:28:33
es el material visual, como hemos
01:28:35
hablado antes, por ejemplo, el Shader Graph o
01:28:37
un material para que algo se vea azul. Aquí
01:28:39
en el Collider el material se refiere a un
01:28:41
Physics Material que permite
01:28:43
dar propiedades de fricción,
01:28:45
de bote, etc. ¿Vale?
01:28:47
Siguiente tema. Voy así, que voy
01:28:52
más rápido que así, que yendo
01:28:56
aquí. Tema 4.
01:28:57
Y
01:29:01
aquí está. Tema 4.
01:29:01
¿Qué tal?
01:29:05
Venga, lo abro en otra pestaña que es lo suyo.
01:29:09
¿Qué es un HAT? También puede ser una pregunta como introducción.
01:29:11
Este tema es sobre User Interface.
01:29:16
Una cosa importantísima es que hay que añadir ese namespace o esa línea que habíamos indicado antes,
01:29:19
porque si no, muchas de las variables que se pueden usar no funcionarán.
01:29:26
Gestión de escenas, que se empieza a hablar aquí y cómo se puede ir navegando entre ellas,
01:29:33
¿Qué es el build index? ¿Para qué sirven las escenas? A lo mejor algún ejemplo como este de si tenemos, estamos en la escena 3 y ponemos este código, como tiene este getScene aplicado, ¿a qué escena se pasaría cuando se ejecute el código?
01:29:41
Pues si estuviéramos en la escena 3, en este caso pasaríamos a la 4, ¿vale? Pues hay que decir a la 4. Este tipo de preguntas también puede haber, ¿vale? Igualmente tiene su propia librería, pues a ver que si vamos a usar gestión de escenas hay que añadir este Scene Management.
01:29:58
¿Carga sícrona y aditiva?
01:30:15
Podría entrar, pero
01:30:18
más avanzado probablemente
01:30:19
no haya preguntas de esto. Es súper interesante
01:30:22
se añade aquí para que lo
01:30:24
conozcáis, pero bueno, no creo que haya
01:30:26
preguntas referidas a esto
01:30:28
porque me
01:30:30
centraría más en lo que son las escenas
01:30:32
básicas y la gestión
01:30:33
de ellas. ¿Variables estáticas?
01:30:36
Pues un poco saber qué es, sí que podría haber
01:30:38
alguna pregunta y que se pregunte por ello
01:30:40
pues si habéis hecho por ejemplo
01:30:42
la unidad en la tarea 4 lo habéis usado y bueno que es una variable de tipo pública que tiene
01:30:44
otro otro comando en otra otra palabra que añade más informas
01:30:50
propiedades vamos a decir cambia un poco el sentido de esa variable para que bueno pues
01:30:59
los valores que vayan ahí no se pierdan al recargarse escenas etcétera se queda como
01:31:05
una variable suspendida, digamos, para poder usarla a lo largo del juego.
01:31:09
El canvas, pues que es el canvas y que es, digamos, el padre de los elementos de User Interface
01:31:15
que vayamos incorporando junto al event system que siempre tiene que estar cuando hay un canvas,
01:31:20
del que se habla aquí, pues importante saber lo que es y saber, pues eso, que va a ser el padre
01:31:24
y de dónde se gestionan estas dos otras opciones que tenemos aquí, que ahora vamos.
01:31:29
pues eso
01:31:34
de este tema un poco
01:31:35
pues los distintos render modes
01:31:38
y canvas scalers, pues saber
01:31:40
qué es y para qué son
01:31:42
eso puede haber preguntas de ello
01:31:44
y los distintos
01:31:46
un poco
01:31:48
qué es un canvas, se puede preguntar
01:31:49
a lo mejor se puede
01:31:53
hablar un poco de esto, tampoco creo
01:31:54
me centre mucho porque esto sin tener el ordenador
01:31:56
delante, mucho lío de pues el
01:31:58
pivote se pone aquí, etc.
01:32:00
Bueno, tampoco es lo que más me interesaría de cara al examen. Evidentemente, si estáis creando un canvas en vuestra aplicación, pues hay que un poco saber trastear con estas opciones que da el Red Transform, ¿vale?
01:32:02
Y el Event System, que es básicamente el que permite el GameObject barra componente, que permite que con teclas o con un input nosotros podamos irnos moviendo por las distintas opciones o que directamente cuando clicamos sobre un botón, pues lo detecte, ¿vale?
01:32:14
básicamente es el gestor de
01:32:32
que esa user interface pueda
01:32:34
detectar interacciones
01:32:36
y por eso tiene que estar siempre
01:32:38
porque si no un botón, por mucho que cliquemos
01:32:40
no va a hacer nada
01:32:42
¿vale?
01:32:43
elementos de la UI, pues
01:32:46
los distintos elementos, a ver qué es y un poco
01:32:48
cómo se configuran
01:32:50
sí que puede haber alguna pregunta, yo que sé
01:32:52
en un slider, ¿qué es el handle?
01:32:54
por ejemplo, si quisiéramos cambiar el iconito
01:32:56
del círculo que aparece
01:32:58
para que sea
01:33:00
un pivote o una bola de pinball
01:33:01
como la tarea 4
01:33:04
pues lo que habría que tocar es el handle
01:33:05
o el fill area, pues el handle
01:33:08
un poco saber que es esto
01:33:09
de estos pues es que es importante
01:33:10
al menos que os suene que son cada cosa
01:33:13
o los distintos tipos de elementos
01:33:16
que hay
01:33:18
de las player prefs, importante
01:33:18
puede haber alguna pregunta
01:33:21
también en el tema 4 que es
01:33:23
si hablamos de las variables estáticas
01:33:25
para que mientras estamos reproduciendo el juego
01:33:27
se puedan guardar variables y se almacenen
01:33:29
durante la reproducción, con esto
01:33:32
con estas player prefs lo que conseguimos
01:33:33
es poder guardar en
01:33:36
otra parte del ordenador o dispositivo en el que
01:33:37
estemos jugando una memoria
01:33:40
de datos o claves como se llaman
01:33:41
¿vale? como podemos ir guardando ahí
01:33:43
aunque cerremos el juego
01:33:45
y lo arranquemos otro día, datos
01:33:47
por ejemplo como el ranking de mejores puntuaciones
01:33:49
pues en estas claves de los player prefs
01:33:51
vamos a poder ir guardando
01:33:54
y luego recuperando
01:33:55
esos datos para que, aunque quitemos el juego, pues siga habiendo un histórico, una memoria, digamos, de datos.
01:33:58
Luego aquí más abajo se habla de otros sistemas más elaborados y más escalables que se pueden subir a Internet
01:34:05
con datos, pues por ejemplo estos archivos JSON, son para saber más, de esto no va a haber preguntas,
01:34:11
pero de cómo funcionan estos player prefs y cómo se puede recuperar, incluso comprobar si existe una de estas claves
01:34:15
y fijar y recuperar estos datos, sí puede haber alguna pregunta.
01:34:24
Cuando digo preguntas, pueden ser tipo test o de desarrollo.
01:34:29
Esto, por ejemplo, es más tipo test seguramente.
01:34:32
Si aparece esta línea, ¿cómo estamos recuperando o qué está haciendo?
01:34:35
¿Qué método de los player prefs habría que usar para fijar en una clave llamada GameVolume
01:34:39
un dato de tipo float?
01:34:45
Sería con el setFloat, que es la que sirve para establecer valores.
01:34:48
En este caso, float, porque es un valor de float. Si fuera un int, sería un int, un stint, ¿vale? Vale, pues, siguiente tema, si no hay más. Si no queréis comentar algo. Dame un segundillo, a ver, vale.
01:34:52
Tema 5
01:35:10
Dame un segundito
01:35:13
Vale, este tema
01:35:15
Bastante importante también
01:35:18
Porque es el que gestiona las animaciones
01:35:20
En este tema sobre todo
01:35:22
Se centra en
01:35:24
Animaciones 2D
01:35:26
Lo que son basadas en sprites
01:35:27
Que la diferencia, y esto es importante
01:35:30
Aunque es un poco de cajón si se piensa
01:35:32
No es lo mismo las animaciones basadas
01:35:34
En distintos fotogramas que cuando tenemos
01:35:36
una animación de un clip de animación 3D
01:35:38
que lo que hace es interpolar valores
01:35:40
¿vale? cuando es fotograma a fotograma
01:35:42
no dejan de ser imágenes una tras otra
01:35:44
pues mostrará primero un fotograma
01:35:46
y luego otro ¿vale? cuando son animaciones
01:35:48
3D y lo metemos en un
01:35:50
personaje bípedo, en una persona
01:35:52
pues cuando levanta el brazo
01:35:53
no están dibujados
01:35:55
los distintos cambios de posición
01:35:57
sino que es, ve de este punto de la mano
01:36:00
en el rig, el punto que tenga
01:36:02
marcado como mano
01:36:04
que vaya de este punto a este otro
01:36:06
Y en medio irá interpolando, ¿vale? Entonces, bueno, el panel de animation, pues a ver un poco cómo funciona, bueno, pues un poco de manera similar a lo que sucede en otros softwares de 3D o incluso de edición de vídeo, pues que tienen una línea de tiempo y se pueden ir fijando fotogramas, ¿vale?
01:36:08
Vale, bueno, aquí habla un poco de qué es cada panel, introductorio, ya vamos a la chicha. Que existe este componente animator, que luego para acceder a él, pues habrá que, no sé si ya está aquí, cuando vaya práctica guiada, pues cuando queramos acceder al animator, ¿vale? A una variable animator, primero habrá que capturarla.
01:36:32
capturarla? Pues en el animator controller, pues primero habrá que de alguna forma capturar
01:36:56
ese componente animator, que es en el que tenemos ese animator controller que asignamos
01:37:09
al animator. En el panel de animación, pues bueno, un poco saber, yo que sé, esto es
01:37:14
importante que lo conozcáis. Bueno, sí, saber que se pueden crear por cada GameObject
01:37:22
dentro de cada animator los distintos
01:37:26
clips de animación que se corresponderán con los estados
01:37:30
del animator controller, ¿vale? Estos distintos estados, cada uno es
01:37:34
en esencia un clip de animación, ¿vale? Pues luego podemos meternos en ese clip
01:37:37
de animación que en el animation, en el panel de animation, podemos
01:37:42
ajustar, depurar o hacer lo que queramos. Del animator controller, pues
01:37:45
Por ejemplo, saber por qué hay uno en naranja. Pues ese naranja será el que por defecto está fijado como estado por defecto. Si no hay ninguna transición, al arrancar ese nivel, pues se irá a este estado, el personaje hará lo que esté en ese estado, hasta que haya transiciones que lo cambien.
01:37:50
Por eso aparece naranja y con esta conexión naranja automática cuando lo marcamos como layer default state.
01:38:05
Bueno, pues eso es importante también saberlo.
01:38:13
Un poco cómo se figuran las transiciones, que son los parámetros, cómo se cambian por código,
01:38:15
por qué a veces pueden aparecer estas conexiones con más de una flecha,
01:38:21
que es que hay más de una posible condición para que se dé la transición.
01:38:26
Pues eso sí que puede ser importante.
01:38:30
que es el hasExitTime, que es que aunque estemos ejecutando la acción run02, si queremos ir a run02 y se cumple la condición,
01:38:33
si hasExitTime tiene que acabar primero toda la animación y luego ya ir a la siguiente, o si automáticamente cuando se cumpla la condición, pasa al siguiente estado.
01:38:45
Vale, pues también es relevante conocerlo.
01:38:58
lanzar transiciones
01:39:00
bueno, pues aquí habla de los parámetros
01:39:02
que hay de varios tipos, trigger, bool
01:39:03
int
01:39:06
float, pues a ver que
01:39:08
que son
01:39:10
y como se cambian, que básicamente
01:39:11
bueno, y las condiciones que son, y como se cambian
01:39:13
por código, que básicamente se
01:39:16
explica aquí con los set
01:39:18
de los distintos tipos, pues eso
01:39:19
primero, dependiendo de si es set trigger
01:39:21
solo habrá que poner el nombre del parámetro
01:39:24
si es de otro
01:39:25
tipo, pues permitirá en el
01:39:27
en el segundo parámetro, pues cuál es el valor.
01:39:29
Si tenemos un parámetro de tipo booleano, puede ser verdadero o falso.
01:39:33
O si es de tipo int, pues habrá que darle un número.
01:39:39
Pues aquí primero se apela a qué tipo de variable va a ser la de ese parámetro.
01:39:42
Mejor dicho, qué tipo de dato guarda el parámetro.
01:39:47
Se dice el nombre y luego cuál es el valor que tiene que tener.
01:39:51
Y que ese valor, como podéis ver en un setFloat, aparte del nombre de ese parámetro,
01:39:55
pues lo podemos conectar con un axis
01:39:58
por ejemplo, o con lo que queramos, no deja de ser
01:40:01
un valor que mientras en este caso
01:40:03
sea de tipo float
01:40:05
va a estar modificando
01:40:06
el valor de ese parámetro para luego
01:40:09
nuevamente que la condición
01:40:11
se dé o no, que es lo que nos permite
01:40:13
que a nivel visual nuestro personaje
01:40:15
o el elemento que sea
01:40:17
reproduzca una animación
01:40:18
u otra
01:40:20
bueno, en la práctica guiada
01:40:21
aquí se os dejaba un ejemplo
01:40:25
cómo se aplica, si además habéis hecho las tareas
01:40:27
pues lo habéis puesto en práctica y si no, pues revisadlo
01:40:31
para entender cómo funciona
01:40:35
el 2D en Unity, pues
01:40:36
saber que hay un paquete que hay que instalar
01:40:40
y un, digamos, una de las plantillas
01:40:44
de creación de proyectos que es específico de 2D y que incorpora
01:40:49
algunos de estos paquetes, como hemos dicho al principio de la sesión
01:40:52
que, bueno, dependiendo de qué plantilla usemos, pues tendrá unos paquetes u otros que siempre podremos luego instalar desde el Package Manager.
01:40:56
¿Vale? Físicas en 2D. Bueno, pues a ver que existen métodos que son análogos o similares a los de 3D, pero que tienen su versión para 2D.
01:41:04
Porque, bueno, como se mueven en otras dimensiones y tienen ciertas limitaciones, pues no son exactamente igual y por eso hay que usar ese tipo de métodos cuando corresponda.
01:41:14
que existe el Rigipodi 2D
01:41:23
del animation por cierto
01:41:26
me salto una cosa
01:41:31
importante es también saber que son los eventos
01:41:32
de animación, que son que dentro de
01:41:35
una reproducción de una animación
01:41:37
se puede marcar por ejemplo
01:41:39
en este segundo uno
01:41:41
un evento se puede añadir
01:41:42
para que a través de código podamos decir
01:41:44
cuando se, en vez de
01:41:47
activar algo por código
01:41:49
en cierto momento es
01:41:50
cuando se reproduzca este clip de animación
01:41:52
al llegar a este punto, que ocurra
01:41:54
lo que pongamos en el método
01:41:56
esto también puede haber alguna pregunta
01:41:58
sobre todo sería más de
01:42:00
del tipo test, no voy a
01:42:02
decir que me desarrolléis todo esto
01:42:04
pero si ponemos un evento
01:42:06
en la línea de tiempo
01:42:08
¿cómo habría que
01:42:10
escribir el código para que aparezca así
01:42:12
de configurable? bueno, pues podría
01:42:14
haber alguna pregunta en ese
01:42:16
sentido
01:42:18
físicas 2D
01:42:18
los colliders 2D pues un poco también nos tienen que sonar
01:42:25
los efectores, pues que es un
01:42:28
esto lo vimos en la tarea 5
01:42:29
que es un platform
01:42:31
efector 2D, pues si queremos
01:42:33
que el personaje pueda pasar por debajo
01:42:36
y apoyarse en una plataforma
01:42:38
pues existen estos efectores
01:42:40
que se pueden aplicar
01:42:42
y para eso hay que activar
01:42:43
dentro de los colliders 2D, esto no lo tienen
01:42:45
los 3D, los colliders normales
01:42:48
que se pueden ir incorporando
01:42:50
otros tipos de componentes que son estos
01:42:52
efectores
01:42:54
entonces bueno, cada uno tiene su
01:42:54
theme
01:42:57
alguno puede caer, si cae alguno pues será
01:42:58
probablemente el platform, que es el que
01:43:01
sí que en algún momento se ha visto
01:43:03
¿qué es una hoja de sprites? ¿por qué se usan?
01:43:04
¿cómo se importan?
01:43:08
bueno, un poco cómo se editan
01:43:09
que para que sea una hoja de sprites
01:43:10
un solo documento, un solo asset
01:43:13
hay que marcar que sea múltiple
01:43:15
entrar en la sprite editor
01:43:17
dividirlo con alguna de las opciones que hay
01:43:19
y entonces aparecerán como
01:43:21
dentro de esa hoja de sprites
01:43:23
se habrá dividido en los distintos
01:43:24
subelementos
01:43:26
¿vale? tampoco
01:43:29
más avanzado que esto, a ver
01:43:30
¿qué son las sorting layers, las layers
01:43:32
las tags? pues un poco
01:43:35
que os suene que es, sí que puede haber
01:43:36
alguna pregunta, pero
01:43:39
tampoco va a haber que desarrollar
01:43:39
pero alguna pregunta de qué es o para qué se usa
01:43:43
sí que puede haber
01:43:45
¿vale?
01:43:46
dame un segundito
01:43:51
vale, de este tema
01:43:53
creando un juego multiplataformas
01:43:59
esto se habla de
01:44:01
bueno, mira
01:44:02
esto es lo que antes no salía, esto de Velocity
01:44:04
este panel de info, en las últimas
01:44:06
versiones, en el Rigidbody normal
01:44:08
de 3D, no aparece, esa es la imagen que no
01:44:10
aparecía
01:44:13
bueno, pues un poco las lógicas que
01:44:13
tienen los códigos, lo que os comentaba
01:44:16
pues un poco saber estas
01:44:19
secciones, creando un juego
01:44:20
de plataformas, estos dos apartados son
01:44:23
para que pudierais
01:44:24
viendo el código
01:44:27
que se os proporcionaba, ir desglosando
01:44:29
un script
01:44:30
y ir viendo cómo conseguir ciertas acciones
01:44:32
que luego también casi todas se pedían
01:44:34
en lo que son las
01:44:36
bueno, pues las
01:44:37
tareas
01:44:41
como detectar el suelo
01:44:42
con un raycast o como
01:44:45
detectarlo con el
01:44:46
con un
01:44:48
collision enter 2D en este caso
01:44:50
bueno, pues aquí se habla un poco de esto
01:44:52
sobre todo que sepáis las lógicas
01:44:53
si se os pregunta
01:44:56
pues que os suene
01:44:57
de multijugador, si se pregunta algo sería a nivel
01:44:58
conceptual, que tres tipos de
01:45:01
multijugador, principalmente
01:45:03
que tipologías, tampoco creo
01:45:05
que se pregunte mucho de esto, pero bueno
01:45:07
a lo mejor, un viejo
01:45:09
se puede jugar en local
01:45:11
puede ser multijugador local
01:45:12
pues sí, por ejemplo, yo que sé
01:45:15
Si os suena el juego It Takes Two, no sé si habéis jugado, pues en cuanto ponga una captura o un gameplay vais a ver que es un juego que se juega, bueno esto lo digo como añadido, pero es un videojuego que se basa en cooperativo en local.
01:45:17
se van a ir viendo dividida la pantalla
01:45:33
y los dos jugadores van jugando a la vez
01:45:36
y cada uno irá mirando su mitad
01:45:38
pero también puede mirar la otra
01:45:40
o si es online o basado en un
01:45:41
servidor que está
01:45:44
ubicado en otro sitio y ninguno de los jugadores
01:45:45
digamos que es el que centraliza
01:45:48
la ejecución del juego
01:45:50
a la que se conecta en el resto
01:45:51
bueno pues ahí en vez de ser local
01:45:54
que se juega en un mismo
01:45:56
dispositivo
01:45:57
pues se puede hacer de manera online
01:46:00
Ya os digo, siendo uno el host de esa partida o que sea el servidor el dispositivo que gestiona ese multijugador.
01:46:02
Ya os digo, de esto no creo que entre mucho. Tampoco en las tareas se ha pedido, así que no creo que entre nada de multijugador.
01:46:10
A ver... Vale. Voy para atrás. Vale. Vamos al tema 6. Ya quedan menos.
01:46:18
Aquí. ¿Qué tal? ¿Alguna duda?
01:46:30
Todo bien.
01:46:37
Vale. Contenido.
01:46:37
Bueno, terrenos, nazmes, pues un poco conceptualmente que son los terrenos, alguna de las herramientas, pues se puede preguntar, oye, pues ¿qué es un head map? A lo mejor que son estos mapas en escala de grises para trasladar rápidamente un terreno y guardarlo y poder cargarlo con esta importación de head map.
01:46:41
no es lo que más me importa
01:47:02
¿vale? estas secciones
01:47:05
sí que me puede importar más
01:47:07
pues por ejemplo las distintas
01:47:09
herramientas
01:47:11
pues que hay de esculpido
01:47:12
¿vale? pues que es el Razor Lower
01:47:15
preguntaros para qué sirve
01:47:17
el Smooth Head o el Set Head
01:47:19
bueno, eso sí puede haber alguna
01:47:21
preguntilla ¿vale? pero
01:47:22
tampoco es lo que más me importa
01:47:24
como es más
01:47:27
visual esta parte
01:47:29
y de los terrenos, pues es
01:47:30
importante, pero para el examen no
01:47:33
creo que pregunte mucho
01:47:34
¿importación
01:47:36
de personajes?
01:47:39
pues
01:47:41
bueno, saber que es
01:47:41
un FBX
01:47:45
que se pueden configurar algunas cosas
01:47:45
no es de lo que más se preguntaría
01:47:49
¿vale? si que me
01:47:51
me hubiera gustado quien no lo hubiera hecho
01:47:52
quien no lo haya hecho, pues las tareas
01:47:55
que si hubiera intentado hacer la tarea 6
01:47:57
que tienen Tringulis
01:47:59
pero a nivel de
01:48:00
más allá de cómo se gestiona el animator
01:48:02
que es un blend tree, eso sí que me puede
01:48:05
interesar más, pero bueno
01:48:07
Mixamo, pues bueno, que sepáis que existe
01:48:08
y para qué es, pero bueno, tampoco
01:48:11
creo que haya de desarrollo
01:48:13
preguntas
01:48:15
ni
01:48:16
no sé
01:48:16
que entre demasiado, es más aplicado
01:48:18
entonces, alguna pregunta puede haber
01:48:21
sí, pero no es de lo que más va a haber
01:48:24
el carácter controller
01:48:26
Pues saber por qué es, que es este tercer método para mover al personaje, que por ejemplo incorpora detección de cuestas, de peldaños, que se puede mover entonces más libremente por estos terrenos que hemos aprendido a crear.
01:48:28
Y un poco saber las peculiaridades que están aquí recogidas de este carácter controlores, ¿vale?
01:48:41
Pues por ejemplo, que tiene como una especie de cápsula ya collider, pero que no se gestiona con el onCollisionEnter que hemos visto, sino que tiene sus propios métodos.
01:48:48
también que hay un método
01:48:56
el simple
01:48:58
que sirve para mover a un personaje
01:49:00
pero no está pensado para que salte o para que se mueva
01:49:02
en vertical y hay otro
01:49:04
más complejo pero que permite más opciones
01:49:06
que es este move que sí que permite por ejemplo
01:49:08
saltos pero que hay que un poco
01:49:10
calibrarlos
01:49:12
por nuestra parte como luego se habla en los ejemplos
01:49:14
de uso
01:49:16
pues eso, saber un poco
01:49:17
para qué es el carácter controller
01:49:19
y las peculiaridades que tiene
01:49:21
sobre todo esta parte
01:49:24
me parece más interesante
01:49:26
¿vale? porque si al final
01:49:27
estamos configurando algún
01:49:29
personaje que se
01:49:31
tiene que meter por
01:49:34
tiene que subir escaleras o se tiene que meter por
01:49:35
entornos más complejos
01:49:38
pues es
01:49:39
el componente a usar
01:49:41
¿vale?
01:49:43
de Cinemachine
01:49:47
bueno, que sepáis que existe
01:49:48
que tiene su propio
01:49:50
namespace
01:49:52
o librería
01:49:54
Un poco para que se usa
01:49:55
Tampoco va a ser de lo que más se pregunte
01:49:57
Lo mismo, me interesaba más de cara
01:50:00
Que lo tocaréis en la tarea
01:50:02
Número 6
01:50:03
Pero bueno, alguna pregunta puede haber
01:50:05
Directamente puede haber alguna cosa
01:50:07
Pero no es lo que más me centraría
01:50:10
Del NAMMES, pues como es
01:50:11
Un poco la filosofía de cómo funcionan
01:50:13
Estas IAS
01:50:16
Que es que dentro de nuestros GameObjects
01:50:17
O terrenos, podemos demarcar zonas
01:50:19
¿Vale? Estas mallas de navegación
01:50:21
en las que puede un automata, un enemigo, etcétera, se puede mover cuando le aplicamos este NANDMESH agent.
01:50:23
Tampoco es en lo que más me voy a basar las preguntas, pero bueno, que definimos esas áreas por las que se puede mover
01:50:30
y luego, ¿vale? Con lo que vamos a poder decirle, vea tal punto o tal otro dentro de esa malla es con él,
01:50:36
bueno, pues igual habría que usar un namespace de punto ahí, ¿vale?
01:50:45
Y este método, que es el setDestination, que sirve para ir marcando a este autómata, a esta inteligencia artificial, que se dirija hacia un punto y a lo mejor cuando llegue a este punto, poner otro setDestination y vaya a otro e ir interpolando hacia dónde tiene que dirigirse, teniendo en cuenta que dentro de las opciones del agente, que es el autómata que tiene este componente,
01:50:49
pues de un punto hasta que llegue a ese destination
01:51:16
se van cambiando los valores
01:51:18
de velocidad, de cómo
01:51:20
tiene que acelerar si se frena en algún momento
01:51:22
¿vale? cuánto tarda en girar
01:51:24
pues esas cosas, aparte de
01:51:26
que pueda subir o no escaleras
01:51:28
y etcétera, ¿vale?
01:51:30
ya os digo
01:51:33
este tema en general me interesaba
01:51:33
más de cara a que es muy importante
01:51:36
si ya empezáis a hacer juegos
01:51:38
con más empaque y tienen opciones más avanzadas
01:51:40
saben puede haber alguna pregunta, ya te digo
01:51:42
Pues en el NAMES agent, ¿cuál es el método para fijar destino? Pues setDestination, yo que sé, por ejemplo, ¿vale? Pero no es, aunque pueda caer alguna pregunta, no es de las que más va a haber.
01:51:44
¿Qué es un estado finito, el automata finito, este finite state machine? Pues que son las lógicas que van siguiendo los automatas de cuando llego a cierto punto, chequeo esto y si se cumple esta condición, paso a otro punto, ¿vale?
01:51:57
Esto en la tarea era opcional, casi todo, entonces tampoco es lo que más me voy a centrar. Un poco que sepáis eso de la malla de navegación que se puede fijar por zonas y el automata se le aplicará este componente de agente con el que podemos ir diciéndole, agente, ve a tal punto siempre yendo por las zonas marcadas con la malla de navegación.
01:52:13
Es decir, aunque marquemos este punto aquí, este personaje no va a saltar, se pueden poner saltos con algunas de las opciones que también se describen, pero básicamente con lo que se dice llega hasta aquí, que lo que hará será meterse por este pasillito y volver por aquí, porque es por donde tiene malla de navegación, pues lo hará con el Send Destination.
01:52:36
Que cuando llegues aquí, otro set destination, que ya es poner lógicas de ejecución de un automata, pues cuando llegues aquí, que el destino sea este.
01:52:54
Pues el automata, por este terreno que hay aquí, a la velocidad que le pongamos, se irá moviendo hasta llegar a ese punto.
01:53:05
¿Vale? Pues un poco con eso, de este apartado, es lo que más me interesaría.
01:53:11
¿Sí? Venga, sigo.
01:53:19
Tema 7 y último.
01:53:21
Siempre se me olvida lo de abrir en pestaña aparte.
01:53:26
aquí está
01:53:30
vale
01:53:31
aquí, vamos a ello
01:53:33
de este tema
01:53:36
como os he dicho al principio
01:53:38
me interesan
01:53:41
muchas cosas
01:53:44
bueno, cuando llegue aquí voy a esta
01:53:45
de los materiales, pues saber un poco que son los materiales
01:53:47
los shaders
01:53:49
pues un poco que mapas, eso si me interesa
01:53:50
que lo sepáis, que es el albedo
01:53:56
en realidad si habéis hecho color
01:53:57
y se habló ya de los pases, etcétera, ya sabéis un poco lo que es, pero bueno, aplicado al shader estándar del Building Render,
01:53:59
pues luego es traducirlo a otros shaders y a otros motores, pero un poco son los pases que suelen tener los shaders.
01:54:08
Entonces, y por tanto los materiales que estén sometidos a esos shaders.
01:54:15
Pues un poco estas opciones sí que es importante, pues si quiero cambiar el color, pues principalmente hay que cambiar el albedo.
01:54:20
Si quiero que tenga relieves que no son físicos, sino simulaciones en base a un mapa, pues será en base al mapa de normales.
01:54:26
O si sí quiero desplazamiento, pues el height map.
01:54:34
Bueno, esto es importante.
01:54:37
De integrar vídeo, es muy interesante.
01:54:39
Si queréis meter vídeos, no creo que pregunte nada.
01:54:41
De skybox, saber qué es.
01:54:44
Siempre que hemos tenido un nivel nuevo, ¿vale?
01:54:46
Y esto no lo he mostrado en esto.
01:54:50
Pero este entorno del cielo, por defecto, siempre venía uno creado por defecto, relacionado con este Directional Light que se crea al generar nuevas escenas.
01:54:52
Pero, como se explica en el tema, hay una sección dentro de Window Rendering, Lighting, que es en Environment, el Skybox, que es un tipo de material, un tipo de shader concreto,
01:55:06
que se asocia a un tipo de luz, en este caso el Directional Light,
01:55:19
que nos permite hacer ese, entre comillas, HDR, que ya puede iluminar por sí mismo.
01:55:23
Es un tipo de material concreto y como tal se encuentra ya hecho.
01:55:29
Podemos crear el nuestro, como en este caso, que no es el que viene por defecto,
01:55:39
pero por defecto, si os fijáis ya en esta sección, habrá un material de Environment.
01:55:42
Bueno, pues que sepáis que es un skybox, eso también puede ser importante. Hay distintos tipos de generar un skybox, similares a los que se pueden usar en las imágenes HDR en software de 3D, por ejemplo, para hacer una iluminación global.
01:55:47
Pero bueno, más allá de qué es el concepto del Skybox y tal, no creo que se meta mucho.
01:56:06
¿Qué es un Render Pipeline y los otros Render Pipeline principales y por qué?
01:56:12
Pues el URP para juegos 2D y móviles de alta calidad, pero no la altísima gama.
01:56:16
Están optimizados para plataformas, pero si queremos última generación, como la Play 5, PCs de alta gama, será el HDRP.
01:56:22
Hay tres niveles. El que hemos usado hasta ahora, que es el básico, el universal, que permite, por ejemplo, SIDGRAP o procesos más avanzados. Y luego está el de la Play 5 o la última Xbox o la Switch si estamos trabajando para máximo nivel gráfico, que es el HDRP.
01:56:29
bueno, pues saber un poco que
01:56:51
esto que hemos hablado un poco, de que hay que actualizar
01:56:54
los materiales, etcétera
01:56:56
entre diferentes render pipelines
01:56:58
también saberlo, también
01:57:01
en esencia, que es el shader graph
01:57:02
aunque luego no se profundice mucho
01:57:04
pero saber que es y que existe
01:57:07
porque en este software se llamará
01:57:08
shader graph, en Unreal se llamará
01:57:10
de otra forma, pero siempre hay
01:57:12
sistemas nodales en algún punto
01:57:14
los software sistemas
01:57:16
nodales para crear shaders
01:57:19
Y permitir capacidades visuales en los materiales. Bueno, pues en este caso sería el Shader Graph. Sobre iluminación, saber qué son las diferencias entre luces de tiempo real, las precocinadas y las mixtas, pues que suene. Tampoco profundizaré mucho, pero en lo que sí se profundizará y habrá preguntas seguro es los tipos de luz.
01:57:21
Además esto es
01:57:42
También en el módulo de color
01:57:44
Son similares, pues saber cuáles son los distintos
01:57:46
Tipos de luz, por ejemplo esta
01:57:48
Es la que siempre viene por defecto
01:57:50
Con ese skybox asociado
01:57:52
Bueno, pues los cuatro tipos de luz, saber qué es cada una
01:57:54
Eso es importante
01:57:56
Un poco los parámetros
01:57:58
Pues bueno, saber cada tipo de luz
01:58:00
Qué parámetro puede tener
01:58:03
En relación a su naturaleza, también puede ser
01:58:04
Esto del skybox
01:58:07
Pues un poco lo mismo
01:58:08
No me meteré mucho en esto
01:58:09
horneado de luces esto lo pongo para que sepáis cómo funciona en el vídeo de álvaro también se
01:58:12
habla tampoco es lo que más me importa los post procesos interesantísimos aquí se describe el
01:58:17
proceso para configurarlo y cómo se hacen por zonas vale los post procesos básicamente sirven
01:58:24
para si os fijáis en este en este ejemplo pues por ejemplo para que cuando nos vamos alejando
01:58:30
voy a quitar el audio, veis que se va a ir como haciendo más borrosa la imagen
01:58:37
o se irá haciendo más definido
01:58:41
o por ejemplo para
01:58:44
a ver si voy a los procesos
01:58:46
bueno, pues para que haya destellos más agresivos
01:58:50
si os fijáis aquí en el agua, si activo este posproceso de bloom
01:58:54
veis que a veces salen como
01:58:57
flares, como destellos
01:58:59
o el viñeteado, veis que si lo activo o desactivo
01:59:03
los post procesos sirven para una vez ya sea captado por la cámara lo que tiene que ver sobre
01:59:06
esa imagen se añaden efectos visuales igual que como si lo hiciéramos en davinci esto permite
01:59:13
tener ciertos acabados más estilizados o con más posibilidades y además a posteriori de que ya se
01:59:19
haya capturado todo lo que es el 3d es decir se captura la imagen 2d y sobre esas se realizan los
01:59:29
post-procesos. Ajustes de color, dar profundidad de campo, por ejemplo, lo que hemos dicho antes de que se me alejo, pues se irá perdiendo el foco al salir de la profundidad de campo que tiene, del campo que tiene. Añadir grano, bueno, veis que tiene distintas opciones. En ese apartado, aunque esto no creo que entre en el examen, pero es muy interesante que conozcáis que se puede mejorar mucho la apariencia visual, aquí veis un antes y un después, con post-procesos.
01:59:34
Es como hacer una corrección de color en DaVinci, como hacemos en otro de los módulos.
02:00:02
Sistema de partículas, que lo conozcáis, no creo que pregunte mucho de esto.
02:00:08
No creo que haya ninguna pregunta, que lo conozcáis y ya está.
02:00:14
Del sonido, pues lo que hemos hablado, que es un audio listener,
02:00:16
que más de uno no debería ver una escena activa a la vez,
02:00:19
que son los audio source, que es el audio clip,
02:00:23
la diferencia entre el play y el play one shot, no creo que haya mucho más.
02:00:26
optimización del juego
02:00:31
bueno, pues que sepáis que existen
02:00:35
las estadísticas, el profiler
02:00:37
no creo que pregunte mucho esto
02:00:38
las cualidades
02:00:40
las calidades con este
02:00:42
project settings quality, pues que se pueden
02:00:44
dar distintos niveles de acabado
02:00:46
e ir cambiando entre niveles, tanto por código
02:00:48
que de eso no se habla aquí, como nosotros
02:00:50
meternos en el juego y decir
02:00:52
si lo tenemos bien configurado
02:00:54
saber que hay distintos
02:00:56
niveles de calidad
02:00:58
que podemos ir añadiendo
02:00:59
y en cada uno añadir un asset de Render Pipeline
02:01:02
que lo que hace es guardar información
02:01:06
de cómo tienen los detalles las sombras
02:01:09
hasta dónde se pueden ver
02:01:11
y podemos ir cambiando entre unos y otros
02:01:12
simplemente que sepáis que existe
02:01:15
os dejo también más enlaces e información
02:01:18
compilar el juego, importante
02:01:23
de esto habrá alguna pregunta
02:01:25
Como, por ejemplo, si queremos exportar para web, pues ¿cuál es? Pues WebGL, que es el que hemos dicho antes. ¿Que queremos un ejecutable para PC? ¿Qué plataforma? Pues la de PC Mac. ¿Que queremos para Android? Pues para dispositivos móviles que no son de Mac, sino de Android. Pues plataforma de Android. ¿Que queremos para dispositivos móviles de Apple? iOS. Bueno, pues de esas cosas se hablan un poco aquí.
02:01:26
Es bastante importante
02:01:51
Pues eso
02:01:54
Saber un poco para qué es cada uno de estos módulos de exportación
02:01:54
Y que os suenen un poco
02:01:58
Estas opciones
02:01:59
Tampoco me voy a meter muchísimo
02:02:00
Pero alguna opción si puede ser
02:02:04
También que todo el build
02:02:06
Se fabrica desde los build settings
02:02:08
Que evidentemente habrá que tener las escenas
02:02:09
Ya bien configuradas y en el orden
02:02:12
La primera que se ejecute al arrancar el juego
02:02:13
Será la que esté en el 0
02:02:16
Vale, pues eso
02:02:17
Dispositivos móviles
02:02:18
Por lo mismo, si vamos a trabajar para móvil, hay que tener los software de desarrollo para esos dispositivos. Pues un poco que os suene esto a nivel teórico, sí puede entrar. El Device Simulator, dependiendo de la versión ya bien integrado o hay que instalar un paquete, lo pone aquí, sirve para, en este por ejemplo no va a estar, pero si yo abriera la versión 2022 que hemos tenido todo momento,
02:02:20
aquí en la pestaña de Game
02:02:49
hay una pestañita
02:02:51
que permite cambiar a Simulator
02:02:53
y lo que nos va a permitir es
02:02:55
que se vea ya dentro de un dispositivo
02:02:57
móvil concreto para ver
02:02:59
si se recorta o no, si se ve bien
02:03:01
sirve para
02:03:03
para tener como una
02:03:04
visualización, como se ve aquí
02:03:07
esto de Simulator
02:03:09
cuando instalas ese paquete en el 2020.347
02:03:10
que es el que usamos
02:03:14
o 48
02:03:15
bueno, pues en la versión última
02:03:16
ya viene instalado este paquete, ya ha dejado de estar en beta
02:03:18
y ya se puede usar
02:03:21
bueno, pues sirve, que sepáis que sirve
02:03:23
para ver en distintos dispositivos
02:03:25
aquí por ejemplo está el Asus ROG Phone
02:03:27
un teléfono que no conozco cuál es, pero si
02:03:29
desplegáis aquí vais a ver opciones
02:03:31
de iPhone, de tal, incluso se pueden
02:03:33
instalar más
02:03:35
modelos, por aquí lo tengo
02:03:36
Device Simulator Devices, con esto
02:03:38
podéis tener aún más dispositivos
02:03:41
para ver las proporciones y cómo resultaría
02:03:42
en el ordenador
02:03:45
en la preview que hagáis en el ordenador, cómo se vería en ese dispositivo.
02:03:47
Y luego está la otra que os he comentado, que es que si quisierais directamente tener en el dispositivo móvil ese juego
02:03:51
y si ya implementarais, esto es más avanzado, por ejemplo en ese curso de especialización que os hablaba antes,
02:03:57
se hablará más de esto, o si usáis el Input System, o bueno, la clase Input también se puede hacer,
02:04:03
pero podéis ya probar, incluso con los Input táctiles y viéndolo en el móvil que tengáis,
02:04:08
Si lo conectáis con un cable o bajáis esta aplicación para este dispositivo, para el móvil, y lo instaláis correctamente, lo que os pone aquí, podéis probar ya el juego sin tener que realizar todo el compilado.
02:04:13
Como pone por aquí, permite probar el proyecto directamente sin necesidad de tener que compilar un APK, que es como se explica antes, el paquete ejecutable, hay alguno más, pero el principal con el que se exporta, se compila para Android, con el Build and Run, con esa opción que tenemos en los Build Settings.
02:04:27
esta otra opción de VLAN RAN
02:04:48
en vez de hacer solo el ejecutable y exportarlo
02:04:51
para que lo podamos ya compartir
02:04:54
lo que hace es que básicamente
02:04:55
hace como un compilado
02:04:57
no final y lo ejecuta
02:04:59
en el dispositivo que le estamos indicando
02:05:01
por defecto lo hará en el ordenador
02:05:03
pero si configuramos el Unity Remote
02:05:05
lo hará en
02:05:08
la consola, vamos en la consola
02:05:09
no, en el dispositivo móvil
02:05:11
pues eso
02:05:13
es una forma rápida de hacer testeos
02:05:15
en dispositivos móviles. Pues es necesario
02:05:17
conocer que existe esta herramienta, por si la
02:05:19
tenéis que usar. Realidad virtual.
02:05:21
Muy importante. Y va a haber preguntas de qué es
02:05:24
cada una de estas tipologías
02:05:25
de realidades y
02:05:28
qué diferencian a una de otras.
02:05:29
Y un poco esta teoría
02:05:31
tenerla en cuenta. Más allá de eso,
02:05:33
de este apartado, no creo
02:05:36
que pregunte más.
02:05:37
¿Qué es la realidad
02:05:40
virtual en contra
02:05:41
de la aumentada o la mixta?
02:05:43
Sí, eso es muy probable.
02:05:46
Porque es como algo transversal, por si hicieras cualquier proyecto que ya fuera, que no fuera un videojuego estándar, sino que fuera de los próximos ya niveles de realidad que ya están a la orden del día.
02:05:47
Yo os digo, de esto, en el curso más avanzado, pues se hablará bastante más.
02:06:00
Realidad aumentada, pues saber qué es, saber que existen estos paquetes, que os suenen, poco más. De esto no creo que haya mucho más.
02:06:06
gestión de sistemas de vídeo
02:06:13
se puede preguntar
02:06:15
por este método
02:06:17
cuáles son los usos que se podrían dar
02:06:19
por lo que en una aplicación
02:06:21
o videojuego
02:06:23
se necesitará
02:06:24
captar vídeo, sí que puede haber una pregunta
02:06:27
incluso de desarrollo de que es un código
02:06:29
visual como un QR
02:06:31
para que se usa, por qué es
02:06:33
pues un poco está apartado a nivel conceptual
02:06:34
no me extrañaría que hubiera alguna pregunta
02:06:37
de desarrollo, además creo que
02:06:39
es asequible
02:06:42
GPS, pues un poco lo mismo
02:06:42
que os suene para qué es, para qué se usa
02:06:45
no me voy a meter
02:06:47
en código, pero bueno, que sepáis
02:06:49
qué es y que se puede usar
02:06:51
incluso en nuestro Unity con nuestras aplicaciones
02:06:53
que ya cuentan con métodos
02:06:55
¿vale? incluso los hay más modernos
02:06:57
y hay plugins del Asset Store
02:06:59
para gestión de geolocalización
02:07:00
mucho más potentes
02:07:03
pero bueno, que ya existen
02:07:05
¿vale? no os pido que lo aprendáis
02:07:07
ni que lo pongáis en uso porque ya implica
02:07:09
tener un móvil, también que ese móvil
02:07:11
tenga ciertas
02:07:13
condiciones
02:07:14
dentro de las propiedades para poder
02:07:16
hacer testeos, entonces bueno, pero que sepáis
02:07:19
que esto existe y se puede
02:07:21
se puede usar con Unity
02:07:22
y luego de dispositivos
02:07:25
externos, de esto también dudo que os pregunte
02:07:27
nada, pero bueno, que sepáis
02:07:29
que Unity no solo se puede usar
02:07:30
para el mundo, digamos
02:07:33
virtual o videojuegos
02:07:35
digo, en el mundo digital
02:07:36
también se puede conectar para que
02:07:38
Por ejemplo, en un juego que estemos, por ejemplo, imaginaos que vamos a unas recreativas y hay un juego que cuando vayamos atravesando puertas en el juego que se encienda una luz en la cabina, ¿no?
02:07:41
Sabéis que estas recreativas a veces tienen como apariencia de Jurassic Park y es una furgoneta de Jurassic Park y que, yo que sé, a lo mejor cuando atravieses cierta puerta se encienda una luz de la parte superior, fuera de la pantalla.
02:07:54
Bueno, pues con Arduino, por ejemplo, se puede ir conectando a través de Unity. Cuando onTrigger enter esta puerta, te comunicas, abres el puerto de comunicación con la placa base de Arduino, o hay más tecnologías, pero bueno, Arduino es como la que más se usa a nivel no profesional dedicado a que han hecho un sistema, es bastante versátil, pues es abrir el puerto y que se encienda una luz.
02:08:08
Entonces habrá que programar para que esa placa base reciba la señal de que tiene que hacer algo y habrá otro código, que evidentemente aquí ya no nos vamos a meter, solo sé un poco la introducción y si queréis aprender más os dejo los recursos, pero que se puede hacer.
02:08:31
Es decir, se puede comunicar Arduino, el mundo digital, perdón, Unity, el mundo digital con Arduino que gestiona dispositivos físicos, pues eso, una luz que empiece a girar un rotor, que se mueva un personaje que está motorizado, yo qué sé, ya ahí los límites son bastante más avanzados, pero existe y bueno, y aquí digamos que se deja algo que podáis ver, ¿no?
02:08:47
Es muy interesante. Yo tampoco me considero experto, por supuesto, soy iniciadísimo, pero bueno, un poco sí que había que introducir este aspecto. Pero de cara al examen no creo que haya nada de esto, ¿vale? Porque, bueno, demasiadas cosas hay y tampoco es lo principal.
02:09:12
Y ya os digo que si os metéis en algo de robótica o ese curso de especialización, estos apartados los veréis ampliados. Mi objetivo, espero haberlo cumplido, es dentro también del currículo que tenemos que dar, hacer una introducción barra que ya podáis hacer vuestros propios prototipos y algunos proyectos,
02:09:29
pues que cubra un poco todo
02:09:54
lo que es el ámbito de
02:09:56
un motor de videojuegos
02:09:58
en este caso Unity
02:10:00
y un poco también ya introduciros
02:10:01
y que seáis
02:10:04
digamos autónomos incluso
02:10:05
para ya programar
02:10:08
porque uséis el que uséis
02:10:10
el motor de render, aunque intentan
02:10:12
dar métodos
02:10:14
más visuales en base a nodos y tal, al final
02:10:15
hay que saber programar porque
02:10:18
es como nos
02:10:19
comunicamos y podemos hacer que
02:10:22
algo sea interactivo.
02:10:24
Pues
02:10:27
por mi parte hasta aquí es lo que quería.
02:10:28
Si tenéis, revisad.
02:10:30
Espero haberos dado trucos,
02:10:32
haber remarcado zonas,
02:10:34
haber descartado a lo mejor otras menos importantes.
02:10:36
Espero que os haya servido esta tutoría.
02:10:38
¿Tenéis alguna duda? ¿Algo que queráis
02:10:40
que veamos? Así de cierre
02:10:42
también, ya os digo, si tenéis
02:10:47
dudas, tenéis los foros.
02:10:49
Esto no cierra nada.
02:10:52
Incluso si hay muchas dudas,
02:10:54
muy difíciles de responder, yo que sé
02:10:55
pues se puede hacer alguna
02:10:57
tutoría breve, es verdad que ahora empezamos
02:10:59
también con los proyectos finales
02:11:01
con la organización de SANS y tal
02:11:03
vamos a estar un poco liadetes
02:11:05
pero bueno, que eso, como siempre
02:11:07
tenéis forma de plantearnos
02:11:10
las dudas
02:11:12
- Materias:
- Imagen y Sonido
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Segundo Curso
- Subido por:
- Daniel M.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 59
- Fecha:
- 13 de mayo de 2025 - 20:56
- Visibilidad:
- Clave
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 2h′ 11′ 18″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 1.05