Saltar navegación

Tutoría 10 - DEIM - UT6 y 7 - Curso 24·25 - 29 Abril - Contenido educativo

Ajuste de pantalla

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

Subido el 29 de abril de 2025 por Daniel M.

27 visualizaciones

Grabación de tutoría de DEIM

Descargar la transcripción

Bienvenidos a esta tutoría número 10. 00:00:01
Vamos a ir viendo cuestiones relacionadas con la tarea principalmente de la unidad 6. 00:00:04
Ya tenéis abierta la unidad 7. Antes de Semana Santa ya se abrió la última unidad. 00:00:12
En la que, por cierto, y ya aprovecho, en esa unidad 7... 00:00:17
Ah, bueno, una cosa muy importante es que os comparta la pantalla, 00:00:21
porque si no, no veis de lo que os hablo en ocasiones. 00:00:24
Vale, confirmadme que estáis viendo ahora un Visual Studio, porfa. Sí, vale, genial. Pues voy a poner aquí de todos modos el aula. Vale, aquí. 00:00:27
Si tenéis el tema 7 y como ponen el mensaje que os puse, hay partes. A ver si no me explico mal. Digamos que todo el tema es materia de examen, pero sí que es verdad que cuando llega un punto, cuando llegamos ya a diseñar para dispositivos móviles, sobre todo a partir de aquí, que se habla de gafas de realidad virtual, realidad aumentada, gestión de GPS, 00:00:41
son cosas en algunos casos que bueno lo del móvil todo el mundo tiene un móvil es verdad que como 00:01:10
no se exige como al contrario que el ordenador como un dispositivo que usar vale en lo que me 00:01:15
meto sobre todo son en cuestiones más teóricas que en otra cosa pero aún así por ejemplo aquí 00:01:24
se habla de una aplicación de para controlar desde el móvil para hacer un compilado una exportación 00:01:29
desde el móvil y testear directamente nuestro proyecto 00:01:36
con los inputs del móvil 00:01:38
porque está aquí la pantalla, a diferencia del ordenador 00:01:39
pues hay funcionalidades que no se pueden 00:01:41
realizar en un ordenador 00:01:43
realidad virtual igual, por mucho que se hable aquí 00:01:45
pues no tenéis unas gafas, no tenéis por qué 00:01:48
tenerla, realidad aumentada 00:01:50
comunicación con dispositivos externos 00:01:51
se habla de Arduino un poco 00:01:54
lo que quiero que quede claro es 00:01:55
aunque yo creo que es todo interesante y en la medida de lo que podáis 00:01:57
intentéis ponerlo en juego 00:02:00
estas partes 00:02:02
Entonces, si entran en el examen, que algo entrará, aunque no es a lo que más peso voy a dar, pero algo entrará, a nivel teórico sí que deberíais saber el temario. Por ejemplo, llegáis a esta parte de realidad virtual. Es verdad que lo de las gafas, no voy a preguntar cómo programar directamente para las gafas, pero por ejemplo aquí hay una introducción de que realidad virtual, aumentada, mixta, extendida, todo esto puede entrar. 00:02:05
Luego ya empieza a hablar de modelos, que los modelos también se podrían preguntar. La MetaQuest 3, dado que lo pone aquí, ¿para qué categorías se dirigen principalmente? Ese tipo de cuestiones sí que pueden ser materia de examen. 00:02:31
Lo que no va a ser materia de examen es que os diga cómo se configuran las metacuests, en qué menú meterse, cuestiones concretas de los dispositivos. No va a haber. Desde luego aquí os dejo quien las tenga que pueda iniciarse y como os comenté en su momento hay un curso de especialización al que podéis acceder cuando tengáis el título de este, que es ese curso de realidad virtual y desarrollo de videojuegos. 00:02:45
creo que se llama así, si no era muy parecido 00:03:11
y ahí se habla en concreto 00:03:13
de esto y es más asentado 00:03:15
a esto, aquí es verdad que eso 00:03:17
hacemos una introducción porque tenéis que conocerlo 00:03:18
pero no es 00:03:21
en el examen no va a ser parte del contenido 00:03:22
sé que esto que os estoy 00:03:25
diciendo de si entra pero no entra 00:03:27
genera confusión, pero ya os digo 00:03:29
sobre todo lo teórico, ya cuando 00:03:32
se meta en cuestiones muy prácticas 00:03:33
miradlo 00:03:37
si os interesa, pero no es 00:03:39
parte del examen, pero por ejemplo 00:03:41
al llegar a realidad aumentada 00:03:43
habla aquí de paquetes 00:03:44
¿vale? como paquetes básicos para 00:03:47
que son como kit de desarrollo 00:03:48
que 00:03:51
se pueden usar desde Unity 00:03:52
se pueden conectar con Unity 00:03:54
bueno, sí que estaría bien que os sonaran 00:03:56
¿vale? en plan pues 00:03:58
hay uno que es para Apple, otro que es para 00:04:00
Android ¿vale? 00:04:02
hay alguna biblioteca 00:04:05
que os suene, no creo que me meta mucho a preguntar 00:04:06
eso, pero podría ser ¿vale? 00:04:09
Luego, gestión de sistemas de vídeo. Esto sí que lo podéis probar si tenéis una webcam, por ejemplo, y deberíais, dado que para los proyectos finales se os pedirán. Pero bueno, si se os pregunta algo, pues también será más parte teórica. Aquí, por ejemplo, se hablan de QRs y cómo detectar patrones. Vale, pues lo teórico. Aquí habla luego de librerías, etc. 00:04:11
Pero sobre todo, la pregunta de qué es un QR puede ser perfectamente, describir para qué, más o menos cómo funciona, puede ser materia de examen sin problema. De hecho, no me extrañaría que hubiera alguna pregunta de eso. 00:04:33
del GPS 00:04:45
como se necesita un móvil 00:04:47
pues el concepto de que es un GPS 00:04:49
y algo así podría caer 00:04:51
pero no creo 00:04:54
leeroslo y un poco 00:04:54
entended como sería pero sin meternos en el código 00:04:57
¿vale? y comunicación 00:05:00
con dispositivos externos un poco lo mismo 00:05:02
que es Arduino 00:05:04
un poco 00:05:05
el software o como se podría conectar 00:05:07
con Unity pero 00:05:10
ya he llegado a un punto que 00:05:11
tampoco voy a preguntar cómo programar 00:05:13
para Arduino directamente, ¿vale? 00:05:15
Entonces, bueno, 00:05:17
es parte del temario, lo damos, pero 00:05:19
bueno, que entendáis que eso, que si entran cosas va a ser 00:05:21
más lo que os estoy repasando ahora, que es 00:05:23
pues el concepto y 00:05:25
aspectos teóricos, más que 00:05:27
cómo luego desarrollarlo. Y ahora digo 00:05:29
que esto de los conceptos de realidad virtual, 00:05:31
mixta, aumentada, extendida, esto 00:05:33
sí que es fácilmente materia de examen, 00:05:35
¿vale? Que es la parte conceptual antes de 00:05:37
alguno de los apartados 00:05:40
posteriores. Quería aclarar esto ya que estábamos hablando del tema 7, pero ahora mismo, a menos que me digáis lo contrario, 00:05:41
nos vamos a poner con el tema 6. Los que lo hayáis leído alguna duda, porque estaba antes consultando y nadie parecía estar con la tarea 00:05:51
muy avanzada 00:06:04
dudas que os surjan de lo que es 00:06:05
el tema en sí, el contenido 00:06:08
que eso creo que sí que lo he 00:06:10
que algunos si estáis ya lo habéis 00:06:12
acabado o lo habéis revisado 00:06:14
vale, vamos entonces a 00:06:16
vale 00:06:26
voy entonces a repasar ciertas cuestiones 00:06:27
¿vale? de 00:06:30
esta tarea que tenemos aquí 00:06:31
que os de, bueno, es un resultado 00:06:33
sugerido, en esta por ejemplo 00:06:36
se habla de algunos movimientos que tenga este personaje 00:06:37
como el salto, si no me equivoco lo ponía como opcional, porque tiene sus complicaciones, etc. 00:06:40
Hay unos zombies con cierta inteligencia artificial a través de Nazmesh que cuando te localizan 00:06:45
veis que empieza a seguirme y me intenta cazar, y cuando se acerca, si os fijáis, me empieza aquí a dar unos golpes 00:06:51
que no está configurado pero nos podría quitar vida. 00:06:57
Vamos a empezar, igual que empieza por el tema, por hablar de los terrenos, 00:07:00
De generar entornos 3D que no se basan en las primitivas típicas que hemos estado usando durante el curso, desde un plano para hacer el suelo, paredes que son cubos en realidad, sino un entorno más completo, por ejemplo, de un videojuego de mundo abierto. 00:07:07
Para ello voy a ir un poco rápido, por eso, porque se explica en el tema, pero en la versión que nosotros usamos, que es una de las cosas que queríamos que viéramos, que era que existen paquetes que aunque no estén aprobados, tienen esta indicación de que son paquetes de preview, que todavía no están aprobados, pero están desarrollándose y ya se pueden testear, ¿vale? 00:07:25
Que en este caso, aunque se puedan crear terrenos simplemente con un 3D Object y un Terrain, se crea lo que es un terreno, sí que es verdad que ya a partir de la versión 2022 en adelante se usa la otra opción, la que se os pide en la tarea y de la que se habla en el tema, que es la de instalar las Terrain Tools, este Terrain Toolbox. 00:07:44
En esta versión todavía había que ir a los project settings, si no me equivoco, e ir al package manager y activar estos preview packages. Por defecto no vienen activos y esto es lo que permite que luego, aparte de poner esta indicación que os diré seguro, aquí lo pone, está en etapas de desarrollo temprano, no se deberían usar para producción. 00:08:08
Es verdad que ya os digo, en cuanto tuvierais otra versión más avanzada, incluso este paquete funciona bien, entonces lo podríais usar. Pero hay otros paquetes, cuando os metéis en el Package Manager, veis que pone esta indicación de Terrain Tools, yo ya lo he instalado, en el tema se pone cómo se buscan, pero por ejemplo, cuando activáis esto del Preview Packages, os pueden aparecer otros, como estos que tenemos aquí. 00:08:36
Si en algún momento queréis desarrollar usando estas herramientas, tenéis que activar ese Preview Packages 00:09:00
Por efecto, en la 2022 ya os aparecerá aquí este menú del Terrain Toolbox 00:09:08
Esto que tenemos aquí, que es otra herramienta, un plugin, que sirve para crear terrenos de una forma más simple 00:09:13
Y que los terrenos también se puedan generar varios de manera conectada 00:09:19
Porque cuando se crea un terreno, por defecto lo que se genera es, por lo que se ve aquí, cuando yo he hecho esto de 3D Object y crear un terreno, si os fijáis en la zona verde, como ya tenía uno ahí. 00:09:25
Epa, espera que lo he puesto en... la he maximizado la ventana, debe ser. A ver, perdonad que aquí algo he tocado, he hecho aquí un... Ah, vale, sí. Voy a resetear el layout. Si alguna vez no lo habéis hecho, ¿vale? En Windows Layouts se puede resetear a las... a los... bueno, la interfaz, pues la ordenación que tiene. Esto creo que en el tema 1 hablábamos de ello. 00:09:40
entonces, como acabo de decir 00:10:09
aquí tenemos este terreno que acabo de crear 00:10:11
que es este naranja 00:10:13
con las herramientas de Terrain 00:10:14
que también tendréis en los terrenos que se crean con las Terrain Tools 00:10:17
de las cuales ahora podemos hablar 00:10:19
aunque creo que en el vídeo de Álvaro Holguera 00:10:21
se habla bien y en extensión 00:10:23
con esto, ¿qué ocurre? 00:10:26
que cuando queremos generar más terrenos 00:10:27
y que sea más grande, fijaos que el que yo he generado 00:10:29
finalmente para la tarea es más grande 00:10:31
que el que genera 00:10:33
por defecto 00:10:35
el objeto de Terrain. 00:10:36
Con el Terrain Toolbox lo que se puede hacer es generar terrenos más grandes 00:10:42
que cuando se van aumentando al final se pueden ir agrupando distintas áreas. 00:10:47
Hay multitud de opciones, realmente las principales es decir, 00:10:52
cuánto tiene que medir ese territorio y en qué altura. 00:10:59
Bueno, la altura es relativa, se puede poner en cero y luego ya se puede pintar sobre ella, pero la altura de la que habla, y veis que ya cuando voy alterando algunos parámetros, se van viendo reflejados. 00:11:03
En realidad, a ver, borro esta, vale, lo tengo ahí. Cuando creáis estos terrenos, la altura no se refiere a si ya aparece una altura de, en este caso, 693 metros, es... 00:11:15
A ver, un segundito, cuando lo creo, porque creo que si no voy a decir una cosa que no es. Cuando se crea un nuevo Terrain Tool, vale, vale, pues nada, ok, grouping, un segundo, ahora os explico lo que hago. 00:11:31
Cuando se genera otro, a lo que se refiere este TerrainHeight es hasta dónde puede llegar luego la altura del terreno. Cuando vayamos a ir modelando estas montañas o los relieves del terreno, van a subir los relieves hasta una altura que está especificada aquí. 00:11:42
entonces no es lo mismo la start position que sí que podría cambiar donde está ubicada vale por 00:12:06
defecto del 00 y esto es importante porque puede parecer que si lo ponemos en cero es que aparece 00:12:13
en cero luego intentamos pintar con las herramientas de que bueno pues de que se 00:12:18
eleve el terreno y no sucede nada entonces es importante también tener de primera es un poco 00:12:22
pensado que se puede cambiar posteriormente vale cuál es el cuál es la altura que va a tener ese 00:12:26
Yo voy a poner 800 y voy a decir que tenga también 1000 por 1000, ¿vale? La tarea se pedía que fuera de 500 por 500, pero bueno. También es cierto que aquí hay otras opciones que se pueden activar, viene el mapa con los hate maps para que ya aparezca con ciertos relieves, ¿no? 00:12:34
Los relieves que se van generando se pueden representar con mapas de escala de grises, en donde las elevaciones se van representando en función de si es más blanco o más negro y los valores intermedios serán más grises. 00:12:50
Pero por defecto, cuando se genera un nuevo territorio, lo que vais a ver que se ha generado, y voy a ocultar este que es el que tenía, serán cuestiones, esto era un cubo que tengo para representar el agua, es el lago que se indicaba. 00:13:03
Pero cuando tenéis un terreno, al final es esto, una malla preparada con, en este caso, y dado que se ha creado con el Terrain Toolbox, con este padre que hace grupos de terrenos, y aquí podríamos ir generando nuevos terrenos. 00:13:19
entonces cuando en cierto momento 00:13:37
vayamos teniendo estos terrenos 00:13:42
cuya configuración se puede ir cambiando 00:13:43
en estas herramientas que aparecen aquí 00:13:45
en donde se pueden cambiar 00:13:47
por ejemplo 00:13:49
la anchura 00:13:51
o las medidas 00:13:54
de este terreno 00:13:55
en cierto momento si se van generando 00:13:58
distintos terrenos y se meten dentro del grupo 00:13:59
esto también habla el tema 00:14:02
cuando se vayan creando los relieves 00:14:03
Digamos que no va a haber una costura entre ellos. Esto se puede usar a veces no solo por facilitarnos segmentar el terreno, sino porque recordad, se vio en el tema 4, que se pueden ir añadiendo escenas de manera dinámica. 00:14:05
Entonces se pueden ir, a lo mejor el personaje cuando se va acercando a este cuadradito, ¿vale? Y está dirigiendo hacia esta izquierda, ¿vale? Ahora aunque se vea así, en realidad esto es mucho más grande. ¿Vale? Puede estar andando el personaje y va andando, va andando y cuando llega a este punto queremos que cargue el horizonte. Entonces en ese momento podremos cargar otro terreno, ¿vale? Es una de las razones por las que se puede inventar porque si cargamos todo un nivel de golpe en ciertas ocasiones lo que vamos a hacer es saturar el sistema. 00:14:19
Vale, las herramientas. Voy a ir muy rápido, pero básicamente cuando se selecciona, no un grupo de terreno que como pone en el temario, si van a estar dentro de esta, digamos, si van a ser consecuentes o si se van a continuar un terreno con otro, uno de estos mallas de terreno con otro, deberían estar en el mismo grupo. 00:14:47
Dado que están en el mismo grupo, lo que de hecho aquí habrá que hacer que los hijos también estén en ese grupo, ¿vale? Si vamos a esta torquita que es la configuración, los settings del terreno, ¿vale? Pues deberán estar en el mismo grupo. Con esto directamente se podría refrescar, ¿vale? 00:15:08
Pero es para que cuando vayamos modelando este terreno, de verdad que se considere como un único terreno. 00:15:27
Luego, cuando nos metemos en las capas de terrenos en sí, ¿vale? 00:15:34
Vais a ver que os aparecen dos componentes por defecto. 00:15:37
Uno, un collider. 00:15:40
Se me entrecorta el audio, ¿me oís mal? 00:15:43
Pero nada, ¿eh? Que acabo de leer. 00:15:46
¿Me oís bien o...? 00:15:49
Es decir, ¿es problema mío si...? 00:15:51
O algunos me oís bien y otros no. 00:15:54
me escucháis bien, vale, pues 00:15:56
el compañero que ha dicho lo de se entrecorta el audio 00:16:03
claro, será tu conexión, sí 00:16:05
vale 00:16:07
vale, de hecho 00:16:08
yo te estoy escuchando ahora mismo y también 00:16:12
se me corta, así que sí, algo hay 00:16:13
en tu conexión, yo creo, lo siento 00:16:15
vale, vale 00:16:18
luego subiré la grabación 00:16:19
por si, pero bueno, si me puedes 00:16:22
seguir más o menos, pues genial 00:16:24
vale, continúo 00:16:26
eso, lo dicho 00:16:28
Van a venir con dos componentes. Uno, un collider especial de tipo Terrain Collider, que básicamente lo que intenta es adaptarse, es un collider que se adapta a los relieves que tenga el terreno. 00:16:30
Ya hablamos en su momento del Mesh Collider, que es eso lo que intenta, como ajustarse a las formas de una geometría, pero bueno, tenía sus limitaciones, en ese pinball que hicimos sucedía. 00:16:44
Aquí hay un collider que lo que hace es que el suelo y las montañas y todo tenga un collider y lo capte bien. Es como que lo han conseguido simplificar para que funcione bien. 00:16:59
También tiene, para cuando añadáis árboles, un collider que lo que hace es, si metéis los árboles a través de este menú de añadir, aquí está, de pintar árboles, que los árboles también supongan un collider. 00:17:10
Y también, pues, si te chocas con un árbol, pues que se lo detecte, ¿no? 00:17:22
Si el personaje tiene también su collider, etcétera, y está bien configurado. 00:17:28
Vale, no quiero repasar todas las opciones. 00:17:31
Ya os digo, en el vídeo de Álvaro se habla bastante de esto. 00:17:36
Pero bueno, sobre todo es que se pueden ir creando, en vez de con el Terrain Toolbox, 00:17:39
una vez se ha generado el primero, otros terrenos vecinos, ¿vale? 00:17:43
Vais a ver que cuidado cuando... 00:17:46
Y por eso es una de las cosas que hay que tener en cuenta. 00:17:48
Veis que cuando yo intento continuar aquí el terreno y lo pinto, que es clicar en estos cuadraditos, aquí hay un cuadradito que está justo en el borde y otros que se meten. 00:17:51
Si recordáis, ha habido un momento que yo en los settings he dicho, vale, en vez de ser de 1000, que sea de 1200. 00:18:00
Todos estos cambios, en principio, deberían hacerse de primera cuando se crea el terreno con este Terrain Toolbox, debería estar bien configurado. 00:18:10
Si luego queremos ampliar el territorio, pues deberíamos ir, más que nada para que no ocurran estas incoherencias, veis que ahora ya he vuelto a ponerlo en el tamaño original y como se ha creado con ese tamaño, pues está considerándolo para continuar los terrenos. 00:18:19
Yo podría seguir pintando y pintando y aumentando el terreno que veis que se están generando aquí, estos terrenos que si nos metemos en el grouping ID, pues tienen el mismo número. 00:18:33
¿Vale? Entonces yo cuando empiece a, y vamos a hacer ahora mismo la muestra, a pintar aquí con un pincel una elevación, ¿vale? Que sería en este menú de pintar terreno y dentro de todas las herramientas, también importantes para el examen, conocerlas o que os suenen las que se hablan del tema, veis que cuando yo pinto, a ver, voy a bajarle un poco la fuerza y voy a coger uno. 00:18:44
Pero fijaos como si yo cojo un pincel, igual que os he hablado antes de los Gmaps, que son blancos y negros intermedios, todo va a ser o elevación o no elevación. Ya dependerá de la fuerza con la que vayamos pintando. 00:19:09
Si, embargo, si tiene un degradado y tonos intermedios, que vayamos pintando, pues sí que tendrá, ahora le he dado demasiada fuerza, sí que pintará y veis que no se entrecorta para nada el relieve, veis que lo está cogiendo como si fuera de un mismo terreno. 00:19:22
¿Vale? Eso, si hay gamas intermedias es donde se van haciendo esos degradados en las alturas, ¿vale? Es decir, que la altura no sea, bueno, pues que tenga una pendiente en función de ese gris, ¿no? De ese suavizado. 00:19:47
Entonces con estos pinceles se puede ir pintando. Cuando tenéis instalada esta Rain Toolbox, ya os digo, en siguientes versiones ya viene instalado por defecto, hay varios atajos como la tecla A, si fijáis, yo ahora mismo no estoy cambiando aquí el valor, con la tecla A y arrastrando hacia los lados ajustamos la fuerza, es decir, cuánto se eleva cuando vamos clicando. 00:20:02
Si bajamos la fuerza, pues hay que ir pulsando más veces para que se vaya generando ese aumento de relieve, porque tenemos esto de raise or lower terrain, ¿vale? Dependiendo de qué herramienta, esto hará unas cosas u otras, ¿vale? De hecho, iréis viendo que si hago esto, vais a decir, joder, qué picos tan feos, ¿vale? Eso es porque luego hay otras herramientas de suavizado, por ejemplo, como el smooth height, ¿no? 00:20:24
Si yo ahora empiezo así a suavizar, pues voy quitándole esta apariencia picuda a lo mejor que se podría ir obteniendo. 00:20:50
Vale, lo dicho, con la A se aumenta la fuerza, con la S, de size, es lo más fácil, se varía el tamaño, se mantiene esa tecla y se arrastra el ratón izquierda a derecha. 00:21:00
Con la D se rota y los principales son esos. Puede que haya alguno más, pero los principales son esos. 00:21:10
Y luego otra muy importante, que es que normalmente en casi todas las herramientas, voy a volver a Razor Lower Terrain, que son las esenciales, con Control lo que se hace es la operación inversa. Es decir, si de primeras hace elevar el terreno con Control, cuando ahora pinto, si mantengo pulsado el Control, lo que hago es, en este caso, hundirlo, ¿vale? 00:21:15
Fijaos lo que os decía antes, que yo por mucho que pinte, me voy a alejar, por mucho que pinte aquí, empiezo a pintar, empiezo a pintar, ¿vale? 00:21:36
Sigo pintando y llega a un punto que ya no sube más. Esto es lo que hemos dicho antes de la altura, ¿vale? 00:21:44
Cuando hemos creado el terreno, le habíamos dicho esta altura, ¿vale? No va a subir más de los 800 metros de altura, ¿vale? 00:21:49
a ver porque 00:22:00
a ver si 00:22:03
se pueden guardar settings también 00:22:04
de como se exportan 00:22:07
etcétera pero bueno principalmente 00:22:09
esas son las opciones principales 00:22:11
vale hasta aquí que tal me vais siguiendo 00:22:16
con esto ya es con calma 00:22:19
pues luego hay otras herramientas de erosión 00:22:21
efectos para hacer 00:22:23
agujeros vale porque 00:22:25
lo que hemos visto es 00:22:27
Que claro, estoy elevando, pero aunque os diga que pinte con control y se va hundiendo, no va a bajar de ese punto cero. Igual que la altura tiene un tope, el nivel inferior también tiene un tope. 00:22:29
Para eso lo que se puede hacer es o pintar agujeros con esta herramienta de Paint Holes, que hará que el Collider también se atraviese. 00:22:43
Por ejemplo, si queremos que debajo de esto haya agua y se meta un personaje y pueda ir por debajo, pues habrá que hacer un agujero. 00:22:52
O la mejor opción probablemente que es subir el terreno, todo el terreno en conjunto. 00:23:00
bueno y esto es terrain tool, lo vamos a meter aquí 00:23:05
¿vale? podéis coger este grupo 00:23:08
y decirle ¿vale? pues que la posición 00:23:10
sea esta 00:23:12
¿vale? y que es lo que podéis hacer 00:23:14
bueno 00:23:16
más que esto sería elevar todo el terreno 00:23:18
con las herramientas, más que nada para que luego se pueda 00:23:20
bajar con la herramienta de 00:23:22
set height 00:23:24
¿vale? que es otra de las que se explica 00:23:27
que lo que se puede decir es ¿vale? yo quiero que 00:23:29
digamos el nivel base esté en el 300 00:23:32
Y le damos aquí y se le dice, bueno, a todas que suban hasta el 300, ¿vale? Con esto digamos que todo se achata, ¿vale? Pero lo bueno es que ahora como hemos elevado esto 300 metros, sí que hay margen de coger esta herramienta y hundir el terreno, ¿veis? 00:23:34
Que ahora lo estoy, a ver, estoy haciendo ahora el socavón. Estoy subiendo por un lado, subirá 500 máximo porque teníamos 800 de rango, ¿vale? Y de socavón pues podrá tener 300 hacia abajo, ¿vale? Pues ahí ya podemos hacer que el nivel continúe hacia abajo, ¿vale? 00:23:52
El resto de herramientas se explican en el tema. Álvaro también. No me voy a centrar tanto, a menos que me digáis que tenéis dudas. Con los árboles en el tema os dejo algunos assets que se pueden bajar, que sirven para añadirlos como árboles, ¿vale? Hay que añadirlos. Bueno, habría que buscar alguno y se pueden pintar también, ¿vale? Y con los detalles que pueden ser las rocas o las hierbas, etcétera, un poco lo mismo. 00:24:08
Lo que sí me interesa, ¿vale? Así de últimas, es cómo pintar este territorio, ¿no? Para que no se quede con este color beige. Pues hay una de las opciones de este menú de pintar terreno, ¿vale? Que en este desplegable es pintar texturas, ¿vale? 00:24:33
Igual, aquí podemos crear nuevos pinceles, podemos usar estos. Los pinceles, también nos lo pone la colación de los hate maps, se pueden crear imágenes cuadradas, eso sí, y con proporciones de múltiplo de 2 para que sea el pincel. Esto si habéis usado Photoshop es el mismo concepto que con los pinceles de Photoshop, que existen y tienen información alfa y luego también en base a la transparencia. 00:24:52
Esa escala de grises en realidad, porque aquí no es tanto alfa, aunque lo coge como tal, veis que aquí se vuelve como transparente. Es más, información de una escala de grises, con eso es con lo que vamos diciendo la forma que tiene el pincel y los detalles que va a añadir. 00:25:20
cuando queremos pintar texturas 00:25:36
es decir, cuando queremos pintar 00:25:40
el terreno 00:25:42
también en los ejemplos 00:25:43
bueno, se os indica en el tema y también 00:25:46
en la tarea, que hay un paquete 00:25:48
con muchos ejemplos de cosas para 00:25:50
practicar, ¿vale? y en ellos 00:25:52
si no me equivoco, lo tengo aquí 00:25:54
el sample 00:25:56
un segundito 00:25:58
pues si no es en este, en terreno 00:25:59
vale, aquí tenía 00:26:03
distintas 00:26:04
opciones de lo que se llaman Layers Textures, que son 00:26:06
texturas simples, que digamos 00:26:11
que aunque se repitan no se notan los extremos, simples, el concepto 00:26:15
de simples entiendo que en color para el texturizado lo visteis, y os vienen 00:26:19
ejemplos de mapas, texturas 00:26:22
que se pueden usar para este pintado. Y dentro de ello hay otro concepto, 00:26:27
estos son las capas en sí, que se diseñan en Photoshop o en algún software 00:26:30
para tenerlo importado en Unity 00:26:34
pero el concepto que sirve para estos pintados 00:26:37
es lo que se llaman las Terrain Layers 00:26:40
de hecho, para que veáis, si hacéis clic derecho 00:26:43
y creáis, dais aquí a crear elementos 00:26:46
vais a ver que hay uno, por ejemplo, que es crear un Terrain Layer 00:26:49
una capa de terreno 00:26:52
cuando yo le doy y creo uno nuevo, para que os hagáis una idea de qué es lo que pasa 00:26:53
aparte de poder darle un nombre, pues suelo Dani, yo qué sé 00:26:58
o suelo gravilla, suelo con césped 00:27:00
suelo verde el suelo como bueno pues con barro que veis que aquí por ejemplo lo que estamos viendo 00:27:04
este nuevo suelo lo que va a pedir son tres texturas vale y la digamos la principal es la 00:27:11
primera que es meter el licioso que es pues el color en sí esa textura 2d vale tiene que ser 00:27:17
una textura 2d como esta que tenemos aquí vale tiene que estar configurada como como 2d vale 00:27:23
Como, bueno, con default lo coge, parece ser, porque lo está detectando con textura 2D, ¿vale? Y eso habrá que incorporarlo en esta textura de Fuse. Aquí se puede buscar y buscar, pues, por ejemplo, esta, ¿no? Que es la que he encontrado, pero bueno, es la que hubierais arrastrado, ¿vale? 00:27:29
Con esto ya tenemos el principal elemento que es con lo que vamos a poder pintar el color, vamos a decir así. 00:27:46
Para que tenga ciertos relieves, sabemos lo que son las normales, también entiendo de otros módulos de primero, 00:27:52
las normales que son esos relieves que se simulan pero que no son relieves como tal, no son desplazamientos como tal, 00:27:58
sino simulaciones que a través de cómo refleja nuestro software las luces al incidir sobre esa textura, 00:28:04
pues da apariencia de que tiene unos relieves que realmente no están y es una forma muy económica, muy barata de simular relieves, normalmente relieves simples, sin sobrecargar la máquina porque no tiene que estar desplazando la geometría como haría con un mapa de desplazamiento, que no es lo mismo. 00:28:11
Bueno, pues en el tema también os pongo cómo coger un diffuse, unos colores y que simule o que genere unos mapas de normales o un bump, también podría ser, para añadirlo aquí. 00:28:28
Eso, en las que os proporcionaba viene un mapa de normales, que suelen ser de estos colores, estos azules, verdes, rojos, y luego una máscara que es un poco para darle opciones más avanzadas de reflexiones, etc., de dónde tiene que iluminar o para enmascarar, etc. 00:28:41
Vale, bueno, sobre todo son el normal y el diffuse. En estos que tenemos aquí, que ya venían por defecto, pues veis que están ya incorporados los tres. Evidentemente, vosotros podéis descargar más de internet, más terrain layer, buscarlos, generarlo vosotros, generar un terrain layer y incorporarlos aquí, ¿vale? Que luego tiene otras opciones referidas a la metalicidad. De esto se habla un poquito más también en el tema 7, el suavizado, etcétera, ¿vale? 00:29:04
Pero bueno, básicamente es que sepáis que cuando vayáis a pintar, bueno, tenéis que contar con una Terrain Layer creada ya, porque una vez estamos en este Paint Texture, ¿vale? Lo que vamos a tener que ir es a esta sección que se llama Layers y generar una nueva, añadir una nueva capa, ¿vale? 00:29:31
Podemos, por defecto, en vez de ir aquí a Create y dar a Terrain Layer, que estaba por aquí abajo, en vez de hacer eso, se puede hacer directamente desde este menú. 00:29:52
Vais abajo y dices crear nueva layer. 00:30:03
Y digo, en vez de suelo Dani, va a ser suelo Daniel, yo qué sé. 00:30:05
Y si lo creáis aquí, lo que os va a decir, vale, y en qué diffuse vas a querer usar. 00:30:09
Voy a ponerle el siguiente que vea de los que se han importado, que me saldrá rápido, imagino. 00:30:15
aquí están todos los 00:30:19
sprites 00:30:22
que se están usando 00:30:25
en la tarea, pues por ejemplo este 00:30:26
de rocas, le doy aquí y se ha generado 00:30:28
¿vale? 00:30:30
solo se está pintando este 00:30:32
terrain porque es el que te hemos 00:30:34
seleccionado, tened en cuenta que como hemos hablado 00:30:36
al final estos terrains son 00:30:38
distintos cuadrados y aquí hay varios 00:30:40
¿vale? habría que ir incorporándolo 00:30:42
en todos 00:30:44
pero lo que hemos hecho al crear 00:30:46
una nueva layer es lo mismo que si yo la borro y arrastro una de las que tenemos aquí. Bueno, 00:30:48
si le damos a add layer y la buscamos, que son las mismas que ya tenemos creadas, le decimos esto, 00:30:54
¿vale? Veis que ya ha pintado esto. Si lo veis muy de lejos puede ser o puede pareceros que no 00:30:59
tiene detalle y es que efectivamente, ¿vale? Hasta que no vayamos, hasta que no, a ver, 00:31:05
Porque está en concreto. Sí, bueno, cuando nos ponemos a nivel suelo sí que tiene un cierto detalle de barro, ¿vale? Desde muy lejos parece que es un verde, ¿vale? Pero fijaos que tiene estos detallitos de tierra manchada. 00:31:12
La gracia es, claro, como son sinles o como no tienen texturas estas, esta textura con la que estamos pintando, ¿vale? Pues a veces se hacen un poquito repetitivas porque al final no deja de ser un patrón que si lo ves en cierta dirección dices, ojo, ¿vale? 00:31:28
La gracia está en que luego podemos ir añadiendo más de estas capas, ¿vale? Añadimos otra layer y decimos que sea la de roca, ¿vale? Y el orden es muy importante. Veis que cuando vamos clicando el pincel se irá poniendo de un color u otro, ¿vale? Porque es de esa capa de lo que vamos a pintar, pero es importante tener en cuenta que la que está sobre la otra es la que en el fondo se está viendo, ¿vale? Lo mismo. 00:31:45
Ahora, a ver, voy a quitar el pincel, un segundo 00:32:11
¿Vale? Fijaos que ahora se ve con la roca ya cubierta por completo la otra 00:32:15
¿Vale? Porque la hemos puesto encima, igual que pasaría en Photoshop, por ejemplo 00:32:18
¿Qué se puede hacer? 00:32:21
Coger esta capa, ¿vale? 00:32:23
Seleccionarla, coger el pincel que nos parezca 00:32:26
Y con esa capa seleccionada 00:32:28
¿Vale? Le voy a hacer esto un poquito más pequeño 00:32:30
Y le voy a dar más fuerza 00:32:32
Ya es como se puede ir pintando 00:32:34
¿Vale? Entonces, con la combinación de varias capas 00:32:36
Ahora lo estoy haciendo todo un poco vasto 00:32:39
porque me estoy concentrando en unas dimensiones muy grandes, pero si hacemos pequeño el pincel y empezamos a pintar, ¿vale? Es donde vamos, además con pinceles irregulares, por ejemplo, es con lo que vamos añadiendo, incluso luego puedo decir, vale, y aparte de esto voy a añadir otra capa más, ¿vale? 00:32:41
Que es la de esta, que es más barro aún, o esta, que es más, yo qué sé, arena del desierto, pone hierba seca, ¿vale? 00:33:00
Pues digo, lo añado, se añade aquí, recordad que si la pusierais encima, de pronto tapa todo lo que no esté pintado, ¿vale? 00:33:09
Y, bueno, pues seleccionamos esta y ahora vamos pintando con esta también, ¿vale? 00:33:16
Y vamos dando zonas, así, con calma, con mesura. 00:33:21
También tened en cuenta que los pinceles, como hemos dicho, se pueden ir rotando, ¿vale? 00:33:25
Entonces con eso, aunque la textura sí que no va a rotar, a ver, si os fijáis, ¿vale? Hacemos el ejemplo. Si yo pinto con esa textura, ¿por qué se salía? Venga, vamos aquí, pintar textura. Si yo pinto aquí y luego lo giro, como la textura es la misma, veis que lo que hace es cambiar el pincel lo que está mostrando, pero la textura en sí no cambia. 00:33:30
Si quisiéramos tener distintos tipos de texturas e ir jugando más, lo suyo es coger estos mapas, crear otra terrain layer y, por ejemplo, en Photoshop o en otro sitio, voltearlas, hacer otras combinaciones y así también se van teniendo distintas direcciones. 00:33:53
Entonces con esto básicamente es con lo que se puede ir pintando un terreno, por ejemplo el que yo tengo pintado aquí, fijaos que es, voy a borrar este que teníamos, creo que no voy a hablar nada más de terrenos, pues por ejemplo fijaos que tengo este, los árboles es igual, es coger los modelos por ejemplo que vienen en ese paquete y pintando se van añadiendo. 00:34:09
En el caso del vídeo de Álvaro también se habla de esto. Es ir pintando el terreno, ir añadiendo detalles. Aquí también veréis en el tema 7 que es donde aparecen ciertas limitaciones que quizás nos pueden resultar llamativas. 00:34:29
que es parece un juego como muy antiguo muy básico vale esto es porque estamos usando también el motor 00:34:50
de render básico de unity en el tema 7 veréis que hay otros que permiten más detalle que permite una 00:34:55
iluminación más avanzada permiten otro tipo de bueno de capacidades que bueno el tema 7 veréis 00:35:02
y que va a hacer que todo se pueda ver mejor aparte de también lo que se explica en el tema 00:35:08
lo relacionado con los 00:35:12
settings 00:35:14
de los ajustes de las 00:35:16
calidades, etcétera, que se puede ir aumentando 00:35:19
¿vale? 00:35:21
que así es como irán mejorando también 00:35:22
vuestro aspecto visual 00:35:25
¿vale? cuando vayáis trabajando 00:35:27
estamos nosotros viendo el built-in 00:35:28
se llama 00:35:31
el render pipeline 00:35:31
el motor de render 00:35:35
de Unity, básico 00:35:37
porque para aprender a programar, pues tampoco queremos 00:35:38
sobrecargar, pero ahora que ya estamos viendo aspectos 00:35:40
más visuales, hay que tener en cuenta 00:35:42
eso, que cuando creamos 00:35:44
un nuevo proyecto 00:35:46
en el Unity Hub 00:35:48
va a haber 00:35:50
aparte de este Build-in Render 00:35:52
Pipeline, otros como el Universal 00:35:54
el High Definition 00:35:56
aparte de otros presets 00:35:57
y el que se suele usar 00:36:00
no es el que 00:36:03
venimos usando nosotros 00:36:04
pues se suele usar o el Universal 00:36:06
o el High Definition que ya es para consolas 00:36:08
de más última generación 00:36:10
yo que sé, si se quiere hacer un juego para Playstation 5 00:36:12
que se intente ser realista 00:36:15
pues tendríamos que optar por este 00:36:16
motor de render 00:36:18
¿vale? que a nivel de programación, etcétera 00:36:20
se parece mucho, no es que cambie 00:36:22
más allá, pero tiene otras opciones 00:36:24
pues de posprocesamiento 00:36:26
de iluminación 00:36:28
¿vale? pero bueno, eso es tema 7 00:36:30
¿vale? hasta aquí 00:36:32
¿qué tal? ¿me vais siguiendo? yo os digo, creo que es 00:36:34
un poco lo que hablaba Álvaro, pero centrándome 00:36:36
en partes que cuando se toca por primera vez 00:36:38
como que suele costar más 00:36:40
si no paso a hablar del 00:36:42
Character Controller, por ejemplo 00:36:45
pero decidme 00:36:48
bien, vale, me seguís, ¿no? más o menos 00:36:49
esto como todo 00:36:52
es, pues por ejemplo 00:36:54
hacer un terreno, sentarse, ir detallando 00:36:56
partes, ir pintando, esto 00:36:58
sí que es echarle un ratillo 00:37:00
en el tema 00:37:02
os dejo presets, os dejo paquetes 00:37:04
Os dejo paquetes incluso para Universal Pipeline, para High Definition, ¿vale? Dependiendo de eso, pues también podéis ir probando con unos o con otros. Vale, dame un segundo y abro el tema para ir con él. 00:37:07
Un segundito, que creo que lo tenía abierto por ahí, pero igual lo he cerrado. Aquí está. Vale, la parte de terreno, lo he dicho, aquí hay dos apartados de terreno, pues revisarlo y en medida de lo posible intentad ponerlo en juego para ver cómo funciona. 00:37:22
Vale, importar y animar personajes 3D 00:37:42
Os dejaba un vídeo en el apartado de Mixamo 00:37:46
Hablando de un poco también de lo que habla esta sección entera 00:37:50
No me voy a detener mucho, pero Mixamo es una forma muy útil 00:37:54
De poder tener un modelo 3D de un personaje bípedo, eso sí 00:37:58
Y que lo rigue de forma muy rápida 00:38:02
Y que ya incluso rigueado podamos extraer distintas opciones 00:38:05
No sé incluso si ya lo conocíais, por ejemplo, del módulo de animación. Porque claro, evidentemente tú puedes ir a un software de modelado 3D, de trabajo 3D en general, a un Maya, a un Blender, etc. y coger al personaje y crear clips de animación dentro de esos softwares y exportarlos y meterlos en Unity igual que se explica. 00:38:08
Pero con Mixamo aparte de... es que es súper asequible porque puedes coger cualquier modelo de una persona, meterla aquí, te lo riguea y ya le puedes dar opciones. Hablo de ello en el vídeo. Cuando lo veáis entiendo que las dudas están ahí resueltas. Por eso no me voy a detener mucho a menos que me digáis. También habla de las opciones de importación de los modelos FBX, etc. 00:38:28
¿Alguna duda de esto? Porque si no voy a pasar al carácter controller 00:38:52
Vale, carácter controller, esto sucede muchas veces y si alguno, lo vamos a usar de repaso esto también por si alguno todavía no 00:38:58
Hay cosas como que no le cuadran, pero recordad que de momento hemos visto que hay dos formas principalmente de mover los elementos 00:39:09
de nuestro escenario de nuestro juego a los personajes también vale que uno es a través 00:39:21
de las cinemáticas voy a hacer aquí un cubo cualquiera para hablar de esto así con algo 00:39:27
concreto a ver cubo dónde estás que estaba estaba escribiendo el nombre para lo voy a resetear 00:39:32
aquí está bueno como él el terreno está un poco elevado precisamente por lo que he dicho de las 00:39:42
elevaciones pues está aquí dame un segundo que lo voy a 00:39:48
mover 00:39:53
no aquí está el cubo vale una de las formas de moverlo es precisamente y 00:39:58
porque no se ven los ritmos de de manejo 00:40:05
a ver ff y tú tú tú aquí está vale 00:40:13
Era básicamente un poco tal porque no había seleccionado ninguna herramienta. Entonces, kinemática. Bueno, pues con el método transform, el método rotate o nosotros a mano moviendo las coordenadas, quería decir el método translate, pero que todos son de la clase transform. 00:40:19
Podemos ir moviendo el elemento de una forma, digamos, poco realista, en el sentido de que tú estás diciendo, vale, que cada segundo se vaya moviendo un metro a la derecha o una unidad hacia la derecha o tal, vale, y se va moviendo el personaje o esta caja, en este caso, siguiendo estas indicaciones, vale. 00:40:39
esa es la forma que se llama 00:40:58
kinemática, ¿vale? 00:41:00
que la kinemática también, si ya lo unimos 00:41:02
con lo que veíamos en el tema 5, es la forma 00:41:05
en la que se puede animar con el panel 00:41:07
de animation y decimos, vale 00:41:08
que este cubo tenga animaciones 00:41:10
vale, mover cubo, yo que sé 00:41:12
mover cubo 00:41:15
estoy aquí dejándolo en cualquier carpeta 00:41:16
habría que buscarla en la que estamos creando las animaciones 00:41:18
pero bueno, muy rápido, y aquí decir 00:41:21
vale, animación 00:41:23
de, pues como hacéis en 00:41:24
da vinci o en maya vale pues vamos animando los parámetros de posición para 00:41:26
que de aquí aquí se mueva añado el auto keyframe y que se mueva aquí que aquí 00:41:33
suba y aquí vaya para acá vale yo reproduzco ahora esto 00:41:39
dejó el auto keyframe y veis que hace ese movimiento en bucle vale acaba y se 00:41:45
reproduce pero al final lo que estamos haciendo es en vez de controlar por 00:41:52
código o arrastrando nosotros, estamos guardando 00:41:56
unas posiciones en keyframes y se van generando 00:41:58
estas interpolaciones. Esto es 00:42:00
nada más y nada menos que cambiar 00:42:02
el valor que tienen 00:42:04
estos parámetros de transform. 00:42:07
Nuevamente es kinemática 00:42:10
porque estamos usando 00:42:12
movimientos basados en 00:42:13
coger las coordenadas del objeto 00:42:16
en el software y 00:42:18
moverlo o hacerlo más 00:42:19
grande o rotarlo. También podríamos 00:42:22
Evidentemente, añadir animaciones de propiedad de la rotación de la escala 00:42:24
Aparte de otras muchas cosas 00:42:28
Pero no deja de ser poner valores en los componentes 00:42:30
Para que se vaya ajustando durante el tiempo a ese mismo valor 00:42:34
Luego, la otra forma de mover los objetos 00:42:38
Era a través de simulaciones físicas 00:42:41
Para lo cual existía este componente llamado RigidBody 00:42:44
que por defecto, cuando lo poníamos, ya tiene un comportamiento que no es mover por kinemáticas. 00:42:50
A ver, uy, claro. Espera, lo voy a dejar aquí para que se vea. 00:42:56
¿Vale? La cámara del juego no está aquí, por eso no se va a ver, ¿vale? 00:43:01
Pero como no estoy explicando, vais a ver que por defecto, lo primero que está pasando 00:43:04
es que tenemos un animator con una animación ya hecha, ¿vale? 00:43:08
Cuando movemos un objeto con animator o con kinemáticas, como estamos en todo momento diciéndole, tienes que estar en esta coordenada, está anulando el Rigipodi, ¿vale? Entonces, para esto lo que habría que hacer es quitar ese Rigipodi, ¿vale? 00:43:13
Hay otra forma de actualizar que es en base a los tiempos físicos, que aunque lo pongamos, vamos a ver que está haciendo la misma animación, pero si algún objeto se posara, por ejemplo, en este y se moviera por físicas, se estaría coordinando con las físicas de este movimiento, ¿vale? 00:43:34
Es decir, se estaría calculando el tiempo de físicas, ¿vale? Recordad esto del Fixed Update, los tiempos de refresco que pueda haber según queramos que sea lo más rápido posible, como cuando captamos los inputs, que para ello usaremos el Update, o el Fixed Update para las simulaciones físicas, que son tiempos con una escala temporal fija, ¿vale? 00:43:51
Lo dicho, si estamos diciéndole las coordenadas, básicamente, aunque intente ejercer esa gravedad, se está moviendo con coordenadas. 00:44:13
Entonces, en estos momentos son un poco incompatibles, ¿vale? 00:44:21
Sí que se puede hacer, digamos, el truco, ¿vale? 00:44:25
Que es quitar el Rigid Body que hemos metido aquí, nos volvemos a quedar como estábamos antes. 00:44:30
Es decir, vale, esto tiene una animación de movimiento, imaginaos que es una mosca, ¿no? 00:44:37
Que está ahí posándose, pero claro, yo creo que también le afecta la gravedad. 00:44:39
En ese caso hay que ir derivando las simulaciones o los movimientos en distintos GameObjects. 00:44:42
Este va a ser el de gravedad mosca, yo qué sé, ¿vale? 00:44:49
Porque queremos que le afecte la gravedad. 00:44:53
Si esto lo hacemos hijo, esto tendrá su animación siempre sobre sí mismo, ¿vale? 00:44:55
Con su transform, pero aparte vamos a poder añadirle un RigidBody, ¿vale? 00:45:00
Pero tiene que ser que el padre haga que herede a la hija, al hijo, a FF en este caso, 00:45:06
No sé por qué se llama así 00:45:11
Esa animación, entonces vais a ir viendo 00:45:12
Que va haciendo ese movimiento 00:45:15
A la medida que también se va cayendo 00:45:16
¿Vale? La gravedad está 00:45:19
Es decir, se ha hundido y sigue bajando 00:45:21
¿Vale? Está haciendo esa oscilación 00:45:23
De su position 00:45:25
Pero a la vez también está cayendo porque tiene un rigibody 00:45:27
Vale, lo dicho, el rigibody 00:45:29
Nos sirve para movernos 00:45:31
En base a fuerzas físicas 00:45:34
No solo esta gravedad 00:45:38
Sino también esos adforce, esos adtorques 00:45:39
que lo que hacen es simular movimientos pues de empujar de que tiene un arranque comportamientos 00:45:41
físicos que normalmente son mucho más fidedignos con la realidad es decir se mueven tienen un 00:45:47
acelerón este frenazo no es simplemente pues que se mueva y ya está por mucho que luego en 00:45:55
kinemáticas con ese es muy tan que veíamos es muy tan el lerp que son que sirven para hacer 00:45:59
interpolaciones, bueno, pues con suavizados, etcétera, entre valores, ¿vale? 00:46:05
Por eso nos permite que estos movimientos kinemáticos, pues se vayan suavizando 00:46:09
en el tiempo, etcétera, pero no deja de ser como cálculos, hechos sobre cálculos, 00:46:14
no es un motor de simulación física como la que permite tener este Rigipodi, ¿vale? 00:46:19
Y luego hay un tercer método, ¿vale? Que se llama Character Controller, ¿vale? 00:46:24
mueve kinematics carácter controller carácter control de las secas como queráis esto de 00:46:30
kinematics a mí ahora mismo me lía más que otra cosa carácter controller realmente son 00:46:35
kinematics porque lo que vamos a ver es que no sé lo pone aquí si no me equivoco no se ve afectado 00:46:41
por fuerzas físicas externas se moverá con los métodos específicos porque si ya tenemos una 00:46:48
simulación de 00:46:53
de fuerzas físicas y otra con la que podemos mover 00:46:55
a través de parámetros, ¿por qué este 00:46:59
carácter controller? ¿vale? lo pone 00:47:01
aquí, pero sirve sobre todo 00:47:03
porque si nos ciñéramos 00:47:06
a comportamientos físicos 00:47:07
igual que existe un terrain layer 00:47:09
¿vale? que sirve 00:47:11
un terrain collider, disculpad 00:47:13
para detectar estas 00:47:15
estas 00:47:17
a ver, que me pongo, voy a borrar ya esto 00:47:18
para detectar 00:47:21
A ver, aquí, ¿vale? Para detectar los relieves, etcétera, algo que con los colliders que conocíamos hasta ahora pues era bastante imposible. Existen inconvenientes cuando mueves un personaje como que, claro, yo estoy aquí en el escenario cuando estoy en un terreno y por eso aparece este componente en este punto y llega un momento que si yo me moviera por coordenadas, claro, todos estos relieves que tenemos, si vamos en línea recta, si lo moviéramos con kinemática como hemos visto, en cuanto hubiera un relieve, 00:47:23
se chocaría y no avanzaría, y lo que queremos 00:47:53
es que haga esto, que se vaya moviendo y vaya subiendo 00:47:55
bajando, y si lo movemos por 00:47:57
físicas también puede ocurrir que yo suelte esto 00:47:59
y el personaje se cae, o que yo 00:48:01
quiera seguir subiendo y si le aplico mucha fuerza 00:48:03
sigue subiendo, y básicamente 00:48:05
lo que queremos es que sea realista con 00:48:07
el entorno y que si hay una cuesta muy 00:48:09
empinada no la pueda subir, vale 00:48:11
si os fijáis, este character controller 00:48:12
añade, o 00:48:15
mira, o por ejemplo, unos escalones 00:48:17
si tuviéramos unos escalones, si vamos 00:48:19
con fuerza física se tropezaría todo el rato 00:48:21
pero nada está diciendo que puede subir, se está chocando 00:48:24
con el escalón, intenta y no puede 00:48:25
y con Transform 00:48:27
aún más, esto nos 00:48:30
permite, y por eso lo de carácter, para mover 00:48:32
personajes, poner límites 00:48:33
de rampas 00:48:35
etcétera, estos son los grados 00:48:38
en rampas, de hecho fijaos 00:48:40
que si yo me voy moviendo por aquí 00:48:41
y le digo que no puedo subir 00:48:43
una rampa de más de 10 grados 00:48:45
de inclinación, vais a ver que el chico 00:48:47
Enseguida se va a quedar pillado 00:48:50
Porque va a decir 00:48:52
Ahí ya está empezando a tener problemas 00:48:53
Si por encambio le digo 00:48:57
Que puede subir hasta rampas de yo que sé 00:48:59
De 50, ahora de pronto 00:49:01
Puede subir mucho más, tiene más capacidades 00:49:03
A lo mejor un animal puede subir 00:49:05
Rampas muy empinadas, pues yo que sé 00:49:07
Una cabra, ¿no? Pues sube 00:49:09
Porque tiene una disposición que lo permite 00:49:11
¿Vale? Pero veis que con un parámetro 00:49:13
Muy simple, que de otra forma sería 00:49:15
Muy complejo de obtener, podemos hacerlo 00:49:17
Los step offset, también son la distancia 00:49:19
de un escalón que se encuentra que pueda subir de forma natural, ¿vale? 00:49:21
Pues lo mismo, si, bueno, se ha quedado pillado aquí porque se ha quedado, a ver, 00:49:26
claro, como le estoy cambiando los valores se vuelve loco, voy a reiniciar, ¿vale? 00:49:31
Pues si tenemos aquí un escalón pequeñito, por ejemplo este, veis que lo sube, ¿vale? 00:49:35
Si esto se moviera por física se estaría tropezando o directamente por kinemática 00:49:42
dice un collider y no puedo, ¿vale? Esto no lo sube, ¿por qué? 00:49:47
Porque el escalón es pequeño. Si yo le digo el escalón puede ser, aunque no sea realista, de 18. A ver. Incluso más. Igual esto como es una roca ahora no lo... Lo mismo, lo voy a cambiar antes de ponerlo en juego. Voy a darle mucho más. 00:49:50
En principio, este elemento lo va a poder subir de una forma poco real. A ver, porque se me está volviendo un poco loquer. Esto es porque es demasiado valor. Vamos a ponerle uno más normal. 00:50:06
A ver, ¿vale? Vais a ver que ahora ha subido ahí, que antes no podía subir, ¿vale? Le hemos subido el valor del escalón y ahora este personaje puede subir escaleras más amplias, ¿vale? Entonces, bueno, son opciones que de otra forma nos costaría mucho poder obtener, ¿vale? 00:50:21
¿qué ocurre? que como no se mueve 00:50:43
ni por físicas, ni por 00:50:46
kinemáticas 00:50:48
como tal 00:50:50
claro, para moverlo tiene sus propios métodos 00:50:51
y es lo que os pone aquí explicando el tema 00:50:54
el simple move y el move 00:50:56
aparte de tener su propio sistema 00:50:58
de colisiones 00:51:00
y su propio 00:51:01
detector de suelo 00:51:04
¿vale? recordad cuando 00:51:05
hacíamos en la unidad 5 00:51:07
que para detectar que podía saltar el personaje 00:51:08
en la plataforma en el juego 2D 00:51:11
Había que poner un parámetro 00:51:13
Que cuando tocara el suelo con un 00:51:16
Collider o con un 00:51:18
Raycast hacia abajo, etc 00:51:19
Que hubiera un parámetro llamado IsGrounded 00:51:21
Que se activara para decir, vale, como está 00:51:23
Posado, al dar a saltar 00:51:25
Pues salta, porque si está en el aire no queremos que haga 00:51:27
Doble salto 00:51:29
El Character Controller por defecto 00:51:30
Ya tiene 00:51:33
Una función, vale, que es 00:51:34
IsGrounded, que sirve para controlar 00:51:37
Si el personaje es grounded 00:51:39
pues podéis hacer el salto, por ejemplo. 00:51:41
Luego, los métodos. 00:51:45
Ahora vemos, por ejemplo, en la tarea que tengo yo resuelta 00:51:47
cómo se usa, pero hay uno muy simple, muy fácil, 00:51:51
que es el Simple Move, que sirve para desplazarse 00:51:55
por ese terreno, por ejemplo. 00:51:57
El Character Controller se puede usar con terrenos 00:51:59
o con superficie lisa si ponemos, como hemos hecho hasta ahora, 00:52:01
un plane. 00:52:05
Pero bueno, también hay que valorar por qué se hace una cosa 00:52:07
y otra. Si no tiene inclinación, ni hay escalones, pues igual es más fácil hacerlo como hasta ahora. 00:52:11
Pero sí que el Simple Move tiene la capacidad de que en todo momento se le está aplicando la gravedad. 00:52:16
Recordad, como no va en base a un Rigid Body, fijaos que este personaje lo estoy moviendo. 00:52:23
Y no estoy, lo digo ya, no estoy moviendo con kinemáticas directamente, sino que estoy usando un Simple Move. 00:52:29
Veis que aquí no hay un Rigid Body que esté afectando la gravedad. 00:52:36
Y sin embargo, el personaje, voy a saltar, salta y vuelve a caer hasta que se posa. 00:52:38
Y cuando se posa, de hecho, pone Is Grounded, ¿no? 00:52:45
El parámetro Is Grounded se está activando. 00:52:47
Aunque no lo veamos, si lo comprobamos por código, lo está haciendo, ¿vale? 00:52:49
Este Simple Move aplica gravedad, ¿vale? 00:52:54
Y está todo el rato aplicando gravedad hasta que se encuentra con algo y, pues, no sigue cayendo, claro. 00:52:57
Pero tiene esta gravedad. 00:53:01
Entonces es fácil recurrir a él 00:53:02
Porque es simplemente decirle también una dirección 00:53:06
Como veníamos haciendo con el Translate 00:53:08
Y se mueve hacia ahí 00:53:10
Ahora vemos la aplicación de esto 00:53:12
Pero el problema es que como está aplicando todo el rato 00:53:13
Gravedad 00:53:16
Y también imagino 00:53:17
Que porque lo quieren hacer simple 00:53:20
Si no vas a hacer esto 00:53:22
Si quieres añadir algún parámetro 00:53:23
De que el personaje salte 00:53:25
Este Simple Move inactiva eso 00:53:26
De hecho, si miráis aquí 00:53:29
la velocity, que es sinónimo 00:53:31
de parámetro de velocidad, se refiere 00:53:34
a la fuerza física 00:53:36
que está teniendo un objeto, en este caso 00:53:38
aunque no estemos aplicando físicas 00:53:40
habla de ello como si fueran físicas 00:53:42
pero dice, la fuerza 00:53:44
que apliquemos en el eje y 00:53:46
es ignorada, es decir, aunque le 00:53:48
estemos dando en un vector 3 00:53:50
que le pasemos a este simple move 00:53:52
aunque le estemos pasando valores 00:53:54
si lo estamos haciendo 00:53:56
a través de un simple move, no lo va a aplicar 00:53:58
¿Vale? Si ya queremos aplicar esta, bueno, usando el método move para mover al personaje, no se aplica la gravedad de forma automática, ¿vale? Entonces vamos a poder saltar porque le vamos a poder añadir estas, entre comillas, fuerzas en el eje Y hacia arriba, pero también hay que añadirle la gravedad por código, porque como dice aquí, no se aplica gravedad de forma automática. 00:54:01
Y bueno, lo pongo yo aquí, pero también lo pone aquí. Aquí en algún momento... Bueno, creo que ni siquiera lo dice porque se da por supuesto que no es señal de gravedad, porque no tiene un rigid body. 00:54:22
Pero esto sí que permite, y de hecho si venís ya la documentación nos habla de cómo añadir este salto. Y os pone esta fórmula y esta... que os pongo yo también el tema de cómo se calcula a nivel físico la gravedad. 00:54:35
Entonces hay que añadírselo un poco a mano. En el tema lo pongo y en la tarea también os hablo de ello. 00:54:51
Entonces el SimpleMove sirve sobre todo si el personaje va a ir andando por una superficie, ya está. 00:54:57
Sin embargo, si queremos que salte o que haya cambios en altura, que no vaya desplazándose por ese terreno pegado, habrá que usar el método Move. 00:55:03
Aquí os hablo un poco de todo esto, de las características que tiene el CharacterController, que es lo que hay que tener en cuenta. 00:55:13
Luego, que esas detecciones, aunque no tiene un collider tampoco, fijaos, que está detectando el suelo, aquí no hay ningún collider. 00:55:19
El terreno sí tiene ese terrain collider, pero el propio Character Controller ya aporta esta cápsula, ¿vale? 00:55:26
Que se ajusta con estos últimos parámetros, ¿vale? Pues el radio, tal, bueno, el radio más grande, más pequeño, que habrá que ajustar a nuestro personaje. 00:55:32
Que es, pues como un Capsule Collider, pero que viene con este Character Controller, ¿vale? 00:55:40
Siempre, porque se entiende que como va a ir 00:55:45
Por un terreno, pues tiene que tener alguna 00:55:47
Detección de ese 00:55:49
Terreno, ¿vale? 00:55:50
Importante 00:55:54
Y lo pone aquí 00:55:54
En vez de usar 00:55:57
El onTriggerEnter, el onCollisionEnter 00:55:59
Etcétera 00:56:02
Para las colisiones que se detecten 00:56:02
A través de un CharacterController 00:56:05
Habrá que hacerlo con otro de sus 00:56:06
Métodos propios, CharacterController. 00:56:09
Este, onControllerColliderHit 00:56:11
Un nombre un poco peleagudo 00:56:13
Pero es como un collision enter 00:56:15
Solo que se especifica de otro modo 00:56:18
Es un poco similar el comportamiento 00:56:20
Que sepáis que no es nada recomendable 00:56:24
Añadir colliders 00:56:26
A un objeto que tenga un 00:56:28
Que tenga un carácter controller 00:56:31
Porque va a haber conflictos 00:56:35
Si que se puede añadir en cierto punto 00:56:36
En algún objeto para usar por otro lado 00:56:39
Si a lo mejor el brazo se choca con una pared 00:56:42
y queremos añadirlo, yo que sé 00:56:44
y le dibujamos aquí en otro hijo 00:56:46
¿vale? de Survivor en este caso 00:56:48
pues otro collider 00:56:49
y por código se pone en colisión enter 00:56:51
por ejemplo, pues bueno, se puede hacer pero 00:56:54
no es lo recomendable ¿vale? 00:56:56
para eso viene con esta 00:56:57
cápsula de detección, además tiene 00:56:58
como forma de personaje 00:57:01
bueno, no 00:57:03
puede ser bípedo o no, porque claro, aquí también podemos 00:57:06
cambiar los 00:57:08
la altura y lo podemos achatar 00:57:08
y hacerle más gordo así, que sea más 00:57:11
un animal, pero bueno, es una cápsula 00:57:13
mirando para arriba, así que 00:57:15
está pensado para personas 00:57:17
¿vale? 00:57:19
¿hasta aquí qué tal? 00:57:22
decidme algo, porque 00:57:29
si no 00:57:30
igual nadie me está escuchando, vale, bien 00:57:30
más o menos, digo 00:57:34
sí, espera, voy con micro 00:57:36
vale, entiendo 00:57:38
esto del control que se choca en propiedades 00:57:41
entiendo que cuando probemos un poco lo veremos 00:57:44
más claro, no me he perdido por aquí 00:57:46
no, vale 00:57:48
repito un poco esto 00:57:49
el character controller 00:57:53
tú según lo activas 00:57:56
voy a borrarlo 00:57:57
remove component, veis que la cápsula 00:58:00
va asociada a este 00:58:03
character controller, igual que en 00:58:04
otras prácticas 00:58:06
y si no, revisar la tarea 00:58:07
del tema 3 o el 5 00:58:09
o el contenido, hablábamos de los colliders 00:58:12
para que se detecte la colisión, porque 00:58:14
hay que saber que este personaje 00:58:16
Cuando toca el suelo tiene que haber algo que le diga hasta dónde llega el personaje. Ya hablamos que esto no va a nivel visual. Es decir, si yo le digo que esta cápsula esté más arriba, por mucho que veamos que el personaje tiene los pies aquí, donde va a detectar la colisión del suelo va a ser en esta cadera. 00:58:18
Por eso yo cuando activo y se da la gravedad, se queda ahí, porque lo que está detectando es esa cápsula, ¿vale? Y yo ahora me muevo, pero claro, en todo momento, ahora estamos en arenas movidizas, porque para el juego ahora mismo esa cápsula es el collider, entonces es lo que está ajustando como el collider. 00:58:36
Es exactamente lo mismo, solo que con otro método de ajustar lo que ya hablábamos cuando los colliders tradicionales que hemos hablado para las físicas. Si tenéis duda de eso, revisad el tema 3. Y es una adaptación de eso. 00:59:00
solo que, vale 00:59:19
vale, pues 00:59:20
más cosas que me digáis, claro 00:59:22
o si no os queda claro esto, lo digo que no 00:59:24
quiero meterme mucho en esto porque ya hablamos de ello 00:59:27
entonces, aunque no sea 00:59:29
exactamente igual, es lo mismo 00:59:31
alguna 00:59:32
alguna cosa más, decidme 00:59:34
si hay dudas y si no, continúo 00:59:36
que lo siguiente 00:59:39
va a ser, pues un poco ver como 00:59:41
movemos a este personaje con el carácter controller 00:59:42
y aparte de moverlo 00:59:45
igual que dijimos 00:59:46
no hay que asociar los movimientos del personaje 00:59:48
en el espacio, que son este simple move 00:59:50
etcétera, que se desplace el objeto 00:59:52
con, que luego el personaje 00:59:54
cuando se mueva para adelante 00:59:56
haga el movimiento de moverse 00:59:58
es decir, la animación de que mueve las piernas 01:00:00
¿vale? recordad que son 01:00:02
dos cosas separadas, una cosa es mover 01:00:04
el game object en sí y otra es ya 01:00:06
la apariencia de esas animaciones 01:00:08
en la UT5, en 2D 01:00:10
lo veíamos muy claro porque esos sprites 01:00:12
evidentemente eran dibujos que se movían 01:00:14
y parecía que andaba, pero lo que 01:00:17
lo desplazaba no era que el personaje pareciera 01:00:18
que corriera, es 01:00:20
que estábamos cambiándole la posición 01:00:22
aquí sucede un poco lo mismo 01:00:24
¿vale? 01:00:26
¿sí? ¿sigo? 01:00:31
venga 01:00:34
si no me decís nada más, sigo 01:00:34
vale, lo dicho 01:00:36
aunque tengamos 01:00:39
animaciones, etcétera 01:00:42
esto tiene un pero, porque 01:00:45
se dice en el tema, hay una 01:00:46
También se dice en el tema y en el vídeo que subí yo 01:00:48
Existe esto del root motion 01:00:51
Porque bueno, por ejemplo, en Mixamo 01:00:53
Creamos una animación 01:00:55
Están las animaciones que en sí 01:00:56
La propia animación ya tiene un avance 01:00:58
O se eleva en el espacio 01:01:00
Y eso normalmente no nos va a interesar 01:01:02
Podría interesarnos en ciertos momentos 01:01:04
No nos va a interesar que el personaje 01:01:06
En su animación vaya andando hacia adelante 01:01:08
Lo que nos interesa es que haga 01:01:10
Como el 01:01:12
Mira, de hecho, dame un segundo 01:01:13
Y lo vemos 01:01:16
en el propio vídeo que os 01:01:17
dejaba, digo que no sé 01:01:19
si, a ver, espera 01:01:23
un segundico, que me tome claves 01:01:25
vale, voy a 01:01:27
buscarlo rápido, pero hay algún punto 01:01:34
en el que se ve que el personaje 01:01:36
en estas animaciones 01:01:38
vamos a buscar en este andado 01:01:39
a ver 01:01:44
vale, veis, por ejemplo 01:01:45
este salto, esto 01:01:54
es una animación de salto que ya tiene un movimiento 01:01:56
en sí, vale, con Unity 01:01:58
Y en las opciones de Model, cuando importamos un FBX, se puede manipular y decir, 01:02:00
aunque haga como que salta este gesto de las manos y como que se eleva, 01:02:06
realmente el que suba o baje va a ser con las fuerzas que nosotros le demos mediante código. 01:02:11
Se ve aún más claro si vamos a uno de caminado. 01:02:16
Aquí, por ejemplo, veis que según cojo esta animación y la he puesto en la selección de Mixamo, 01:02:19
el personaje, mirad la cuadrícula, está avanzando. 01:02:27
¿Qué ocurre? Que si nosotros le estamos añadiendo una fuerza para que ese GameObject, 01:02:30
pensad en el GameObject como un cubo, ¿vale? 01:02:34
Si ese GameObject se va desplazando porque le estamos dando fuerza para adelante 01:02:36
y aparte la animación también anda para adelante, va a ser un doble movimiento. 01:02:39
Por eso en el vídeo se dice que hay algunas de estas animaciones que pone InPlace, 01:02:43
que cuando se pulsa, ¿vale? Lo que va a hacer, lo diré en breve, 01:02:47
va a hacer como ese caminado, que luego nosotros diremos ve para adelante y te vas moviendo, 01:02:53
pero en realidad la animación en sí no se está moviendo. 01:02:57
Hacer la animación que se mueve, pero el desplazamiento ya se lo daremos nosotros luego. Eso es importante porque nos sirve para entender que se puede disociar o que se debe disociar esos dos conceptos, que el movimiento que nosotros proporcionamos y la apariencia de movimiento. 01:03:00
si queremos esta 01:03:14
plus run motion, que estas animaciones 01:03:17
aunque lo hubiéramos 01:03:19
exportado 01:03:20
esta animación, este clip de animación 01:03:23
con ese desplazamiento se puede ir ajustando 01:03:24
con este run motion 01:03:28
y otras opciones, se habla de ello en el vídeo 01:03:29
que vamos teniendo aquí 01:03:31
a ver, cuando nos vamos metiendo 01:03:35
en las diferentes animaciones 01:03:37
voy a abrir 01:03:39
el animator controller 01:03:41
animator controller 01:03:43
y cojo al personaje 01:03:46
y le digo por ejemplo el caminar 01:03:48
vale, bueno justo ese 01:03:50
no, pero 01:03:53
y voy aquí 01:03:53
y le digo, claro me tengo que meter 01:03:55
la animación, espera, que la tengo que buscar 01:04:03
vale, aquí son distintas animaciones 01:04:05
que había del personaje 01:04:07
vale 01:04:09
el idle, vamos a ver el de caminado 01:04:10
que creo que es este, y veis que aquí 01:04:13
de hecho tiene el desplazamiento, aquí 01:04:15
lo saqué con el 01:04:17
desplazamiento, ¿vale? 01:04:18
¿Qué ocurre? Que luego aquí hay otras opciones 01:04:21
que sirven, por ejemplo 01:04:23
esto que pone, que vais a ver 01:04:25
no el match, no el loop 01:04:26
no se matchea, porque vais a ver que cuando llega al final 01:04:29
bueno, aquí está justo 01:04:31
que parece que sí, pero en realidad está dando un salto 01:04:33
lo que pasa es que coincide para que 01:04:35
parezca que no lo hay 01:04:37
pero hay otros que puede ir avanzando y de pronto parece 01:04:39
como que vuelve. Con esto lo que se puede 01:04:41
ir haciendo es 01:04:43
detener esos avances 01:04:44
para que precisamente pasen esas cosas 01:04:46
con estos ajustes se pueden ir 01:04:48
adoptando estas 01:04:50
modificaciones para 01:04:52
controlar eso, ya os digo 01:04:53
se explica en ese vídeo 01:04:56
entonces, ¿qué es lo que hay que hacer? 01:04:57
bajar esas animaciones 01:05:00
e irlas incorporando en un animator controller 01:05:01
del mismo modo que sucedió 01:05:04
en el tema 5, con sus condiciones 01:05:06
de por qué 01:05:08
es decir, sus transiciones 01:05:10
con condiciones para pasar de una a otra, etc. 01:05:12
¿Qué ocurre y qué es lo complicado aquí? 01:05:15
Que lo que se añade en este caso es el concepto del blend tree, 01:05:18
que lo que permite es unir varias animaciones, 01:05:23
para que dependiendo de qué valor tiene uno de los parámetros 01:05:28
que tenemos aquí preparados, haga una animación u otra. 01:05:36
E ir también, fijaos, os lo voy a poner así para que lo veáis, lo voy a poner, esperad, voy a ponerlo mejor con el de caminado. Si yo me meto en un blend tree, esto también os dejo de aumentación, lo reproduzco, por defecto está parado, pero si yo le doy al walk, ¿vale? Veis que poco a poco va subiendo. 01:05:39
Y este walk no deja de ser que se está conectando con el parámetro walk, ¿vale? Y se ha definido así para conectarlo. Entonces, si el parámetro walk es 0, ¿vale? Va a representar la animación de idle, que es el de estar quieto. 01:05:59
si le vamos dando hacia adelante 01:06:12
hará este caminado 01:06:15
¿qué conseguimos con un blend tree? 01:06:16
que haya también valores intermedios 01:06:18
¿vale? fijaos 01:06:20
que yo cuanto más 01:06:21
voy 01:06:24
dando valor a este walk 01:06:25
¿vale? 01:06:29
va un poquito más rápido, un poquito más lento 01:06:30
si tuviéramos un joystick, si lo ponemos a media 01:06:32
hacia adelante, que es donde 01:06:34
por ejemplo estamos poniendo el walk 01:06:36
estamos dando un poquito hacia adelante 01:06:38
irá así despacillo, ¿vale? 01:06:40
Que también se podrá asociar con la fuerza del desplazamiento que tenga el personaje. 01:06:41
Si lo pongo al máximo, irá al máximo. 01:06:46
Si yo, por ejemplo, este de correr, no, este de ir hacia los lados, ¿vale? 01:06:49
Un movimiento que se llama estrafe, si lo activo, aquí lo que hemos hecho es hacer un movimiento de dos ejes. 01:06:56
Hemos conectado el parámetro estrafe para que pueda ir conectado a un axis del menos uno al uno. 01:07:03
Ahora lo vemos todo por código. 01:07:09
Lo ha cogido y lo ha asociado. ¿Qué hemos hecho aquí? Pues que podéis ir del menos uno al uno, siendo el valor cero el neutro. 01:07:11
Entonces, si tuviéramos un joystick o las teclas A y D, que son Q y E, que son las que vamos a usar, si pulso la Q, este valor de estrafe pasará a ser menos uno. 01:07:19
Activo. Y por tanto, lo que hará es moverse hacia este lateral. Si yo voy corrigiendo y soltando el joystick del lateral y lo paso hacia el otro lado, 01:07:31
fijaos en el personaje como poco a poco 01:07:39
se va moviendo hacia el otro lado 01:07:41
entonces con esto lo que hacemos es 01:07:43
combinar en este caso 01:07:45
tres diferentes animaciones 01:07:47
¿vale? y según en qué 01:07:49
punto de un axis 01:07:51
estemos, pues se irá 01:07:53
desplazando, cuando desplazando 01:07:55
ojo, me refiero a la apariencia 01:07:57
el movimiento que hace 01:08:00
el personaje, hacia un lado 01:08:01
¿vale? y hará el estrafe, una animación que tengo 01:08:03
que se llama estrafe left 01:08:05
que es esta 01:08:07
que es una, que es independiente de 01:08:08
strafe right, que es la contraria, entonces con esto 01:08:12
lo que podremos hacer es ir precisamente 01:08:15
poniendo valores intermedios 01:08:18
entonces se van añadiendo animaciones 01:08:21
incluso podría poner una intermedia con otra animación 01:08:25
aquí, imaginaos, añadir y decir que la animación 01:08:27
de saltar, aunque no tuviera mucho sentido, es cuando esto esté 01:08:31
ese valor valga menos 0.5 01:08:34
Y ahora, es verdad que no va a encontrar nada porque no tiene ninguna animación, pero si aquí pusiera que es la de caminar hacia adelante. Fijaos, he añadido que cuando esté en cero, si os fijáis ahora lo que ha hecho es ponerme 1 o 2, si le dais a esta opción, lo que hacemos es que podemos ir ajustando dónde están las animaciones. 01:08:37
Le voy a decir que esto sea caminado, sea del menos 0,5, que esté quieto en el 0. 01:09:03
Estamos ajustando el valor que va a tener que coger de estrafe, del parámetro estrafe, para que lo coja. 01:09:11
Como es un axis que va de menos 1 a 1, pues son valores todos que están en ese rango. 01:09:16
Si está quieto al principio, y ahora no me está... 01:09:24
Ah, es que está aquí. 01:09:27
Esta línea roja es para simular, ¿vale? 01:09:28
Si está en el 0, pues está en idle 01:09:30
Si voy hacia la derecha, irá hacia el right 01:09:34
Luego, aunque no tenga sentido, si voy a 0, menos 0,5 y muevo el joystick un poco hacia la izquierda 01:09:37
En realidad lo que hace es caminar para adelante 01:09:45
Y si ya voy al menos 1, irá hacia la izquierda 01:09:47
Y vais a ver que, igual que se ve aquí representado, hará ese movimiento de lateral y un poco hacia adelante 01:09:51
¿Veis que está andando ahora, que va hacia adelante y aparte también de lado? 01:09:56
Vale, pues es lo que podemos conseguir con los blend trees, combinar distintas animaciones. 01:10:03
Borro este porque no me interesa y vuelvo a estar como antes. 01:10:09
Y hay un blend tree de 1D, pero hay otros de tipo 2D. 01:10:12
¿Y esto qué significa? 01:10:19
Que podemos coger, y hay distintos tipos, pero podemos coger dos parámetros distintos. 01:10:20
Por ejemplo, el de caminar para adelante y el de estrafe, y combinarlos. 01:10:25
Entonces, ahora lo que estamos haciendo es jugar con dos ejes. 01:10:32
¿Qué valor tiene en el eje X? Pues que sería walk, ¿no? Por eso está en esta columna. 01:10:35
Bueno, sería más la Y, el walk, que es ir hacia adelante o hacia atrás, ¿no? Con el mando me refiero, el eje del mando. 01:10:41
¿Vale? Y yo digo que cuando vaya a la izquierda, que sea cuando el eje X esté en menos uno. 01:10:48
Y cuando esté en uno, que vaya a la derecha. 01:10:54
Y ahora, y que camine, y voy a añadir otro, que sea caminar, que es este que teníamos aquí, normal walk, que este sea cuando, aunque esté en cero aquí, cuando esté en uno, es decir, cuando esté hacia adelante. 01:10:56
Y vais a ir viendo que se van representando los puntos de donde es cada uno de los, a ver, 0. Cada una de las posiciones de dos ejes, en vez de estar solo en un eje horizontal, los ejes hacia los que se pueden mover. 01:11:14
aterrizándolo, si yo ahora le doy al play 01:11:30
cuando ninguno de los dos ejes 01:11:32
imaginaos que estos son 01:11:35
el eje X e Y de un joystick 01:11:36
si yo lo subo hacia arriba 01:11:38
vais a ver que lo que va a hacer es ir andando 01:11:41
hacia adelante, que es lo que estoy haciendo 01:11:43
¿por qué? 01:11:45
porque está yendo 01:11:48
hacia el 1 de la Y 01:11:48
si yo voy yendo hacia la izquierda 01:11:50
en el X, y vais viendo que va aumentando 01:11:53
la área de influencia de cada animación 01:11:55
que son estos puntos azules 01:11:57
se irá reproduciendo uno a un otro. 01:11:58
Ahora, por ejemplo, debería estar, aunque no lo está haciendo, 01:12:02
no sé por qué no lo está haciendo, pero veis que ahora mueve en lateral. 01:12:09
Si voy al centro se para y si voy hacia la derecha empieza a moverse hacia la derecha. 01:12:13
Y entonces con eso podemos ir también interpolando. 01:12:19
Aquí en este punto intermedio está aplicándose tanto a la vez el de avanzar como el de ir hacia la derecha. 01:12:21
Y con esto podemos ir añadiendo muchas animaciones para que, por ejemplo, coordinando dos operaciones, es decir, dos axis, podamos tener esas animaciones. 01:12:28
Hay distintos tipos también de incorporar esto, pero bueno, básicamente cuando son 2D se refiere a eso, que podemos combinar dos axes para combinar dos tipos de animaciones. 01:12:41
Eso es muy útil para, por ejemplo, este movimiento que tenemos aquí del personaje. 01:12:53
si yo le doy play, y he deshecho 01:12:57
todo lo que he hecho, que no sé si 01:12:59
será suficiente, si yo le doy a play 01:13:01
si yo avanzo 01:13:03
el personaje se anima 01:13:05
como de avanzar, si voy para atrás 01:13:08
hace la animación de andar para atrás 01:13:09
si doy a los laterales, hace estas animaciones 01:13:11
se podrían suavizar más 01:13:14
que tardar el arranque, pero bueno 01:13:15
eso sería con el control de animator 01:13:17
con los nodos, que la condición tardará un poco más 01:13:19
pero fijaos 01:13:22
y si ya, vale, que 01:13:23
estoy combinando con un solo 01:13:25
Blend Tree, todas las operaciones 01:13:27
de caminado, incluso caminar 01:13:29
cruzado, luego ya 01:13:31
rota, etc. 01:13:33
Eso se consigue con esos Blend Trees. 01:13:35
Para crear un 01:13:38
Blend Tree, lo mismo, podría ir 01:13:39
paso a paso, pero lo pone en el tema, pero es 01:13:41
clic derecho, crear un estado 01:13:43
y un Blend Tree, y luego ya se ir incorporando 01:13:44
los distintos 01:13:47
los distintos clips de animación. 01:13:48
¿Qué tal hasta aquí? 01:13:52
Esto es ponerse a probar, 01:13:56
Porque por mucho que os lo explique 01:13:57
Hasta que no os sentéis 01:13:59
También es complicado, pero más o menos seguís 01:14:00
Qué es lo que conseguimos 01:14:02
Sí se entiende, perfecto 01:14:04
Esto es 01:14:10
Los parámetros, recordad 01:14:11
Por si acaso 01:14:14
Estamos en el AnimatorController, como en la unidad 5 01:14:16
Los parámetros 01:14:18
Para acceder a ellos y poder cambiar 01:14:19
Esos parámetros del AnimatorController 01:14:22
Habrá que crear 01:14:25
Una variable de tipo Animator 01:14:26
¿Sí? 01:14:28
que luego habrá que inicializar 01:14:29
aquí, que capturar el componente 01:14:32
como ya hemos visto con ese getComponent 01:14:34
cuando queremos 01:14:35
esta lógica ya la deberíamos 01:14:37
tener, pero bueno, sé que van apareciendo nuevos 01:14:40
ingredientes, para acceder a 01:14:42
las propiedades, a los métodos 01:14:44
de CharacterController 01:14:46
habrá que declarar la variable CharacterController 01:14:47
darle el nombre que nosotros queramos 01:14:50
y luego capturarlo 01:14:51
para poder aplicar 01:14:53
cambios 01:14:56
a ese carácter controller específico 01:14:57
¿vale? que tenemos en este personaje 01:15:00
porque si no, no sabe 01:15:02
qué valor cambiar, puede haber varios 01:15:04
carácter controllers 01:15:06
en distintos game outers ¿vale? 01:15:08
aquí, como estamos diciendo que coja 01:15:09
no pone nada en concreto, está cogiendo 01:15:12
el componente carácter controller 01:15:13
del mismo 01:15:16
personaje que tenga aplicado este script 01:15:17
¿vale? y ya con CC 01:15:20
pues por ejemplo es, fijaos 01:15:22
que siempre que ponga, bueno mira, un is grounded 01:15:24
para detectar que se puede saltar 01:15:26
¿vale? pero siempre que ponga 01:15:28
algo de simple move o move 01:15:30
como aquí 01:15:32
¿vale? va a ser 01:15:34
cc.move ¿vale? porque es una 01:15:36
un método de simple move y de move 01:15:37
esto es un poco 01:15:40
lo que ya hemos venido viendo 01:15:42
igual que cuando queremos cambiar parámetros 01:15:44
del animator pues hay que tener 01:15:46
un animator preparado 01:15:48
¿vale? la variable animator 01:15:50
capturarla 01:15:52
luego con el getComponent, aquí está 01:15:54
coge la misma del objeto, por eso no busca 01:15:56
en otros objetos, con un findObject 01:15:58
que era otro de los métodos que 01:16:00
en algún momento os he dejado 01:16:02
y siempre que queramos cambiar 01:16:03
alguno de estos parámetros, un float 01:16:06
etcétera, estos parámetros 01:16:08
walk is grounded 01:16:10
esto ya está dado, pero walk is grounded 01:16:11
lo vamos a cambiar porque estamos cambiando 01:16:14
los parámetros 01:16:16
del animator 01:16:18
¿vale? 01:16:19
entonces, descomponiendo 01:16:22
un poco... Sí, ¿no? Esto también 01:16:24
entiendo que más o menos me seguís. 01:16:26
Pues 01:16:30
descomponiendo un poco esto, 01:16:31
para este personaje 01:16:35
si se seguía todo en la 01:16:36
tarea, hay varios movimientos como el de desenfundar 01:16:38
o como el de 01:16:40
el de saltar 01:16:42
incluso, que si se hacen 01:16:44
pues nos hace 01:16:46
nos lleva a la reflexión de 01:16:48
qué método de 01:16:50
carácter control hay que usar, move o simple move. 01:16:52
pues para este personaje, si queremos que salte 01:16:54
evidentemente hay que usar un move 01:16:56
porque ya hemos dicho que es el que 01:16:58
sí que tiene en cuenta 01:17:00
que apliquemos, entre comillas 01:17:02
fuerzas al eje Y, que es el 01:17:05
que nos importa para el salto 01:17:06
si no, podríamos usar 01:17:08
tanto el move como el simple move, pero lo lógico 01:17:10
sería usar el simple move que ya añade 01:17:12
la gravedad y bueno, tiene otras ventajas 01:17:14
en este caso 01:17:17
se ha intentado que salte el personaje, por eso vais a ver 01:17:18
que cuando vamos aquí 01:17:21
Y al final, ahora también voy a ir por partes, se usa este move, ¿vale? 01:17:23
Entonces, vamos a ver. 01:17:27
Como en otras ocasiones lo que se hace lo primero, aparte de capturar en el start todos los componentes 01:17:30
y preparar las fuerzas que vamos a ir aplicando, variables, para luego ir ajustándolas, 01:17:36
en el update lo que habrá que hacer es recoger las interacciones. 01:17:42
En este caso, el personaje vamos a querer que haga tres cosas principalmente. 01:17:46
Vamos a querer que haga más, pero basadas en axis 3. Una es que cuando demos a la W o a la S, ¿vale? Estoy hablando de la convención que hemos hablado para el movimiento. Al dar a la W o a la S, pues que vaya hacia adelante o hacia atrás, ¿vale? De 1 hacia adelante, menos 1 hacia atrás, ¿no? 01:17:50
Ese es el axis que vamos a llamar vertical 01:18:10
Que cuando hemos hablado del Benetree 01:18:12
Era el axis que ponía 01:18:14
POSI, realmente, ¿vale? 01:18:15
Vertical 01:18:18
Realmente el personaje se mueve en horizontal 01:18:18
Pero lo estamos uniendo con la lógica de nuestro joystick 01:18:21
Es el eje I 01:18:23
Luego va a haber otro 01:18:24
Que lo que vamos a querer hacer es que rote 01:18:26
Este personaje 01:18:29
Va a moverse 01:18:32
Lateralmente de dos formas 01:18:33
Una rotando y otra 01:18:35
Haciendo este estrafe que es caminar hacia los lados 01:18:36
Que no es exactamente lo mismo, ¿vale? Y aquí el rotate yo lo voy a conectar luego con la cámara, bueno, eso voy a hablar después, ¿vale? Pero queremos otro axis que cuando le demos a la A y a la D, y vamos a verlo en el juego, un axis que W y S hacia adelante y hacia atrás. 01:18:39
cuando le dé a la A y a la D lo que hace es rotar 01:19:01
¿vale? realmente no va a ser un desplazamiento 01:19:05
de posición, va a ser de rotación 01:19:06
y por eso lo vamos a hacer de hecho con un rotate 01:19:08
pero luego hay otro que, claro, cuando va 01:19:10
para adelante va a ser en relación a donde mira 01:19:12
el personaje, pero hay otro que nos puede 01:19:14
interesar que es este estrafe que es 01:19:16
hacia donde esté mirando 01:19:18
¿vale? pero que se desplace en lateral 01:19:20
¿vale? no que haya que rotar y luego andar 01:19:22
para que se mueva hacia ahí, sino que directamente 01:19:24
se pueden hacer estas 01:19:26
rotaciones ¿vale? 01:19:28
Pues para eso hacemos otro axis, que es el de estrafe. 01:19:30
Otras opciones que se ponía, pues la de correr, con el shift izquierdo de la tecla. 01:19:34
Bueno, pues si pulsamos y mantenemos pulsada esta tecla de shift, lo primero es que el booleano, ¿vale? 01:19:41
Es decir, booleano, recordad que con booleano nos referimos a que puede ser true o false. 01:19:48
Pues si está true, ¿vale? Tenemos la condición perfecta para que pase de caminar a correr. 01:19:53
Para que haga la animación de correr. Luego, evidentemente, cuando pulsemos left shift, habrá un punto que al moverlo, cuando se pulsa esa tecla, hemos hecho, se podría decir aquí también, que cuando se pulsa la tecla, en la condición de pulsar la tecla left shift, 01:20:00
Pues que a lo mejor la speed, no sé si hay una variable llamada speed, supongo que sí, que pasara a ser el doble o otro valor o 100, porque es más rápido. 01:20:22
Pero recordad también en el tema anterior, y sería válido, se podría hacer así, pero también se puede hacer, según la tarea anterior, es detectar si en este momento, 01:20:31
cuando está moviendo el personaje 01:20:42
detecta que está, por eso no es setBull 01:20:45
getBull, en el nodo de correr 01:20:46
¿vale? es decir, si está 01:20:49
activado el nodo de correr 01:20:50
y es true este parámetro 01:20:52
¿vale? entonces 01:20:55
y aparte se está moviendo un poco, que la velocidad 01:20:56
sea el doble, por ejemplo 01:20:59
aquí es lo que está diciendo, si no está detectando 01:21:01
que está ahí, será que es que no hemos pulsado 01:21:03
este leftShift 01:21:05
¿vale? entonces pues irá normal 01:21:06
ya se, esta condición la pasa 01:21:08
y pasa a la siguiente, ¿vale? 01:21:10
Que es importante ya ir poniendo en juego 01:21:12
las distintas herramientas que tenemos. 01:21:14
Se puede detectar que un personaje quiere correr 01:21:18
porque pulsamos la tecla Shift 01:21:20
y luego más opciones derivadas de ese correr 01:21:22
no tienen por qué ser con el Left Shift. 01:21:26
Puede ser porque la anterior consecuencia del Left Shift, 01:21:27
que es que el Run pasa a ser True, 01:21:31
pues ahora es la condición de otra historia 01:21:33
que estamos usando, ¿vale? 01:21:35
Vale, tenemos, perdonad, en el update, aparte de que este animator va a aplicar la condición de move, pues va a variar este parámetro para que sea mayor o menor. 01:21:36
Por ejemplo, para activar ese blend tree del que hablábamos antes, va a estar completamente el valor del float que tenemos aquí, va a estar completamente vinculado, es decir, este float que tenemos aquí va a ser mayor o menor, va a ir cogiendo valores intermedios si tenemos un joystick. 01:21:55
por ejemplo, nuevamente 01:22:12
nos serviría para un blend tree 01:22:14
se va a vincular a 01:22:15
a la variable que hemos llamado 01:22:17
move, que está conectada con ese axis 01:22:22
vertical, ¿vale? pues con un joystick 01:22:24
lo mismo, con la tecla WS 01:22:26
no va a haber, va a ir 01:22:28
de 0 a 1 y de 0 a menos 1 01:22:30
de manera casi directa 01:22:31
pero con un joystick sí que hay valores intermedios 01:22:34
entonces con esto 01:22:36
es con lo que podemos ir ajustando el 01:22:38
animator para que eso, para que camine 01:22:40
haga la apariencia de caminar más o menos 01:22:41
y luego evidentemente este move 01:22:43
en cierto momento 01:22:45
lo vamos a aplicar en esta 01:22:48
en este método que estamos 01:22:50
creado yo también, ¿vale? 01:22:51
que es, si no estás apuntando, que es otra 01:22:53
de las opciones 01:22:55
de las opciones 01:22:56
de los movimientos opcionales que se os ponía 01:22:59
que es cuando pulse la tecla 01:23:01
del control, ¿vale? el control 01:23:03
del teclado, vaya 01:23:05
que pase a hacer una animación como de que saca una pistola 01:23:06
y apunta, y ahí 01:23:10
la dinámica que hay ahora mismo 01:23:10
os lo enseño, es que 01:23:13
mientras se está apuntando esté quieto, que esté como 01:23:15
en estado de alerta, de apuntar 01:23:17
un segundo 01:23:19
vale, yo me voy moviendo 01:23:20
etcétera, si doy a la tecla control 01:23:23
de pronto, aparte de cambiar la cámara 01:23:25
con cinemachine a otro, sí que se puede rotar 01:23:27
pero, aunque dé a la 01:23:29
W y a la S, no se puede 01:23:31
mover, no sé que 01:23:33
este aviso, porque como estoy con una combinación 01:23:35
algo va a pasar, pero bueno 01:23:37
Ah, porque estoy dando a control S, vale 01:23:38
Bueno, que no me deja, vale 01:23:42
Pero que eso, que mientras estoy apuntando 01:23:44
No puedo moverme, o no debería 01:23:46
Y creo que como que se ha desconjunto algo 01:23:48
Pero como que está pensado sobre todo 01:23:50
Para quedarse así, pues lo mismo 01:23:52
Mientras no esté apuntando 01:23:53
Si, lo contrario 01:23:56
Apuntando, vector move, vale 01:23:58
Y ese método lo que se ha creado 01:24:00
Es esto 01:24:02
Aparte de cambiar el valor de speed para que 01:24:03
El desplazamiento sea mayor o menor 01:24:06
porque luego todo lo vamos a multiplicar 01:24:08
por un speed finalmente 01:24:10
en algún momento, aquí, vale 01:24:11
aquí lo que vamos a ir haciendo es 01:24:13
venir aquí, lo dejo aquí 01:24:15
vale, con el speed que tengas 01:24:18
según vaya detectando 01:24:20
dos vectores, uno 01:24:21
del movimiento hacia adelante 01:24:23
hacia atrás y otro del estrafe 01:24:26
vale, porque la rotación 01:24:28
lo que he hecho es 01:24:29
crear un rotate, vale 01:24:32
que esté unido al axis rotate 01:24:34
este que hemos capturado antes, a esa variable 01:24:36
Y simplemente la estoy llamando en el update y ya está. Aquí es el update y la estoy llamando. No tiene más. Sí que el movimiento que estamos recogiendo aquí es el desplazamiento en el espacio del personaje con este vector move. 01:24:38
entonces va a haber por un lado un vector 3 01:24:52
move forward que está unido 01:24:56
a donde esté mirando 01:24:58
con esto lo que conseguimos es que esté unido 01:25:02
hacia donde esté mirando 01:25:04
si por ejemplo 01:25:06
lo que conseguimos con esta variable básicamente es 01:25:08
que en todo momento luego la animación que metamos 01:25:13
el desplazamiento que metamos 01:25:16
sea en relación hacia donde está mirando 01:25:19
Recordad que esto era una de las formas de recoger la dirección hacia la que está mirando un personaje 01:25:22
y te crea ese vector 3 en función de eso, como que resetea las coordenadas. 01:25:33
Con este vector right, en principio lo ponemos en 0 y solo se va a activar si el estrafe, 01:25:39
es decir, el Q y la E, que era el movimiento lateral, se activa. 01:25:46
¿Por qué? Porque queremos que siempre que no añada nada a este desplazamiento que vamos a hacer luego con el CC Move, que no añada nada hasta que no toque estas teclas. ¿Por qué? Para no ir capturando además valores. 01:25:49
Entonces, hasta que no se activa ese estrafe, que va a ser menos usado que el movimiento en profundidad, ¿vale? Hacia adelante o hacia atrás, pues no lo activa. Pero aquí, básicamente, veis que va a coger ese vector 3 de hacia donde está mirando. Si lo activas, va a coger también hacia donde está mirando, va a desplazarlo hacia la derecha con la fuerza que le estemos dando al axis de estrafe, ¿vale? Y otra velocidad que hemos creado para el estrafe. 01:26:03
Y finalmente, esos dos vectores, lo que va a hacer es sumarlos, ¿vale? En esta variable llamada vector move. Vector move suma estos dos valores. Por un lado, el desplazamiento hacia donde esté mirando, si le estamos dando, y por otro lado, el desplazamiento que conseguíamos como en este move right aquí, ¿vale? Si hay que añadir un estrafe. 01:26:29
Y aparte, como vamos a usar, siento que sea un poco complejo, pero estamos desglosando en distintos movimientos que luego se suman aquí en este punto. 01:26:56
Y luego, aparte de este vector move, hay que sumarle este fall direction, que es un valor que en todo momento, como estamos usando el move que no agrega por defecto la gravedad, estamos creando con un fix update este método de gravedad con la fórmula que... 01:27:08
Bueno, había una fórmula de hacerlo más ortodoxa u otra que es ponerla a pelo, perdonadme la expresión, que es que la caída, esta variable, que haya una variable que sirva para en todo momento ir calculando la caída que tendría que tener. 01:27:31
Hemos creado una variable que se llama gravedad y esa variable hemos dicho que es menos 9,8, que al final es la fuerza de la gravedad la que da como resultado en la fórmula que os estaba poniendo antes en el ejemplo y que vais a encontrar en el tema. 01:27:47
De hecho, si vais a Project Settings y a Physics, aquí está, vais a ver que el valor que un Rigipodi, por ejemplo, aplica de gravedad es este menos 9,81. Aquí lo hemos replicado, menos 9,8. 01:28:02
que está haciendo 01:28:16
este método 01:28:19
gravedad en todo momento 01:28:21
pues va a haber una variable 01:28:22
de vector 3 que en todo momento está 01:28:24
aplicando esta gravedad y está sumándola 01:28:27
sumándola con un delta time 01:28:29
¿vale? ¿qué significa 01:28:31
esto? que va a ir añadiendo 01:28:33
esto se va a estar reproduciendo 01:28:34
en todo momento y va a estar todo el rato 01:28:37
calculando 01:28:39
y guardando esta variable 01:28:41
el desplazamiento 01:28:42
que debería ir hacia abajo para simular esa gravedad. 01:28:45
En caso de que se estuviera tocando suelo, para que no haya conflictos, 01:28:48
o si estamos subiendo, es decir, le hemos dado una fuerza hacia arriba 01:28:54
o en algún momento está calculando que no debería estar cayendo, 01:28:57
lo dejamos en cero. 01:29:04
Es decir, estamos anulando esa fuerza de gravedad en ciertas condiciones. 01:29:06
Pero en todo momento lo que estamos consiguiendo es, 01:29:09
siempre que no esté en el suelo, que haya una gravedad, 01:29:12
Que luego la vamos a usar aquí. Fijaos. A este vector move, aparte, sumale este vector 3. Como solo estamos afectando al eje Y, el resto va a ser 0 y 0. Pero va a haber un 0, un valor negativo de bajada de gravedad en Y y otro 0. 01:29:14
Entonces al sumarlo solo va a afectar, por ejemplo en esta operación, al desplazamiento que ya teníamos en profundidad y en horizontal, ¿vale? También se le va a estar añadiendo en caso de que se active, es decir, en caso de que se hubiera saltado, esta gravedad para que caiga, ¿vale? 01:29:34
Y aquí estamos básicamente guardando en vector move el vector 3 del desplazamiento que deberíamos luego aplicar a este move para que se mueva, ¿vale? También el simple move, otra, lo veréis en el tema, simple move no hace falta aplicarlo en time delta time porque ya lo hace por defecto, pero a move sí que hay que dárselo, ¿vale? 01:29:49
Entonces, esta es una forma de llegar a esto, hay otras. En vez de hacer esto de la gravedad con el fall direction y que en todo momento estamos ya dándole el resultado, se puede decir que el salto, en vez de decirle, cuando damos a saltar, igual que hay una gravedad que se está calculando todo el rato, que lo que hace es ir reseteando este fall direction, 01:30:12
Por otro lado, al darle a la barra espaciadora en el update, se ejecuta el método saltar. Y aquí en saltar, si está posado en el suelo, si no, no se ejecuta nada. Aparte de lanzar la animación visual en el animator controller del salto, también dice, vale, aquí lo que vamos a hacer es que el fold direction y pase a tener un valor de jump speed que hemos creado aquí, que es de 8. 01:30:37
Es decir, que de pronto fold direction va a valer 8. Y como esto va a hacer que de pronto deje de estar posado, al saltar, este fold direction que sumamos es positivo. 01:31:02
¿Hacia dónde moverá en ese caso? En vez de hacia abajo como la gravedad, va a subir. Y cuando ya, tened en cuenta que esto se va a aplicar solo en un fotograma, porque cuando vamos a saltar es un get key down, no es cuando estamos pulsando y en cada fotograma está añadiendose la fuerza. 01:31:18
En un solo pulsado va a hacer este saltar, va a añadir esta fuerza de golpe, va a subir, va a tener esa dirección y cuando ya empiece a perder esa fuerza, un poco simulando esa física, pues volverá a añadirle la gravedad que teníamos aquí. 01:31:36
más o menos me seguís 01:31:54
aquí os he dicho una cosa y por eso lo estoy mirando 01:32:05
claro, cuando le damos 01:32:08
esto no lo pone a cero y se ejecuta 01:32:09
cuando el jump speed 01:32:12
aporta un valor que es positivo 01:32:13
esto no nos lo resetea en cero 01:32:16
sino que está sobreescribiendo la gravedad 01:32:17
y ya cuando 01:32:20
ya en los siguientes fotogramas ya deja de haber 01:32:21
esa 01:32:24
digamos, esa fuerza que le hemos 01:32:24
aplica hacia arriba, pues ya vuelve otra vez a tener 01:32:28
la gravedad y vuelve a bajar. 01:32:30
¿Qué tal? ¿Me seguís? 01:32:35
¿Más o menos? 01:32:37
Más o menos, sí. 01:32:41
Vale. 01:32:44
Vale, bueno, 01:32:46
eso, rotar hacia los lados con las 01:32:47
teclas A y D, que es lo que asigna, pues 01:32:49
es simplemente un transform rotate. 01:32:51
No tiene 01:32:53
mucho más. 01:32:54
¿Vale? Decidme 01:32:57
dudas que tengáis. 01:32:58
Porque ya lo de enfundar-desenfundar 01:33:01
Ahora hablamos un poco de cámara de Cinemachine, pero para las cámaras, ¿vale? 01:33:03
¿Alguna duda? 01:33:15
Vale, sigo. 01:33:20
Igual que sucedía con los Terrain Tools, que había que incorporarlo en el Package Manager, 01:33:23
hay otro package que no viene por defecto, pero que es muy útil, que es el que se llama Cinemachine. 01:33:29
¿Vale? Que yo ya lo tengo aquí instalado. 01:33:34
Es instalarlo. 01:33:36
Cine Machine al instalarlo os incorpora aquí otro menú con muchas opciones. Pero básicamente lo que va a hacer es, por un lado, la cámara principal que tuvierais ya en la escena le va a añadir este iconito y va a incorporar, y si no, lo que habrá que hacer es buscar el componente que se llama Cine Machine Brain. 01:33:38
¿Por qué? Porque esta cámara realmente va a dejar de funcionar como una cámara 01:33:56
Me explico, va a ser la cámara principal a través de la que veamos todo 01:34:01
Pero va a estar sometida a otras cámaras que tengamos en la escena 01:34:04
De hecho yo aquí tengo otras dos cámaras 01:34:08
Con este menú que tenemos aquí podemos ir creando distintos tipos de cámaras 01:34:10
Hay muchos, pues uno para hacer como simulación de un travelling, para hacer cinemáticas 01:34:14
Hay otro que sirve para tener una vista libre 01:34:19
Hay otro que es para seguir al personaje, por ejemplo 01:34:22
este que tengo aquí, pues yo voy rotando 01:34:25
y es una vista libre, yo puedo irme moviendo 01:34:27
y bueno, hay algún límite porque no se mete 01:34:29
en el suelo, pero es vista libre, puedo 01:34:31
orbitar, todo esto se puede ir ajustando 01:34:33
pero yo, luego cuando doy a la 01:34:36
control y veis que pasa de una 01:34:37
a otra, estamos pasando de esta cámara 01:34:39
a esta, y literalmente 01:34:41
si nos fijamos en este cinemachine 01:34:44
que tenemos aquí, fijaos que yo 01:34:46
cuando cambio de una a otra 01:34:47
cambia, veis que pasa de llamarse 01:34:48
en cámara, como esta que tenemos aquí 01:34:52
a CML, a CMA, a Cine Machine, 01:34:53
perdón, a Free Look, ¿vale? Es un gestor, este Main Camera, 01:34:58
este Cine Machine Brain, de qué cámara es la que debemos ir 01:35:01
capturando, ¿vale? Entonces, vamos a ir preparando cámaras 01:35:05
en la escena, que en este caso, una, esta de Free Look, lo que va a hacer es 01:35:08
ir persiguiendo al personaje en todo momento, y esta que tenemos aquí 01:35:13
lo va a hacer igual, pero ya teniendo unas coordenadas próximas a su 01:35:17
a su hombro. Con Cinemachine lo que vamos a ir haciendo entonces es que cada cámara de Cinemachine va a tener el valor de prioridad. El que tenga mayor prioridad va a ser la que se vea, es decir, la que esté en este campo de la cámara en vivo de Cinemachine Brain. 01:35:21
¿Qué es lo que habrá que ir haciendo? Ir cambiando, por ejemplo, al desenfundar, ¿vale? Digo, la FreeLux Camera pasa a tener una prioridad de 1 y cuando enfunda pasa a tener de 22 para tener más que la otra, ¿vale? Y entonces se van cambiando de una a otra de manera automática. 01:35:38
Como sucedía en otros casos, para acceder a los métodos y propiedades de Cinemachine habrá que incorporar la librería de Cinemachine, Using Cinemachine. Tiene su propia librería con muchos parámetros que si no se usaran Cinemachine, pues para qué incorporarlos y qué pese. 01:35:54
Entonces, simplemente con esta línea ya podemos acceder a las propiedades y métodos de Cinemachine. 01:36:12
E igual que sucedía con el Animator y con el Character Controller, si queremos acceder a las propiedades de la Free Look Camera, por ejemplo, habrá que poner que acceda a ese componente de Free Look Camera. 01:36:20
Para acceder, ¿vale? Cinemachine Free Look Camera. Como siempre, se llama igual. Si quiere acceder a la orden en cámara, habrá que poner Cinemachine Virtual Camera, que es la otra cámara que he creado aquí. 01:36:36
Vaya, que cuando incorporamos esta librería, aquí podemos poner Cinemachine, ¿vale? Y aparecerán las distintas cámaras y propiedades que tiene Cinemachine. 01:36:51
Luego, igualmente, habrá que capturar con un GetComponent esa cámara de Cinemachine o, como se puede hacer aquí, poner un SerializeField y lo hemos arrastrado directamente. 01:36:59
directamente. Recordad que como esta cámara, a diferencia de los otros componentes que hemos 01:37:14
hecho el GetComponent, no es un componente que esté en el propio objeto que tiene el script, 01:37:22
a CharacterController y el Animator, con un GetComponent era fácil, pero aquí lo que queremos 01:37:26
es controlar desde el personaje o un componente que está en otro objeto. Entonces ahí lo más fácil 01:37:31
es serialize fill y arrastrarlo y que ya coja ese ese componente vale y una vez lo tenemos pues bueno 01:37:38
hay mucha documentación de cinemachine os dejo vídeos es ir viendo cómo se controlan en el tema 01:37:46
os dejo los principales valores pero hay dos cámaras principales la virtual y la free look 01:37:51
la virtual es como una cámara pues que intenta basarse más en un objeto al que seguir vale 01:37:59
Sería esta, por ejemplo, aunque le haya cambiado el nombre. 01:38:05
Esta es una virtual cámara. 01:38:07
Y con esto lo que podemos hacer es decirle, vale, tú sigue a un personaje y lo arrastramos. 01:38:09
Sigue al personaje y luego aparte hacia donde tiene que mirar es hacia la cabeza del personaje 01:38:13
para que esté un poco a su altura. 01:38:19
Veis que lo que está centrado es la cabeza, ¿vale? 01:38:20
Ya arrastrando esos dos elementos, ya vais a ver que tenéis una cámara 01:38:23
con la que podéis orbitar alrededor de un personaje y le va a ir siguiendo, ¿vale? 01:38:27
Algo que, como hemos establecido las cámaras hasta ahora, 01:38:32
Pues será más complicado 01:38:35
Simplemente ya por cómo viene configurado 01:38:36
¿Vale? Vais a ver que con el ratón 01:38:39
Vais a poder ir 01:38:41
Moviendos 01:38:42
Alrededor 01:38:44
El ratón es el que hace que se mueva 01:38:45
Porque, a ver, perdonad 01:38:49
En algún punto 01:38:50
Es que por defecto ya viene 01:38:53
Con el que coja el ratón 01:38:55
Pero esto se podía cambiar 01:38:57
A ver, un segundo 01:38:58
En algún momento 01:38:59
a ver 01:39:02
en donde se definía 01:39:05
porque por código, perdón 01:39:10
a lo mejor lo hice por código 01:39:16
pero por defecto 01:39:18
si, es que por defecto ya viene con la 01:39:19
con la cámara 01:39:21
para que se mueva así 01:39:24
lo que se puede ir definiendo 01:39:27
vale, debería haber 01:39:29
creo que para cambiarlo si que hay que añadir una extensión 01:39:31
pero por defecto está cogiendo la 01:39:35
es que no me acuerdo muy bien 01:39:37
porque siempre con lo hago con el ratón vale lo que sí se puede ir haciendo es pues por ejemplo 01:39:39
en este no perdona la que orbita directamente la free look vale verdad y esa es la que sí que está 01:39:47
vinculada a el x y axis está vinculada a al axis de pivotar bueno aquí está con él con él 01:39:55
el Input Provider, que es para el Input System, pero os saldrá, si no, directamente con el ratón normal. 01:40:05
Esta es la que permite rotar igual. Queremos que siga al superviviente y que apunte hacia la cabeza. 01:40:19
Se pueden ir poniendo, y si vamos a escena lo veremos, tres, lo que se llaman Rigs, 01:40:26
¿Vale? Que son esos tres 01:40:31
Circulitos rojos 01:40:34
Que son a distintas alturas 01:40:36
A las que se puede poner, si os fijáis cuando yo voy 01:40:38
Moviendo la 01:40:40
Cámara, ¿vale? Veis que cuando 01:40:40
Se pone arriba como que se cierra 01:40:44
Como que hace, como si hiciera una esfera 01:40:45
Alrededor del personaje, ¿vale? 01:40:47
Todo eso se puede ir definiendo 01:40:49
Con el middle rig 01:40:51
El bottom rig, ¿no? Por ejemplo, queremos que 01:40:53
El bottom rig, que si bajamos 01:40:55
Sea mucho más grande 01:40:58
Pues con esto, si vamos al botón Rig y buscamos el punto en el que se hace más grande, que va a ser aquí, ¿vale? En el botón Rig vamos a darle un radio mucho mayor, ¿vale? Vais a ver que yo ahora cuando baje esta FreeLux Camera se aleja, ¿vale? Bueno, y ahí no he ajustado el cápsula este del carácter control, pues no se está posando bien, pero veis que se aleja en vez de estar acercándose como sucedía antes, ¿vale? 01:40:59
Pues aquí hay tres rigs, luego con sus propias configuraciones, con las que podemos ir definiendo distintos comportamientos. 01:41:28
Que si el personaje cuando está en el centro, si rotamos mucho hasta que no llegue a un cierto punto, que es esto que tenemos aquí, no se intenta recolocar. 01:41:34
Que cuando soltamos, veréis que se recoloca pasado cierto tiempo, que es el de dumping. 01:41:44
Bueno, hay un montón de opciones y tampoco en este curso nos vamos a meter mucho en esto. 01:41:49
Os he dejado tutoriales de ampliación y un poco en el tema se habla de ello, pero lo importante es eso, saber que el main camera lo que está haciendo en todo caso es gestionar qué cámara se está viendo de las otras que tengamos de Cinemachine creadas, ¿vale? 01:41:53
Y todo eso dependerá de, bueno, pues que esté activa también en vez de darle prioridad, ¿vale? 01:42:08
En lugar de la prioridad también se puede decir que esta FreeLux Camera de pronto no está activa. 01:42:13
Pues ahora la que está cogiendo es la otra que hay, que sí está activa y tiene la prioridad más alta, ¿vale? 01:42:20
Si lo vuelvo a activar, que también sabríamos activarla por código, al darla vuelve a ser la que tenemos aquí, ¿vale? 01:42:26
Entonces, con estas opciones, pues podemos ir generando la cámara de seguimiento y, bueno, un poco lo que resuelve la tarea. Luego estaría todo lo relacionado con la inteligencia artificial, que es el NASMES, es el último apartado del tema, que básicamente es otro modo de mover personajes. 01:42:33
En este caso suele ser, aunque no siempre, he visto usos creativos incluso en alguno de vuestros proyectos, un compañero lo ha hecho, que ha usado el NASMES para mover al personaje principal. 01:42:53
Pero un NASMES, como sucede con este zombie, básicamente lo que es, en el tema se habla de cómo se despliega, etc. 01:43:04
Pero si vamos aquí a Navigation hay un panel con el que podemos definir de un escenario qué partes son navegables por un automata, por una inteligencia artificial. 01:43:11
Entonces, por ejemplo, en estas opciones se pueden poner también opciones de cuánto de empinada y qué altura de escalones puede caminar ese personaje. 01:43:22
Bueno, pues cuando se baquea y se le asocia a un personaje con los distintos elementos de un Nazmesh, luego cuando lo aplicamos a los zombies, este Nazmesh agent podrá decir que sea de tipo humanoide y se mueva por las zonas que se han baqueado. 01:43:35
Entonces el personaje ahí es donde sabrá por dónde ir caminando. Y de una forma autónoma, con una variable que se llama, con una instrucción que se llama setDestination, que es esta de aquí, podemos ir diciendo que se mueva de un punto a otro siguiendo esa malla de navegación que se ha dibujado. 01:43:57
¿Vale? Entonces, con el 01:44:19
NavMesh, lo que se hace es 01:44:21
Definir las áreas del escenario por las que 01:44:23
Cada objeto puede ir moviéndose 01:44:25
¿Y qué se va haciendo? 01:44:27
Pues se le van diciendo puntos del escenario 01:44:29
Entre los que ir caminando 01:44:31
Y se irá caminando 01:44:32
Con una velocidad concreta 01:44:34
¿Vale? Con una aceleración 01:44:37
Concreta, irá de un punto a otro 01:44:39
Sin parar 01:44:41
Que luego, en cierto, vais a ver 01:44:42
Mirad ese personaje que está ahí quieto 01:44:45
Y de pronto dice, ala, me pongo a caminar hacia otro sitio 01:44:47
Eso es porque le hemos marcado otro punto del escenario y va a ir caminando por las áreas que puede caminar hasta llegar a ese punto de manera automática. Cuando llega a ese punto, dice, tengo que ir a otro. Y que se va a ir diciendo. Cuando un personaje, cuando un agente llega a un destino, ¿vale? De pronto, a ver, perdonad, esto va a estar aquí, ¿vale? Ronda random. 01:44:49
Si no está aceptada el personaje, que es una condición que si ve al personaje, digamos, cambia, ¿vale? Va a ir de un punto a otro de los que están definidos en un array y va a ir a ese, setDestination. Cuando llega al destino, vuelve a capturar otro destino y volverá a hacer otro setDestination hasta otro punto, ¿vale? 01:45:15
En el tema nuevamente se os ponen instrucciones de cómo conseguir esto, pero sobre todo que sepáis eso, que la NATMES sirve para crear estas mallas de por dónde se puede caminar en función de, pues eso, inclinaciones, pasos, zonas que nosotros demarquemos que también se pueden marcar áreas con colliders, por ejemplo, y por ahí no puede caminar, ¿vale? 01:45:34
Entonces, ya con eso, el personaje va a tener las áreas, esta inteligencia artificial, por las que va a poder caminar. Si, por ejemplo, el personaje pudiera subir con ese carácter controller cuestas más empinadas que el personaje, pues en este juego, bueno, no sé en qué valores lo he puesto, pero el chico ya casi no sube ahora, ¿vale? Una forma de salvarse sería subir más que el automata, porque hasta cierto punto no podría subir, ¿vale? Fijaos que ahí se ha quedado quieto, ¿vale? 01:45:57
Yo he conseguido llegar por un salto, por eso se ha quedado así un poco pillado, ¿no? 01:46:24
Pero veis que el zombi ya no puede subir, intenta llegar a mí porque ahora mismo su destination es mi transform 01:46:29
y por eso siempre va a intentar seguirme, ¿vale? 01:46:35
Con set destination a ese personaje le estamos diciendo hacia dónde tiene que ir, ¿vale? 01:46:38
Y no va a dejar de perseguirme hasta que estemos a una distancia que pase a un estado de no detectado, ¿vale? 01:46:43
Bueno, esto ya, esa parte de la IA es la opcional, ¿vale? Estos NATMES es opcional, pero también tenéis que conocer un poco pues que es un Finite State Machine, una FSM, que es uno de los apartados de los que se habla y un poco el funcionamiento básico de una inteligencia artificial en Unity, ¿vale? 01:46:50
Las inteligencias artificiales, cada motor de videojuegos lo tratará de una forma u otra, pero Unity se basa en función de estos navmes, que son esas mallas que se pueden ir generando para que un personaje autómata se vaya moviendo por ahí. 01:47:09
vale, dudas 01:47:24
sé que habrá un millón 01:47:27
sobre todo si no os habéis puesto con la tarea 01:47:28
si no hacéis la tarea habrá un millón todavía 01:47:30
aunque podéis tener en la cabeza 01:47:32
los conceptos y los métodos principales 01:47:35
y cómo funcionan, por ejemplo lo que se habla hoy 01:47:37
pero bueno 01:47:39
hasta que no os sentéis a intentar hacerlo 01:47:41
pues todo se queda un poco en teoría 01:47:43
¿vale? para superar el examen nos puede servir 01:47:45
yo siempre os animaré 01:47:47
a que intentéis hacer la tarea 01:47:49
pero bueno, entiendo las circunstancias de cada uno 01:47:50
Y que por cómo es la normativa y cómo están las reglas del juego, digamos, las tareas no son obligatorias para superar el módulo. 01:47:53
Así que ya cada uno hará lo que quiera hacer, claro. 01:48:00
Vale, pues nada, podríamos hablar muchas más horas, pero tenemos que cortar. 01:48:07
Si tenéis dudas, decidme y si no, pues más o menos hemos hecho un repasín de esta unidad. 01:48:15
¿Cómo lo veis? 01:48:20
Le paso visto, vale 01:48:25
Lo dicho 01:48:26
Cuando vayáis leyendo el tema 01:48:27
Entiendo que esto os habrá ayudado 01:48:30
A contextualizar algunas cosas 01:48:32
Pero bueno 01:48:34
Vale 01:48:36
Lo dicho, pues nada 01:48:37
Para el examen queda 01:48:40
Queda un mes largo 01:48:42
Todavía tenéis tiempo 01:48:45
Es decir, que si lo lleváis al día 01:48:46
Os queda finiquitar este tema 01:48:49
ver el siguiente 01:48:51
que tiene muchas cosas 01:48:53
pero creo que ninguna es muy compleja 01:48:55
a no ser 01:48:58
como todo, si os metéis en harina 01:48:59
de intentar desgranar y más 01:49:01
tocamos muchas cosas, a veces superficiales 01:49:03
porque no da tiempo a profundizar más 01:49:05
pero bueno, creo que abarca muchas cosas 01:49:07
pero bueno, creo que es asequible 01:49:09
la tarea sí que tiene complejidad 01:49:12
si os metéis de verdad a intentar 01:49:14
hacer un shader 01:49:16
aunque os dé uno ya hecho 01:49:16
por si queréis omitir también esa parte 01:49:19
Bueno, pues ponerlo en práctica lleva tiempo también, porque primero hay que comprenderlo y ir poco a poco, pero es la forma. Vale, pues habrá una tutoría del tema 7 que, según vayamos viendo el calendario, puede que se combine con repaso del módulo, un poco de hablar de cara al examen, qué miraría más, qué menos, ¿vale? Un poco pistas, aunque yo os digo, por muchas pistas que os diga, puede entrar todo el temario que está establecido como materia de examen, pero bueno, algo veremos. 01:49:21
Si hay más tiempo, intento hacer una solo del examen y una solo de la unidad 7, pero bueno, tampoco quiero agobiaros con muchas tutorías, a menos que vea dudas en los foros, claro. 01:49:51
Pero como no las veo, pues eso, yo voy hablando un poquito de las cosas y lo intento conectar con la tarea para ayudaros y que lo ubiquéis mejor. 01:50:04
Bueno, me callo. ¿Alguna duda? ¿Algo que queráis que hablemos? 01:50:13
ya has hablado mucho 01:50:18
sí, sí, tengo la boca bastante seca 01:50:22
pero bueno 01:50:25
todavía me queda para un rato 01:50:26
si lo necesitáis 01:50:28
pues nada, damos por 01:50:29
concluida la tutoría 01:50:34
y sé que 01:50:36
es complicado, sé que hay muchas cosas 01:50:38
pero bueno 01:50:40
también espero que os pueda ser útil en algún momento 01:50:41
y que os parezca interesante 01:50:44
pues lo dicho, muchas gracias por 01:50:45
asistir y nos vemos 01:50:48
calculo que en un par de semanas 01:50:49
es que también algunos compañeros 01:50:52
tienen ahora las defensas de proyectos 01:50:54
hay que intentar cuadrar los días 01:50:56
esperemos que tampoco haya apagones generales 01:50:57
porque visto lo visto 01:51:00
entonces bueno, os lo iré anunciando como siempre 01:51:01
pero eso, habrá todavía 01:51:04
que dar alguna tutoría 01:51:06
pues muchas gracias por 01:51:07
asistir, por vuestro tiempo 01:51:09
gracias a ti, hasta luego 01:51: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:
27
Fecha:
29 de abril de 2025 - 20:15
Visibilidad:
Clave
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
1h′ 51′ 20″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
922.32 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid