1 00:00:02,609 --> 00:00:06,070 Pues, inicio grabación. ¿Qué tal? ¿Cómo estáis? ¿Cómo va todo? 2 00:00:07,610 --> 00:00:09,189 Muy liados, la verdad. 3 00:00:09,789 --> 00:00:11,070 Con el estudio, ¿no? Entiendo. 4 00:00:11,769 --> 00:00:13,589 El estudio, el trabajo y todo lo demás, pero bueno, bien. 5 00:00:14,269 --> 00:00:15,789 Sí, un poco igual. 6 00:00:16,370 --> 00:00:23,929 Vale. Venga, pues vamos a ello. Así de primeras, aunque luego lo posponga un poco para después, según lo que me vayáis planteando. 7 00:00:24,070 --> 00:00:28,410 ¿Así dudas que me queráis plantear? ¿Hay alguna? Que no he visto ninguna en foros, etc. 8 00:00:28,410 --> 00:00:30,609 Sí, yo tenía una duda 9 00:00:30,609 --> 00:00:32,429 con respecto a las preguntas abiertas 10 00:00:32,429 --> 00:00:34,929 ¿Van a ser definiciones o van a ser 11 00:00:34,929 --> 00:00:36,829 hazme un script 12 00:00:36,829 --> 00:00:38,270 de algo por el estilo? 13 00:00:39,090 --> 00:00:39,810 Puede ser 14 00:00:39,810 --> 00:00:43,049 es decir, te lo respondo 15 00:00:43,049 --> 00:00:44,549 ahora o después, si te parece, ¿vale? 16 00:00:45,729 --> 00:00:47,030 Si voy a hablar 17 00:00:47,030 --> 00:00:48,909 del simulacro y así también hablo 18 00:00:48,909 --> 00:00:50,950 para no dar dos veces la vuelta a lo mismo 19 00:00:50,950 --> 00:00:52,990 ¿Alguna cosa más? 20 00:00:54,829 --> 00:00:56,810 Para yo tenerlo en cuenta, es para gestionar 21 00:00:56,810 --> 00:00:58,109 un poco el... Vale 22 00:00:58,109 --> 00:01:13,849 Lo primero, bueno, entiendo que la fecha, el aula, os he enviado mensaje, lo tenéis creo todo en el aula virtual. Voy a compartir pantalla también para que no haya problemas. Compartir audio también por si acaso. Vale. 23 00:01:13,849 --> 00:01:35,510 Vale, pues vamos a ver, me meto en DAME. Nada, simplemente entiendo que no hay dudas sobre lo que es el procedimiento de examen. Importante es que me confirméis, bueno, ya os lo hice saber a través del foro, lo vimos en alguna otra tutoría, de hecho, el simulacro de examen, ¿no? 24 00:01:35,510 --> 00:01:55,769 Que es algo que recomiendo muchísimo que veáis, sobre todo para que conozcáis ya las instrucciones, que van a ser las mismas del día del examen, ¿vale? No sé si tenéis dudas sobre ello. Por ejemplo, en los exámenes a veces está la duda de, bueno, que hay gente que en el tipo test empieza a marcar las preguntas en el cuerpo de texto. 25 00:01:55,769 --> 00:02:16,509 Recordad que hay que responder siempre en la tabla de respuestas. Y el criterio de tachar, si queréis cancelar, dejar sin respuesta alguna de las opciones que hay dado, incluso la respuesta corregida, pues está el procedimiento escrito y en el simulacro incluso se ve. 26 00:02:17,349 --> 00:02:27,150 También se ven, bueno, son ocho preguntas, además que no van a ser las mismas en el examen, pero sirve un poco para ver la estructura de ocho preguntas de tipo test. 27 00:02:27,150 --> 00:02:39,969 Serán 32. Importante que sepáis que las respuestas correctas suman y las erróneas restan un cuarto de la pregunta, digamos, un 0,0625. 28 00:02:39,969 --> 00:03:09,050 Entonces, es importante que tengáis en cuenta que una respuesta fallida puede restar. Sobre la pregunta del compañero, y así ya voy, aparte de las de tipo test, que entiendo que es más sencillo, puede caer cualquier cosa de las que estamos tratando en el curso, pero básicamente van a ser preguntas tipo test con una sola respuesta posible correcta. 29 00:03:09,050 --> 00:03:20,409 Sobre las preguntas de desarrollo, ¿vale? En los dos hay tres ejemplos porque, bueno, otra cosa que puede pasar, no va a ser el caso, pero va a haber dos preguntas de desarrollo. 30 00:03:20,409 --> 00:03:29,370 Aquí la segunda la dividí en dos apartados, entre otras cosas, para poner más tipologías de pregunta, pero va a haber dos preguntas de desarrollo, ¿no? Una, dos, no van a ser tres. 31 00:03:29,909 --> 00:03:37,830 Sí que es verdad que como sucede, perdonad que suba y baje tanto, ¿vale? Como sucede en esta, se puede descomponer en varios ítems o que pida varias cosas, ¿vale? 32 00:03:37,830 --> 00:03:49,009 Os adelanto ya, ¿vale? Que estas preguntas, y va a haber una de ellas muy parecida a este tipo de pregunta, en la que va a haber un código y va a ser que interpretéis ese código, ¿vale? 33 00:03:50,069 --> 00:03:59,870 Y ahí, digamos que es un poco abierto a que yo vea la comprensión que tenéis de ese código, en base a lo que os pregunto, pues suele ser esta línea, ¿vale? 34 00:03:59,870 --> 00:04:12,669 Si, por ejemplo, os pregunto qué supone a nivel de código esta línea, pues que me digáis, ¿vale? Tanto de dónde viene, por ejemplo, esta variable, ¿vale? Pues que es de tipo animator para hacer animaciones, como que hace este método, ¿vale? 35 00:04:12,669 --> 00:04:33,449 Incluso si luego me decís, porque los códigos no van a ser muy largos, esta línea luego es usada en este punto, en el método de saltar, porque se va a ejecutar un trigger llamado jam dentro del panel animator, de los parámetros que se han ejecutado, ese tipo de respuesta sí que es amplia. 36 00:04:33,449 --> 00:04:45,149 De los 10 puntos que consta el examen, 2, uno a cada pregunta, va a ser de desarrollo. Y son de desarrollo un poco en parte para ver cómo os expresáis también y cómo lo entendéis. 37 00:04:45,769 --> 00:05:00,850 Porque es cierto que las preguntas de test pueden ser muy concretas o tratar cualquier punto, pero sí que en estas preguntas se trata un poco de que desarrolléis, como dice la propia tipología de preguntas. 38 00:05:00,850 --> 00:05:24,149 Entonces, os sugiero, esto es una sugerencia, que primero leáis las preguntas de desarrollo al iniciar el examen para ver un poco de qué van, y ver cuánto tiempo os puede llevar, si lo entendéis o no, y luego hagáis, es decir, no contestéis, pero que lo tengáis un poco en cuenta para no gastar todo el tiempo del examen en desarrollar esto. 39 00:05:24,149 --> 00:05:27,050 porque es verdad que puede ser muy amplio 40 00:05:27,050 --> 00:05:29,470 no hace falta que sea súper minucioso 41 00:05:29,470 --> 00:05:31,810 lo que me importa es que yo vea 42 00:05:31,810 --> 00:05:33,329 si la pregunta es de este tipo 43 00:05:33,329 --> 00:05:35,529 que va a haber una de este tipo, con otras líneas 44 00:05:35,529 --> 00:05:36,730 pero va a ser de este tipo 45 00:05:36,730 --> 00:05:38,149 que entienda que entendéis 46 00:05:38,149 --> 00:05:40,949 pues que es cada línea 47 00:05:40,949 --> 00:05:42,470 y por qué está ahí y qué función tiene 48 00:05:42,470 --> 00:05:44,790 porque no va a haber líneas al azar 49 00:05:44,790 --> 00:05:46,730 no debería haber líneas 50 00:05:46,730 --> 00:05:48,329 si que alguna a lo mejor no se 51 00:05:48,329 --> 00:05:50,930 está referenciando 52 00:05:50,930 --> 00:05:52,189 no es la que hay que contestar 53 00:05:52,189 --> 00:06:16,610 Pero que no son líneas de paja, digamos, puestas a drede, no debería ser. Pero sí que, pues eso, si aquí, por ejemplo, esta variable está guardando la referencia a un componente animator de este script en el que se está aplicando, pues si luego también habláis, se pedirá que habléis en el conjunto de código qué función tiene, pues eso es lo que va a dar la nota máxima. 54 00:06:16,610 --> 00:06:32,269 Lo bueno de estas preguntas de desarrollo, de estas dos, es que a diferencia de las de tipo test, no restan. Es decir, puede restar de que yo no vaya sumando porque no ponéis nada que sea la respuesta, pero bueno, que podéis esmeraros. 55 00:06:32,269 --> 00:06:51,829 A ver, me preguntan, ¿te tendríamos que explicar qué hace esa línea o explicar el código en general? Sobre todo, en este caso, por ejemplo, me interesa que me expliquéis esta línea, pero para hablar de esta línea y de esta primera parte me tendréis que hablar de dónde viene esta variable, se ha generado antes. 56 00:06:51,829 --> 00:06:53,990 entonces, para yo saber que entendéis 57 00:06:53,990 --> 00:06:55,529 toda la línea, por partes 58 00:06:55,529 --> 00:06:57,509 sí que debería haber una mención 59 00:06:57,509 --> 00:07:00,069 a que se ha declarado 60 00:07:00,069 --> 00:07:01,529 esta variable de tipo animator 61 00:07:01,529 --> 00:07:03,589 ¿vale? Sí 62 00:07:03,589 --> 00:07:05,870 claro, me preguntan también, en plan 63 00:07:05,870 --> 00:07:08,050 ¿qué hace el getComponent en este caso? 64 00:07:08,189 --> 00:07:09,709 claro, eso es lo que me interesa 65 00:07:09,709 --> 00:07:12,089 que me digáis, ¿por qué? ¿qué acción 66 00:07:12,089 --> 00:07:12,970 hace este 67 00:07:12,970 --> 00:07:16,009 esta instrucción, esta orden? 68 00:07:16,529 --> 00:07:17,529 ¿vale? pues por ejemplo aquí 69 00:07:17,529 --> 00:07:19,810 dado que no hay nada que referencia 70 00:07:19,810 --> 00:07:23,810 otro script, lo que quiere decir aquí es que esta variable llamada 71 00:07:23,810 --> 00:07:27,850 anim de tipo animator está referenciando un componente 72 00:07:27,850 --> 00:07:31,850 llamado animator, ¿vale? Está cogiendo esa información y a partir de ahí, siempre 73 00:07:31,850 --> 00:07:35,149 que hablemos de esta variable, estaremos 74 00:07:35,149 --> 00:07:40,110 aplicando instrucciones o dirigiéndonos al componente 75 00:07:40,110 --> 00:07:43,430 que está aplicado en ese script, ¿vale? 76 00:07:43,709 --> 00:07:47,730 Entonces, por ejemplo, si aquí no hubiéramos cogido este getComponent, este 77 00:07:47,730 --> 00:07:49,610 animator cuando hiciéramos 78 00:07:49,610 --> 00:07:51,610 la orden derivada de todo esto 79 00:07:51,610 --> 00:07:54,009 setTriggerJam, si no hubiéramos 80 00:07:54,009 --> 00:07:55,709 hecho este getComponent no funcionaría 81 00:07:55,709 --> 00:07:57,569 entonces sobre todo es eso 82 00:07:57,569 --> 00:07:59,350 o por ejemplo aquí 83 00:07:59,350 --> 00:08:01,589 se ha generado en esta segunda línea 84 00:08:01,589 --> 00:08:03,790 se ha generado una variable de tipo float 85 00:08:03,790 --> 00:08:05,529 una variable global 86 00:08:05,529 --> 00:08:07,529 y en el método update se está 87 00:08:07,529 --> 00:08:09,389 declarando que este 88 00:08:09,389 --> 00:08:11,670 xAxis lo que esté recogiendo es 89 00:08:11,670 --> 00:08:13,730 una interacción 90 00:08:13,730 --> 00:08:15,490 del jugador, por eso estamos usando 91 00:08:15,490 --> 00:08:16,569 esta clase input 92 00:08:16,569 --> 00:08:19,490 que se basa en un eje 93 00:08:19,490 --> 00:08:21,529 que por tanto tiene 94 00:08:21,529 --> 00:08:23,709 posiciones que puede captar 95 00:08:23,709 --> 00:08:25,990 tanto hacia lo positivo y lo negativo 96 00:08:25,990 --> 00:08:27,509 y ese getaxis 97 00:08:27,509 --> 00:08:28,889 se llama horizontal 98 00:08:28,889 --> 00:08:31,649 se tiene que haber planteado antes en los 99 00:08:31,649 --> 00:08:33,750 project settings que ese eje se llame 100 00:08:33,750 --> 00:08:35,850 horizontal, ¿para qué se usa luego? 101 00:08:36,049 --> 00:08:37,610 pues por ejemplo si vamos bajando 102 00:08:37,610 --> 00:08:39,629 se mostrará en consola 103 00:08:39,629 --> 00:08:41,129 en el posterior de backlog 104 00:08:41,129 --> 00:08:43,590 y aparte se usa para añadir 105 00:08:43,590 --> 00:08:44,149 una fuerza 106 00:08:44,149 --> 00:08:54,850 por físicas al objeto, ¿vale? Sobre todo me interesa, sobre todo, de esta línea hacia su declaración, es lo más importante, ¿vale? 107 00:08:54,850 --> 00:09:02,309 Si luego aparte me habláis de esta línea, posteriormente, esta explicación de esta línea, evidentemente es lo que quiero, pero si aparte me decís 108 00:09:02,309 --> 00:09:12,470 cómo se usa después, pues mejor aún, ¿vale? O por ejemplo, aquí si os fijáis, y esta ya sí que hay que ser lógico, si pregunto que en el update 109 00:09:12,470 --> 00:09:27,669 Si se cumple esta condición, esta línea, al decir saltar, me tendré que decir que se está llamando al método saltar, que posteriormente hará tal cosas y además se le llama cuando se pulse la barra espaciadora, en el momento de pulsar la barra espaciadora. 110 00:09:27,669 --> 00:09:47,990 Entonces, si esta línea no es solo decirme, ¿se ejecutará el método de saltar? Eso no se considera una respuesta específica y correcta. Es decir, sí que sumará algo de puntuación, pero si estoy señalando esta línea y estoy diciendo qué función tiene en el contexto del script, pues tenéis que desarrollar un poco hacia dónde va y de dónde viene. 111 00:09:47,990 --> 00:09:51,210 en este caso, de hecho es 112 00:09:51,210 --> 00:09:52,049 casi 113 00:09:52,049 --> 00:09:55,169 exigible que me contéis 114 00:09:55,169 --> 00:09:56,769 que este método hace estas acciones 115 00:09:56,769 --> 00:09:58,769 sí 116 00:09:58,769 --> 00:10:00,950 alguien creo que ha levantado la mano 117 00:10:00,950 --> 00:10:03,190 sí, yo 118 00:10:03,190 --> 00:10:05,490 a ver, entonces sería más o menos una cosa así como decir 119 00:10:05,490 --> 00:10:06,970 genero dos variables 120 00:10:06,970 --> 00:10:09,190 una animator y otra rigidbody rb 121 00:10:09,190 --> 00:10:11,029 la primera, el start 122 00:10:11,029 --> 00:10:13,230 la declaro, cojo su componente 123 00:10:13,230 --> 00:10:14,669 animator y luego además 124 00:10:14,669 --> 00:10:16,409 dentro del componente animator 125 00:10:16,409 --> 00:10:18,250 me acedo a su RigidBody 126 00:10:18,250 --> 00:10:20,330 lo cual me permite a base abajo 127 00:10:20,330 --> 00:10:22,409 con el tema de saltar, recuperarla 128 00:10:22,409 --> 00:10:24,769 a través de un trigger, más o menos sería una cosa así 129 00:10:24,769 --> 00:10:26,570 ¿no? Sí, es verdad que por ejemplo 130 00:10:26,570 --> 00:10:28,610 me has hablado del RigidBody y para 131 00:10:28,610 --> 00:10:30,669 esta línea, ¿vale? no es 132 00:10:30,669 --> 00:10:32,669 necesario, me estás hablando de algo que no tiene 133 00:10:32,669 --> 00:10:34,649 nada que ver con la línea. Sí, pero la siguiente 134 00:10:34,649 --> 00:10:36,570 sí está. Sí, pero yo te estoy hablando 135 00:10:36,570 --> 00:10:38,750 de esta línea solo, cuando te pregunto 136 00:10:38,750 --> 00:10:40,190 por el ítem 1, ¿vale? 137 00:10:40,409 --> 00:10:42,250 O sea, solamente las específicas esas, ¿vale? 138 00:10:42,350 --> 00:10:44,370 Efectivamente, pero te estoy hablando de esta línea 139 00:10:44,370 --> 00:10:45,629 y esta línea sí que tiene 140 00:10:45,629 --> 00:10:48,110 vinculación con otras líneas dentro del script 141 00:10:48,110 --> 00:10:49,870 ¿vale? aquí en este punto 142 00:10:49,870 --> 00:10:51,909 no estamos hablando, en el 1 no estamos hablando 143 00:10:51,909 --> 00:10:54,009 del rigidbody, no tiene nada que ver el rigidbody 144 00:10:54,009 --> 00:10:56,110 es decir, yo podría borrar la línea del rigidbody 145 00:10:56,110 --> 00:10:57,690 y esta funcionaría perfectamente 146 00:10:57,690 --> 00:10:59,929 y luego posterior 147 00:10:59,929 --> 00:11:01,809 ¿vale? sí que es verdad que 148 00:11:01,809 --> 00:11:03,929 cuando te ponga esta, aquí sí 149 00:11:03,929 --> 00:11:05,450 me tienes que hablar de ese rigidbody 150 00:11:05,450 --> 00:11:07,870 porque si no he hecho esta operación 151 00:11:07,870 --> 00:11:09,549 de antes, esto no funcionaría 152 00:11:09,549 --> 00:11:11,929 ¿vale? esto en las prácticas 153 00:11:11,929 --> 00:11:13,830 lo habéis puesto en práctica, básicamente 154 00:11:13,830 --> 00:11:17,210 esta va a ser una, luego es muy probable 155 00:11:17,210 --> 00:11:18,309 que haya otras de tipo 156 00:11:18,309 --> 00:11:21,250 hay un error en el script 157 00:11:21,250 --> 00:11:22,850 ¿por qué? ¿cómo se solucionaría? 158 00:11:23,909 --> 00:11:25,309 vale, pues es que veáis el script 159 00:11:25,309 --> 00:11:26,889 igual que haría 160 00:11:26,889 --> 00:11:28,169 y vosotros al hacerla 161 00:11:28,169 --> 00:11:30,669 un script, el desarrollo de un script 162 00:11:30,669 --> 00:11:33,269 pues claro, cuando sale esta línea no se ejecuta 163 00:11:33,269 --> 00:11:34,129 el script, es un error 164 00:11:34,129 --> 00:11:36,710 por tanto hay que ver cómo solucionarlo 165 00:11:36,710 --> 00:11:39,029 vale, pues en vez de hacerlo no tenemos 166 00:11:39,029 --> 00:11:41,169 ordenador para hacerlo, pero me lo podéis comentar por escrito 167 00:11:41,169 --> 00:11:42,929 y otra tipología 168 00:11:42,929 --> 00:11:44,509 de pregunta de desarrollo es que os pregunte 169 00:11:44,509 --> 00:11:46,230 este método, ¿qué es lo que hace? 170 00:11:46,909 --> 00:11:48,590 ¿Vale? Y hay dos métodos 171 00:11:48,590 --> 00:11:50,750 muy parecidos o que hacen acciones parecidas 172 00:11:50,750 --> 00:11:52,450 ¿qué es lo que harían? 173 00:11:52,690 --> 00:11:53,990 ¿Vale? Pues por ejemplo, aquí hablo 174 00:11:53,990 --> 00:11:56,409 ¿qué diferencias hay entre 175 00:11:56,409 --> 00:11:58,830 getKeyDown, getKey y getKeyUp? 176 00:11:59,190 --> 00:12:00,669 Pues la respuesta correcta sería que son 177 00:12:00,669 --> 00:12:02,769 tipos de interacción basados en 178 00:12:02,769 --> 00:12:04,450 pulsar una tecla, ¿vale? 179 00:12:04,570 --> 00:12:06,629 Solo que la diferencia entre los tres 180 00:12:06,629 --> 00:12:08,409 un poco, pues hablando de cada uno 181 00:12:08,409 --> 00:12:11,190 uno se activaría, se ejecutaría 182 00:12:11,190 --> 00:12:16,750 la orden en el momento que se pulsa la tecla, otro en este GetKey mientras se mantiene pulsada 183 00:12:16,750 --> 00:12:21,870 y en el GetKeyUp cuando se soltara. Y luego ya si ponéis un ejemplo de qué hace cada 184 00:12:21,870 --> 00:12:27,710 uno, un ejemplo específico, pues ya la respuesta sería redonda. Yo sobre todo voy a intentar 185 00:12:27,710 --> 00:12:36,250 ver qué entendéis, bueno, pues qué es lo que se os pregunta. Por ejemplo, antes intentaría 186 00:12:36,250 --> 00:12:40,090 ser lo más específico posible. Cuando el compañero ha dicho que hacía esta línea, 187 00:12:40,090 --> 00:12:48,009 al hablar del GetComponent es que recoge el componente del GameObject en el que esté aplicado este script. 188 00:12:48,570 --> 00:12:50,590 Hay que decir que esto es lo que hace el GetComponent. 189 00:12:50,669 --> 00:12:55,309 El GetComponent es básico, lo habéis usado en todas las tareas desde la unidad 3 como mínimo. 190 00:12:55,950 --> 00:13:02,210 El GetComponent es una referencia al componente que tiene el objeto. 191 00:13:02,669 --> 00:13:05,049 Es una especie de puente que se hace. 192 00:13:06,049 --> 00:13:07,850 ¿Sí? ¿Hasta aquí dudas? 193 00:13:07,850 --> 00:13:11,789 ahora de todos modos cuando vayamos también repasando 194 00:13:11,789 --> 00:13:12,850 cada tema pues os voy 195 00:13:12,850 --> 00:13:14,169 os voy 196 00:13:14,169 --> 00:13:17,629 bueno, diciendo lo que me parece más importante ¿vale? 197 00:13:19,629 --> 00:13:21,070 vale, hasta aquí dudas 198 00:13:21,070 --> 00:13:23,370 habéis ojeado el simulacro 199 00:13:23,370 --> 00:13:25,090 y no hay duda de 200 00:13:25,090 --> 00:13:27,649 ni de la estructura digamos 201 00:13:27,649 --> 00:13:28,250 ni de 202 00:13:28,250 --> 00:13:31,669 ya os digo, las de desarrollo 203 00:13:31,669 --> 00:13:32,950 como veis van a ser amplias 204 00:13:32,950 --> 00:13:34,850 esos dos puntos de 10, entonces 205 00:13:34,850 --> 00:13:37,490 os sugiero que las de tipo test no las dejes 206 00:13:37,490 --> 00:13:39,750 para el final, para que no perdáis todo el tiempo 207 00:13:39,750 --> 00:13:41,850 a lo mejor, pero a veces está bien 208 00:13:41,850 --> 00:13:43,750 también de primeras echarle un vistazo 209 00:13:43,750 --> 00:13:45,490 a las dos preguntas, para tenerlas ahí 210 00:13:45,490 --> 00:13:47,169 digamos, cocinándose 211 00:13:47,169 --> 00:13:49,490 esto por supuesto es una recomendación 212 00:13:49,490 --> 00:13:51,710 lo podéis hacer como queráis, y luego ya iría haciendo 213 00:13:51,710 --> 00:13:54,049 el tipo test, son 8 puntos 214 00:13:54,049 --> 00:13:55,870 es lo que más puntuación 215 00:13:55,870 --> 00:13:56,830 en conjunto 216 00:13:56,830 --> 00:13:58,649 aporta 217 00:13:58,649 --> 00:14:01,750 y una vez ya esté esto 218 00:14:01,750 --> 00:14:03,690 realizado, yo pasaría 219 00:14:03,690 --> 00:14:05,529 a desarrollar estas 220 00:14:05,529 --> 00:14:07,389 que tenemos aquí, además 221 00:14:07,389 --> 00:14:22,769 Además, esto es como consejo, es cierto que, igual que os he dicho que en todas las tareas, desde la unidad 3 como mínimo, habéis estado usando este GetComponent, hay cosas que se repiten, lo habréis visto, ¿no? Hay cosas como incluso mecánicas, por declarar variables, etc. 222 00:14:22,769 --> 00:14:42,309 Sí que es verdad, esto también como consejo, a medida que vayáis haciendo las preguntas de tipo test, al pensar cómo se resuelven, contestáis algunas, también como que refrescáis algunas cosas que luego puede que estén aquí, que a lo mejor de primeras os ponéis a contestar y os bloqueáis, y oye, a veces el tipo test hasta puede dar pistas. 223 00:14:42,309 --> 00:14:57,230 No sé si me estoy explicando, pero que, digamos, hacer como un repaso de temas, de las preguntas y luego volver a esta, yo lo aconsejo así. Oye, que queréis hacer primero esto y os lo quitáis de encima, pues, por supuesto, yo no voy a saber el orden, tampoco no me importa. 224 00:14:57,230 --> 00:15:13,450 Pero sí que intentad que se note que en estas de desarrollo, y por eso se han planteado las de desarrollo, aparte de porque a nivel de centro, digamos, se ha dicho que debe ser así, que tiene que haber algo de desarrollo, que se note, que entendéis que es cada línea. 225 00:15:13,450 --> 00:15:40,129 Vale, ¿dudas con esta parte? Vale, pues bueno, lo minimizo en cualquier caso y vamos un poco por temas, ¿os parece? Bueno, eso, no he visto ninguna duda de los foros, entonces entiendo que así no hay ninguna duda a resolver, si no decídmela, porfa, y si no, pues vamos tirando. 226 00:15:40,129 --> 00:15:56,830 Y básicamente lo que voy a ir es pasando un poco por los temas y lo que digo siempre, entrar entra todo lo que no esté en las cajas de saber más. Bueno, os voy a enseñar el ejemplo de esas cajas, pero vaya, que a poco. 227 00:15:56,830 --> 00:16:12,990 En las de para saber más, en muchas ocasiones lo que hay es, digamos, información extra, que por supuesto, cuanto más sepáis, siempre mejor, pero no va a ser el contenido directo del examen. 228 00:16:12,990 --> 00:16:31,370 Lo que sí que se considera, ya lo he comentado en alguna tutoría, el contenido del examen como aplicación de este examen son los enunciados de las tareas, que son voluntarias, pero eso no significa que no debierais saber resolverlas, al menos las partes que no eran opcionales. 229 00:16:31,370 --> 00:16:40,950 Entonces, bueno, pues eso, que básicamente es importante que hayáis hecho un seguimiento del curso, vaya, en la medida de lo posible. 230 00:16:41,110 --> 00:16:48,629 Pero ya os digo, lo que es el contenido del examen es los cuerpos de texto y, bueno, las cajas que son destacado o deberías conocer esas si son importantes. 231 00:16:49,570 --> 00:16:58,129 Vale, sobre el tema cero transversal, que como entiendo que habréis visto a lo largo del curso, es transversal porque en todo momento se está programando, 232 00:16:58,129 --> 00:17:02,750 Se hace desarrollo y, por tanto, se está volviendo una y otra vez. 233 00:17:02,950 --> 00:17:09,230 Luego se van dando esos métodos o acciones concretas de código referenciado a Unity, 234 00:17:09,390 --> 00:17:12,150 pero estas bases de programación son comunes a todos los lenguajes. 235 00:17:13,569 --> 00:17:21,069 Sobre este primer tema, saber un poco en qué se basa la programación, sí, podría ser interesante. 236 00:17:21,069 --> 00:17:42,089 No me parece muy concreto, así que no tendría... Este tipo de preguntas para desarrollo, por ejemplo, no entraría. No creo que os pregunte este tipo de cosas, pero bueno, a tipo test sí que es importante que sepáis que existen los lenguajes de alto nivel, de bajo nivel, que es un IDE, en nuestro caso Visual Studio. 237 00:17:42,089 --> 00:18:00,789 Bueno, ya sabéis un poco cómo funciona el IntelliSense que tenemos en Visual Studio para ir completando código, etc. Bueno, esto sobre todo si habéis estado haciendo las prácticas, igual esto es importante que sepáis que es un lenguaje interpretado y compilado, pero no es en lo que más me centraría. 238 00:18:00,789 --> 00:18:02,069 Ojo, puede entrar 239 00:18:02,069 --> 00:18:04,789 Este apartado de concepto básico de programación 240 00:18:04,789 --> 00:18:05,789 Me parece muy importante 241 00:18:05,789 --> 00:18:08,690 No solo porque os pueda preguntar 242 00:18:08,690 --> 00:18:10,069 Sobre qué es una variable, por ejemplo 243 00:18:10,069 --> 00:18:11,569 O cualquiera de estos apartados 244 00:18:11,569 --> 00:18:12,809 Sino porque básicamente 245 00:18:12,809 --> 00:18:16,730 Es esencial para que podáis aplicar el resto 246 00:18:16,730 --> 00:18:18,769 Entonces es importante 247 00:18:18,769 --> 00:18:19,990 Que sepáis qué son las variables 248 00:18:19,990 --> 00:18:20,970 Los tipos de variables 249 00:18:20,970 --> 00:18:23,630 Cómo se declaran en Unity, en César 250 00:18:23,630 --> 00:18:26,549 Por ejemplo, que un float 251 00:18:26,549 --> 00:18:28,069 Lleva una F, pues eso es vital 252 00:18:28,069 --> 00:18:29,369 Lo hemos visto desde el principio del curso 253 00:18:29,369 --> 00:18:54,970 ¿Qué es un boleano? ¿Cómo son las arrays? ¿Cómo se declaran? Este tipo de cosas. Importante también, muy importante, este tipo de operaciones, sobre todo en la tutoría que hicimos para resolver esta tarea que no era obligatoria del apartado 0, se habló de, sobre todo en las primeras tutorías que se hizo un poco de repaso, mejor dicho de explicación del lenguaje de programación, 254 00:18:54,970 --> 00:19:08,430 Se habló también de atajos o instrucciones reservadas como esta que tenemos aquí. Esto es muy importante saberlo, ¿vale? Y lo hemos visto en varios momentos, pero sobre todo en esas primeras tutorías. Esto es importante, ¿vale? 255 00:19:08,430 --> 00:19:15,730 Ahora, de todos modos, hablaremos de algunas operaciones que son básicas, que conozcamos, pero este apartado es importante. 256 00:19:16,509 --> 00:19:25,150 Los tipos de variables, qué es un array, así a nivel general cómo se declara, qué es el bucle for, que se ve en las siguientes, también importante. 257 00:19:26,890 --> 00:19:34,710 Los operadores, por supuesto, importantes. Esto es esencial. Así que es importante que sepáis todo lo relacionado con esto. 258 00:19:34,710 --> 00:19:54,470 También los relacionales, ya sabemos que no es lo mismo el igual de asignación de valores a una variable, básicamente guardar dentro de una variable un valor, 259 00:19:54,470 --> 00:20:08,390 Es este igual. No es una ecuación en la que los dos lados son similares, sino que el primero sirve para abrir o, digamos, especificar qué variable es la que va a albergar la operación posterior. 260 00:20:08,390 --> 00:20:24,750 Y vemos que el igual a i cumple un valor esencial, que no es lo mismo que cuando en un condicional ponemos un igual de comparativo o relacional, que es igual que decir número a igual a a, y aquí ya a 2, yo que sé lo que fuera. 261 00:20:24,750 --> 00:20:45,910 Si esta instrucción se da, ¿vale? Tenemos que usar estos relacionales, que en este caso, si lo ponemos así, veis que incluso da error, porque no estamos asignando al número A que valga 2, no, aquí estamos estableciendo una condición, estamos poniendo igual que ponemos mayor o menor, ¿vale? El igual A es este, ¿vale? Eso es importante. 262 00:20:45,910 --> 00:21:06,890 Es decir, son cosas que ya os digo que a medida que se ha ido avanzando el curso y se han ido plantando las tareas, pues se ha entendido que hemos sabido qué es. Los condicionales, los ifs, cómo se declaran, cómo se escribe la sintaxis, el else if, el else, todas estas cosas son importantes. 263 00:21:06,890 --> 00:21:24,890 Por tanto, todo lo que son estos apartados, importantes. Igual que, por ejemplo, estos operadores, que también aquí teníamos algún ejemplo en variables. Este tipo de operadores, también importante saber lo que son. 264 00:21:24,890 --> 00:21:44,049 Vale, aquí se hablan, pues eso, este tema es básico, por tanto, hay que conocerlo, ¿vale? Lo mismo, importante, para dar más de una condición o que solo se dé una u otra, la disyunción también importante, ¿vale? 265 00:21:44,049 --> 00:21:49,470 El comando switch también saber cómo funciona y saber cómo es. 266 00:21:49,710 --> 00:21:56,809 Sobre todo a nivel, bueno, si hubiera que usar un switch, pues eso, que se pueden declarar varias condiciones, etc. 267 00:21:57,029 --> 00:22:03,329 Es verdad que el switch no es la más importante, pero también habría que conocerla, que existe. 268 00:22:03,829 --> 00:22:06,890 Los bucles, los bucles son importantes, se han usado en ocasiones. 269 00:22:08,529 --> 00:22:13,410 Bueno, pues no sé si tenéis duda, lo tenéis claro cómo funcionan los bucles for. 270 00:22:14,049 --> 00:22:29,190 Y entiendo que sí. Además, también en los test, es importante que hagáis los test de los temas. No porque vayan a ser las preguntas, pero bueno, os da a veces, en muchas ocasiones, ideas de qué tipo de preguntas o qué cosas son importantes. 271 00:22:29,190 --> 00:22:51,410 En algunas, por ejemplo, hay algún bucle for, o por ejemplo, incluso en las preguntas que tenéis aquí de tipo test, también se habla de la corrutina, de un bucle for, y ahí podéis también ver que es un ejemplo de que puede caer. 272 00:22:51,410 --> 00:23:15,670 Las funciones, importantísimas, ¿no? ¿Cómo llamar a funciones? Esto también lo hemos visto, que pueden llevar en ocasiones un parámetro, ¿vale? Para pasarlo de una a otra, ¿vale? Y bueno, ¿y cómo se retorna el valor si son variables que no son de tipo void? Es decir, que sí que tienen una tipología que no esté vacío. 273 00:23:15,670 --> 00:23:23,869 Ya hablamos en su momento que las variables de tipo void, como por ejemplo esta, lo que hacen es ejecutar en el momento de ejecución que corresponda lo que tengan en su interior. 274 00:23:24,190 --> 00:23:31,109 Listo. Pero las variables que sí que tienen un valor, lo que tienen que hacer es devolver al final un valor. 275 00:23:31,289 --> 00:23:36,369 De este método tiene que salir un número int, en este caso. Si fuera un string, tendría que devolver un string. 276 00:23:36,730 --> 00:23:42,849 Y para devolverlo en todo momento hay que usar la palabra reservada, return, junto a A, que es lo que tiene que mostrar. 277 00:23:42,849 --> 00:24:05,309 Si no, estas funciones no funcionarán correctamente. Ámbito de las variables, súper importante. Y además os digo que es súper importante porque suele ser uno de esos errores que suelen aparecer, por ejemplo, antes os he dicho que una de las preguntas de desarrollo podría ser recalcar por qué está habiendo un error. 278 00:24:05,309 --> 00:24:33,990 En muchas ocasiones, ya lo habréis comprobado haciendo las tareas, el ámbito de las variables es el origen de estos errores. Por tanto, hay que saber que existen las variables globales, las locales, el encapsulamiento del que se habló, que si se declara una variable dentro de un método y no es pública, no se podrá acceder desde partes del código en el que no ha sido declarado correctamente. 279 00:24:35,309 --> 00:24:47,109 Luego, sobre programación orientada a objetos, pues bueno, que os suene el concepto, pero básicamente lo que más me importa es la aplicación que estamos haciendo de programación orientada a objetos en Unity. 280 00:24:47,109 --> 00:25:04,369 Entonces, como tal, a ver, es importante saber lo que es y que todo se basa en clases, ¿vale? Cuando estamos generando clases, básicamente son referencias a un script que luego, en este caso en Unity, pues se pueden hacer como muchas copias. 281 00:25:04,369 --> 00:25:12,630 Es decir, se puede hacer que esta clase, que al final son componentes, se pueda referenciar desde otro punto. 282 00:25:12,730 --> 00:25:24,789 Y, por ejemplo, cuando antes decíamos en la pregunta de desarrollo que aquí estábamos llamando a un tipo de variable llamado animator, en realidad es una clase. 283 00:25:25,450 --> 00:25:28,690 Estamos haciendo una copia de esa clase que llamaremos anim. 284 00:25:28,690 --> 00:25:41,670 Pero al final es una clase, igual que tenemos aquí QController, Animator es una clase que existe y por eso además comparte el mismo color, de la que nosotros podemos acceder a su código. ¿Cómo? En forma de componentes, ¿vale? 285 00:25:41,670 --> 00:26:04,769 Los componentes son la versión de que estas clases se puedan aplicar en GameObjects del entorno de Unity, pero las clases básicamente son elementos de las que se pueden realizar instancias o copias y de las que se van luego desencadenando otras acciones aludiendo a esos códigos encontrados en las clases. 286 00:26:04,769 --> 00:26:05,950 ¿sí? 287 00:26:06,750 --> 00:26:08,430 vale, hasta aquí 288 00:26:08,430 --> 00:26:09,430 ¿qué tal? este tema 289 00:26:09,430 --> 00:26:10,650 cero 290 00:26:10,650 --> 00:26:16,059 ejemplo práctico, bueno, pues esto también 291 00:26:16,059 --> 00:26:16,960 es importante 292 00:26:16,960 --> 00:26:20,119 pero sobre todo es 293 00:26:20,119 --> 00:26:22,160 este apartado de programación orientada 294 00:26:22,160 --> 00:26:23,839 a objetos, sobre todo me importa 295 00:26:23,839 --> 00:26:25,799 para que lo entendáis, tipos de variables 296 00:26:25,799 --> 00:26:27,839 esto sí, aunque esté dentro de programación 297 00:26:27,839 --> 00:26:30,200 orientada a objetos, lo mismo, esto se ha visto 298 00:26:30,200 --> 00:26:31,700 ya en más momentos 299 00:26:31,700 --> 00:26:34,180 pues que es una variable pública, que es una privada 300 00:26:34,180 --> 00:26:35,960 y que son las estáticas, que también se ven 301 00:26:35,960 --> 00:26:38,099 en uno de los temas y se empleó 302 00:26:38,099 --> 00:26:40,019 por ejemplo en la unidad 4 303 00:26:40,019 --> 00:26:42,359 cuando teníamos que guardar los valores 304 00:26:42,359 --> 00:26:44,339 del menú 305 00:26:44,339 --> 00:26:46,460 de configuración, pues el nivel de dificultad 306 00:26:46,460 --> 00:26:48,480 o el nombre del jugador 307 00:26:48,480 --> 00:26:50,259 si recordáis, se hacía con una variable de tipo 308 00:26:50,259 --> 00:26:51,640 static, que es una variable 309 00:26:51,640 --> 00:26:53,599 la tipología es estática 310 00:26:53,599 --> 00:26:54,480 ¿vale? 311 00:26:55,700 --> 00:26:57,599 pasamos al siguiente tema si no hay 312 00:26:57,599 --> 00:26:59,220 nada que ver 313 00:26:59,220 --> 00:27:02,160 vale, introducción 314 00:27:02,160 --> 00:27:08,019 Bueno, en este tema se empieza a hablar 315 00:27:08,019 --> 00:27:09,799 como ahora seguramente 316 00:27:09,799 --> 00:27:11,619 los que habéis hecho el seguimiento del curso 317 00:27:11,619 --> 00:27:13,759 pues ya estará, espero, bastante 318 00:27:13,759 --> 00:27:15,400 asumido, pero es un poco hablar de 319 00:27:15,400 --> 00:27:17,140 qué es Unity, de su IDE 320 00:27:17,140 --> 00:27:19,500 ¡Ojo! Recordad 321 00:27:19,500 --> 00:27:21,480 estos apartados azules 322 00:27:21,480 --> 00:27:23,619 significa que entran, ¿vale? Por tanto 323 00:27:23,619 --> 00:27:25,259 los vídeos que se consideran como base 324 00:27:25,259 --> 00:27:27,019 del temario 325 00:27:27,019 --> 00:27:29,700 estos vídeos también habría que haberlos 326 00:27:29,700 --> 00:27:31,299 visto porque son un poco la explicación 327 00:27:31,299 --> 00:27:34,440 en vídeo de lo que se ve después 328 00:27:34,440 --> 00:27:36,460 en muchos casos, en algunos he subido yo alguno 329 00:27:36,460 --> 00:27:37,819 pero sobre todo son los de Álvaro 330 00:27:37,819 --> 00:27:40,200 por cierto, bueno 331 00:27:40,200 --> 00:27:42,319 otra cosa, vuelvo un punto 332 00:27:42,319 --> 00:27:44,500 un momento para atrás, que se me ha olvidado hablar de esto 333 00:27:44,500 --> 00:27:45,759 pero en el aula virtual 334 00:27:45,759 --> 00:27:48,720 en el apartado de recursos generales 335 00:27:48,720 --> 00:27:49,920 este que tenemos al principio 336 00:27:49,920 --> 00:27:52,359 ya os llevo un aviso, si no me equivoco 337 00:27:52,359 --> 00:27:54,079 pero tenéis una encuesta 338 00:27:54,079 --> 00:27:55,460 de satisfacción 339 00:27:55,460 --> 00:27:57,880 para que rellenéis de manera anónima 340 00:27:57,880 --> 00:27:59,839 lo que consideréis 341 00:27:59,839 --> 00:28:02,700 y nos ayudará a ir mejorando 342 00:28:02,700 --> 00:28:03,640 en próximos cursos 343 00:28:03,640 --> 00:28:06,480 y un compañero ya me ha escrito 344 00:28:06,480 --> 00:28:08,039 no sé quién, es anónimo 345 00:28:08,039 --> 00:28:10,720 no hay problema en ello, pero que hay enlaces 346 00:28:10,720 --> 00:28:12,740 que no funcionan, como algo 347 00:28:12,740 --> 00:28:13,759 llamativo 348 00:28:13,759 --> 00:28:16,619 nunca nadie me ha escrito sobre ello 349 00:28:16,619 --> 00:28:18,559 y más o menos lo he ido comprobando y tal 350 00:28:18,559 --> 00:28:20,740 quizá alguno se haya quedado obsoleto 351 00:28:20,740 --> 00:28:21,779 o alguna referencia 352 00:28:21,779 --> 00:28:24,420 solo por confirmar 353 00:28:24,420 --> 00:28:26,059 ¿estáis teniendo ese problema en general? 354 00:28:28,210 --> 00:28:29,450 Sí, a mí también me ha pasado alguna vez 355 00:28:29,450 --> 00:28:30,809 que hay algunos enlaces que no han funcionado 356 00:28:30,809 --> 00:28:33,789 vale, pues en esos 357 00:28:33,789 --> 00:28:35,470 casos, bueno 358 00:28:35,470 --> 00:28:37,170 entiendo que serán los enlaces 359 00:28:37,170 --> 00:28:39,630 de algún saber más, pero en esos 360 00:28:39,630 --> 00:28:41,329 casos, joder, me lo podíais 361 00:28:41,329 --> 00:28:43,130 haber indicado, pero bueno 362 00:28:43,130 --> 00:28:45,730 ¿es algo general o algún enlace importante? 363 00:28:49,200 --> 00:28:50,339 no ha sido, yo creo 364 00:28:50,339 --> 00:28:52,039 que ha sido más en otras materias 365 00:28:52,039 --> 00:28:54,180 más que en esta, pero si es verdad que en alguna ha pasado 366 00:28:54,180 --> 00:28:56,059 yo me refiero a este módulo, yo lo que 367 00:28:56,059 --> 00:28:57,960 hagamos, incluso yo en otro 368 00:28:57,960 --> 00:28:59,700 módulo, pues también, evidentemente 369 00:28:59,700 --> 00:29:01,940 hablo de este módulo 370 00:29:01,940 --> 00:29:05,119 No, en este módulo creo que no, pero vamos, el otro sí me ha pasado seguro. 371 00:29:05,619 --> 00:29:12,539 Vale, sí, no, no, claro, la encuesta de satisfacción, es que me da la impresión de que la encuesta de satisfacción 372 00:29:12,539 --> 00:29:17,599 la ha respondido a nivel general de todos los módulos que está impartiendo. 373 00:29:17,819 --> 00:29:20,039 Cada encuesta de satisfacción es propia del módulo, ¿vale? 374 00:29:20,059 --> 00:29:25,140 Y es importante porque si no, no sabemos de cuál estamos hablando. 375 00:29:25,759 --> 00:29:30,880 Vale, no sé el resto si estáis teniendo, lo digo yo por saberlo porque es muy importante. 376 00:29:30,880 --> 00:29:51,160 Si no se están funcionando bien los enlaces. Que no he tenido constancia hasta eso y por lo que veo igual no se refiere a este módulo. ¿El resto ha tenido así problemas? Ya os digo, igual algún módulo de algún saber más. Algunos sí. Vale, si cuando estéis repasando, si no, nada, pero cuando estéis repasando vídeos y tal. Bueno. 377 00:29:51,160 --> 00:29:53,619 vale, cuando estéis repasando 378 00:29:53,619 --> 00:29:55,380 incluso alguien que esté viendo 379 00:29:55,380 --> 00:29:57,579 esta tutoría 380 00:29:57,579 --> 00:29:59,740 si hay algún enlace que no funcione 381 00:29:59,740 --> 00:30:01,700 por favor 382 00:30:01,700 --> 00:30:03,940 decídmelo, ¿vale? para yo revisarlo 383 00:30:03,940 --> 00:30:05,579 porque están revisados, pero es verdad que algunos 384 00:30:05,579 --> 00:30:07,880 están revisados desde noviembre, igual ha cambiado 385 00:30:07,880 --> 00:30:09,700 la URL por algún motivo 386 00:30:09,700 --> 00:30:11,700 en el inglés, pero con 387 00:30:11,700 --> 00:30:13,539 un clasicionario, pero inglés 388 00:30:13,539 --> 00:30:15,559 ¿te refieres inglés, el módulo de inglés? 389 00:30:17,880 --> 00:30:20,059 Sí, concretamente 390 00:30:20,059 --> 00:30:21,759 estuve haciendo un... 391 00:30:21,759 --> 00:30:24,579 Perdona, que es que lo acabo de decir. 392 00:30:24,660 --> 00:30:26,000 Me refiero al módulo de BAME. 393 00:30:26,640 --> 00:30:27,440 No, no, aquí no. 394 00:30:28,119 --> 00:30:30,440 Por eso decía yo, bueno, que me ha ocurrido 395 00:30:30,440 --> 00:30:32,039 puntualmente en un módulo. 396 00:30:32,660 --> 00:30:34,599 Sí, sí, yo hablo de los módulos 397 00:30:34,599 --> 00:30:35,700 que imparto yo. 398 00:30:36,299 --> 00:30:38,559 Si no, pues se lo tendréis que decir al profesor 399 00:30:38,559 --> 00:30:39,160 correspondiente. 400 00:30:40,339 --> 00:30:42,420 Bueno, vale. Eso, porfa, 401 00:30:42,480 --> 00:30:44,579 si respondéis a la encuesta, que os 402 00:30:44,579 --> 00:30:46,279 animo mucho al cuestionario, porfa, 403 00:30:46,279 --> 00:30:48,019 hacedlo del módulo 404 00:30:48,019 --> 00:30:49,440 en concreto, en cada 405 00:30:49,440 --> 00:30:52,279 aula virtual tiene su cuestionario 406 00:30:52,279 --> 00:30:53,559 lo digo porque si no es 407 00:30:53,559 --> 00:30:55,859 no sirve para nada, digo que si 408 00:30:55,859 --> 00:30:57,819 aquí me, imaginaos, me empezarais 409 00:30:57,819 --> 00:31:00,220 no solo por vosotros, sino por si alguien ve la tutoría 410 00:31:00,220 --> 00:31:02,279 si me contestáis algo que yo 411 00:31:02,279 --> 00:31:04,220 entiendo que es paradigm, hablando del módulo 412 00:31:04,220 --> 00:31:05,460 de inglés, por poner un ejemplo 413 00:31:05,460 --> 00:31:06,640 pues 414 00:31:06,640 --> 00:31:09,660 lo único que tenemos es 415 00:31:09,660 --> 00:31:11,819 una valoración inexacta, ¿vale? 416 00:31:11,859 --> 00:31:13,900 eso no es lo que buscamos, lo que buscamos es 417 00:31:13,900 --> 00:31:15,740 ver cosas que poder mejorar o 418 00:31:15,740 --> 00:31:17,980 también saber las que hacemos bien, por supuesto, pero bueno 419 00:31:17,980 --> 00:31:35,839 Sobre todo lo que hay que mejorar, que es el ánimo de saber vuestra opinión. Vale, perdonad por este desvío. Tema 1. Pues eso, bueno, la interfaz, instalación del programa, que es el Unity Hub, pues hay que tener una identidad. Bueno, esto es importante, es decir, tenéis que saberlo. 420 00:31:35,839 --> 00:31:50,519 También puede haber alguna pregunta sobre algún apartado de la interfaz, etcétera, o de cómo instalar. Os diría que es importante porque lo es, pero es que entiendo que si habéis seguido un poco el curso, esto lo debería sonar. 421 00:31:50,519 --> 00:32:05,799 Entonces, estas cosas que son los módulos para luego, sobre todo en el último tema, instalar más plataformas, pues es importante saber que existen. 422 00:32:05,799 --> 00:32:31,299 Al crear el proyecto, pues eso, que hay distintos ya plantillas, que hay 2D, hay 3D, que luego esto ya tiene sentido más adelante, pero que existen otros tipos de motores, bueno, más que motores de, sí, como motores de renderizado, que son scriptables, que pueden ser ya, digamos, basados en programación nuestra, más que un entorno cerrado, ¿vale? 423 00:32:31,299 --> 00:32:36,099 que son esta URP y HDRP, luego llegaremos a plantillas generadas. 424 00:32:36,740 --> 00:32:38,839 Es importante la estructura de carpetas. 425 00:32:39,539 --> 00:32:43,619 Cuando creéis un proyecto ya habréis visto una estructura de carpetas que existe, etc. 426 00:32:44,539 --> 00:32:48,700 Las cosas que hay que tener en cuenta vienen aquí detalladas. 427 00:32:49,000 --> 00:32:51,039 La interfaz es importante conocerla. 428 00:32:51,759 --> 00:32:54,119 También saber cómo funcionan. 429 00:32:54,240 --> 00:32:56,640 Esto es importante, esto sí que a lo mejor podría ser una pregunta. 430 00:32:56,640 --> 00:32:57,680 pues las jerarquías 431 00:32:57,680 --> 00:33:00,359 en el 432 00:33:00,359 --> 00:33:02,119 panel jerarquía 433 00:33:02,119 --> 00:33:04,359 cuando movemos un objeto, igual que en los 434 00:33:04,359 --> 00:33:06,079 software de 3D, por ejemplo, pues 435 00:33:06,079 --> 00:33:08,240 los hijos y los nietos 436 00:33:08,240 --> 00:33:10,480 tienen un 437 00:33:10,480 --> 00:33:12,319 sentido, aparte de para almacenar 438 00:33:12,319 --> 00:33:14,319 digamos varios game objects dentro de un 439 00:33:14,319 --> 00:33:15,920 padre, pues para que al mover 440 00:33:15,920 --> 00:33:18,359 hijo 2, por ejemplo, nieto se mueva relativamente a su 441 00:33:18,359 --> 00:33:20,279 padre, esto es importante conocerlo 442 00:33:20,279 --> 00:33:21,980 el panel de escena 443 00:33:21,980 --> 00:33:24,180 cómo navegar, esto es importante 444 00:33:24,180 --> 00:33:26,380 es decir, todo esto, el panel project 445 00:33:26,380 --> 00:33:28,180 dónde están los assets, por supuesto 446 00:33:28,180 --> 00:33:30,180 los componentes, dónde están, cómo se aplican 447 00:33:30,180 --> 00:33:32,240 importante también que los scripts 448 00:33:32,240 --> 00:33:34,200 hasta que no se añaden como un 449 00:33:34,200 --> 00:33:36,359 componente, no están funcionando 450 00:33:36,359 --> 00:33:38,160 en ese GameObject, que es uno de los errores 451 00:33:38,160 --> 00:33:40,160 que sobre todo al principio todos tenemos 452 00:33:40,160 --> 00:33:41,779 cuando hasta que no se adjunta 453 00:33:41,779 --> 00:33:44,160 no funciona, el panel 454 00:33:44,160 --> 00:33:46,359 de juego para que funcione, el panel de consola 455 00:33:46,359 --> 00:33:48,160 importantísimo, ya lo hemos usado 456 00:33:48,160 --> 00:33:49,660 muchas veces para ir comprobando 457 00:33:49,660 --> 00:33:52,180 puntos del código, ver qué resultado 458 00:33:52,180 --> 00:33:53,859 devuelven 459 00:33:53,859 --> 00:33:55,319 entonces, importante 460 00:33:55,319 --> 00:34:06,559 Las primitivas, pues sí. Todo este tema es importante en el sentido de que es tan esencial también, ¿no? Pues que son los tags, que luego se han explicado. 461 00:34:06,559 --> 00:34:31,559 Cuando hayáis visto lo relativo a los NATMES, lo que es importante es que hay ciertos apartados para que sean considerados, por ejemplo, un terreno o ciertas superficies navegables por ese NATMES, pues tienen que estar marcadas con alguno de los puntos de static o directamente marcando como estático ese objeto. 462 00:34:31,559 --> 00:34:33,639 ese objeto, ¿vale? Igual que 463 00:34:33,639 --> 00:34:35,099 cuando en iluminación 464 00:34:35,099 --> 00:34:37,639 estamos usando luces baqueadas 465 00:34:37,639 --> 00:34:39,300 pues también tienen que ser estáticos 466 00:34:39,300 --> 00:34:41,579 pues los componentes 467 00:34:41,579 --> 00:34:43,519 bueno, importante, voy a ir rápido 468 00:34:43,519 --> 00:34:45,679 porque todo es importante, que es un prefab 469 00:34:45,679 --> 00:34:47,579 porque se usa, por ejemplo, ya la 470 00:34:47,579 --> 00:34:48,980 tarea de instanciar 471 00:34:48,980 --> 00:34:51,619 un objeto, pues tenía que usar un prefab 472 00:34:51,619 --> 00:34:53,579 pero, bueno, los usos son muchos, también 473 00:34:53,579 --> 00:34:55,059 como es el icono que lo identifica 474 00:34:55,059 --> 00:34:57,420 operaciones con un prefab 475 00:34:57,420 --> 00:34:58,860 bueno, esto es importante todo 476 00:34:58,860 --> 00:35:00,880 lo que os he dicho, añadir scripts 477 00:35:00,880 --> 00:35:02,599 cómo se crean 478 00:35:02,599 --> 00:35:04,639 la nomenclatura 479 00:35:04,639 --> 00:35:06,920 que tienen que empezar por mayúsculas los scripts 480 00:35:06,920 --> 00:35:09,000 el Pascal case, el camel case 481 00:35:09,000 --> 00:35:10,340 esto estaba en el anterior tema 482 00:35:10,340 --> 00:35:12,420 bueno, pues un poco 483 00:35:12,420 --> 00:35:14,960 todo 484 00:35:14,960 --> 00:35:16,880 espera que está habiendo como una fuga 485 00:35:16,880 --> 00:35:18,860 de gente, vale, me escucháis, ¿verdad? 486 00:35:18,940 --> 00:35:19,860 no hay ningún problema 487 00:35:19,860 --> 00:35:23,079 vale, entiendo que sí 488 00:35:23,079 --> 00:35:24,719 la estructura de 489 00:35:24,719 --> 00:35:26,619 de un script 490 00:35:26,619 --> 00:35:28,219 también, importante 491 00:35:28,219 --> 00:35:30,300 para nota, esto luego se va viendo 492 00:35:30,300 --> 00:35:37,039 los distintos momentos de ejecución, aparte del Start y el Update, que están siempre, 493 00:35:37,039 --> 00:35:48,699 pero el Fixed Update, cuando se habla de aplicación de fuerzas físicas, operaciones de mover un objeto 494 00:35:48,699 --> 00:35:57,460 o de meternos a operar en el Rebody, lo suyo, a menos que lo tengamos justificado, es usar el Fixed Update 495 00:35:57,460 --> 00:36:12,960 Para que sean tiempos, ahora lo veremos en el tema 3, periodo de tiempo estables. Que no dependan de la velocidad de ejecución como el update. El hola mundo, el print o el debug log, que también se puede usar. 496 00:36:12,960 --> 00:36:33,159 que lo tenemos aquí. Y bueno, pues todo. Este para nota no es un para saber más. Este es importante que os suene. Aunque es verdad que luego se ve el uso de las corrutinas que es para abrir otro tiempo de ejecución paralelo. Se ejecutan cada cierto tiempo en paralelo. Eso se ve en el tema 3 también. Sin tener dudas, cuando lleguemos me lo decís. 497 00:36:33,159 --> 00:36:35,059 variables públicas 498 00:36:35,059 --> 00:36:36,920 aparte de saber que es una variable pública 499 00:36:36,920 --> 00:36:39,280 saber cómo afecta que se vea luego 500 00:36:39,280 --> 00:36:41,219 en el editor y que hay 501 00:36:41,219 --> 00:36:43,440 una forma de poder operar o cambiar 502 00:36:43,440 --> 00:36:45,239 los valores de una variable 503 00:36:45,239 --> 00:36:47,199 desde el editor pero 504 00:36:47,199 --> 00:36:49,159 sin hacer la variable pública, sabemos que si 505 00:36:49,159 --> 00:36:51,280 una variable es pública se puede acceder desde otros 506 00:36:51,280 --> 00:36:52,639 puntos fuera de 507 00:36:52,639 --> 00:36:54,960 el encapsulamiento que tenga 508 00:36:54,960 --> 00:36:57,239 pero a veces queremos que una 509 00:36:57,239 --> 00:36:59,000 variable sea privada, como en este caso 510 00:36:59,000 --> 00:37:00,860 que al no poner ámbito 511 00:37:00,860 --> 00:37:02,340 se considera que es private 512 00:37:02,340 --> 00:37:18,840 Pero sí que, aunque no se puede acceder desde otra parte del script, que se salgan de ese ámbito, sí que queremos operar o cambiar el contenido de esa variable desde el editor. Para eso está este serialize fill. 513 00:37:18,840 --> 00:37:37,980 ¿De acuerdo? Bueno, importante, las convenciones importantes también, sobre todo, aparte para el examen, porque son las que se usan cuando se trabaja. Si estáis haciendo Instance8, es un método que hemos usado, pues habría que conocer cómo es el funcionamiento, ¿vale? 514 00:37:37,980 --> 00:37:42,079 si os fijáis 515 00:37:42,079 --> 00:37:43,099 esto es 516 00:37:43,099 --> 00:37:46,719 entre comillas por supuesto, igual que todo lo que voy diciendo 517 00:37:46,719 --> 00:37:48,159 ya os digo, puede entrar cualquier cosa 518 00:37:48,159 --> 00:37:50,460 pero por lo general 519 00:37:50,460 --> 00:37:52,699 las preguntas de desarrollo es más de evaluar un script 520 00:37:52,699 --> 00:37:54,579 y decir cómo funciona que de escribirlo 521 00:37:54,579 --> 00:37:56,599 vosotros, entonces ¿qué quiere 522 00:37:56,599 --> 00:37:58,559 decir esto? que sobre todo sabéis 523 00:37:58,559 --> 00:38:00,440 interpretar más que escribirlo 524 00:38:00,440 --> 00:38:02,599 ya se han hecho las tareas donde tenéis que 525 00:38:02,599 --> 00:38:04,360 escribir, sobre todo 526 00:38:04,360 --> 00:38:05,800 ya os digo, a lo mejor en algún momento 527 00:38:05,800 --> 00:38:25,559 Sí que os digo, ponedme un ejemplo de, como ponía antes, ¿qué hace el getKeyDown? Hombre, pues ahí si me vais a poner ejemplos, sí. Pero sobre todo saber que esto es un método y, bueno, pues interpretar. Si os llega un código con estos apartados y estos parámetros, pues saber interpretarlo es lo que me importa. 528 00:38:25,559 --> 00:38:32,219 vale el instancia y pues se vio es un método que se usa bastante por tanto tuvimos la tarea 2 sino 529 00:38:32,219 --> 00:38:41,579 del tema 2 si no me equivoco o si bueno del tema 1 de hecho que que ya se usaba por tanto importante 530 00:38:41,579 --> 00:38:48,360 es vale y herramientas adicionales bueno pues que son los proyectos settings esto es muy importante 531 00:38:48,360 --> 00:38:55,099 también porque se ha usado o por ejemplo si queremos variar las axis hay que aludir a este 532 00:38:55,099 --> 00:38:59,860 input manager para luego meter los nombres del axis por ejemplo de un 533 00:38:59,860 --> 00:39:04,280 button etcétera bueno pues un poco saber qué son cada uno de estos apartados si 534 00:39:04,280 --> 00:39:09,619 es importante o por ejemplo qué time sirve para ajustar esto también lo vimos 535 00:39:09,619 --> 00:39:18,340 en el tema 3 los pasos los steps se llaman los pasos que hay entre entre 536 00:39:18,340 --> 00:39:22,380 entre una ejecución del fix update del método fixate y no que es uno de los 537 00:39:22,380 --> 00:39:28,820 métodos de ejecución de tiempo de ejecución pues ahí es donde podríamos variar ese tiempo vale 538 00:39:28,820 --> 00:39:34,280 igual que la gravedad por ejemplo se pueden cambiar esto sobre todo que sepáis los apartados 539 00:39:34,280 --> 00:39:39,119 que sepáis un poco cómo hacen el quality se ve en el último tema también bueno pues que sepáis 540 00:39:39,119 --> 00:39:44,280 un poco que hace cada apartado luego los siguientes temas ya se ha desarrollado más el 541 00:39:44,280 --> 00:39:48,659 package manager pues también cómo se instalan package esto lo hemos hecho en por ejemplo aquí 542 00:39:48,659 --> 00:39:50,559 Aquí hay dos ejemplos que hemos usado. 543 00:39:51,039 --> 00:39:55,659 El package manager, pues, ¿qué es y cómo funciona un poco? 544 00:39:55,780 --> 00:39:55,940 Vaya. 545 00:39:56,460 --> 00:39:57,760 Y el asset store, pues, igual. 546 00:39:58,599 --> 00:40:01,860 Que sepáis que existe y lo habréis usado en alguna de las 547 00:40:01,860 --> 00:40:03,780 prácticas, pero, bueno, que sepáis que existe. 548 00:40:03,880 --> 00:40:05,940 El asset store, pues, no creo que entre más allá. 549 00:40:06,539 --> 00:40:06,699 ¿Vale? 550 00:40:06,760 --> 00:40:09,079 ¿Hasta aquí algún problema? 551 00:40:09,739 --> 00:40:10,599 O vamos al tema 2. 552 00:40:12,460 --> 00:40:15,679 Voy así rápido un poco con la cantinela de esto es importante, 553 00:40:15,679 --> 00:40:18,500 esto no, porque no me puedo detener en todo. 554 00:40:18,500 --> 00:40:35,900 Claro, pero eso, que si no me paráis. Vale, bueno, pues saber que existe esta documentación que es vital a lo largo del curso para saber interpretar cómo es la API, cómo es el scripting, cómo desarrollar para Unity. 555 00:40:36,900 --> 00:40:39,880 Saber que es un vector, básico, por supuesto que es básico. 556 00:40:39,980 --> 00:40:43,460 Y es básico a nivel también saber, aparte de cómo se declara, ¿vale? 557 00:40:43,460 --> 00:40:48,539 Y, ojo, saber que siempre que estamos generando una variable de tipo vector 3, 558 00:40:49,079 --> 00:40:54,019 realmente lo que estamos haciendo, al ser un constructor, ¿vale? 559 00:40:54,019 --> 00:40:56,940 Un elemento que tiene más de un valor, ¿vale? 560 00:40:56,940 --> 00:41:01,579 Porque a diferencia de un float que es un 20, o un valor 20.5 o algo así, 561 00:41:02,079 --> 00:41:04,739 aquí son varios valores, ¿no? 562 00:41:04,739 --> 00:41:10,559 Un vector, por definición, si tiene más de una dimensión y por tanto es un vector, tiene varios valores en su interior. 563 00:41:11,119 --> 00:41:18,579 Por eso cuando generamos una de estas variables tipo vector3 o vector2, ponemos esta palabra reservada new, 564 00:41:18,579 --> 00:41:25,800 porque lo que estamos haciendo no es guardar directamente en una variable, sino que estamos generando una estructura 565 00:41:25,800 --> 00:41:31,400 basada en una construcción que ya existe previamente de varios elementos. Por eso hay que poner este new. 566 00:41:31,400 --> 00:41:55,079 ¿Vale? Entonces cuando estamos incluso en mitad de un código y hay que poner un vector 3 que no está referenciando una variable que estamos creando, hay que poner este new. ¿Vale? Esto también entiendo que lo hemos visto, pues a ver, la diferencia entre un vector 2 y un vector 3, entiendo que la tenemos clara. ¿Vale? Y bueno, pues aquí veis, por ejemplo, cómo se vería en el editor si le hacemos un serialize, etc. ¿Vale? 567 00:41:55,079 --> 00:42:09,619 O cómo se pueden declarar después o desde el principio ya los valores de ese vector que luego, por supuesto, se pueden ir cambiando. Ahora sí no vemos algún detalle de eso, pero vamos. Lo que ya se vio también creo en su momento. 568 00:42:09,619 --> 00:42:36,840 Bueno, saber también que la rotación se basa en realidad en cuatro dimensiones, ¿vale? Este quaternion y ya vimos también en su momento que había luego en el transform, está basado en tres dimensiones, esto se ve ahora después, en tres dimensiones en lo que se conocen los Euler angles. Ahora lo vemos, ¿vale? Esto es importante también que os suene. 569 00:42:37,340 --> 00:42:40,960 Operaciones con vectores. Va a haber alguna operación, aunque sea basiquilla, con vectores. 570 00:42:41,579 --> 00:42:44,079 ¿Vale? Entonces, a ver los resultados. 571 00:42:45,119 --> 00:42:48,440 Va a haber alguna suma, alguna resta, ¿vale? Pero muy básica. 572 00:42:48,559 --> 00:42:53,800 Por eso no se menciona que haya que llevar calculadora ni se van a permitir, ¿vale? 573 00:42:53,800 --> 00:42:57,920 Pero van a ser sumas básicas o restas. En ese sentido no va a haber problemas. 574 00:42:58,460 --> 00:43:04,800 Por ejemplo, no sería extraño, lo tengo aquí preparado, que haya alguna suma de vectores. 575 00:43:04,800 --> 00:43:17,940 Vectores en el sentido, por ejemplo, aquí he declarado dos vectores ya con valores desde el principio, que ojo, esto es lo de siempre. Lo estamos declarando como variable global y aquí todavía no está en un tiempo de ejecución. 576 00:43:17,940 --> 00:43:45,699 Esto se puede también decir vector primero, ¿vale? Pues yo he declarado aquí que valga esto, pero nuevamente, si yo quiero que valga otro valor, tengo que decir, ¿vale? Y lo voy a poner así para que veáis qué pasa, si no, si yo pongo 4, 5, 6, los tres valores, no se guarda. ¿Por qué? Porque cuando aludamos a una variable vector 3, si cambiamos los valores de esa variable hay que poner este new, ¿vale? 577 00:43:45,699 --> 00:44:10,760 Y eso, yo lo he declarado aquí primero y ahora mismo vector primero vale esto y vector segundo vale esto. Entonces, no sería extraño poner algo tipo vector tres suma vectores, ¿vale? Y que os diga que devolvería suma vectores y que fuera vector primero más vector segundo. 578 00:44:10,760 --> 00:44:13,320 ¿Vale? Entonces 579 00:44:13,320 --> 00:44:15,159 Básicamente 580 00:44:15,159 --> 00:44:16,139 Si 581 00:44:16,139 --> 00:44:19,500 Yo ahora en el debug log mostrará esto 582 00:44:19,500 --> 00:44:21,840 O preguntará que son los valores 583 00:44:21,840 --> 00:44:23,480 Del vector resultante 584 00:44:23,480 --> 00:44:25,480 O el vector llamado sumaVectores 585 00:44:25,480 --> 00:44:27,079 Así muy rápido 586 00:44:27,079 --> 00:44:33,409 ¿Cuánto valdría? ¿Qué me devolvería 587 00:44:33,409 --> 00:44:39,630 La consola? Esto es básicamente 588 00:44:39,630 --> 00:44:40,469 La suma de vectores 589 00:44:40,469 --> 00:44:43,090 O la posición de vectores 590 00:44:43,090 --> 00:44:45,670 Básicamente lo que hacemos siempre que usamos 591 00:44:45,670 --> 00:44:47,829 Un transformTranslate 592 00:44:47,829 --> 00:44:49,650 o un rotate, ¿vale? Estamos sumando 593 00:44:49,650 --> 00:44:51,829 o restando vectores. ¿Cuánto daría? 594 00:44:52,769 --> 00:44:53,929 Sumar los valores de la 595 00:44:53,929 --> 00:44:55,449 X, de la Y, de la Z de cada vector. 596 00:44:55,969 --> 00:44:57,989 Vale, ¿qué vector devolvería 597 00:44:57,989 --> 00:44:59,769 aquí? ¿Suma vectores que es un vector 3? 598 00:44:59,969 --> 00:45:01,889 ¿Qué daría en el debug log de la 599 00:45:01,889 --> 00:45:03,849 consola? Pues es que no lo veo bien porque 600 00:45:03,849 --> 00:45:05,829 me pillas en la calle ahora mismo y no veo bien 601 00:45:05,829 --> 00:45:07,590 con el reflejo. Vale, y 602 00:45:07,590 --> 00:45:09,250 pero vamos que básicamente es eso. 603 00:45:09,829 --> 00:45:11,949 Vale, básicamente lo que sumaría 604 00:45:11,949 --> 00:45:13,570 es estos X, 605 00:45:13,869 --> 00:45:15,869 estos Y y estos Z, por tanto 606 00:45:15,869 --> 00:45:17,489 daría 4, 8, 10. 607 00:45:17,829 --> 00:45:40,469 No, ¿vale? Yo si ahora mismo voy y ejecuto, a ver, perdón, que lo tengo aquí. Si ejecuto ese script que lo tengo aquí preparado, bueno, no se está viendo porque igual no lo he guardado o algo. Bueno, lo tengo aquí preparado que quiere funcionar otra vez, ¿vale? Os vuelvo a lo que os digo. 608 00:45:40,469 --> 00:45:56,179 Si generamos un vector 3, aquí por ejemplo, seguramente es porque lo estoy declarando en donde no debo, porque si no, no. Resultado, vectores. Dejo ahí ese vector 3 preparado. 609 00:45:56,179 --> 00:46:18,219 Y yo digo, quiero que el resultado vectores sea igual a vector primero más vector segundo, ¿vale? Y aquí le digo, lo que quiero que me enseñe es el resultado vectores. Y ahora a ver si quiere, porque hasta ahora no ha querido. A ver, vale, bueno, ahora sí va. 610 00:46:18,219 --> 00:46:38,880 Vale, 4, 8, 10. Veis que básicamente es la suma de cada eje. 2 y 2, 4. 4 y 4, 8. Y 5 y 5, 10. Entonces, ese tipo de operaciones pueden surgir. O decir, en vez de sumar, restar. Y ahora, como son iguales, dará 0, 0, 0. 611 00:46:38,880 --> 00:46:50,920 Vamos a ello y veréis que el resultado es 0, 0, 0. Son fluids, por eso pone los puntos, las comas, pero eso sería, ¿vale? Ese tipo de operaciones. 612 00:46:50,920 --> 00:47:14,500 Y lo mismo, importante es también operadores como que si hacemos número A++, ¿vale? Y aquí decimos que queremos ver número A, ¿vale? Pues no. No, no hace falta poner las Fs en los vectores. 613 00:47:15,260 --> 00:47:20,480 Se entiende que son fluids, pero si se ponen directamente sin la F, no hay problema. 614 00:47:20,880 --> 00:47:25,760 Otra cosa, por supuesto, es que quisiéramos que esto sea 2.5, ¿vale? 615 00:47:26,199 --> 00:47:30,639 Hasta que no ponemos la F, este punto no lo considera como un decimal, ¿vale? 616 00:47:30,659 --> 00:47:34,519 Pero veis que el resto no ponemos, nos ponemos el número entero sin la F, 617 00:47:34,519 --> 00:47:38,659 como no tiene decimal, pues ahora mismo, simplemente para que veáis, 618 00:47:39,260 --> 00:47:43,360 la operación sería un resultado... Bueno, vuelvo para atrás. 619 00:47:44,500 --> 00:47:55,320 Si lo sumamos y lo ponemos aquí 2.5f, la sumada hará 4.5, 8 y 10. 620 00:47:55,880 --> 00:47:59,139 4.5, 8 y 10, pero no es obligatorio ponerlo. 621 00:47:59,679 --> 00:48:04,980 La f sobre todo es cuando ponemos los decimales. 622 00:48:05,619 --> 00:48:09,300 Y ojo también que para que los decimales se guarden, aquí pueden ser floats. 623 00:48:09,739 --> 00:48:13,860 He hecho un vector 3, si os fijáis en la definición pone que son 3 floats, lo veis. 624 00:48:14,500 --> 00:48:17,519 Pero no se pueden meter floods dentro de un int. 625 00:48:17,659 --> 00:48:21,199 Es una de las gracias de ese tipo de variable, ¿vale? 626 00:48:21,199 --> 00:48:26,159 Entonces, si yo aquí pongo 2.5f, pues por mucha f que pongamos, 627 00:48:26,280 --> 00:48:28,320 no cabe dentro de ese tipo de variable, ¿vale? 628 00:48:28,320 --> 00:48:29,519 Esto ya lo vimos en su momento. 629 00:48:30,260 --> 00:48:31,000 Entonces, eso. 630 00:48:32,320 --> 00:48:34,679 Nada, estoy como repasando cosas que me importan, 631 00:48:34,679 --> 00:48:40,880 porque son como esencia del módulo, vamos, de la programación. 632 00:48:41,340 --> 00:48:43,059 Y lo mismo, número a, ¿vale? 633 00:48:43,059 --> 00:48:55,360 Si ponemos más más y hacemos esta operación que vemos que no tiene asignada ningún igual para darle ningún valor, simplemente es operador, ¿qué resultado daría? 634 00:48:55,440 --> 00:49:12,150 Si yo ahora lo muestro en la consola. Esto lo he dicho, ya lo vimos. Cuando ponemos este más más al lado de una variable lo que hace es sumarle uno. 635 00:49:12,150 --> 00:49:33,190 Entonces, aquí, si vamos de arriba a abajo, vale 4, aquí le decimos a más 1, ¿vale? Y esto devolvería, como vais a ver, en vez de 4 ya 5, ¿vale? 5. O si hiciéramos este más igual 5, ¿vale? Esto es otro de los métodos abreviados que os he dicho antes. 636 00:49:33,190 --> 00:49:48,599 ¿Qué devolvería? Que es igual a, esto es lo mismo que escribir, en este caso, número A, número A, quito el cursor, número A, más 5. 637 00:49:49,179 --> 00:49:57,880 Pero nada, esto, ¿vale? En vez de decir a número A, guárdale lo que ya valga en este momento número A, más 5, ¿vale? 638 00:49:57,880 --> 00:50:08,300 que daría 9, ¿verdad? Se puede escribir de esta forma, ¿vale? Y entonces, número A, ahora el valor que devuelve es un 9, ¿vale? 639 00:50:09,059 --> 00:50:19,599 Importante, todo ese tipo de cosas, recordad revisar esa tutoría si no lo tenéis muy claro, porque este tipo de cosas pasan, es decir, son básicas y es importante, vamos. 640 00:50:19,599 --> 00:50:41,320 Es igual que cuando tenemos un booleano, que sus valores pueden ser true o false, si ponemos que posado pase a valer lo contrario, que es otro de los operadores, de lo que vale, si aquí pongo posado, por ejemplo, empieza siendo un true, pero aquí posado vale lo inverso a lo que valga en este punto. 641 00:50:41,320 --> 00:51:03,840 Entonces posado pasa a valer false, ¿no? ¿Qué es lo que va a devolver? False, ¿no? Lo guardo y lo muestro. Ahí está. Y devuelve un false, ¿vale? Ojo porque si yo aquí pongo otro booleano que se llame salto, yo que sé, cualquier cosa y pongo otro también, ¿vale? 642 00:51:03,840 --> 00:51:23,199 Y aquí le digo que esto sea salto, ojo, fijaos, aquí estoy guardando en posado lo contrario de lo que valga salto, por tanto, valdría false, mira, voy a poner aquí false para que sea diferente, aquí ahora mismo posado pasa a valer lo contrario a lo que valga false en ese punto, ¿no? 643 00:51:23,199 --> 00:51:24,679 Entonces pasaría a valer true, ¿verdad? 644 00:51:25,559 --> 00:51:27,579 ¿Vale? Entonces, atención a todo. 645 00:51:28,179 --> 00:51:31,260 Entiendo que esto, ya os digo, que esto pasaría a valer true, 646 00:51:31,599 --> 00:51:34,000 que es lo contrario de lo que vale salto. 647 00:51:34,780 --> 00:51:38,480 ¿Vale? Bueno, estas operaciones son como ejemplos de cosas importantes. 648 00:51:38,760 --> 00:51:42,179 Importantes, vamos, en esencia va a haber cosas de este tipo. 649 00:51:42,860 --> 00:51:44,760 También es muy importante, porque se han usado mucho 650 00:51:44,760 --> 00:51:48,460 estas formas simplificadas de escribir vectores 3, ¿vale? 651 00:51:48,480 --> 00:51:50,699 Este 0, el up, right, aquí están todos. 652 00:51:50,900 --> 00:51:53,019 Esto es importante, esto entrará. 653 00:51:53,199 --> 00:51:57,719 los bucles for, bueno, voy a ir así más rápido 654 00:51:57,719 --> 00:52:00,400 si no tenéis dudas, pero bueno, pues cómo se 655 00:52:00,400 --> 00:52:03,679 cambian, cómo se mueven kinemáticamente, es decir, a través 656 00:52:03,679 --> 00:52:06,480 de las coordenadas de posición del transform 657 00:52:06,480 --> 00:52:09,019 los valores, pues aquí tenemos 658 00:52:09,019 --> 00:52:13,019 distintas formas, en la clase 659 00:52:13,019 --> 00:52:15,760 transform, que como veis es un tipo de variable 660 00:52:15,760 --> 00:52:18,900 que es una clase en realidad que es referencia al componente 661 00:52:18,900 --> 00:52:21,659 porque aunque estén todos también es un componente transform, ¿vale? 662 00:52:21,659 --> 00:52:26,860 Y ahí es donde nos podemos dirigir a los distintos valores de transformación del objeto. 663 00:52:27,320 --> 00:52:31,960 Y por eso existe ese transform con mayúscula y ese transform con minúscula. 664 00:52:32,059 --> 00:52:35,079 Transform con mayúscula es la clase que se puede usar de tipo de variable, 665 00:52:35,219 --> 00:52:40,340 que no es igual que este transform, que es como una forma ya simplificada 666 00:52:40,340 --> 00:52:43,659 de aludir a valores de posición también, ¿vale? 667 00:52:43,659 --> 00:52:45,639 Esto también lo vimos, la escala. 668 00:52:48,019 --> 00:52:51,019 Bueno, aquí se habla de esto de los ángulos quaternion, ¿vale? 669 00:52:51,659 --> 00:53:00,420 Su forma también de simplificarlo para, digamos, el método que usamos habitualmente de tres dimensiones, de tres ejes, 670 00:53:01,000 --> 00:53:08,639 pero de manera interna el quaternion, como opera la rotación en Unity, es en un valor de cuatro dimensiones, ¿vale? 671 00:53:08,800 --> 00:53:15,320 Esto sobre todo con hacerlo a nivel teórico, porque los quaternions, al final, bueno, que aquí se pone la explicación, 672 00:53:15,820 --> 00:53:18,920 sirven para no tener problemas de bloqueos de ejes, ¿vale? 673 00:53:18,920 --> 00:53:33,039 De hecho hay algún documental que va sobre problemas en el espacio, en naves espaciales, de que los ejes había que poner un cuarto para que no hubiera ciertos problemas, pero bueno, sobre todo saber cómo funciona la rotación. 674 00:53:33,039 --> 00:53:51,719 Luego que tenemos también estos métodos, aquí más adelante, del translate, del rotate, que sí que funcionan en base a los tres ejes y son más fáciles de usar, de cara a que sea más comprensible para nosotros, que son las cuatro dimensiones que tiene un quaternion. 675 00:53:51,719 --> 00:53:54,940 aquí me he saltado, bueno no, no me he saltado nada 676 00:53:54,940 --> 00:53:57,219 crear movimiento, pues un poco eso 677 00:53:57,219 --> 00:54:00,139 fijaos que ya estamos usando esos operadores 678 00:54:00,139 --> 00:54:03,139 del más más, el menos menos, el más igual, etc 679 00:54:03,139 --> 00:54:07,039 el rotate, el look at, pues estos son métodos importantes 680 00:54:07,039 --> 00:54:08,800 luego estos por ejemplo son muy útiles 681 00:54:08,800 --> 00:54:11,239 pero no son los que se van a usar 682 00:54:11,239 --> 00:54:14,079 es cierto, por ejemplo este vector3.distancia 683 00:54:14,079 --> 00:54:18,599 todos estos son métodos de vector3 o vector2 también 684 00:54:18,599 --> 00:54:21,780 al menos de vector 3 seguro todos 685 00:54:21,780 --> 00:54:24,179 esta distancia se usa 686 00:54:24,179 --> 00:54:26,260 quien haya hecho la parte de la 687 00:54:26,260 --> 00:54:28,380 tarea 6 de inteligencia artificial 688 00:54:28,380 --> 00:54:30,519 pues de distancia 689 00:54:30,519 --> 00:54:31,980 el vector 3 distancia nos permite 690 00:54:31,980 --> 00:54:33,820 calcular la distancia entre un punto y otro 691 00:54:33,820 --> 00:54:36,260 por ejemplo para cuando se va acercando 692 00:54:36,260 --> 00:54:37,199 ese automata, etc. 693 00:54:37,440 --> 00:54:40,320 pero aquí de momento no es 694 00:54:40,320 --> 00:54:41,219 parte evaluable 695 00:54:41,219 --> 00:54:43,539 del ejercicio 696 00:54:43,539 --> 00:54:44,840 luego 697 00:54:44,840 --> 00:54:49,579 sobre el tiempo pues también 698 00:54:49,579 --> 00:54:51,500 importante, saber que existe 699 00:54:51,500 --> 00:54:52,880 el time.time que es 700 00:54:52,880 --> 00:54:55,440 la ejecución del tiempo y se puede cambiar 701 00:54:55,440 --> 00:54:57,260 se puede hacer que el time 702 00:54:57,260 --> 00:54:57,860 pase a hacer 703 00:54:57,860 --> 00:55:00,639 con el timescale 704 00:55:00,639 --> 00:55:01,760 pues 705 00:55:01,760 --> 00:55:04,159 por ejemplo 706 00:55:04,159 --> 00:55:07,059 detener el tiempo, si por ejemplo ponemos 707 00:55:07,059 --> 00:55:09,260 timescale en 0 708 00:55:09,260 --> 00:55:11,519 pues lo que estamos consiguiendo es parar el tiempo 709 00:55:11,519 --> 00:55:13,320 pues por ejemplo eso también es 710 00:55:13,320 --> 00:55:13,820 importante 711 00:55:13,820 --> 00:55:17,079 creo que el ejemplo viene 712 00:55:17,079 --> 00:55:19,079 a continuación, si no me equivoco 713 00:55:19,079 --> 00:55:39,710 Time scale. A ver, a ver, a ver. Perdón. Tiempo. Aquí lo tenemos. Time scale. Ah, bueno, es que de eso hablamos en el tema 4, perdón. Pues eso, los tiempos de ejecución, el delta time, la importancia del delta time también es importante, que es una corrutina. 714 00:55:39,710 --> 00:55:45,409 cómo es esta declaración del enumerator para abrir esa corrutina 715 00:55:45,409 --> 00:55:48,349 el método digamos que abre esa corrutina 716 00:55:48,349 --> 00:55:49,610 todo lo que pongamos en su interior 717 00:55:49,610 --> 00:55:53,750 pues es importante saber cómo se ejecuta 718 00:55:53,750 --> 00:55:58,250 y también es importante saber que los bucles son esenciales 719 00:55:58,250 --> 00:56:01,409 para decir que luego con esta instrucción del gene return 720 00:56:01,409 --> 00:56:04,309 wait for seconds y el número de tiempo que tiene que esperar 721 00:56:04,309 --> 00:56:07,269 pues que el bucle se ejecute en todo momento 722 00:56:07,269 --> 00:56:20,369 En todo momento hay que poner una instrucción para que hacer una corrutina que vaya iterando acciones, como por ejemplo un contador, que vayan apareciendo enemigos cada cierto tiempo si se hace a través de una corrutina. 723 00:56:20,889 --> 00:56:28,329 Hay que poner un bucle que permita que se vaya ejecutando constantemente y lo bueno es que podemos pausarlo, se ejecuta y aquí llega. 724 00:56:28,329 --> 00:56:34,530 Dice, ah, aquí cuando llego a esta línea tengo que esperar un segundo para seguir el for y otra vez, ¿vale? 725 00:56:34,630 --> 00:56:37,789 Entonces los for en las corrutinas son muy importantes. 726 00:56:38,090 --> 00:56:47,150 Bueno, como se declara también esta instrucción de que el tiempo de ejecución de la corrutina se detenga unos momentos. 727 00:56:48,110 --> 00:56:51,489 Bueno, y ya de interactividad, todo lo que es la clase input, ¿vale? 728 00:56:52,010 --> 00:56:57,329 Luego el input system, ya os dije en su momento que no va a entrar como tal, el nuevo método de Unity. 729 00:56:57,329 --> 00:57:21,070 Entonces, la clase input sí es importante, incluidas todas las interacciones, por ejemplo, en la pregunta de prueba, pues aquí se habla de esto, ¿no? Esto es importante, ver cómo se declara el input punto y ya se pueden poner distintas órdenes, cómo funcionan. Esto sí que es importante, el input manager, cómo se controla, etcétera, ¿vale? 730 00:57:21,070 --> 00:57:47,409 Bueno, esto en la tarea del tema 2 se vio, así que creo que no hay dudas. Sigo pasando eso. Lo que es el nuevo input system, este apartado y el siguiente de trasladar el input system a código para el examen no va a entrar. Os lo pongo de hecho en este de anexo no entra y en este os hablo un poco cómo se instala el paquete, etc. No va a entrar tampoco. Nada de lo relacionado con el input system. 731 00:57:47,409 --> 00:58:05,869 Por supuesto, con el input tradicional, con el input manager, sí, ¿vale? Movimiento suavizado, pues también que os suene el move towards, el smooth down, que también para la cámara ya se ha usado en varios momentos del curso, pues sí, es importante saber cómo funciona, ¿vale? 732 00:58:05,869 --> 00:58:36,630 Tema 2. Paso al 3. ¿Dudas hasta aquí o algo que queráis comentar? Venga, voy a ello. Bueno, aquí habla del movimiento, el RigidBody, muy muy importante saber qué es el RigidBody, qué son los colliders, ahora lo veremos, cómo funciona, los parámetros que podemos cambiar dentro del componente RigidBody, pues que es la masa, el drag, que se puede activar y desactivar la gravedad, los constraints, ¿vale? Esto, importante todo, ¿vale? 733 00:58:37,630 --> 00:58:59,070 Y que el RigidBody activa la gravedad, también se puede desactivar si desmarcamos esta casilla de UGravity, pero por defecto genera gravedad, ¿no? Y es a través de la que accedemos a los métodos posteriores, ¿vale? Del AddForce o del AddTorque, por ejemplo. 734 00:58:59,070 --> 00:59:25,710 Lo digo porque, por ejemplo, en esta línea que tenemos aquí, que os ponía, ¿vale? Si no aludimos al RigidBody de ese objeto, este método no va a funcionar, ¿vale? Entonces, digamos que el motor físico se basa todo en el RigidBody y estas operaciones que a veces he visto como confusión, los AdForce, etcétera, se ejecutan en base a que están actuando sobre un RigidBody, ¿vale? Entonces, es una parte importante. 735 00:59:25,710 --> 00:59:32,750 Y luego en información ya lo vimos también que está lo relacionado con las velocidades, etcétera, que son las inercias que tienen esos objetos. 736 00:59:34,510 --> 00:59:42,110 Vale, esta parte es importante. Aquí ya es la primera vez que vemos el GetComponent para coger este RigidBody, como acabo de decir, para poder actuar sobre él. 737 00:59:42,750 --> 00:59:54,869 Pero bueno, este GetComponent luego ya se usará para, como hemos visto, acceder a cualquier tipo de componente aludiendo a la clase que se llama como el componente realmente. 738 00:59:54,869 --> 01:00:11,630 Entonces es poner el nombre de ese componente, asignarlo a una variable y ya pues sí que hay que conectarlo de algún modo. Que a veces también veo que conectáis, aparte de con un GetComponent, ponéis este tipo de variable como pública o como un serialized field y la arrastráis al inspector. 739 01:00:11,630 --> 01:00:28,130 Si hacéis eso ya no es necesario hacer el GetComponent, ¿vale? Estáis duplicando dos veces la captura, digamos, de ese componente, ¿vale? Simplemente para que lo sepáis. Es decir, se puede hacer como hacemos con este GameObject y arrastramos aquí en el inspector, ¿vale? 740 01:00:28,130 --> 01:00:52,380 Vamos, lo voy a hacer aquí rápido. Si yo tengo un RigidBody aquí, un RigidBody que le llamo RB, o como lo llame, RB, y yo le digo que voy a aludir a qué RigidBody es mediante un SerializeField, aquí en el script me va a salir este campo esperando un RigidBody. 741 01:00:52,380 --> 01:01:03,900 Si yo dentro de este objeto tengo un RigidBody, ahora mismo no hay nada que me diga que yo pueda acceder a las opciones de un RigidBody. 742 01:01:03,900 --> 01:01:16,320 Es decir, si yo ahora, por ejemplo, pongo aquí un rb.addForce, el problema que va a haber es que, aunque yo aquí ponga bien lo que me pida, que es un vector3, por ejemplo, 743 01:01:16,320 --> 01:01:18,260 si yo pongo un new vector 3 744 01:01:18,260 --> 01:01:19,699 así a las bravas, ¿vale? como os he dicho 745 01:01:19,699 --> 01:01:21,019 si ponemos los valores 746 01:01:21,019 --> 01:01:23,800 tenemos que poner la palabra new 747 01:01:23,800 --> 01:01:25,340 si yo pongo 1, 1, 1 748 01:01:25,340 --> 01:01:28,139 ¿vale? lo va a ir 749 01:01:28,139 --> 01:01:30,199 ejecutando, le va a añadir 750 01:01:30,199 --> 01:01:31,739 una fuerza, pero ¿a quién? 751 01:01:32,320 --> 01:01:34,019 básicamente ahora no estamos diciendo 752 01:01:34,019 --> 01:01:36,119 a qué rigidbody, para eso 753 01:01:36,119 --> 01:01:36,940 habrá que 754 01:01:36,940 --> 01:01:39,760 decirle 755 01:01:39,760 --> 01:01:41,900 que este es el rigidbody 756 01:01:41,900 --> 01:01:43,780 y por tanto hay que arrastrar este script 757 01:01:43,780 --> 01:01:45,639 bueno, no voy a salir de tiempo de ejecución 758 01:01:45,639 --> 01:01:47,400 hay que arrastrar aquí ese objeto 759 01:01:47,400 --> 01:01:48,920 y genera el RigidBody 760 01:01:48,920 --> 01:01:51,019 del objeto que acabamos de arrastrar 761 01:01:51,019 --> 01:01:52,920 y ahora sabe que es este el RigidBody 762 01:01:52,920 --> 01:01:54,840 o si 763 01:01:54,840 --> 01:01:57,460 quitamos este SerializeField 764 01:01:57,460 --> 01:01:59,320 para que se sepa sobre 765 01:01:59,320 --> 01:02:01,480 que RigidBody actúa, hay que hacer 766 01:02:01,480 --> 01:02:03,199 este, de este objeto 767 01:02:03,199 --> 01:02:07,619 cogeme el componente 768 01:02:07,619 --> 01:02:09,420 a ver, igual 769 01:02:09,420 --> 01:02:11,360 getComponent 770 01:02:11,360 --> 01:02:13,420 RigidBody, es el 771 01:02:13,420 --> 01:02:15,579 nombre del componente 772 01:02:15,579 --> 01:02:23,440 que está cogiendo y ahora sí vale pero son dos cosas es diferentes que se pueden sobrepasar lo 773 01:02:23,440 --> 01:02:30,579 bueno de la primera forma vale también por por cosas que he visto en las tareas es que lo bueno 774 01:02:30,579 --> 01:02:38,679 es que yo puedo arrastrando poner el ritmo de si éste también tuviera un ritmo de este objeto puedo 775 01:02:38,679 --> 01:02:42,519 acceder al ritmo de otro objeto esto también lo vimos ya en la historia y ahora está cogiendo 776 01:02:42,519 --> 01:02:44,280 y voy a ir a Directional Light. Entonces 777 01:02:44,280 --> 01:02:46,639 podemos acceder, porque si no, mediante 778 01:02:46,639 --> 01:02:48,639 código, se podría hacer, pero 779 01:02:48,639 --> 01:02:50,760 ya hay que usar, pues, otro tipo 780 01:02:50,760 --> 01:02:52,659 de métodos, ¿no? Como el Find, 781 01:02:52,780 --> 01:02:54,320 ¿no? Hay que poner un GameObject 782 01:02:54,320 --> 01:02:55,460 aquí. 783 01:02:57,360 --> 01:02:58,539 Vale, no me voy a extender 784 01:02:58,539 --> 01:03:00,320 mucho, esto lo vimos un día, pero 785 01:03:00,320 --> 01:03:02,679 Find, ¿vale? Y entonces 786 01:03:02,679 --> 01:03:04,539 Find, y aquí le dice, pues, quiero 787 01:03:04,539 --> 01:03:06,579 que sea el objeto que 788 01:03:06,579 --> 01:03:07,039 se llama 789 01:03:07,039 --> 01:03:10,500 Light. No sé, si hubiera un objeto llamado 790 01:03:10,500 --> 01:03:12,539 light de ese objeto 791 01:03:12,539 --> 01:03:14,460 cógeme el 792 01:03:14,460 --> 01:03:15,199 componente 793 01:03:15,199 --> 01:03:19,469 RigidBody 794 01:03:19,469 --> 01:03:21,849 que tenga ese objeto llamado 795 01:03:21,849 --> 01:03:23,650 light, y entonces ahora estoy guardando en este RB 796 01:03:23,650 --> 01:03:24,909 y añadiré las fuerzas 797 01:03:24,909 --> 01:03:27,809 al RigidBody de otro objeto que se llamara 798 01:03:27,809 --> 01:03:28,829 light, que en este momento 799 01:03:28,829 --> 01:03:31,849 no existe 800 01:03:31,849 --> 01:03:33,530 pero si yo lo creara y tuviera un RigidBody 801 01:03:33,530 --> 01:03:35,769 sería ese al que está 802 01:03:35,769 --> 01:03:37,369 aludiendo, ¿vale? 803 01:03:37,909 --> 01:03:39,789 bueno, esto ya 804 01:03:39,789 --> 01:03:41,570 lo vimos en otro momento, pero eso 805 01:03:41,570 --> 01:03:54,909 Todo lo de RigidBody, importante. Los métodos de fuerza y torsión, importante. Es decir, lo paso rápido porque todo es importante. Además se ha usado ya en distintos momentos y es importante. 806 01:03:54,909 --> 01:04:24,889 Luego, para que los objetos choquen unos contra otros, recordad que tienen que tener colliders, es decir, hasta que no ponemos ya sea un box collider, un capsule collider, los diferentes que tenemos luego, que se ven luego, para que se detecten, por mucho rigidbody que tengan, por mucho rigidbody que yo le ponga aquí a un objeto, aunque tenga un plano y... 807 01:04:24,889 --> 01:04:28,050 Y le pongo un RigidBody 808 01:04:28,050 --> 01:04:31,340 ¿Vale? 809 01:04:32,019 --> 01:04:33,500 Por defecto tiene un Bosch Collider 810 01:04:33,500 --> 01:04:35,079 Y este un Mesh Collider 811 01:04:35,079 --> 01:04:36,400 Y se van a chocar, ¿vale? 812 01:04:36,420 --> 01:04:37,820 Pero si lo hubiéramos creado de otra forma 813 01:04:37,820 --> 01:04:41,159 O por ejemplo, yo digo, no, los Colliders no existen 814 01:04:41,159 --> 01:04:43,079 Vamos, los borro 815 01:04:43,079 --> 01:04:43,780 ¿Vale? 816 01:04:44,539 --> 01:04:46,539 Por mucho que haya gravedad, etcétera 817 01:04:46,539 --> 01:04:48,420 Ten en cuenta que no hay nada que colisione 818 01:04:48,420 --> 01:04:49,519 Importante, ¿vale? 819 01:04:49,980 --> 01:04:51,719 Entonces, eso es importante 820 01:04:51,719 --> 01:04:54,019 Tipos de colisionadores 821 01:04:54,019 --> 01:04:56,139 También saber cómo funcionan 822 01:04:56,139 --> 01:04:57,960 ajustarlos, el mesh collider 823 01:04:57,960 --> 01:05:00,219 esto hubo una tarea que he hablado de esto 824 01:05:00,219 --> 01:05:01,940 bastante, así que no más 825 01:05:01,940 --> 01:05:03,820 no creo que sea importante 826 01:05:03,820 --> 01:05:08,320 importantísimo, la diferencia entre el on collision 827 01:05:08,320 --> 01:05:09,880 aquí pongo el enter 828 01:05:09,880 --> 01:05:12,119 pero con on collision a secas 829 01:05:12,119 --> 01:05:14,260 también, o on trigger, ¿qué diferencia 830 01:05:14,260 --> 01:05:16,059 hay? esto me lo sabríais decir 831 01:05:16,059 --> 01:05:18,159 porque ya os digo que es importante que lo sepáis 832 01:05:18,159 --> 01:05:20,159 ¿qué diferencia hay 833 01:05:20,159 --> 01:05:22,059 entre un collision y un on trigger? 834 01:05:24,199 --> 01:05:25,719 on trigger es un disparador 835 01:05:25,719 --> 01:05:28,500 con colisiones que colisionan, que se golpea 836 01:05:28,500 --> 01:05:29,760 contra algo y en la detecta 837 01:05:29,760 --> 01:05:30,760 al chocar, ¿no? 838 01:05:31,320 --> 01:05:33,340 ¿y qué diferencia hay? 839 01:05:34,340 --> 01:05:36,239 todos se basan en colliders 840 01:05:36,239 --> 01:05:37,219 ¿no? es decir 841 01:05:37,219 --> 01:05:40,139 ¿qué diferencia hay de funcionamiento entre uno y otro? 842 01:05:41,980 --> 01:05:44,360 que el on trigger pasa a través 843 01:05:44,360 --> 01:05:46,000 del objeto, ¿no? 844 01:05:46,780 --> 01:05:48,300 sí, es decir 845 01:05:48,300 --> 01:05:50,039 yo voy a borrar el plano 846 01:05:50,039 --> 01:05:52,239 y voy a poner otro cubo para que no sea algo tan 847 01:05:52,239 --> 01:05:54,239 vale, si yo a este 848 01:05:54,239 --> 01:06:21,880 cubo, a ver, le voy a volver a poner el Bosch Collider. Sí, lo que habéis dicho es cierto y es verdad, pero quiero poner un ejemplo para que quede aún más claro. Tengo un colisionador, tal cual lo he puesto, y otro objeto, este cubo que está encima, con RigidBody y colisionador. ¿Qué es lo que va a pasar ahora? Que alguien me lo describa. El de arriba tiene Bosch Collider y RigidBody por defecto, y el de abajo solo el Bosch Collider por defecto. 849 01:06:21,880 --> 01:06:28,340 el de abajo funciona como si fuera una pared 850 01:06:28,340 --> 01:06:30,159 vale 851 01:06:30,159 --> 01:06:32,000 pero descríbeme, yo le doy al play 852 01:06:32,000 --> 01:06:32,559 ¿qué va a pasar? 853 01:06:34,969 --> 01:06:36,750 se va a chocar y se va a quedar pegado ahí contra él 854 01:06:36,750 --> 01:06:38,329 no le va a traspasar ni nada 855 01:06:38,329 --> 01:06:39,949 cae y se queda 856 01:06:39,949 --> 01:06:43,409 el de abajo no se cae porque no tiene física, no tiene rigid body 857 01:06:43,409 --> 01:06:45,250 solo tiene detección 858 01:06:45,250 --> 01:06:46,969 y el de arriba sí tiene rigid body 859 01:06:46,969 --> 01:06:48,530 vale, ahora mismo 860 01:06:48,530 --> 01:06:51,030 esta colisión cuando chocan, no se traspasan 861 01:06:51,030 --> 01:06:52,469 al otro 862 01:06:52,469 --> 01:06:54,869 lo que podría desencadenar algo 863 01:06:54,869 --> 01:06:56,309 sería un on collision 864 01:06:56,309 --> 01:06:57,849 porque están colisionando 865 01:06:57,849 --> 01:06:59,789 y no se traspasan pero 866 01:06:59,789 --> 01:07:01,670 podría ejecutarse algo 867 01:07:01,670 --> 01:07:04,050 ¿qué diferencia hay con el onTrigger? 868 01:07:04,250 --> 01:07:05,050 ¿y por qué se usa? 869 01:07:06,170 --> 01:07:08,389 ¿y cómo hacemos para que aquí ocurra 870 01:07:08,389 --> 01:07:08,969 un trigger? 871 01:07:14,739 --> 01:07:16,639 con el onTrigger desencadena otra cosa 872 01:07:16,639 --> 01:07:18,480 que le piras, por ejemplo que pasa 873 01:07:18,480 --> 01:07:20,559 a la siguiente pantalla, por ejemplo que se destruya 874 01:07:20,559 --> 01:07:21,340 cualquier cosa de esas 875 01:07:21,340 --> 01:07:22,639 pero eso es a nivel de código ¿verdad? 876 01:07:22,880 --> 01:07:25,659 ¿pero no hay que cambiar alguna configuración 877 01:07:25,659 --> 01:07:26,699 de los objetos para ello? 878 01:07:30,130 --> 01:07:31,090 si, en el inspector no tienes que 879 01:07:31,090 --> 01:07:37,090 lo tienes que cambiarte con el trigger vale si tenemos aquí la opción de is trigger si yo marco 880 01:07:37,090 --> 01:07:42,909 el de abajo is trigger vale vais a ver que lo traspasa vale entonces diréis para qué sirve este 881 01:07:42,909 --> 01:07:48,429 colisionado estos colliders pues cuando se pone que algo es trigger es porque va a ser se usa 882 01:07:48,429 --> 01:07:54,250 mucho para por ejemplo el umbral de una puerta o porque vamos a pasar una área o porque cuando nos 883 01:07:54,250 --> 01:08:00,150 metamos en un sitio con el personaje queremos que haya vale y aquí es importante tener en 884 01:08:00,150 --> 01:08:08,090 cuenta que al final, a ver, escena, lo vuelvo a poner, cualquier Mesh Collider, como habréis 885 01:08:08,090 --> 01:08:13,969 visto, tiene luego estas rayitas verdes que definen hasta dónde llega ese área, que 886 01:08:13,969 --> 01:08:20,850 nosotros podemos cambiar, ¿vale? El área del Collider no tiene que ir con la geometría, 887 01:08:21,170 --> 01:08:25,310 incluso se puede desactivar el Mesh Renderer que no se vea y ahora lo que podemos hacer 888 01:08:25,310 --> 01:08:26,970 es que cuando este cubo traspasa al otro 889 01:08:26,970 --> 01:08:29,250 con el onTrigger 890 01:08:29,250 --> 01:08:31,270 al pasar se ejecute una acción 891 01:08:31,270 --> 01:08:33,210 os acordáis en la tarea 3 892 01:08:33,210 --> 01:08:34,909 por ejemplo, o en la 5 o en varias 893 01:08:34,909 --> 01:08:36,689 que cuando se caía el personaje se podía poner 894 01:08:36,689 --> 01:08:39,029 un objeto, un collider 895 01:08:39,029 --> 01:08:41,050 vacío incluso, solo con el collider 896 01:08:41,050 --> 01:08:42,810 y las áreas para que cuando la pelota 897 01:08:42,810 --> 01:08:45,069 la bola cayera y chocara 898 01:08:45,069 --> 01:08:46,710 con este elemento 899 01:08:46,710 --> 01:08:48,689 la pelota seguirá cayendo 900 01:08:48,689 --> 01:08:50,430 pero al tener el isTrigger marcado 901 01:08:50,430 --> 01:08:52,750 con el onTrigger enter o cualquiera 902 01:08:52,750 --> 01:08:55,010 del stay o el exit 903 01:08:55,010 --> 01:08:57,810 Le decimos, vale, se ha metido en esta caja 904 01:08:57,810 --> 01:08:59,510 Y se desencadena, pues, por ejemplo 905 01:08:59,510 --> 01:09:00,449 Que se reinicie el nivel 906 01:09:00,449 --> 01:09:03,710 Entonces los colliders no solo sirven para que colisionen objetos 907 01:09:03,710 --> 01:09:05,689 Sino también para demarcar áreas 908 01:09:05,689 --> 01:09:07,789 Que sirven, pues, que cuando un objeto 909 01:09:07,789 --> 01:09:09,649 Con un collider, y a veces también 910 01:09:09,649 --> 01:09:11,770 Definiendo un collider que sea de tal 911 01:09:11,770 --> 01:09:12,949 Etiqueta o de tal layer 912 01:09:12,949 --> 01:09:15,189 Al traspasar esa 913 01:09:15,189 --> 01:09:17,170 Barrera, esa área 914 01:09:17,170 --> 01:09:19,470 Tú lo cruzas, pero desencadena 915 01:09:19,470 --> 01:09:21,489 Es una acción, por ejemplo, que se guarde el juego 916 01:09:21,489 --> 01:09:22,930 O que se encienda la luz 917 01:09:22,930 --> 01:09:24,989 Porque has pasado el umbral de una puerta 918 01:09:24,989 --> 01:09:41,239 ¿Vale? ¿Entendéis la diferencia, verdad? ¿Vale? Aquí la declaración se ve. Y bueno, esto lo hemos visto. Perfecto. Vamos para adelante. Quien haya hecho, por ejemplo, la tarea 3, yo creo que debería tenerlo muy claro. Esto es importante. ¿Vale? 919 01:09:41,239 --> 01:09:49,000 Sigo, el Raycast para lanzar líneas imaginarias y que detecte cosas 920 01:09:49,000 --> 01:09:50,960 Esto también es importante, saber lo que es 921 01:09:50,960 --> 01:09:56,840 También saber que prácticamente todos los métodos de detección de físicas tienen su variable en 2D 922 01:09:56,840 --> 01:10:03,100 El Raycast, también los colliders, se ve en el tema correspondiente, tienen sus propios colliders tipo 2D 923 01:10:03,100 --> 01:10:15,039 Luego el checkSphere, que también es importante que lo conozcáis, que es una forma de captar colisiones sin usar colliders. 924 01:10:18,119 --> 01:10:27,960 Hay que usar colliders porque para que haya detección ese objeto tiene que tener un collider, que es como acabamos de ver, la zona que delimita lo que es la zona comprobable de colisión. 925 01:10:27,960 --> 01:10:51,439 Pero sin tener que hacer, por ejemplo, otros elementos que han chocado los elementos para que se vea que existe ese collider. Si aludimos a esta, por ejemplo, función de physics checkSphere, podemos ponerlo en un punto y que el objeto busque que colliders hay en ese punto. 926 01:10:51,439 --> 01:11:13,170 Es decir, si yo pongo este cubo cerca del otro, quiero que se vea ahí. Yo cuando estoy aquí, voy a poner que se vea. En el fondo me da un poco igual. 927 01:11:13,170 --> 01:11:33,090 Si yo a este cubo, que no tiene ahora el script, pero se lo voy a poner ahora mismo, si este cubo tiene en el script un, y voy a poner la condición al empezar, if physics check sphere, 928 01:11:33,090 --> 01:11:53,149 Y me pedirá la posición de este objeto, de sí mismo, y de, es decir, transform position, donde estoy yo, y una cantidad de un float que sea el radio de detección. 929 01:11:53,149 --> 01:12:16,510 Si yo, por ejemplo, pongo un radio de 1, de 1 metro, si esta condición sirve para comprobar cosas, que hay algo tocando con algo, si se cumple que hay una esfera, es decir, que hay un objeto, perdonad, que la esfera que hemos creado desde las coordenadas de posición de este objeto colisiona con algún objeto realmente, pues se desencadena algo. 930 01:12:16,510 --> 01:12:25,449 Y en ese caso lo que vamos a hacer es, si eso ocurre, que en debug log ponga captado y lo ponemos como un string. 931 01:12:26,409 --> 01:12:27,949 Anda, que se me están poniendo aquí dobles. 932 01:12:29,430 --> 01:12:36,189 ¿Vale? Entonces, si eso lo hacemos así, y aquí. 933 01:12:37,090 --> 01:12:43,329 Vale. Entonces, ah, vale, que aquí falta otro paréntesis. 934 01:12:43,329 --> 01:12:45,109 vale, esto que significa 935 01:12:45,109 --> 01:12:46,770 y lo voy a poner en el update 936 01:12:46,770 --> 01:12:48,470 para que no, a ver 937 01:12:48,470 --> 01:12:51,369 para que lo vaya 938 01:12:51,369 --> 01:12:53,229 mirando en cada momento 939 01:12:53,229 --> 01:12:55,090 update, que se ha borrado 940 01:12:55,090 --> 01:12:56,989 y lo pongo aquí, vale, y aquí hay 941 01:12:56,989 --> 01:12:59,189 una llave que tiene que 942 01:12:59,189 --> 01:13:03,390 sobrar, vale 943 01:13:03,390 --> 01:13:05,550 ya está todo bien, vale 944 01:13:05,550 --> 01:13:07,449 eso, si en cualquier momento 945 01:13:07,449 --> 01:13:09,729 desde la posición del propio cubo 946 01:13:09,729 --> 01:13:10,770 que es el que tiene el script 947 01:13:10,770 --> 01:13:13,449 hay una esfera imaginaria, vale 948 01:13:13,449 --> 01:13:15,350 bueno, hay un momento que al pasar 949 01:13:15,350 --> 01:13:24,409 a detectar el captado. Le voy a quitar el Rigid Body para que no haya problema con eso. Si empezamos 950 01:13:24,409 --> 01:13:41,720 el juego vemos que está cayendo por ahí. Si yo pongo esto lejos y le doy al play que algo está 951 01:13:41,720 --> 01:13:42,319 pasando por ahí. 952 01:13:45,880 --> 01:13:47,279 Cheques, filtros, position. 953 01:13:48,880 --> 01:13:49,279 Del cubo. 954 01:13:52,569 --> 01:13:52,670 Sí. 955 01:13:55,819 --> 01:13:57,520 Tenemos aquí los colliders, etc. 956 01:13:57,960 --> 01:14:00,960 ¿Vale? Si tenemos 957 01:14:00,960 --> 01:14:02,859 ese objeto ahí. A ver. 958 01:14:03,119 --> 01:14:05,020 Cero, no, no, no, no. Vale. 959 01:14:06,359 --> 01:14:07,079 Este objeto 960 01:14:07,079 --> 01:14:08,960 tiene. ¿Y por qué 961 01:14:08,960 --> 01:14:11,060 sale captado? Sí, lo detecta. 962 01:14:11,380 --> 01:14:13,020 Sí, detecta. Vale. Voy a poner una 963 01:14:13,020 --> 01:14:15,000 cantidad más pequeña. Cero, punto 964 01:14:15,000 --> 01:14:15,359 F. 965 01:14:15,359 --> 01:14:15,460 Cero, punto F. 966 01:14:15,460 --> 01:14:19,800 transfer position de sí mismo 967 01:14:19,800 --> 01:14:20,420 esto es prueba 968 01:14:20,420 --> 01:14:25,699 a ver, perdonad, que esto me está 969 01:14:25,699 --> 01:14:28,199 diciendo algo que no sé qué es 970 01:14:28,199 --> 01:14:32,220 vale, el captado solo debería 971 01:14:32,220 --> 01:14:41,619 ah, vale, joder 972 01:14:41,619 --> 01:14:44,159 es este error, si es que como tengo 973 01:14:44,159 --> 01:14:46,380 cosas antes, hace este tipo de cosas 974 01:14:46,380 --> 01:14:48,079 vale, transfer position 975 01:14:48,079 --> 01:14:51,979 si tenemos aquí el vector 3 976 01:14:51,979 --> 01:14:52,659 de la posición 977 01:14:52,659 --> 01:14:56,380 que es donde está en todo momento 978 01:14:56,380 --> 01:14:58,020 y ponemos este número 979 01:14:58,020 --> 01:15:00,640 cuando lo detecte que ponga captado 980 01:15:00,640 --> 01:15:03,640 pero lo está captando demasiado cerca 981 01:15:03,640 --> 01:15:06,300 a ver, lo vamos a dejar incluso más 982 01:15:06,300 --> 01:15:11,000 voy a limpiar 983 01:15:11,000 --> 01:15:16,270 captado, pero bueno, ¿cómo que captado? 984 01:15:25,130 --> 01:15:26,270 bueno, claro 985 01:15:26,270 --> 01:15:28,010 es que hay una cosa 986 01:15:28,010 --> 01:15:52,590 Que es que se está captando a sí mismo. Vale, vale, perdonad. Si decimos que si capta algún collider en esa esfera y está captándose a sí mismo, se capta, se capta. Entonces, por ese motivo es por el que hay, a ver, esperad aquí, otro de los factores que es poner una capa, ¿vale? Poner una layer. 987 01:15:52,590 --> 01:16:07,710 Entonces aquí lo que podemos hacer es decir que si está dentro de esa layer, pues lo capte y si no, no. Entonces faltaría un tercer valor que es poner, por ejemplo, la layer 4 o la que sea. 988 01:16:07,710 --> 01:16:35,970 Voy a poner la 8 porque así la genero yo. Si yo a este objeto le digo que tiene que estar en la capa 8, que la voy a generar aquí, y se la pongo a este objeto y es la 8, ahora cuando arranquemos como esta en la que está ahora mismo, no es del tipo 8, cuando yo me vaya acercando y lo pase, vais a ver que en cuanto se crucen o estén ya a 0,1 metros, 989 01:16:35,970 --> 01:16:38,430 lo compruebe, que está ahí 990 01:16:38,430 --> 01:16:40,289 alguien me acercando, acercando, acercando 991 01:16:40,289 --> 01:16:41,029 vais a ver que sale 992 01:16:41,029 --> 01:16:44,149 a ver 993 01:16:44,149 --> 01:16:46,350 espera, porque aquí algo 994 01:16:46,350 --> 01:16:47,090 no se ha guardado 995 01:16:47,090 --> 01:16:52,859 es que ahí 996 01:16:52,859 --> 01:16:54,960 hay una luz, ah bueno, para empezar 997 01:16:54,960 --> 01:16:56,479 claro, es que tiene rigipodi esto 998 01:16:56,479 --> 01:16:58,439 vale, y entonces 999 01:16:58,439 --> 01:17:00,619 con esto, con esta 1000 01:17:00,619 --> 01:17:02,979 variable, si tenemos aquí 1001 01:17:02,979 --> 01:17:04,819 el isCollider y no es un trigger 1002 01:17:04,819 --> 01:17:06,420 vale, cuando 1003 01:17:06,420 --> 01:17:09,520 acerquemos esa 1004 01:17:09,520 --> 01:17:11,300 a ver, esa 1005 01:17:11,300 --> 01:17:15,489 a ese objeto 1006 01:17:15,489 --> 01:17:17,310 bueno, me la está cogiendo 1007 01:17:17,310 --> 01:17:18,670 pero no sé por qué 1008 01:17:18,670 --> 01:17:20,510 debería estar cogiéndose 1009 01:17:20,510 --> 01:17:23,109 esta layer que es de tipo 8 1010 01:17:23,109 --> 01:17:25,609 tal, ay Dios mío 1011 01:17:25,609 --> 01:17:28,229 a ver 1012 01:17:28,229 --> 01:17:31,149 ground layer, 0.3 1013 01:17:31,149 --> 01:17:33,890 layer más, vale, es que 1014 01:17:33,890 --> 01:17:36,029 hay que generar una layer más 1015 01:17:36,029 --> 01:17:37,970 esto lo pongo un poco a nivel teórico 1016 01:17:37,970 --> 01:17:40,770 pero básicamente capa 1017 01:17:40,770 --> 01:17:42,890 y que sea la 8 1018 01:17:42,890 --> 01:17:45,149 y aquí ahora sí que si ponemos 1019 01:17:45,149 --> 01:17:48,899 capa, ahora sí que 1020 01:17:48,899 --> 01:17:49,819 debería funcionar bien 1021 01:17:49,819 --> 01:17:55,100 vale, si ahora 1022 01:17:55,100 --> 01:17:56,239 movemos esta para abajo 1023 01:17:56,239 --> 01:18:00,250 pues no quiere 1024 01:18:00,250 --> 01:18:00,670 no quiere 1025 01:18:00,670 --> 01:18:07,819 y a lo mejor 1026 01:18:07,819 --> 01:18:11,220 no sé por qué no me está funcionando 1027 01:18:11,220 --> 01:18:13,300 esto, pero debería estar funcionando otra vez 1028 01:18:13,300 --> 01:18:15,520 a ver, un segundín 1029 01:18:15,520 --> 01:18:30,670 El problema viene del layer mask, que es complicado de configurar en el sentido de que hay que pasárselo, etc. 1030 01:18:31,729 --> 01:18:37,590 Simplemente que sepáis la función que tiene esto, pero tendría que estar funcionando. 1031 01:18:39,250 --> 01:18:47,649 Antes funcionaba porque se estaba detectando a sí mismo todo el rato, pero ahora si le decimos que es capa, ahora sí que va a funcionar. 1032 01:18:47,649 --> 01:19:04,949 Ahora lo cogemos. Bueno, no sé si guarde el script. Y para empezar esto lo debería borrar porque le estamos dando el valor por, nuevamente, en vez de por él declarando un valor, sino por el serialize field arrastrándoselo. 1033 01:19:04,949 --> 01:19:17,029 Bueno, aquí en vez de arrastrándoselo tiene un enumerador de posibles capas. Decimos que tiene que ser de tipo capa y ahora sí que cuando se acerque, pues nada, que no quiere. 1034 01:19:17,649 --> 01:19:19,989 La función es esa y debería estar funcionando. 1035 01:19:20,689 --> 01:19:22,750 A ver, vale, es que pone nothing, ¿cómo que nothing? 1036 01:19:23,109 --> 01:19:25,069 Capa, aquí. 1037 01:19:26,670 --> 01:19:28,710 Ahora, a ver, ahora sí. 1038 01:19:29,170 --> 01:19:33,270 Salgo, fijaos, lo limpio, lo limpio y me acerco. 1039 01:19:33,270 --> 01:19:39,069 Y cuando me acerco y me meto, y está a menos de 0,1 o dentro, ahí sí, captado. 1040 01:19:39,989 --> 01:19:45,949 ¿Vale? Entonces, aunque sea peliagudo porque hay que hacer un filtrado para que no se detecte a sí mismo, 1041 01:19:45,949 --> 01:20:12,069 Tened en cuenta que aquí estoy poniendo la posición del propio objeto, pero podría ser un empty object que está en una posición, de hecho hubiera sido el ejemplo más claro en vez de ponerse a sí mismo para que se detecte, pero si vamos poniendo una posición de referencia y que desde esa posición haga una esfera que si se choca con un elemento que tenga un collider y esté dentro de esta capa, que si no hubiera otra cosa se podría quitar esto, 1042 01:20:12,069 --> 01:20:33,250 Es decir, si no queremos que filtre en función de la capa, se puede quitar, pues que haga una operación. Esa es la función del CheckSphere. Luego hay otros que funcionan igual, solo que podemos guardar valores con que está colisionando o cruzando. 1043 01:20:33,250 --> 01:20:54,029 Pueden ser triggers también. En estos casos lo que sirve es, por ejemplo, si estamos lanzando, voy a poner un ejemplo violento, una granada que tiene un radio de acción de 10 de radio, la esfera de acción, pues todos los objetos que detecte dentro se pueden guardar en una RAI y, por ejemplo, que le reste vida. 1044 01:20:54,029 --> 01:21:05,510 Entonces son otros elementos con formas de esfera, de cubo, de cápsula, que pueden detectar otros objetos para lanzarles un método o que hagan una acción. 1045 01:21:06,310 --> 01:21:15,109 Luego sobre los materiales, pues aquí se habla del mes-renderer, de los materiales físicos, es importante, de esto ya hablamos en una de las tutorías también. 1046 01:21:15,109 --> 01:21:36,090 Entonces, seguimos. Perdonad que esto luego lo recortaré, gracias por aguantarme el rato, ¿vale? De repensar cómo se hacían algunas cosas, pero básicamente, ¿algún problema de momento? Vale, pues sigo. 1047 01:21:36,090 --> 01:21:58,109 Vale, tema 4, sobre interfaces, el concepto de HUD, también importante que lo conozcáis, bueno, pues un poco saber, bueno, aquí habla de los packages, pues de las escenas que también se vio en la tarea 3, pero aquí se habla más de cómo se cargan las escenas, los niveles, el build settings, ¿vale? 1048 01:21:58,109 --> 01:22:02,510 Para configurar qué niveles hay en la escena y con este índex ir yendo de uno a otro. 1049 01:22:03,029 --> 01:22:04,470 No sé si tenemos dudas de eso. 1050 01:22:05,149 --> 01:22:10,850 Importante, esto también, porque es uno de los motivos también de errores que puede haber o de este tipo de cosas. 1051 01:22:11,289 --> 01:22:18,510 Recordad que hay métodos, por ejemplo, estos de SimManager, que no se cargan a menos que pongamos su librería, su namespace, ¿vale? 1052 01:22:18,510 --> 01:22:35,250 Los namespace, por ejemplo, si queremos en algún momento variar un texto, Eva ha puesto lo que ha querido, texto y aquí text, lo llamo variable, lo pongo así para que quede aún más claro, variable text. 1053 01:22:35,250 --> 01:22:56,489 Si yo quiero cambiar un texto de los que se pueden ir generando en un canvas, vamos, si usamos la UI y ponemos aquí texto para poder acceder al método texto y cambiar lo que pone aquí, pues tenemos que crear una variable de tipo texto que alude a la clase texto, como hemos hablado antes, que en realidad es un componente. 1054 01:22:56,489 --> 01:22:58,470 ¿Veis que da fallo? Porque no existe 1055 01:22:58,470 --> 01:23:00,630 el nombre del tipo del espacio, no se encontró 1056 01:23:00,630 --> 01:23:02,369 ¿Vale? Sí que se encuentra RigidBody 1057 01:23:02,369 --> 01:23:04,409 porque estará cargado en uno de estos 1058 01:23:04,409 --> 01:23:05,930 métodos, pero este no 1059 01:23:05,930 --> 01:23:08,109 Es importante, ¿vale? Esto pasa con 1060 01:23:08,109 --> 01:23:10,050 Cinemachine, pasa con Inteligencia Artificial 1061 01:23:10,050 --> 01:23:12,010 pasa con UI ahora mismo 1062 01:23:12,010 --> 01:23:14,329 que hay que añadir su método 1063 01:23:14,329 --> 01:23:16,029 ¿Vale? Entonces en los puntos de 1064 01:23:16,029 --> 01:23:18,250 en los puntos de 1065 01:23:18,250 --> 01:23:20,369 del tema 1066 01:23:20,369 --> 01:23:22,430 que se dice, hay que usar esta librería 1067 01:23:22,430 --> 01:23:24,170 ¿Vale? Pues 1068 01:23:24,170 --> 01:23:26,470 saber cuál es, esto saberlo 1069 01:23:26,470 --> 01:23:29,409 Veis que ahora ya no da error porque hemos cargado todo lo 1070 01:23:29,409 --> 01:23:30,590 relacionado con esa librería. 1071 01:23:31,529 --> 01:23:31,930 ¿Vale? 1072 01:23:32,189 --> 01:23:32,590 Importante. 1073 01:23:33,270 --> 01:23:35,670 Eso, cuando veáis puntos que lo pone, 1074 01:23:36,090 --> 01:23:37,930 y este es uno de ellos, el Steam Management, 1075 01:23:38,409 --> 01:23:40,729 hasta que no lo tenemos, puede dar ese tipo de errores. 1076 01:23:41,390 --> 01:23:42,590 Pues esto es importante todo. 1077 01:23:42,590 --> 01:23:46,369 Cómo funciona lo que son las cargas de niveles, 1078 01:23:46,829 --> 01:23:47,710 que se puede conseguir. 1079 01:23:48,210 --> 01:23:50,210 Cógeme, esta instrucción también es importante, 1080 01:23:50,350 --> 01:23:52,949 el getActiveSteam y coger el número de index, 1081 01:23:53,409 --> 01:23:55,489 que sirve para guardar en una variable, por ejemplo, 1082 01:23:55,569 --> 01:23:56,430 un número int, ¿no? 1083 01:23:56,470 --> 01:23:59,750 que te diga el índex de la escena en la que estamos en ese momento. 1084 01:23:59,890 --> 01:24:04,949 Y a partir de ahí decirle, pues siguiente nivel, pues es la que yo tengo como el índex más uno. 1085 01:24:05,109 --> 01:24:05,850 Y luego cargo ese. 1086 01:24:06,310 --> 01:24:11,050 O tengo que reiniciar, pues reinicio usando el mismo build index en el que estoy. 1087 01:24:11,529 --> 01:24:11,689 ¿Vale? 1088 01:24:13,350 --> 01:24:17,829 Luego, carga síncrona. Esto es interesante que sepáis que existe. 1089 01:24:18,229 --> 01:24:23,510 Para el examen no. Este apartado es ya más avanzado, pero bueno, es importante si habéis hecho pruebas. 1090 01:24:24,090 --> 01:24:26,130 Variables estáticas. Importante saber lo que son. 1091 01:24:26,470 --> 01:24:31,390 Ya he puesto antes el ejemplo de lo de la unidad 4, pues guardar el nombre del jugador. 1092 01:24:31,970 --> 01:24:35,850 Importante también, porque para no hacernos líos, pues por ejemplo, ¿qué significa este icono? 1093 01:24:37,649 --> 01:24:39,010 Bueno, todo es importante. 1094 01:24:41,880 --> 01:24:45,340 Por cierto, en el tema 3, me suena que me he saltado alguna cosa por ahí. 1095 01:24:45,340 --> 01:24:46,380 Espera un segundo. 1096 01:24:47,539 --> 01:24:48,600 Algo del invoke. 1097 01:24:49,539 --> 01:24:55,800 Vale, hay un método que se llama invoke, que es importante que también lo tengáis en cuenta, 1098 01:24:55,800 --> 01:24:57,659 porque es una forma de lanzar un método. 1099 01:24:59,739 --> 01:25:02,000 Espera, si no, de hecho estaba aquí, 1100 01:25:02,159 --> 01:25:03,479 si no me equivoco en lo del tiempo. 1101 01:25:04,539 --> 01:25:06,420 Bueno, pues esto del time delta time era importante 1102 01:25:06,420 --> 01:25:08,779 y en las corrutinas este método. 1103 01:25:08,859 --> 01:25:11,560 Este también es importante porque sirve para lanzar un método, 1104 01:25:11,760 --> 01:25:15,359 cualquiera, se llama en este caso launch projectile, 1105 01:25:15,560 --> 01:25:18,800 como se diga, que se ejecute a los dos segundos 1106 01:25:18,800 --> 01:25:22,340 y esto sirve mucho para demorar que algo ocurra pasado el tiempo. 1107 01:25:22,939 --> 01:25:24,560 Importante este método, que antes no lo he dicho. 1108 01:25:24,560 --> 01:25:47,460 Lo tenéis que conocer, ¿vale? Y estábamos en el tema 4, gestionar escenas, sí, ¿vale? Carga síncrona, no entra para el examen, yo no gastaría tiempo. Estas variables sí son importantes, estáticas. Bueno, pues todo lo que es el canvas también es importante que lo conozcáis. 1109 01:25:47,460 --> 01:25:49,460 También que es el método SetActive 1110 01:25:49,460 --> 01:25:53,539 Que sirve para encender y apagar GameObjects 1111 01:25:53,539 --> 01:25:56,199 ¿Vale? Esto alguna vez hemos hecho algún ejemplillo 1112 01:25:56,199 --> 01:26:01,920 Pues esto, el RenderMode y el CanvasScaler que se desarrollan aquí 1113 01:26:01,920 --> 01:26:03,060 Pues a ver qué tipos hay 1114 01:26:03,060 --> 01:26:05,399 Importante, ¿para qué sirve? 1115 01:26:06,000 --> 01:26:09,220 Pues eso, si se pone encima de todo lo que hay en el juego 1116 01:26:09,220 --> 01:26:11,539 Como un overlay, ¿no? Como una superposición 1117 01:26:11,539 --> 01:26:15,060 Si ocupa un espacio relativo a la cámara 1118 01:26:15,060 --> 01:26:17,300 Pero siempre, como digamos, mirando a la cámara 1119 01:26:17,300 --> 01:26:22,680 como un menú o si directamente es un elemento en el juego que es como que se puede posicionar en 1120 01:26:22,680 --> 01:26:29,779 cualquier punto del espacio 3d también si tiene el canvas en el que no olvidemos que siempre que 1121 01:26:29,779 --> 01:26:34,760 al poner un elemento de texto por ejemplo aquí pues se ha generado el canvas del canvas es lo 1122 01:26:34,760 --> 01:26:42,739 que unifica toda la interfaz de una escena entonces también saber si ese canvas tiene 1123 01:26:42,739 --> 01:26:47,119 medidas constantes o se puede escalar con la pantalla si se hace más o menos grande vale 1124 01:26:47,119 --> 01:26:55,420 importante esto también es la disposición de elementos también es es algo importante vale 1125 01:26:55,420 --> 01:27:01,119 pues saber que también se pueden variar el espacio de visualización en la pantalla del juego no para 1126 01:27:01,119 --> 01:27:09,560 que ocupe toda esa ventana independientemente de a qué dispositivo o aspecto activa ya tener 1127 01:27:09,560 --> 01:27:18,939 la pantalla vale pues aquí podemos irlo definiendo vale más el event system bueno pues que os suene 1128 01:27:18,939 --> 01:27:25,720 tampoco es muy importante no es importante para el examen no tanto pero que sepáis que cuando 1129 01:27:25,720 --> 01:27:30,500 creamos un canvas también habrá este event system para poder navegar entre elementos y poder dar 1130 01:27:30,500 --> 01:27:34,859 opciones del primero que tiene que aparecer seleccionado que sea tal y se arrastra aquí 1131 01:27:34,859 --> 01:27:40,979 ese game object y esas opciones que se especifican un poquito más aquí vale pero bueno no es lo que 1132 01:27:40,979 --> 01:28:06,359 que más vueltas le daría. Luego, por supuesto, los tipos de, hay más, los tipos de elementos de UI que se pueden generar, ¿vale? Pues de estos, sobre todo, vamos, los que vienen mencionados aquí, los textos, las imágenes, los botones, los sliders, el campo de entrada, todo esto es importante que os suene, ¿vale? Aquí luego ya se habla de otro más como en plan mencionándolos, pues bueno, eso no es tan importante, pero esto sí. 1133 01:28:06,359 --> 01:28:28,159 Y luego los PlayerPrefs, que también son importantes para recuperar información entre partidas en un mismo ordenador. Por ejemplo, para guardar un valor y luego guardar un valor con el SetFloat. Y esto además ahora que ya hemos visto el Animator, los SetFloat de Animator funcionan de una forma similar. 1134 01:28:28,159 --> 01:28:30,819 podemos guardar bajo, digamos 1135 01:28:30,819 --> 01:28:32,659 la etiqueta 1136 01:28:32,659 --> 01:28:34,699 GameVolume un valor 1137 01:28:34,699 --> 01:28:36,239 para que luego en cualquier momento 1138 01:28:36,239 --> 01:28:38,680 en el ordenador se guarda, en el disco duro del ordenador 1139 01:28:38,680 --> 01:28:40,260 y en cualquier momento con un GetFloat 1140 01:28:40,260 --> 01:28:42,880 recuperar el valor que guardamos en esa clave 1141 01:28:42,880 --> 01:28:44,420 ¿vale? entonces 1142 01:28:44,420 --> 01:28:46,560 esto también es importante que sepáis 1143 01:28:46,560 --> 01:28:48,779 cómo se usan y los 1144 01:28:48,779 --> 01:28:49,619 métodos que tienen 1145 01:28:49,619 --> 01:28:52,079 ¿vale? dudas hasta aquí 1146 01:28:52,079 --> 01:28:54,939 esto de los PlayerPrefs en una de las tareas 1147 01:28:54,939 --> 01:28:56,000 bueno, en la del tema 4 1148 01:28:56,000 --> 01:28:57,880 se hablaba de ello 1149 01:28:57,880 --> 01:29:01,579 no sé si lo habéis probado 1150 01:29:01,579 --> 01:29:04,380 hacer, etcétera, pero básicamente es eso 1151 01:29:04,380 --> 01:29:07,380 que permite guardar claves que se pueden 1152 01:29:07,380 --> 01:29:10,119 recuperar luego, esto también es importante que 1153 01:29:10,119 --> 01:29:12,180 conozcáis cómo funciona 1154 01:29:12,180 --> 01:29:16,640 además eso, los métodos son muy parecidos a los del animator 1155 01:29:16,640 --> 01:29:19,319 luego el hashkey sirve para comprobar 1156 01:29:19,319 --> 01:29:22,420 si existe esa clave, pues me compruebas o haces 1157 01:29:22,420 --> 01:29:25,359 lo que tengas que hacer, si no existe esa clave, no se ha guardado en el disco duro 1158 01:29:25,359 --> 01:29:27,180 no hay ningún elemento llamado 1159 01:29:27,180 --> 01:29:29,039 GameVolume bajo esa clave 1160 01:29:29,039 --> 01:29:31,159 pues no, en este caso 1161 01:29:31,159 --> 01:29:32,760 condicional no se ejecutaría lo siguiente 1162 01:29:32,760 --> 01:29:35,239 o borrar claves que existen pues también 1163 01:29:35,239 --> 01:29:36,859 se pondría entre los paréntesis 1164 01:29:36,859 --> 01:29:39,420 el nombre de la clave y se borraría 1165 01:29:39,420 --> 01:29:43,010 ¿vale? paso al siguiente tema 1166 01:29:43,010 --> 01:29:48,199 ¿dudas que tengáis hasta aquí? 1167 01:29:52,250 --> 01:29:54,189 vale, pues sigo 1168 01:29:54,189 --> 01:29:55,229 no sé si seguís ahí 1169 01:29:55,229 --> 01:29:57,750 una cosa 1170 01:29:57,750 --> 01:29:59,850 entonces con lo que estoy viendo vas a 1171 01:29:59,850 --> 01:30:01,930 preguntar bastante del tema de scripts que están ahí 1172 01:30:01,930 --> 01:30:09,729 que están ejemplos de scripts que están puestos sí sí sí claro es la forma de poner como referencias 1173 01:30:09,729 --> 01:30:16,449 sirve a preguntar a estos scripts u otros pero parecidos en el sentido que juegan las mismas las 1174 01:30:16,449 --> 01:30:22,689 mismas instrucciones lo que se están explicando entonces aquí es como un ejemplo de de redacción 1175 01:30:22,689 --> 01:30:27,670 bueno de confección de un código que incluya en este caso pues es el apartado de los player press 1176 01:30:27,670 --> 01:30:44,800 Entonces sí, hombre, lo suyo es que los hubierais ido viendo a medida que se estudia e ir probándolos e ir viendo su uso. Pero sí, vale, sí, resuelta la duda de... no sé qué me la ha dicho, pero resuelta más o menos. 1177 01:30:44,800 --> 01:30:46,979 Pero sí, los scripts están puestos 1178 01:30:46,979 --> 01:30:48,779 De hecho en el tema 5, aparte de los scripts 1179 01:30:48,779 --> 01:30:50,479 Hay como descargables 1180 01:30:50,479 --> 01:30:53,060 Que están en azul o están como descargables 1181 01:30:53,060 --> 01:30:54,460 Para que probéis escenas 1182 01:30:54,460 --> 01:30:56,939 Que tienen cosas de las que se hablan 1183 01:30:56,939 --> 01:30:57,300 ¿Vale? 1184 01:30:57,960 --> 01:30:59,920 Pues sí que sería recomendable 1185 01:30:59,920 --> 01:31:03,119 Luego, el panel animation, pues importante 1186 01:31:03,119 --> 01:31:04,779 El animator, bueno, se habla 1187 01:31:04,779 --> 01:31:07,119 Posteriormente, pero esto es importante 1188 01:31:07,119 --> 01:31:09,199 Que lo conozcáis, cómo se configura el animator 1189 01:31:09,199 --> 01:31:10,359 El panel de animation 1190 01:31:10,359 --> 01:31:13,180 Pues yo qué sé, por ejemplo, para qué sirve este botón rojo 1191 01:31:13,180 --> 01:31:14,560 Cómo se crea un evento 1192 01:31:14,560 --> 01:31:19,020 sí, esto es que es importante 1193 01:31:19,020 --> 01:31:20,439 como es un 1194 01:31:20,439 --> 01:31:22,739 un clip de animación 1195 01:31:22,739 --> 01:31:24,239 importante también 1196 01:31:24,239 --> 01:31:26,819 pues como para que 1197 01:31:26,819 --> 01:31:28,920 esa animación se haga 1198 01:31:28,920 --> 01:31:30,720 un bucle, pues habría que marcar el loop time 1199 01:31:30,720 --> 01:31:32,840 ¿vale? pues esa opción por ejemplo 1200 01:31:32,840 --> 01:31:34,220 es importante, conocerla 1201 01:31:34,220 --> 01:31:36,600 ¿vale? es que es importante 1202 01:31:36,600 --> 01:31:38,859 luego, como se establece 1203 01:31:38,859 --> 01:31:40,500 un método, ¿vale? 1204 01:31:40,539 --> 01:31:43,119 que luego se puede insertar 1205 01:31:43,119 --> 01:31:50,939 en la línea de tiempo para que cuando se ejecute una animación haya un punto que active un método, incluso pasando un parámetros, ¿vale? 1206 01:31:51,319 --> 01:32:00,579 Pues cómo se configuraría, ¿vale? Aquí os pongo un ejemplo, pues si he puesto un evento, ¿vale? Me dará la posibilidad de en ese objeto que tiene ese script, 1207 01:32:00,819 --> 01:32:08,359 si tiene un método llamado bote pelota en el que se puede especificar un fotograma, fijaos que yo aquí puedo poner fotograma un valor, ¿vale? 1208 01:32:08,359 --> 01:32:17,439 que es el que pasa a través de este argumento, y se puede hacer, por ejemplo, que al ejecutarse esta animación, 1209 01:32:18,079 --> 01:32:24,899 pues cuando llegue a este punto ponga, se acaba de ejecutar un evento en el fotograma y aquí porque hemos puesto 60, 1210 01:32:25,260 --> 01:32:32,859 pues pondrá 60 en la consola, pero claro, aquí estamos poniendo un ejemplo cualquiera, aquí se podría ejecutar cualquier acción, 1211 01:32:32,859 --> 01:32:34,720 cuando llegara a este evento 1212 01:32:34,720 --> 01:32:37,319 si yo tengo aquí puesto que es bote pelota 1213 01:32:37,319 --> 01:32:39,020 pues se ejecutaría lo que hay ahí dentro 1214 01:32:39,020 --> 01:32:40,420 entonces por ejemplo pues se podría 1215 01:32:40,420 --> 01:32:43,199 ejecutar el sonido 1216 01:32:43,199 --> 01:32:45,079 de bote, entonces lo que habría que 1217 01:32:45,079 --> 01:32:47,279 configurar es que cuando llegue a este momento 1218 01:32:47,279 --> 01:32:49,079 el método bote pelota 1219 01:32:49,079 --> 01:32:50,039 en este caso pues 1220 01:32:50,039 --> 01:32:53,119 lanzará un play one shot 1221 01:32:53,119 --> 01:32:54,560 un play, vale 1222 01:32:54,560 --> 01:32:56,579 del sonido de ese clip 1223 01:32:56,579 --> 01:32:58,180 si 1224 01:32:58,180 --> 01:33:02,729 vale, el animator controller 1225 01:33:02,729 --> 01:33:04,130 pues es importante, sabe 1226 01:33:04,130 --> 01:33:28,529 Cuando es naranja, cómo se hacen las transiciones. Cuando es naranja me refiero a que es el estado por defecto en el que se mete al ejecutarse el juego y cuando esté un elemento con animator, ¿no? También que significa que haya transiciones múltiples, ¿vale? Luego se pueden hacer varias condiciones para las transiciones, ¿vale? Ese tipo de cosas es importante que lo conozcáis. 1227 01:33:28,529 --> 01:33:30,390 pues cómo se lanzan las transiciones 1228 01:33:30,390 --> 01:33:32,729 saber los tipos de parámetros que puede haber 1229 01:33:32,729 --> 01:33:34,909 por ejemplo, una pregunta podría ser 1230 01:33:34,909 --> 01:33:36,630 ¿de qué tipos pueden ser los parámetros? 1231 01:33:37,390 --> 01:33:39,149 pues pueden ser de tipo float, de tipo in 1232 01:33:39,149 --> 01:33:40,989 booleanas, triggers, pero 1233 01:33:40,989 --> 01:33:43,170 si lo pensáis también, no puede ser 1234 01:33:43,170 --> 01:33:45,109 un string, porque esto va 1235 01:33:45,109 --> 01:33:47,250 de que ocurra algo 1236 01:33:47,250 --> 01:33:49,069 que ejecute esto 1237 01:33:49,069 --> 01:33:50,970 entonces, normalmente cuando jugamos 1238 01:33:50,970 --> 01:33:53,130 no escribimos un texto para que ejecute una opción 1239 01:33:53,130 --> 01:33:55,090 de animación, entonces es la que no viene 1240 01:33:55,090 --> 01:33:56,149 por defecto, ¿vale? 1241 01:33:56,149 --> 01:34:19,949 Las condiciones, pues bueno, también importante. Y eso, luego, pues por ejemplo, aquí habla nuevamente cómo se puede captar el componente animator para poder acceder a luego todas las acciones de los setTrigger, setBulls, etcétera, que permiten ir de un estado, es decir, de uno de estos nodos de animación, que son animaciones que se han lanzado ahí, ¿vale? 1242 01:34:19,949 --> 01:34:23,789 Que se han arrastrado al animator, cómo se va pasando de uno a otro, ¿vale? 1243 01:34:23,850 --> 01:34:26,930 Pues estos métodos de setTrigger, setBull, ¿no? 1244 01:34:26,970 --> 01:34:32,050 Y luego los getBulls, los getTriggers, etcétera, son importantes, ¿vale? 1245 01:34:32,050 --> 01:34:35,489 Aquí, por ejemplo, se habla de algún para saber más, que es importante que conozcáis, 1246 01:34:35,630 --> 01:34:39,770 pero que no va a entrar en el examen como el que conozcáis, digo, para, pues, por ejemplo, 1247 01:34:39,829 --> 01:34:45,050 las tareas que habéis hecho, algunos habéis recurrido a estos, los getCurrentAnimatorSteedInfo, 1248 01:34:45,050 --> 01:34:56,489 que lo que hacen es, pues según el estado en el que estamos, pues estamos en uno concreto, pues podemos dar condiciones, etcétera, y que se ejecuten unos u otros. 1249 01:34:56,489 --> 01:35:20,409 Aquí por ejemplo hay un código, que de hecho lo tenéis aquí, que lo podéis descargar, de cómo realizar, a ver que me he ido en este tema, en este tema de cómo incluso ejecutar animaciones que no solo sean aparentes, sino que tengan giros, etc. 1250 01:35:20,409 --> 01:35:37,149 Que permita que se mueva el objeto con la propia animación. Con el click de animación tiene una animación guardada, unos keyframes que hacen rotar. Entonces vamos pasando uno a otro y se va moviendo este objeto no por fuerzas ni tampoco por kinemáticas. 1251 01:35:37,149 --> 01:35:54,270 Si lo hace por kinemáticas, en el sentido de que estamos en el panel de animación modificando o poniendo keyframes al valor posición del transform o a la rotación, pero no estamos cambiando la posición por código, sino porque la animación se ejecuta y se gira. 1252 01:35:54,270 --> 01:36:06,250 Esto es un ejemplo. Por ejemplo, aquí saltar lo que hace es ejecutar un parámetro float que hará que pasemos aquí al turn left o al turn right. 1253 01:36:06,829 --> 01:36:16,609 Aquí vamos consiguiendo mover el objeto de otra forma, de una nueva forma que no es ni las cinemáticas que hemos visto hasta este momento ni las físicas. 1254 01:36:16,609 --> 01:36:18,930 Luego, el 2D en Unity 1255 01:36:18,930 --> 01:36:20,329 ¿Vale? Pues, importante 1256 01:36:20,329 --> 01:36:22,489 Aquí, por ejemplo, hay muchos 1257 01:36:22,489 --> 01:36:24,789 Muchas 1258 01:36:24,789 --> 01:36:26,010 Explicaciones de 1259 01:36:26,010 --> 01:36:27,930 Bueno, esto es importante 1260 01:36:27,930 --> 01:36:30,789 Esto de trabajando en 2D es importante 1261 01:36:30,789 --> 01:36:31,710 Saber que 1262 01:36:31,710 --> 01:36:33,970 Para trabajar en 2D hay que tener 1263 01:36:33,970 --> 01:36:35,789 Esto además lo vimos en la última tutoría 1264 01:36:35,789 --> 01:36:37,949 Hay que tener distintos paquetes instalados 1265 01:36:37,949 --> 01:36:39,850 Que si alguna vez no salen 1266 01:36:39,850 --> 01:36:41,689 ¿Vale? Es porque hay que instalar 1267 01:36:41,689 --> 01:36:43,949 Paquetes, ¿no? 1268 01:36:43,949 --> 01:36:45,670 Por ejemplo, cuando 1269 01:36:45,670 --> 01:36:53,609 tenemos aquí los proyectos, al crear un nuevo proyecto, tenemos el de crear 2D o 3D y cada 1270 01:36:53,609 --> 01:36:58,810 uno, ya vimos el otro día, tiene unos packages instalados y hay algunos relativos al 2D 1271 01:36:58,810 --> 01:37:05,890 específicamente. Hay opciones que no funcionan de 2D si hemos creado el 3D, el Core 3D. Habrá 1272 01:37:05,890 --> 01:37:09,430 que instalar los paquetes que faltaban de ahí. El otro día vimos eso que pasaba con 1273 01:37:09,430 --> 01:37:20,550 la UI, si no me equivoco, y con el gestor de los sprites, para recortar sprites, etc. 1274 01:37:20,729 --> 01:37:23,550 Lo que vamos a ver aquí, en el punto 2.2. 1275 01:37:24,430 --> 01:37:27,569 Bueno, pues eso, que hay paquetes, de hecho aquí lo pone, que hay que tener instalados 1276 01:37:27,569 --> 01:37:30,050 para que se ejecuten acciones propias del 2D. 1277 01:37:31,270 --> 01:37:36,350 Esto también es importante, las físicas en 2D, pues bueno, que también hay métodos 1278 01:37:36,350 --> 01:37:42,449 Como el Rigidbody, que son 2D, son subversiones 2D y no son exactamente iguales, ¿vale? 1279 01:37:42,630 --> 01:37:47,930 Aquí, por ejemplo, no está el Use Gravity que había en el Rigidbody normal de 3D, ¿vale? 1280 01:37:48,090 --> 01:37:53,810 Hay otras opciones similares, pero, bueno, como no son los tres ejes, pues sucede lo mismo. 1281 01:37:54,909 --> 01:37:59,449 Los tipos de colliders 2D que hay, bueno, pues también tienen el East Trigger, 1282 01:37:59,569 --> 01:38:01,890 pero, por ejemplo, aquí se pueden usar efectores, ¿no? 1283 01:38:01,930 --> 01:38:04,270 Que se habla de ello más abajo, ¿vale? 1284 01:38:04,270 --> 01:38:07,170 Esto en 3D no existe como tal, pero sí en 2D. 1285 01:38:07,770 --> 01:38:11,949 Por ejemplo, en la práctica 5 se usaba el platform effector 2D 1286 01:38:11,949 --> 01:38:18,010 para que al subir a una plataforma solo pudiéramos subir por un lado 1287 01:38:18,010 --> 01:38:22,810 y cuando subiéramos la plataforma, al caer sobre la plataforma no la volviéramos a cruzar. 1288 01:38:22,810 --> 01:38:26,350 Entonces se hace, digamos, traspasable solo por un lado. 1289 01:38:26,970 --> 01:38:30,210 Cada una tiene sus funciones. Importante también. 1290 01:38:30,210 --> 01:38:33,829 sobre sprites, pues bueno, el vídeo se explica bastante bien 1291 01:38:33,829 --> 01:38:37,050 cómo se importan sprites, que hay que decirle que es de tipo 1292 01:38:37,050 --> 01:38:39,609 sprite 2D, las opciones 1293 01:38:39,609 --> 01:38:42,930 también deberías conocerlas, cómo funciona 1294 01:38:42,930 --> 01:38:45,489 el sprite renderer, etcétera, esto es importante 1295 01:38:45,489 --> 01:38:49,010 ¿vale? para una hoja de sprites poder dividirla 1296 01:38:49,010 --> 01:38:51,489 pues hay que ponerlo en modo múltiple, que es el que activa 1297 01:38:51,489 --> 01:38:53,970 las funciones de slice y trim 1298 01:38:53,970 --> 01:38:58,170 ¿vale? pues ese tipo de cosas 1299 01:38:58,170 --> 01:39:01,390 importante, de hecho si habéis hecho la práctica 1300 01:39:01,390 --> 01:39:02,810 nuevamente lo habréis 1301 01:39:02,810 --> 01:39:04,949 hecho, y luego como 1302 01:39:04,949 --> 01:39:07,430 hacer una animación basada 1303 01:39:07,430 --> 01:39:08,890 en distintos sprites 1304 01:39:08,890 --> 01:39:10,850 que bueno 1305 01:39:10,850 --> 01:39:13,829 al final cada fotograma se corresponderá 1306 01:39:13,829 --> 01:39:15,270 con una imagen de ese sprite 1307 01:39:15,270 --> 01:39:17,250 que se haya arrastrado, luego se pueden 1308 01:39:17,250 --> 01:39:19,050 extender o 1309 01:39:19,050 --> 01:39:21,510 variar la duración moviendo los keyframes 1310 01:39:21,510 --> 01:39:23,390 pero al final lo que hará será poner 1311 01:39:23,390 --> 01:39:24,810 espacios o que 1312 01:39:24,810 --> 01:39:27,189 una imagen de estos sprites 1313 01:39:27,189 --> 01:39:32,869 pues dure más o menos, para que una de las poses de ese 2D se mueva más o menos rápido. 1314 01:39:33,210 --> 01:39:38,649 No hay que olvidar que este tipo de animaciones 2D son fotogramas, al final, dibujado me refiero. 1315 01:39:39,029 --> 01:39:41,149 No es como en 3D que pueda haber interpolaciones intermedias. 1316 01:39:41,270 --> 01:39:48,289 Aquí se puede mover la posición del objeto, pero en este caso este personaje está así 1317 01:39:48,289 --> 01:39:51,770 hasta que el siguiente fotograma vaya moviéndose, vaya haciendo esa acción. 1318 01:39:52,689 --> 01:39:55,569 Otra que está pintada con otra pose, el siguiente. 1319 01:39:55,569 --> 01:40:00,210 luego los layers para ir poniendo 1320 01:40:00,210 --> 01:40:03,329 la profundidad en la que está cada objeto en 2D 1321 01:40:03,329 --> 01:40:04,430 pues también es importante 1322 01:40:04,430 --> 01:40:07,590 también las tags y layers que ya se han visto 1323 01:40:07,590 --> 01:40:10,449 se ven en otros puntos, aquí se introducen 1324 01:40:10,449 --> 01:40:14,369 dirigidas a la posición que tienen 1325 01:40:14,369 --> 01:40:15,829 de renderizado en el 2D 1326 01:40:15,829 --> 01:40:19,670 y luego aquí este apartado 1327 01:40:19,670 --> 01:40:22,489 es una especie de cara que hiciera luego la tarea 1328 01:40:22,489 --> 01:40:24,970 es un apartado que va hablando de muchos puntos 1329 01:40:24,970 --> 01:40:27,029 como operaciones concretas 1330 01:40:27,029 --> 01:40:28,869 crear el efecto para las 1331 01:40:28,869 --> 01:40:30,829 como añadir físicas 1332 01:40:30,829 --> 01:40:32,390 en el 2D, que aquí es donde se menciona 1333 01:40:32,390 --> 01:40:34,310 están los métodos 2D 1334 01:40:34,310 --> 01:40:37,029 de Long Collision 1335 01:40:37,029 --> 01:40:38,489 y Long Trigger en su versión 2D 1336 01:40:38,489 --> 01:40:40,630 para que se detecte, porque tened en cuenta que al final 1337 01:40:40,630 --> 01:40:42,810 un plano 2D no tiene por qué 1338 01:40:42,810 --> 01:40:44,869 colisionar con otro objeto 1339 01:40:44,869 --> 01:40:46,369 como en 3D, porque no 1340 01:40:46,369 --> 01:40:48,689 ocupa las tres dimensiones, entonces para que 1341 01:40:48,689 --> 01:40:50,590 este personaje al caer choque 1342 01:40:50,590 --> 01:40:52,409 con otro objeto, al final 1343 01:40:52,409 --> 01:40:54,789 todo se tiene que basar en el punto de vista 1344 01:40:54,789 --> 01:40:56,210 en el que estemos viendo el juego 1345 01:40:56,210 --> 01:40:57,489 porque al final el límite 1346 01:40:57,489 --> 01:41:00,229 evidentemente tendrán un collider 2D 1347 01:41:00,229 --> 01:41:03,050 pero puede estar por detrás 1348 01:41:03,050 --> 01:41:04,670 en el eje Z 1349 01:41:04,670 --> 01:41:06,310 lo que hace que colisionen será 1350 01:41:06,310 --> 01:41:08,130 que desde el punto de vista 2D 1351 01:41:08,130 --> 01:41:10,189 pues sí que coinciden 1352 01:41:10,189 --> 01:41:11,270 cambia un poco 1353 01:41:11,270 --> 01:41:14,829 la perspectiva de cómo se generan 1354 01:41:14,829 --> 01:41:15,949 las colisiones 1355 01:41:15,949 --> 01:41:18,029 como añadir obstáculos, etc. 1356 01:41:18,869 --> 01:41:20,189 entonces aquí se van hablando 1357 01:41:20,189 --> 01:41:22,289 de ciertas operaciones que es importante 1358 01:41:22,289 --> 01:41:23,510 que conozcáis y algunas de hecho 1359 01:41:23,510 --> 01:41:26,390 que podíais copiar directamente de la práctica, ¿no? 1360 01:41:26,390 --> 01:41:28,489 Y por eso se ponen estos fragmentos de código. 1361 01:41:29,050 --> 01:41:31,750 Entonces, bueno, pues un poco esto, aquí se hablan de los tags 1362 01:41:31,750 --> 01:41:36,609 como forma de discriminar que si hay una colisión de otro objeto, 1363 01:41:36,810 --> 01:41:39,130 si el objeto con el que se está colisionando, ¿vale? 1364 01:41:39,449 --> 01:41:42,829 El objeto con el que se está colisionando, el otro objeto, ¿vale? 1365 01:41:43,590 --> 01:41:45,409 Es el que va siempre en los argumentos. 1366 01:41:45,409 --> 01:41:49,430 Pues cuando ese objeto tiene un tag que se llama plataforma, ¿vale? 1367 01:41:49,510 --> 01:41:52,890 Tag, me refiero al tag que tenemos aquí, ¿vale? 1368 01:41:52,890 --> 01:42:18,350 De estos que tenemos aquí y podemos ir, perdón, tags son estos, ¿vale? Tags que podemos ir añadiendo más, podemos ir generando más. Bueno, he creado uno muy descriptivo que se llama new tag. Pues si yo, este objeto es contra el que choca el otro que tiene el collider, pues va a hacer una condición primero de, oye, ¿este objeto se llama de este modo? Vamos, no se llama, porque otra de las formas de discriminar es poner name aquí, que es el nombre del game object, ¿vale? 1369 01:42:18,350 --> 01:42:22,189 Pero aquí, por ejemplo, vemos que el tag, si es plataforma, pues isGrounded es true. 1370 01:42:22,630 --> 01:42:27,310 Si no se llamara así, aunque colisione, esta operación no se va a ejecutar, ¿vale? 1371 01:42:27,750 --> 01:42:32,149 Pues aquí hay distintas cosas, miren, el raycast para detectar suelos en 2D, ¿vale? 1372 01:42:32,149 --> 01:42:40,510 Pues que en vez de hacer con un onCollision que está un objeto chocando con otro, 1373 01:42:40,949 --> 01:42:43,670 también se puede lanzar un rayo hacia abajo en este caso, ¿vale? 1374 01:42:43,670 --> 01:42:45,430 Que lo que haga es 1375 01:42:45,430 --> 01:42:47,949 Si está chocando, si está devolviendo 1376 01:42:47,949 --> 01:42:49,449 Algo, este valor, raycast 1377 01:42:49,449 --> 01:42:51,310 Hit, vale, pues que entonces 1378 01:42:51,310 --> 01:42:53,109 Y aparte, bueno, en esta condición 1379 01:42:53,109 --> 01:42:55,710 Pone que el tag del otro objeto es una 1380 01:42:55,710 --> 01:42:57,350 Plataforma, pues en ese caso isGranded 1381 01:42:57,350 --> 01:42:59,550 Es true, que ese booleano se puede usar para 1382 01:42:59,550 --> 01:43:01,329 Luego otros condicionales de 1383 01:43:01,329 --> 01:43:03,890 Pues si es false, porque no detecta 1384 01:43:03,890 --> 01:43:05,770 Nada, será que no está en el suelo, entonces si no es false 1385 01:43:05,770 --> 01:43:07,289 No puedo saltar, no puedo hacer 1386 01:43:07,289 --> 01:43:09,569 No se puede ejecutar la opción de salto 1387 01:43:09,569 --> 01:43:11,670 Si no me equivoco 1388 01:43:11,670 --> 01:43:13,810 pues aquí tenemos 1389 01:43:13,810 --> 01:43:15,369 a ver, un segundín 1390 01:43:15,369 --> 01:43:17,630 aquí os dejé 1391 01:43:17,630 --> 01:43:19,869 el proyecto 1392 01:43:19,869 --> 01:43:22,510 ¿vale? nuevamente que os podéis bajar 1393 01:43:22,510 --> 01:43:24,470 con la mayoría 1394 01:43:24,470 --> 01:43:25,689 si no todas de las 1395 01:43:25,689 --> 01:43:27,770 cosas que se van hablando aquí 1396 01:43:27,770 --> 01:43:30,289 ¿vale? para que lo veáis aplicado y lo veáis 1397 01:43:30,289 --> 01:43:32,189 usado ¿vale? 1398 01:43:32,329 --> 01:43:34,529 aunque esto esté para saber 1399 01:43:34,529 --> 01:43:36,350 más ¿vale? esto es 1400 01:43:36,350 --> 01:43:38,409 de apoyo, lo que me importa es que veáis esto 1401 01:43:38,409 --> 01:43:40,670 pero realmente es interesante que carguéis 1402 01:43:40,670 --> 01:43:43,489 este paquete 1403 01:43:43,489 --> 01:43:45,029 vamos, este 1404 01:43:45,029 --> 01:43:47,109 sí, es un package, si no me equivoco 1405 01:43:47,109 --> 01:43:48,210 no sé si es una secuencia 1406 01:43:48,210 --> 01:43:50,810 no, es un zip, bueno, seguramente era 1407 01:43:50,810 --> 01:43:52,449 era la 1408 01:43:52,449 --> 01:43:55,210 ya se me está yendo un poco 1409 01:43:55,210 --> 01:43:57,050 la cabeza de tanto rato hablando, el paquete 1410 01:43:57,050 --> 01:43:58,569 el proyecto, ¿vale? 1411 01:43:58,670 --> 01:44:01,069 de Unity, como lo que me entreguéis vosotros en las tareas 1412 01:44:01,069 --> 01:44:02,949 normalmente, entonces todo esto 1413 01:44:02,949 --> 01:44:04,729 también es importante que os suene, ¿vale? 1414 01:44:04,770 --> 01:44:06,609 por ejemplo, una pregunta puede ser 1415 01:44:06,609 --> 01:44:08,149 que esto se veía 1416 01:44:08,149 --> 01:44:11,029 Cuando estamos moviendo un personaje 1417 01:44:11,029 --> 01:44:12,689 Por 1418 01:44:12,689 --> 01:44:14,970 Fuerzas 1419 01:44:14,970 --> 01:44:15,829 ¿Vale? 1420 01:44:16,489 --> 01:44:18,770 Y le ponemos encima de una plataforma 1421 01:44:18,770 --> 01:44:20,869 Que se mueve por kinemáticas 1422 01:44:20,869 --> 01:44:22,369 Es decir, por un animation clip 1423 01:44:22,369 --> 01:44:23,970 O porque estamos diciendo que vaya izquierda o derecha 1424 01:44:23,970 --> 01:44:25,810 En su posición del transform 1425 01:44:25,810 --> 01:44:28,850 No se pega una cosa a la otra 1426 01:44:28,850 --> 01:44:30,810 ¿Vale? Porque como uno se mueve por fuerzas 1427 01:44:30,810 --> 01:44:32,310 Y está todo el rato cayendo hacia abajo 1428 01:44:32,310 --> 01:44:34,510 Y la plataforma se mueve hacia izquierda o derecha 1429 01:44:34,510 --> 01:44:37,189 Como la plataforma no se mueve por fuerzas 1430 01:44:37,189 --> 01:44:39,270 paradójicamente el personaje 1431 01:44:39,270 --> 01:44:41,029 no se va a mover con la plataforma 1432 01:44:41,029 --> 01:44:43,210 entonces hay que hacer este tipo de 1433 01:44:43,210 --> 01:44:45,189 truquis para que 1434 01:44:45,189 --> 01:44:47,149 truquis, bueno, perdonad 1435 01:44:47,149 --> 01:44:49,289 por el coloquialismo, para que 1436 01:44:49,289 --> 01:44:51,130 el personaje 1437 01:44:51,130 --> 01:44:52,430 al caer sobre una plataforma 1438 01:44:52,430 --> 01:44:55,010 se mueva, adquiera la posición 1439 01:44:55,010 --> 01:44:57,289 del transform de esa plataforma para que se mueva con ella 1440 01:44:57,289 --> 01:44:59,130 pues esto también es importante 1441 01:44:59,130 --> 01:45:01,229 de hecho en el enunciado del tema 5 1442 01:45:01,229 --> 01:45:03,149 salía más desarrollado para 1443 01:45:03,149 --> 01:45:05,149 aplicarlo, cambiar el 1444 01:45:05,149 --> 01:45:07,090 tamaño de los colliders, pues por si por ejemplo 1445 01:45:07,090 --> 01:45:12,289 la animación de agacharse del personaje, el personaje se agacha, pues verticalmente 1446 01:45:12,289 --> 01:45:16,369 ocupa menos espacio. Para que el collider se refleje en ello, pues se tiene que agachar 1447 01:45:16,369 --> 01:45:21,550 también. ¿Qué es lo que hacemos? Variar la posición del collider. Por ejemplo, hemos 1448 01:45:21,550 --> 01:45:26,390 capturado aquí primero, estamos yendo a un boss collider 2D que está en el objeto como 1449 01:45:26,390 --> 01:45:34,100 componente y luego lo podemos variar para que tenga unas nuevas dimensiones. ¿Qué 1450 01:45:34,100 --> 01:45:49,380 ¿Qué tal? ¿Sigo o alguna duda? Vamos ya al tema 6. Sigo. Si no, seguís ahí conmigo, ¿verdad? Vale. 1451 01:45:50,180 --> 01:45:57,560 Tema 6. Por lo de siempre, los vídeos, etcétera, ¿vale? Componente Terrain. Se hablaba de ello, hay vídeos sobre ello. 1452 01:45:58,119 --> 01:46:06,619 Voy rápido, ¿vale? Importante saber cómo funcionan los terrenos. Este paquete extra, que si ya usáis nuevas versiones de Unity, 1453 01:46:06,619 --> 01:46:08,859 ya viene integrado, pero este paquete 1454 01:46:08,859 --> 01:46:10,760 nuevo que, eso, en las versiones 1455 01:46:10,760 --> 01:46:12,859 que usamos estaba como preview, pero 1456 01:46:12,859 --> 01:46:16,619 que ya está, ya las ha asumido 1457 01:46:16,619 --> 01:46:18,720 porque funciona bien y en las nuevas versiones ya la han 1458 01:46:18,720 --> 01:46:20,859 integrado, pero en la versión que usábamos 1459 01:46:20,859 --> 01:46:22,680 había que activar, también 1460 01:46:22,680 --> 01:46:24,600 servía para explicar esto, los paquetes, 1461 01:46:24,680 --> 01:46:26,680 la opción de paquetes en preview, ¿vale? que está en 1462 01:46:26,680 --> 01:46:28,100 los project settings, ¿vale? 1463 01:46:28,579 --> 01:46:30,359 Lo vimos en la última tutoría que un compañero 1464 01:46:30,359 --> 01:46:32,600 tenía una duda relacionada, ¿vale? 1465 01:46:33,380 --> 01:46:34,579 Pues en el package manager 1466 01:46:34,579 --> 01:46:36,399 hay que activar los paquetes que 1467 01:46:36,399 --> 01:46:40,859 Están todavía en estado de previews para que luego salgan en el Package Manager y se puedan usar, ¿vale? 1468 01:46:41,220 --> 01:46:43,079 Entonces, eso me servía para hablar de esto. 1469 01:46:43,840 --> 01:46:48,300 Pues los Terrain Tools, que, bueno, pues se habla más en el siguiente apartado, ¿vale? 1470 01:46:48,539 --> 01:46:50,079 Todo esto es de las Terrain Tools. 1471 01:46:51,060 --> 01:46:51,659 Importante, ¿vale? 1472 01:46:52,539 --> 01:46:57,079 Luego, cómo se hace un Height Map, etcétera, pues no me es muy importante. 1473 01:46:57,619 --> 01:47:03,520 Es importante saberlo por si lo queréis importar uno que ya está basado en un mapa 2D, ¿vale? 1474 01:47:03,520 --> 01:47:04,800 De escala de grises. 1475 01:47:04,800 --> 01:47:07,399 bueno, no es tan importante, pero como se genera 1476 01:47:07,399 --> 01:47:09,159 el terreno, las dimensiones, etc 1477 01:47:09,159 --> 01:47:11,600 bueno, yo sí que le daría un ojo e intentaría 1478 01:47:11,600 --> 01:47:12,960 saberlo, pero bueno 1479 01:47:12,960 --> 01:47:15,039 como me ha pasado antes también 1480 01:47:15,039 --> 01:47:17,359 al hacerlo del check sphere 1481 01:47:17,359 --> 01:47:19,460 para que cargue 1482 01:47:19,460 --> 01:47:20,899 esta imagen como un head map 1483 01:47:20,899 --> 01:47:23,300 y de esta imagen pasemos a tener 1484 01:47:23,300 --> 01:47:25,340 un terreno con este detalle, pues tiene que ser 1485 01:47:25,340 --> 01:47:27,260 de un tipo de Photoshop RAW, hay que configurar 1486 01:47:27,260 --> 01:47:29,340 por eso lo puse aquí, pero bueno, de cara al examen 1487 01:47:29,340 --> 01:47:31,319 es demasiado importante esto 1488 01:47:31,319 --> 01:47:32,939 de cómo configurar 1489 01:47:32,939 --> 01:47:35,000 el archivo RAW para que lo coja, ¿vale? 1490 01:47:36,220 --> 01:47:37,380 Luego, pues 1491 01:47:37,380 --> 01:47:39,239 cómo se hace el terreno, todo esto es importante, 1492 01:47:39,399 --> 01:47:40,979 se ve en el vídeo de Álvaro bastante bien, 1493 01:47:41,619 --> 01:47:43,340 los atajos que se usan 1494 01:47:43,340 --> 01:47:45,319 cuando instalamos las Terrain Tools, 1495 01:47:45,579 --> 01:47:47,260 ahora vienen por defecto las nuevas versiones, 1496 01:47:47,340 --> 01:47:49,060 pero cómo son los atajos 1497 01:47:49,060 --> 01:47:50,899 para el modelado de 1498 01:47:50,899 --> 01:47:52,819 el esculpido del terreno. 1499 01:47:53,760 --> 01:47:55,260 Y estas herramientas, pues cuál es 1500 01:47:55,260 --> 01:47:56,960 la que sirve y cómo se llama la que sirve 1501 01:47:56,960 --> 01:47:59,060 para subir-bajar terrenos, para dar 1502 01:47:59,060 --> 01:48:00,460 una forma de meseta, 1503 01:48:01,220 --> 01:48:02,880 para suamizar, para estampar, 1504 01:48:02,939 --> 01:48:17,380 Digamos también un mapa de grises, ¿vale? Pues el noise, el bridge, esto es importante que os suene, ¿vale? La erosión, etc. Bueno, están todos explicados y en el vídeo de Álvaro también vienen vistos. 1505 01:48:18,359 --> 01:48:25,359 Luego, cómo pintar, ¿vale? Lo mismo, si habéis hecho las dos últimas tareas, pues lo habréis practicado. 1506 01:48:25,899 --> 01:48:33,819 En el vídeo de Álvaro viene cómo añadir árboles, que está la posibilidad de añadirles viento, ¿vale? 1507 01:48:34,039 --> 01:48:38,039 A ver, perdonad, lo del viento debería estar por aquí. 1508 01:48:38,039 --> 01:48:57,279 Ah, sí, aquí. Bueno, con la hierba, ¿vale? La hierba tiene el wind area, o debería estar. Bueno, pues no está. Eso no lo voy a preguntar porque no está. Pero tiene que estar en algún lado. 1509 01:48:57,279 --> 01:49:02,239 Supongo que es escupir terreno, añadir árboles 1510 01:49:02,239 --> 01:49:06,760 A ver, bueno, sí que tiene que haber algo relacionado con el viento 1511 01:49:06,760 --> 01:49:09,659 Pero bueno, tampoco nos preguntaréis sobre el viento 1512 01:49:09,659 --> 01:49:13,039 En el vídeo de Álvaro sí se hablaba, pero aquí no está 1513 01:49:13,039 --> 01:49:16,760 Vale, entonces, los niveles de detalle también 1514 01:49:16,760 --> 01:49:19,039 Ya cuando vamos pintando geometría con más detalle 1515 01:49:19,039 --> 01:49:21,239 Pues como por ejemplo esos árboles o cualquier objeto 1516 01:49:21,239 --> 01:49:23,520 Está este componente que es el lot group 1517 01:49:23,520 --> 01:49:25,159 El grupo de niveles de detalle 1518 01:49:25,159 --> 01:49:30,760 que podemos ir definiendo a distintas distancias varias geometrías para ver cómo se ven, ¿no? 1519 01:49:30,760 --> 01:49:34,060 Porque aquí en el ejemplo creo que es bastante ilustrativo, aquí se ve que es una esfera, 1520 01:49:34,579 --> 01:49:37,800 pero cuando se ve tan pequeñito, con cargar una malla mucho menos pesada, 1521 01:49:37,880 --> 01:49:41,520 porque tenga menos geometría, pues parece lo mismo. 1522 01:49:41,619 --> 01:49:43,640 Entonces con esto vamos simplificando los modelos. 1523 01:49:45,640 --> 01:49:48,520 Vale, ¿cómo importar el personaje? Pues lo mismo. 1524 01:49:48,520 --> 01:50:18,500 Esto se ve también en el vídeo de Álvaro y lo hemos ido viendo en la penúltima tarea, la del tema 6. Os dejé un vídeo yo también de cómo configurar, si no me equivoco, en la parte de Mixamo. 1525 01:50:18,520 --> 01:50:20,659 y que sean 1526 01:50:20,659 --> 01:50:23,359 tridimensionales, vamos, básicamente porque 1527 01:50:23,359 --> 01:50:25,500 no es para objetos 2D 1528 01:50:25,500 --> 01:50:27,000 ni 1D, entonces 1529 01:50:27,000 --> 01:50:29,340 aquí podemos riegar objetos 1530 01:50:29,340 --> 01:50:31,439 darle animaciones por defecto, Mixamo la verdad es que está 1531 01:50:31,439 --> 01:50:33,720 muy bien y también en este vídeo os comento 1532 01:50:33,720 --> 01:50:34,600 cómo 1533 01:50:34,600 --> 01:50:37,140 luego configurar para que 1534 01:50:37,140 --> 01:50:39,659 las animaciones se interponen 1535 01:50:39,659 --> 01:50:40,920 de una manera más correcta 1536 01:50:40,920 --> 01:50:43,539 para que hagan lo que buscamos 1537 01:50:43,539 --> 01:50:45,439 básicamente, eso, pues saber 1538 01:50:45,439 --> 01:50:47,420 el concepto de que es el avatar, que es esta 1539 01:50:47,420 --> 01:50:53,960 estructura de huesos que tiene y luego como dentro de un fx en las cuatro secciones que hay de 1540 01:50:53,960 --> 01:51:00,500 configuración del fx de lo que hay dentro pues eso lo referido al modelo sobre todo lo del scale 1541 01:51:00,500 --> 01:51:06,119 factor bueno esto tampoco es especialmente importante el rig sí que es importante y en 1542 01:51:06,119 --> 01:51:11,659 el vídeo habló bastante de cómo hay que configurar en base a sobre todas los a los 1543 01:51:11,659 --> 01:51:20,359 Los rigs que nos vienen de Mixamo, que son como los más asequibles porque ya vienen muy configurados, pues cómo se configuran. 1544 01:51:21,539 --> 01:51:32,359 Básicamente que sepáis que es una armatura y un avatar, un avatar mejor dicho, que es esta estructura ya vinculado todo, pero bueno, tampoco sería lo que más estudiaría más allá del concepto. 1545 01:51:33,720 --> 01:51:36,840 Pero eso, que los personajes tienen que tener un rig. 1546 01:51:36,840 --> 01:52:02,380 Luego, en la animación, esto es importante, pues si queremos que una animación de un objeto 3D, pues hay que marcar el loop time para que sea un bucle, ¿vale? Y bueno, esto sí que es más o menos importante. También copiar el avatar de otro objeto, ¿vale? Para ir referenciando a la misma estructura de huesos todas las animaciones, ¿vale? Entonces, en el vídeo os explico, en el de Mixamo, os explico un poco sobre ello. 1547 01:52:02,380 --> 01:52:07,579 y los materiales pues también hablo algo en el vídeo 1548 01:52:07,579 --> 01:52:16,939 esto pues es un poco la traslación de la panel animator al mundo 3D 1549 01:52:16,939 --> 01:52:20,399 en el anterior tema se veía en el 2D, pues en el 3D es importante 1550 01:52:20,399 --> 01:52:23,560 y el blend tree que es un método que permite hacer 1551 01:52:23,560 --> 01:52:27,500 aquí se habla del 1D, del de una dimensión 1552 01:52:27,500 --> 01:52:31,640 que es que puede ir de un valor a otro cruzando varios umbrales 1553 01:52:31,640 --> 01:52:42,840 Por ejemplo, aquí si tenemos un joystick que tenemos un axis en positivo que va de 0 a 1, a medida que vayamos subiendo el joystick hacia el 1 puede ir pasando por distintas animaciones. 1554 01:52:43,060 --> 01:52:53,539 Empieza parado y a medida que voy subiendo se van interpolando las dos animaciones para que se vayan desencadenando hasta que si le damos al máximo al joystick al 1, por ejemplo, pues ya se pone a correr. 1555 01:52:53,539 --> 01:53:00,260 entonces esto nos permite ir combinando en distintas animaciones en distintas digamos 1556 01:53:00,260 --> 01:53:06,680 coordenadas si fueran dos dimensiones o en este caso una distintas distintos valores entre uno 1557 01:53:06,680 --> 01:53:11,600 y otro vale pues esto también es importante saber que existen los blend trees y cómo se configuran 1558 01:53:13,659 --> 01:53:20,000 luego bueno el room motion esto se lo vimos en que si ya en el vídeo se explica en el que yo 1559 01:53:20,000 --> 01:53:21,720 dejó, que si 1560 01:53:21,720 --> 01:53:24,180 la animación ya tiene una animación 1561 01:53:24,180 --> 01:53:26,140 intrínseca, es decir, el personaje ya en la animación 1562 01:53:26,140 --> 01:53:28,380 avanza hacia adelante y se desplaza en el espacio 1563 01:53:28,380 --> 01:53:30,500 eso nos puede perjudicar 1564 01:53:30,500 --> 01:53:31,979 en el sentido de que 1565 01:53:31,979 --> 01:53:34,260 normalmente queremos que el personaje 1566 01:53:34,260 --> 01:53:36,100 se mueva en base a que 1567 01:53:36,100 --> 01:53:38,180 nosotros le demos una fuerza o con el 1568 01:53:38,180 --> 01:53:40,180 carácter controller le digamos adelante 1569 01:53:40,180 --> 01:53:42,100 pero solo hace la animación 1570 01:53:42,100 --> 01:53:44,260 de andar sobre el suelo, no que se desplace 1571 01:53:44,260 --> 01:53:45,920 también, eso se le da, pues ya os digo 1572 01:53:45,920 --> 01:53:47,439 por código, entonces 1573 01:53:47,439 --> 01:53:50,340 si no queremos que esa animación 1574 01:53:50,340 --> 01:53:52,100 que trae ya en sí misma 1575 01:53:52,100 --> 01:53:54,199 de desplazamiento, la animación que estamos 1576 01:53:54,199 --> 01:53:56,260 importando, vale, pues quitamos 1577 01:53:56,260 --> 01:53:57,800 esto de la Playroom Root Motion 1578 01:53:57,800 --> 01:53:59,880 ya os digo, lo explico más en este vídeo 1579 01:53:59,880 --> 01:54:00,800 así que 1580 01:54:00,800 --> 01:54:03,460 os remito a él 1581 01:54:03,460 --> 01:54:06,239 luego el Character Controller, pues en la tarea se hablaba de ello 1582 01:54:06,239 --> 01:54:08,399 vale, os remito 1583 01:54:08,399 --> 01:54:09,680 a que leáis un poco la tarea 1584 01:54:09,680 --> 01:54:10,819 de cómo se usaba 1585 01:54:10,819 --> 01:54:13,380 este tipo de 1586 01:54:13,380 --> 01:54:16,640 peculiaridades que tiene el Character Controller 1587 01:54:16,640 --> 01:54:36,399 Ya en la tutoría del tema 6 se habló de que el carácter controller sirve sobre todo para añadir elementos como que se puedan subir en terrenos las cuestas, las pendientes, se puedan subir escaleras, algo que si no con las físicas o con el kinemáticos, etc. es muy complicado de conseguir porque no hay acciones. 1588 01:54:36,399 --> 01:54:57,000 Entonces, para mover personajes que se van a mover por espacios complicados, simplifica ciertas cosas. Es verdad que tiene embrollos a la hora de configurarlo con estos métodos y que uno sí que, digamos, aunque no sea la gravedad como tal del Rigid Body, no tiene fuerzas físicas, pero el método Simple Move sí que está todo el rato desplazando para abajo. 1589 01:54:57,000 --> 01:54:58,899 entonces el simple move 1590 01:54:58,899 --> 01:54:59,899 la diferencia 1591 01:54:59,899 --> 01:55:02,659 lo pone en algún punto 1592 01:55:02,659 --> 01:55:05,659 es que si el personaje no va a saltar 1593 01:55:05,659 --> 01:55:07,319 para movernos lateralmente 1594 01:55:07,319 --> 01:55:08,119 o en profundidad 1595 01:55:08,119 --> 01:55:10,380 simplifica mucho porque 1596 01:55:10,380 --> 01:55:12,819 digamos que está todo el momento 1597 01:55:12,819 --> 01:55:15,100 llevando al personaje 1598 01:55:15,100 --> 01:55:16,859 o al objeto que lo tenga hacia el suelo 1599 01:55:16,859 --> 01:55:17,920 hasta algo que lo pare 1600 01:55:17,920 --> 01:55:20,520 pero el eje Y 1601 01:55:20,520 --> 01:55:22,659 de su movimiento no lo va a considerar 1602 01:55:22,659 --> 01:55:23,899 no lo tiene en cuenta 1603 01:55:23,899 --> 01:55:26,119 entonces si no va a saltar está perfecto 1604 01:55:26,119 --> 01:55:32,560 Pero si queremos que salte y que considere ese eje, sí que tenemos que usar ya el método move. 1605 01:55:32,960 --> 01:55:36,539 Básicamente el Character Controller se basa en estos dos métodos para los desplazamientos. 1606 01:55:38,399 --> 01:55:46,119 El problema es que cuando usamos move, y como pone aquí, no hay fuerzas físicas que se... 1607 01:55:46,119 --> 01:55:48,319 No sé si lo pone ahí, pero bueno, lo pone en algún punto. 1608 01:55:48,979 --> 01:55:53,039 Las fuerzas físicas no existen por defecto para el Character Controller. 1609 01:55:53,039 --> 01:56:15,800 Y no deberíamos usar un RigidBody para no alterar el comportamiento del CharacterController, ¿vale? Entonces, el move, como pone en los ejemplos de uso, hay que ponerle una gravedad, digamos, artificial mediante código, ¿vale? Entonces, hay que falsear esa gravedad. Entonces, cuando el personaje salta, etc., es un poco más complicado. 1610 01:56:15,800 --> 01:56:18,920 bueno, pues eso, que tiene también como un 1611 01:56:18,920 --> 01:56:21,020 capsule collider que detecta 1612 01:56:21,020 --> 01:56:22,239 los límites de 1613 01:56:22,239 --> 01:56:25,020 este personaje que tiene el carácter controller 1614 01:56:25,020 --> 01:56:27,020 y como no es un collider 1615 01:56:27,020 --> 01:56:29,100 en sí, sino que pertenece al carácter 1616 01:56:29,100 --> 01:56:30,840 controller, esta cápsula para que 1617 01:56:30,840 --> 01:56:32,880 detecte colisiones hay que usar un método propio 1618 01:56:32,880 --> 01:56:34,979 que es este onControllerColliderHit 1619 01:56:34,979 --> 01:56:36,899 ¿vale? bueno, aquí pone un poco todas 1620 01:56:36,899 --> 01:56:39,020 esas cosas, pues a ver 1621 01:56:39,020 --> 01:56:41,020 pues la gracia de este 1622 01:56:41,020 --> 01:56:43,000 script de carácter 1623 01:56:43,000 --> 01:56:44,920 controller, pues eso, que se puede definir pendientes 1624 01:56:44,920 --> 01:56:48,220 escaleras, etc. y simplifica mucho algunas opciones 1625 01:56:48,220 --> 01:56:50,979 aquí hablo de un poco de esto que he hablado 1626 01:56:50,979 --> 01:56:54,180 de movernos o si queremos hacer un salto 1627 01:56:54,180 --> 01:56:59,300 etc. ¿vale? bueno, el long control 1628 01:56:59,300 --> 01:57:02,100 el collider hill, lo que os he dicho, pues es el método que sirve para 1629 01:57:02,100 --> 01:57:04,899 detectar colisiones con otro objeto que sí tenga un collider 1630 01:57:04,899 --> 01:57:08,680 ¿vale? pero como el nuestro no lo tiene, pues hay que usar este método 1631 01:57:08,680 --> 01:57:10,300 ¿vale? 1632 01:57:11,560 --> 01:57:12,420 ¿dudas hasta aquí? 1633 01:57:12,420 --> 01:57:18,079 Cinemachine 1634 01:57:18,079 --> 01:57:20,079 Para simplificar 1635 01:57:20,079 --> 01:57:22,859 El seguimiento de nuestro personaje 1636 01:57:22,859 --> 01:57:24,239 O los movimientos de cámara 1637 01:57:24,239 --> 01:57:26,520 Sobre todo, está muy bien para 1638 01:57:26,520 --> 01:57:28,680 Que la cámara pueda 1639 01:57:28,680 --> 01:57:30,560 Seguir al personaje y podamos 1640 01:57:30,560 --> 01:57:32,140 Rotar con ella o que 1641 01:57:32,140 --> 01:57:34,479 Digamos, hacer distintos 1642 01:57:34,479 --> 01:57:36,760 Rigs, distintas posiciones según movamos 1643 01:57:36,760 --> 01:57:38,239 Algún parámetro 1644 01:57:38,239 --> 01:57:40,020 Por ejemplo, para en un juego 3D 1645 01:57:40,020 --> 01:57:41,939 Irnos moviendo con el personaje 1646 01:57:41,939 --> 01:57:44,600 Y si hacemos un movimiento vertical 1647 01:57:44,600 --> 01:57:46,520 Con el ratón, pues sirva 1648 01:57:46,520 --> 01:57:48,399 para subir o bajar la cámara y según 1649 01:57:48,399 --> 01:57:50,319 cuanto nos alejemos al subir 1650 01:57:50,319 --> 01:57:52,680 pues enfoque hacia la cabeza 1651 01:57:52,680 --> 01:57:54,300 al bajar a la espalda 1652 01:57:54,300 --> 01:57:56,140 bueno, se pueden hacer muchas configuraciones 1653 01:57:56,140 --> 01:57:58,579 en el vídeo de Álvaro, que es el que más 1654 01:57:58,579 --> 01:57:59,960 me importa, ya se introduce 1655 01:57:59,960 --> 01:58:02,600 aquí os dejé una playlist hablando de 1656 01:58:02,600 --> 01:58:04,340 Cinemachine, más avanzada 1657 01:58:04,340 --> 01:58:06,739 eso ya para vosotros, no para el examen 1658 01:58:06,739 --> 01:58:08,340 pero bueno, pues hay 1659 01:58:08,340 --> 01:58:08,819 distintos 1660 01:58:08,819 --> 01:58:12,380 distintos tipos 1661 01:58:12,380 --> 01:58:13,619 de cámaras, cómo funciona 1662 01:58:13,619 --> 01:58:15,840 el Cinemachine Brain 1663 01:58:15,840 --> 01:58:18,659 importante saberlo, también saber que tiene 1664 01:58:18,659 --> 01:58:20,560 su propia librería onmspace 1665 01:58:20,560 --> 01:58:21,960 como os he dicho antes, fijaos 1666 01:58:21,960 --> 01:58:24,840 para que cargue sus clases 1667 01:58:24,840 --> 01:58:26,779 bueno, pues 1668 01:58:26,779 --> 01:58:28,819 un poco que hayáis probado la tarea 1669 01:58:28,819 --> 01:58:30,960 cómo funciona esto, los que me la entregaste 1670 01:58:30,960 --> 01:58:32,220 y me consta que lo habéis hecho 1671 01:58:32,220 --> 01:58:34,260 y bueno, ya tiene 1672 01:58:34,260 --> 01:58:36,680 tantas opciones que lo que más me importa es eso 1673 01:58:36,680 --> 01:58:38,539 que sepáis un poco la base 1674 01:58:38,539 --> 01:58:40,699 entonces, pues bueno, aquí se habla un poco de ello 1675 01:58:40,699 --> 01:58:42,760 y cómo alternar 1676 01:58:42,760 --> 01:58:44,720 entre cámaras, aquí se pone 1677 01:58:44,720 --> 01:58:48,800 juego del setup tics que os he dicho antes para activar o desactivar cámaras también se puede 1678 01:58:48,800 --> 01:58:58,000 usar la prioridad vale para ello de cada cámara eso si no me equivoco lo cuento aquí aquí con la 1679 01:58:58,000 --> 01:59:04,159 prioridad si por aquí lo tenemos aquí podemos ir cambiando la prioridad para ir cambiando de una 1680 01:59:04,159 --> 01:59:12,800 cámara a otra vale pues eso sí es interesante vale y luego el nas mes que es para hacer pequeñas 1681 01:59:12,800 --> 01:59:19,979 autómatas que se muevan con inteligencia artificial, bueno, hasta cierto punto, por ciertas superficies, ¿vale? 1682 01:59:20,420 --> 01:59:26,739 Pues como se crea el NATMES, pues habrá que darle que tenga cierto valor de static, ese static que os he comentado 1683 01:59:26,739 --> 01:59:32,319 antes que hay aquí, ¿vale? Pues de todos los que se pueden activar, aunque si se activan todos, pues todos aparecen 1684 01:59:32,319 --> 01:59:40,199 marcados. Hay dos, que son estos dos, que se refieren a que pueda ser una superficie que considere a ese autómata 1685 01:59:40,199 --> 01:59:47,159 como navegable vale y aparte otra que sirve para unir distintas superficies y no está si no son 1686 01:59:47,159 --> 01:59:51,119 contiguas para que puedan saltar entre unos y otros vale pues eso también se puede configurar 1687 01:59:51,119 --> 01:59:57,899 desde el propio panel de navigation que tenemos aquí bueno pues eso hay que ir definiendo el 1688 01:59:57,899 --> 02:00:02,520 espacio para que haga las zonas navegables que son estas que aparecen azul si tenemos 1689 02:00:02,520 --> 02:00:09,420 of mes pues podemos conseguir que el personaje pueda saltar y perseguirnos incluso entre estas 1690 02:00:09,420 --> 02:00:12,020 islas que hay, que no están conectadas 1691 02:00:12,020 --> 02:00:13,819 y bueno, cómo se vaquea ese 1692 02:00:13,819 --> 02:00:15,479 Nazmesh, bueno, de eso habla Álvaro 1693 02:00:15,479 --> 02:00:17,579 el icono del 1694 02:00:17,579 --> 02:00:19,979 Nazmesh vaqueado, las áreas 1695 02:00:19,979 --> 02:00:21,859 para que caminen y luego los agentes 1696 02:00:21,859 --> 02:00:22,819 que se aplican para 1697 02:00:22,819 --> 02:00:25,960 a los objetos que nos tienen que perseguir 1698 02:00:25,960 --> 02:00:27,659 porque igual que he dicho antes que el carácter 1699 02:00:27,659 --> 02:00:30,079 controller no se mueve ni por físicas ni por 1700 02:00:30,079 --> 02:00:33,579 kinemáticas, los 1701 02:00:33,579 --> 02:00:35,859 los autómatas, los 1702 02:00:35,859 --> 02:00:38,020 enemigos, la inteligencia artificial de este Nazmesh 1703 02:00:38,020 --> 02:00:44,640 que sean los agentes, que sean un NATMESH agent, que se aplica luego con estos métodos. 1704 02:00:44,720 --> 02:00:48,300 Aquí os hablo de nuevas versiones de Unity, que tienen más funcionalidades, 1705 02:00:49,060 --> 02:00:56,800 pero básicamente esos personajes se van a mover, y pasa un momento el NATMESH agent, 1706 02:00:57,100 --> 02:00:59,420 se van a mover en base a estas funciones. 1707 02:00:59,420 --> 02:01:05,840 Es decir, no va a haber físicas, no va a haber nada que mueva el personaje por código 1708 02:01:05,840 --> 02:01:08,100 más allá de lo referente 1709 02:01:08,100 --> 02:01:09,739 a las funciones del NATMES 1710 02:01:09,739 --> 02:01:11,600 ¿vale? y por eso en este tipo de 1711 02:01:11,600 --> 02:01:13,760 en este componente 1712 02:01:13,760 --> 02:01:15,979 pues es donde se configura la velocidad 1713 02:01:15,979 --> 02:01:17,979 ¿vale? también cuánto 1714 02:01:17,979 --> 02:01:19,880 tarda en parar, si acelera muy rápido 1715 02:01:19,880 --> 02:01:21,579 o no, ¿vale? incluso 1716 02:01:21,579 --> 02:01:22,279 pues eso 1717 02:01:22,279 --> 02:01:25,899 y también, bueno, si es muy grande 1718 02:01:25,899 --> 02:01:27,720 o no, es decir, que digamos que 1719 02:01:27,720 --> 02:01:30,020 lo relativo a cómo se mueven 1720 02:01:30,020 --> 02:01:31,800 esos autómatas no se define 1721 02:01:31,800 --> 02:01:33,779 por código en plan Translate 1722 02:01:33,779 --> 02:01:35,460 ni AdForce ni nada 1723 02:01:35,460 --> 02:01:39,720 sino que tienen sus propios parámetros. 1724 02:01:41,300 --> 02:01:47,199 Entonces, vuelvo aquí, bueno, pues básicamente lo que hemos hablado, 1725 02:01:47,859 --> 02:01:52,340 luego se habla de cómo se vaquea ese espacio para que salga qué zonas son navegables por el personaje, 1726 02:01:52,840 --> 02:01:59,619 automata, es decir, el automata cuando se definen cuáles son las pendientes que puede subir 1727 02:01:59,619 --> 02:02:04,220 o los peldaños, como pasa con el Character Controller, hasta que no vaqueemos, 1728 02:02:04,220 --> 02:02:07,359 no se van a coger todas esas áreas que hemos hecho estáticas 1729 02:02:07,359 --> 02:02:10,159 y las incluirá como zonas que ese personaje puede ir. 1730 02:02:10,520 --> 02:02:12,739 Por ejemplo, nuestro personaje, nuestro carácter controller, 1731 02:02:13,000 --> 02:02:16,199 puede decir que pudiera subir esta pendiente hasta aquí, 1732 02:02:16,800 --> 02:02:20,520 pero el enemigo o el autómata de inteligencia artificial 1733 02:02:20,520 --> 02:02:23,060 que tengamos aquí y que vaya persiguiendo al personaje, 1734 02:02:23,239 --> 02:02:26,140 en este punto ya, si lo hemos configurado para que ese agente 1735 02:02:26,140 --> 02:02:31,140 no pueda subir cierta pendiente, pues no podría subir. 1736 02:02:31,399 --> 02:02:33,800 Entonces, esto marca las zonas por las que puede navegar 1737 02:02:33,800 --> 02:02:37,380 la inteligencia artificial. 1738 02:02:38,000 --> 02:02:40,220 Es verdad que en la versión que usamos 1739 02:02:40,220 --> 02:02:42,579 todavía había ciertas cosas en desarrollo 1740 02:02:42,579 --> 02:02:45,180 y son las que me importan, porque si no es aún más complejo, 1741 02:02:45,760 --> 02:02:49,220 pero en nuevas versiones ya se pueden generar 1742 02:02:49,220 --> 02:02:51,880 distintos tipos de agentes para que puedan 1743 02:02:51,880 --> 02:02:54,520 ir por distintas mallas de navegación, 1744 02:02:54,520 --> 02:02:56,739 en distintos NATMES, que es lo que significa 1745 02:02:56,739 --> 02:02:59,279 malla de navegación, porque ahora sí que es verdad 1746 02:02:59,279 --> 02:03:03,399 que solo se puede generar una por escenario, 1747 02:03:03,800 --> 02:03:15,460 A menos que instalemos esos paquetes de los que se hablan aquí, que tienen más funcionalidades, o ya las nuevas versiones de Unity, eso lo pongo por aquí, pues ya tienen más implementadas, pero se basan todas en esto. 1748 02:03:16,260 --> 02:03:25,479 Luego, pues eso, al personaje automata hay que añadirle este componente en AddMessage, que es el que configura sus comportamientos. 1749 02:03:25,479 --> 02:03:48,479 Y luego, nuevamente, hay una librería que es esta unityengine.ai, que es la que sirve, por ejemplo, para luego poder poner este método importante, setDestination, que sirve para decir automata, desde donde estés y yendo por la malla de navegación que hayas baqueado anteriormente, tienes que ir yendo a esta posición, que se puede ir variando en cada momento, ¿vale? 1750 02:03:48,479 --> 02:03:51,520 bueno, pues aquí habla también eso 1751 02:03:51,520 --> 02:03:54,000 de las funcionalidades adicionales 1752 02:03:54,000 --> 02:03:55,840 que ya hay nuevas versiones o que se pueden instalar 1753 02:03:55,840 --> 02:03:56,960 con más paquetes 1754 02:03:56,960 --> 02:03:59,539 y luego pues, bueno 1755 02:03:59,539 --> 02:04:01,520 lo que es una máquina 1756 02:04:01,520 --> 02:04:03,199 de estado finito que básicamente es 1757 02:04:03,199 --> 02:04:05,659 hacer mediante código que vayamos poniendo 1758 02:04:05,659 --> 02:04:07,579 condicionales para que vaya 1759 02:04:07,579 --> 02:04:08,680 de un estado a otro 1760 02:04:08,680 --> 02:04:11,399 os lo hablé en una tutoría de que 1761 02:04:11,399 --> 02:04:13,680 se puede hacer el estado número 0, el 1 1762 02:04:13,680 --> 02:04:15,520 2, 3 con ints, que fuera 1763 02:04:15,520 --> 02:04:17,520 el 0 el de reposo, el 1 1764 02:04:17,520 --> 02:04:19,140 el de patrulla, el 2 el de atacar 1765 02:04:19,140 --> 02:04:21,380 y luego por ejemplo con un switch case 1766 02:04:21,380 --> 02:04:23,619 o con condicionales 1767 02:04:23,619 --> 02:04:24,939 se puede hacer que vaya 1768 02:04:24,939 --> 02:04:26,359 entre un punto y otro 1769 02:04:26,359 --> 02:04:29,420 ya se irán generando 1770 02:04:29,420 --> 02:04:30,739 esas condiciones según 1771 02:04:30,739 --> 02:04:33,159 vayamos poniendo condicionales nosotros 1772 02:04:33,159 --> 02:04:35,159 aquí se habla también 1773 02:04:35,159 --> 02:04:37,479 esta parte 1774 02:04:37,479 --> 02:04:39,579 de cara al examen, pues es importante 1775 02:04:39,579 --> 02:04:41,500 que la sepáis, no es lo que más me interesa 1776 02:04:41,500 --> 02:04:43,520 era más para la tarea, todo esto del crono de visión 1777 02:04:43,520 --> 02:04:45,460 etcétera, pero bueno, se ponen en juego 1778 02:04:45,460 --> 02:04:46,659 algunos de las 1779 02:04:46,659 --> 02:04:49,579 Algunos métodos interesantes 1780 02:04:49,579 --> 02:04:52,220 Pero bueno, no es lo que más atención le daría 1781 02:04:52,220 --> 02:04:54,000 Set destinations, a ver qué es 1782 02:04:54,000 --> 02:04:55,560 Con lo que se marcan los destinos 1783 02:04:55,560 --> 02:04:57,600 Y lo anterior sí, pero bueno 1784 02:04:57,600 --> 02:04:58,960 Ya... 1785 02:04:58,960 --> 02:05:00,479 Es importante, bueno, sí 1786 02:05:00,479 --> 02:05:02,119 ¿Puede entrar alguna cosa? Sí 1787 02:05:02,119 --> 02:05:05,460 Pero bueno, no es lo que más énfasis le daría 1788 02:05:05,460 --> 02:05:06,079 Vale 1789 02:05:06,079 --> 02:05:08,399 Tema 7, hasta aquí, ¿qué tal? 1790 02:05:09,840 --> 02:05:10,500 ¿Alguna duda? 1791 02:05:14,579 --> 02:05:15,560 Vale, continuamos 1792 02:05:15,560 --> 02:05:17,439 Espero que sigáis ahí 1793 02:05:17,439 --> 02:05:36,859 Tema 7. Materiales. Tema de materiales, pues importante. Aquí se habla en este vídeo de lo relacionado con materiales. Pues bueno, el saber más no es importante porque aquí sobre todo para hablar de offset, etc. Bueno, es importante para vosotros, pero no. 1794 02:05:36,859 --> 02:05:59,020 Saber qué es un shader, ¿vale? Luego además se hablará del shader graph, pues saber qué es un shader, la diferencia entre shader y material, ¿vale? Shader es básicamente la configuración que permite que luego el material pueda acceder a distintos valores, distintos elementos, ¿vale? 1795 02:05:59,020 --> 02:06:20,420 Todo está configurado, digamos, en un código que es este shader y luego el material es la aplicación concreta y cómo configuramos y es lo que arrastramos a la malla, ¿vale? De cada objeto. Bueno, esto es importante. Saber los mapas de los shaders por defecto que tiene Unity, ¿vale? Esto es importante. 1796 02:06:20,420 --> 02:06:29,090 El video player, bueno, no le daría muchas vueltas de cara al examen 1797 02:06:29,090 --> 02:06:31,670 Sabéis lo que es, pero no le daría muchas vueltas 1798 02:06:31,670 --> 02:06:36,810 El skybox sí, que es esa cúpula, esa esfera que rodea al entorno 1799 02:06:36,810 --> 02:06:38,869 Y que nos permite, bueno, portar la iluminación, ¿no? 1800 02:06:38,890 --> 02:06:43,270 De hecho cuando creamos una nueva escena ya tenemos un skybox aplicado por defecto 1801 02:06:43,270 --> 02:06:50,149 Y básicamente eso se viene definido porque por defecto en el panel de lighting 1802 02:06:50,149 --> 02:06:52,489 ya hay un skybox por defecto 1803 02:06:52,489 --> 02:06:53,550 que se puede cambiar 1804 02:06:53,550 --> 02:06:55,329 pues eso es importante 1805 02:06:55,329 --> 02:07:00,289 hay shaders específicos 1806 02:07:00,289 --> 02:07:02,149 para meter distintos tipos de skybox 1807 02:07:02,149 --> 02:07:03,109 vale 1808 02:07:03,109 --> 02:07:05,430 sigo 1809 02:07:05,430 --> 02:07:08,350 luego, los render pipelines, pues saber que existen 1810 02:07:08,350 --> 02:07:09,090 en el último 1811 02:07:09,090 --> 02:07:12,270 en la última tarea ya se trabajaba en 1812 02:07:12,270 --> 02:07:14,449 URP, saber que aparte del 1813 02:07:14,449 --> 02:07:16,010 que hemos trabajado durante todo el curso 1814 02:07:16,010 --> 02:07:17,710 que es el basiquillo, el estándar 1815 02:07:17,710 --> 02:07:35,090 Este built-in render pipeline existe, por ejemplo, aparte de los que alguien puede programar, porque a medida, a partir de este que está muy cerrado, estándar, estos dos que tenemos aquí tienen esto de RP, de render pipeline, siendo scriptable render pipeline. 1816 02:07:35,090 --> 02:07:52,390 De hecho, si os fijáis, cuando generamos una con el Unity Hub, que lo tengo aquí guardado, con el Unity Hub, cuando vamos a generar secuencias de Universal Render Pipeline o el URP, pone esto de Scriptable Render Pipeline. 1817 02:07:52,390 --> 02:08:06,430 Eso básicamente lo que indica es que son más abiertos porque se puede hacer scripting de ellos, es decir, se puede cambiar el código de forma más abierta. 1818 02:08:06,930 --> 02:08:13,449 Tenemos, así por defecto, el Universal Render Pipeline y el High Definition Render Pipeline. 1819 02:08:13,869 --> 02:08:18,949 Este sirve sobre todo para tener más calidad, pero para juegos 2D y móviles de alta calidad es importante. 1820 02:08:18,949 --> 02:08:39,189 Si queremos un juego de última generación con los mejores gráficos, este permite optimizar. Tiene una calidad intermedia. Si queremos hacer un juego, por ejemplo, para PlayStation 5 o uno de muchísima calidad, habría que ir a High Definition Render Pipeline de estas opciones. 1821 02:08:39,189 --> 02:09:01,350 Es el que más calidad tiene, el que más rendimiento y más opciones gráficas, etcétera, tiene, ¿vale? Uy, más tipos de luces, más tipos de efectos de posprocesado, etcétera, ¿vale? Entonces, si queremos un juego para móvil o un juego 2D basiquete, pues el render, el URP sería lo óptimo para no sobrecargar, ¿vale? Esto es lo de siempre. 1822 02:09:01,350 --> 02:09:15,710 Si no necesitamos de más, no hay por qué ir a algo más alto, pero si queremos juegos AAA o juegos con muchas prestaciones gráficas, o en consolas de última generación, etc., el High Definition Render Pipeline. Esto me parece importante que lo sepáis. 1823 02:09:15,710 --> 02:09:28,449 Bueno, aquí habla de cómo actualizar el render pipeline, etcétera, de que en la sección de cualidad hay que meterle un render pipeline asset, porque si no, no funciona, que los materiales hay que actualizarlos. 1824 02:09:28,449 --> 02:09:49,130 Bueno, esto es la tarea salida. El shader graph también es que sepáis para qué sirve. Es un tema muy denso este, pero que a nivel general sepáis que el shader graph sirve para, mediante estructuras nodales, poder hacer cambios y configuraciones de los materiales, de shaders que luego se traducen en materiales. 1825 02:09:49,130 --> 02:09:52,109 Esta es una de las gracias de trabajar en un sistema 1826 02:09:52,109 --> 02:09:54,390 Scriptable Render Pipeline 1827 02:09:54,390 --> 02:09:56,050 Que permite más funcionalidades 1828 02:09:56,050 --> 02:09:58,069 Bueno, descubrí 1829 02:09:58,069 --> 02:10:00,449 Bueno, esto que sepáis que es el Shader Graph 1830 02:10:00,449 --> 02:10:02,390 Sobre todo, un poco el concepto 1831 02:10:03,210 --> 02:10:04,729 Luego ya en la práctica 1832 02:10:04,729 --> 02:10:06,369 7 se ha 1833 02:10:06,369 --> 02:10:08,449 Hecho cosas, se os ha pedido cosas 1834 02:10:08,449 --> 02:10:09,670 De cara al examen, bueno 1835 02:10:09,670 --> 02:10:12,289 Es importante, sí, pero no lo que más 1836 02:10:12,289 --> 02:10:14,050 Enfasitaría. ¿Qué es el Shader Graph? 1837 02:10:14,050 --> 02:10:15,409 Sí, el concepto sí 1838 02:10:15,409 --> 02:10:18,369 Ya hay nodos concretos o qué es exponer 1839 02:10:18,369 --> 02:10:33,789 Pues lo veo, no va a dar tiempo a tanto. Sobre luces, a ver, aquí no ponía nada, bueno, aquí está la sección de lighting. Pues los tipos de luces, muy importante, saber cuáles son, ¿vale? Eso es importante. 1840 02:10:34,470 --> 02:10:37,850 ¿Qué son el concepto de las light proofs y reflexion proofs? 1841 02:10:37,850 --> 02:10:45,189 Es importante que sepáis qué es el concepto para no tener luces en tiempo real todo el rato 1842 02:10:45,189 --> 02:10:48,329 o reflexiones que gastan mucho tiempo. 1843 02:10:48,449 --> 02:10:52,029 Se hacen estas sondas que lo que hacen es, en esos puntos que vamos marcando, 1844 02:10:53,090 --> 02:10:58,609 ir guardando la información para que directamente el objeto se ilumine a través de ello. 1845 02:10:58,609 --> 02:11:15,989 Pero bueno, más allá de saber esto, no enfatizaría, no indagaría mucho más. Los parámetros de las luces, pues bueno, un poco que sepáis qué parámetros tienen, ¿vale? Aquí sobre todo se habla de la luz de spot, que es la que más tiene, pero bueno, saber que tienen color, intensidad, etc. 1846 02:11:15,989 --> 02:11:37,630 Luego, lo del skybox, por lo que acabo de decir, importante también saberlo. La iluminación global, bueno, esto ya son cosas para que sepáis vosotros de cara a si trabajáis o para la tarea, ¿no? Me parece muy importante saber que hay un tipo de static para que los objetos lancen emisiones de su propia luz, ¿vale? Y los reflejos, etc. 1847 02:11:37,630 --> 02:11:58,210 Bueno, es importante saber cómo generar este line map, sí, que lo explica Álvaro en el vídeo, pero tampoco iría mucho más allá. Los postprocesos también, saber que existen, pero el sistema de volume se ve en la tarea que hemos visto, pues bueno, sí es importante, pero tampoco esencial. 1848 02:11:58,210 --> 02:12:16,909 Con las partículas un poco lo mismo, que sepáis que existen, etc. Pero tampoco es lo más importante, más allá del concepto, que existe un visual effect graph. Por lo mismo, que sepáis que existe, pero esto ni hemos indagado, así que no le daría muchas vueltas. 1849 02:12:16,909 --> 02:12:19,529 Sobre sonido, esto sí me parece importante 1850 02:12:19,529 --> 02:12:22,130 Porque hasta este punto no se ha visto nada 1851 02:12:22,130 --> 02:12:25,909 Esto de aquí, saber la configuración 1852 02:12:25,909 --> 02:12:28,829 Pues bueno, saber que hay opciones 1853 02:12:28,829 --> 02:12:30,390 Que sirven para 1854 02:12:30,390 --> 02:12:33,890 Bueno, pues que según el tipo de sonido 1855 02:12:33,890 --> 02:12:37,229 Pues pueden afectar a que carguen más o menos rápido 1856 02:12:37,229 --> 02:12:38,529 O estén más o menos optimizados 1857 02:12:38,529 --> 02:12:39,109 Pues bueno, sí 1858 02:12:39,109 --> 02:12:41,729 Tampoco lo veo tan importante 1859 02:12:41,729 --> 02:12:43,350 Pero esto sí es importante 1860 02:12:43,350 --> 02:12:46,810 El componente AudioSource, el AudioListener 1861 02:12:46,810 --> 02:12:51,170 cómo funcionan, qué opciones tienen, esto de que pueda ser 2D o 3D, se ve más en los 1862 02:12:51,170 --> 02:12:56,630 siguientes apartados. Y en lo que explica Álvaro, los efectos de sonido, los filtros, 1863 02:12:57,109 --> 02:13:03,130 bueno, también que sepáis que existan, esto importante del audio source, pues para que 1864 02:13:03,130 --> 02:13:11,050 el sonido pues tenga una espacialidad. Esto es importante, ¿no? Esto sí que yo creo 1865 02:13:11,050 --> 02:13:14,350 que es importante, ¿no? Que se puede definir hasta dónde se escucha y cómo a medida que 1866 02:13:14,350 --> 02:13:21,470 nos acercamos o alejamos, se va escuchando más o menos o más por uno de los dos canales estéreo más o menos 1867 02:13:21,470 --> 02:13:26,409 y nos pide a la izquierda o a la derecha, pues este tipo de cosas es interesante que lo sepáis. 1868 02:13:27,010 --> 02:13:36,270 Esto sí es importante, que existen también variables con estas clases, de audio source, etc., 1869 02:13:36,270 --> 02:13:41,430 pues habrá que capturarlo para el componente. Bueno, pues esto es importante. 1870 02:13:41,430 --> 02:13:43,510 también saber, que no lo he dicho antes 1871 02:13:43,510 --> 02:13:44,949 pero está explicado en algún sitio 1872 02:13:44,949 --> 02:13:47,310 y lo hemos visto en la tarea, por ejemplo, que hacíamos 1873 02:13:47,310 --> 02:13:49,630 instancias de los pivotes en este de la nave 1874 02:13:49,630 --> 02:13:51,449 que nos movíamos, el método 1875 02:13:51,449 --> 02:13:53,449 destroy, para qué se usa 1876 02:13:53,449 --> 02:13:54,970 y cómo se usa, importante, ¿vale? 1877 02:13:55,770 --> 02:13:56,930 si no lo he dicho antes 1878 02:13:56,930 --> 02:14:02,680 vale, bueno pues eso 1879 02:14:02,680 --> 02:14:04,640 los audio clips, la diferencia 1880 02:14:04,640 --> 02:14:06,680 de play one shot para poder ejecutar con el mismo 1881 02:14:06,680 --> 02:14:08,720 audio source varios sonidos sin que 1882 02:14:08,720 --> 02:14:10,500 se interrumpa el anterior, importante 1883 02:14:10,500 --> 02:14:12,619 el audio mixer, pues también que 1884 02:14:12,619 --> 02:14:21,119 sepáis lo que es, que tiene su propia clase, etc. Eso sí. Bueno, el otro día vimos, lo 1885 02:14:21,119 --> 02:14:28,300 expliqué también, cómo exponer algunos de los valores del mixer. Por tanto, podría 1886 02:14:28,300 --> 02:14:38,979 ser. Esto no, esto es un saber más. ¿Optimización del juego? Interesante es, pero no creo que 1887 02:14:38,979 --> 02:14:54,880 Pregunte nada en el examen concreto, más allá de que pueda haber distintos niveles de calidad, que se veía antes, si no me equivoco, en la sección de materiales. Sobre estadísticas y profiler, no creo que haya nada. 1888 02:14:54,880 --> 02:14:58,159 ¿Vale? Sobre compilar el juego 1889 02:14:58,159 --> 02:15:02,079 Esto sí es importante 1890 02:15:02,079 --> 02:15:04,000 ¿Vale? Que sepáis las plataformas 1891 02:15:04,000 --> 02:15:05,779 Que hay a nivel genérico 1892 02:15:05,779 --> 02:15:08,060 Y importante, y esto es 1893 02:15:08,060 --> 02:15:09,420 Un poco para el que vea 1894 02:15:09,420 --> 02:15:10,840 Para el que vea la 1895 02:15:10,840 --> 02:15:14,039 Tutoría, probablemente pregunte 1896 02:15:14,039 --> 02:15:15,840 Sobre cómo exportar 1897 02:15:15,840 --> 02:15:18,159 Para web, ¿vale? Que es este apartado 1898 02:15:18,159 --> 02:15:19,640 Y de hecho es el último examinable 1899 02:15:19,640 --> 02:15:21,359 A partir de aquí, no me voy a meter ahora 1900 02:15:21,359 --> 02:15:23,659 Porque esto, las Oculus, etc 1901 02:15:23,659 --> 02:15:29,479 de realidad virtual, como es complicado que lo pongamos en práctica y no tenemos en casa, 1902 02:15:29,739 --> 02:15:35,359 ya os puse al presentar el tema que desde este punto 9 del tema 7 en adelante no entra. 1903 02:15:36,319 --> 02:15:45,699 Pero esto de exportar para web sí, y veis este icono de HTML5, que es una de las plataformas 1904 02:15:45,699 --> 02:15:50,239 que aparecen aquí. Cuando compilamos el juego hay que definir para qué plataforma se genera. 1905 02:15:50,239 --> 02:16:13,899 Y habla de esta, de HTML5, si queremos exportar un juego para una web, para subirlo a una web, en código, etc., tenemos que exportarlo como WebGL. Esto apuntarlo. Se habla aquí de ello, de HTML5, de la plantilla de WebGL, etc., pero puede que caiga algo de eso. 1906 02:16:13,899 --> 02:16:28,520 Si queremos hacer una aplicación para un ordenador, pues usaremos este. Para móviles usaremos Android. Y luego ya veis que cada plataforma puede tener su propio tipo de configuración. 1907 02:16:28,520 --> 02:16:50,379 Por defecto, cuando los Build Settings, para exportar en una plataforma que sea diferente en este caso a la que tenemos configurada de PC o Mac o Linux, si queremos que sea para web, habrá que cambiar la plataforma. 1908 02:16:50,379 --> 02:17:08,459 Y ahora al exportar, al generar esta build, pues se generará para web, ¿vale? Que será de, con unas, no será un ejecutable, sino que será un código para web, ¿vale? Que estará preparado para que pueda ser subida a web, mejor dicho. 1909 02:17:08,459 --> 02:17:25,280 Vale, pues eso de la configuración, esto sí que se habla y creo que es importante. Para crear la build hay que poner la plataforma adecuada para dispositivos móviles. 1910 02:17:25,280 --> 02:17:47,059 De esto también puede que haya alguna pregunta. Básicamente, aquí habla de que si vamos a exportar para móvil, pues la plataforma que habrá que usar es Android. Pero lo que me importa más de esto, si vamos a sacar para móvil Android, pues la plataforma habría que ponerla en Android. 1911 02:17:47,059 --> 02:17:49,659 pero me importa que sepáis para qué sirve 1912 02:17:49,659 --> 02:17:51,360 y que es el Device Simulator 1913 02:17:51,360 --> 02:17:53,120 que es un paquete también en Preview 1914 02:17:53,120 --> 02:17:55,819 que ya lo han puesto en las nuevas 1915 02:17:55,819 --> 02:17:57,700 versiones como por defecto para sacar 1916 02:17:57,700 --> 02:17:58,860 esta ventana de Simulator 1917 02:17:58,860 --> 02:18:01,420 que sirve para poner como un dispositivo 1918 02:18:01,420 --> 02:18:02,719 hay muchos presets 1919 02:18:02,719 --> 02:18:05,219 un iPhone 13 1920 02:18:05,219 --> 02:18:07,379 con las medidas, etcétera, para ver 1921 02:18:07,379 --> 02:18:09,540 cómo quedaría el juego y las interfaces 1922 02:18:09,540 --> 02:18:11,040 de los canvas, etcétera 1923 02:18:11,040 --> 02:18:13,000 en ciertos modelos de móvil 1924 02:18:13,000 --> 02:18:15,219 y luego otro 1925 02:18:15,219 --> 02:18:22,059 o una aplicación para dispositivos móviles que se instala, ¿vale? Esto es importante, lo podéis probar y es parte del temario. 1926 02:18:22,559 --> 02:18:32,319 Una aplicación que se llama Unity Remote, que sirve para poder ejecutar el juego sin hacer una build, sin sacar el ejecutable, 1927 02:18:32,819 --> 02:18:39,360 sino simplemente dándola al play, ¿vale? A reproducir, ¿vale? También se puede hacer con un VLAN RAM, ¿vale? 1928 02:18:39,360 --> 02:18:43,979 Pero para poder probar el juego, por ejemplo, con entradas táctiles. 1929 02:18:44,120 --> 02:18:48,979 Hay otros tipos de inputs, que os dejo por aquí más documentación, ¿vale? 1930 02:18:49,000 --> 02:18:52,899 Que se pueden testar, no se pueden testar en un ordenador, no tenemos inputs. 1931 02:18:52,899 --> 02:18:56,239 Entonces, para testarlos existen aplicaciones como este Unity Remote, 1932 02:18:56,360 --> 02:19:01,219 que además implica que tenemos que conectar por cable USB al ordenador el dispositivo móvil 1933 02:19:01,219 --> 02:19:02,280 en el que vamos a testear. 1934 02:19:03,180 --> 02:19:05,719 Y hay que ponerlo en modo desarrollador, ¿vale? 1935 02:19:05,879 --> 02:19:08,979 Aquí hay más instrucciones de cómo se hace. 1936 02:19:09,360 --> 02:19:18,079 Aquí lo tenemos. Os he dejado varios para saber más, porque, bueno, es todo lo suyo es que lo probarais, pero sobre todo que sepáis que existe esta aplicación para hacer estos testeos. 1937 02:19:19,139 --> 02:19:34,440 ¿Vale? Y ya el último punto, eso, cómo exportar y algunas configuraciones para exportar para web, ¿vale? Para lenguajes HTML5, CSS, pues el build habría que hacerlo con esa plataforma de WebGL que he comentado antes. 1938 02:19:34,440 --> 02:19:37,620 y poco más, es decir 1939 02:19:37,620 --> 02:19:39,899 mirad también lo de las tareas 1940 02:19:39,899 --> 02:19:41,540 los enunciados de las tareas muchas veces 1941 02:19:41,540 --> 02:19:44,059 salen más desarrolladas cosas y por supuesto 1942 02:19:44,059 --> 02:19:45,799 si habéis hecho las tareas lo tenéis 1943 02:19:45,799 --> 02:19:47,079 infinitamente más fácil 1944 02:19:47,079 --> 02:19:49,559 para superar el examen 1945 02:19:49,559 --> 02:19:51,879 lo de siempre, no son obligatorias 1946 02:19:51,879 --> 02:19:54,420 en el sentido de que podéis superar el curso aprobando solo el examen 1947 02:19:54,420 --> 02:19:55,780 pero eso no significa 1948 02:19:55,780 --> 02:19:57,979 que no sean también la aplicación 1949 02:19:57,979 --> 02:19:59,360 práctica de lo que estamos viendo aquí 1950 02:19:59,360 --> 02:20:00,780 y es importante hacerlo 1951 02:20:00,780 --> 02:20:03,159 al menos, más o menos 1952 02:20:03,159 --> 02:20:05,280 echarle un ojo y saber cómo se resolvería 1953 02:20:05,280 --> 02:20:07,639 ya os digo, os lo dije desde el primer día 1954 02:20:07,639 --> 02:20:09,639 es un módulo 1955 02:20:09,639 --> 02:20:11,399 complejo y práctico 1956 02:20:11,399 --> 02:20:13,739 y bueno, lo suyo es que se hubiera hecho un seguimiento 1957 02:20:13,739 --> 02:20:14,420 desde el primer día 1958 02:20:14,420 --> 02:20:16,819 llegados a este punto, pues cada uno 1959 02:20:16,819 --> 02:20:19,319 lo que pueda hacer, pues bienvenida será 1960 02:20:19,319 --> 02:20:21,079 por supuesto, os animo mucho a que 1961 02:20:21,079 --> 02:20:22,420 os presentéis, claro 1962 02:20:22,420 --> 02:20:24,739 nada 1963 02:20:24,739 --> 02:20:27,420 ¿alguna duda? ¿algo que queráis que 1964 02:20:27,420 --> 02:20:28,319 veamos? 1965 02:20:31,139 --> 02:20:33,500 lo último es lo más complicado, lo último que se ha dado 1966 02:20:33,500 --> 02:20:35,020 así un poco más deprisa, pero bueno 1967 02:20:35,020 --> 02:20:36,540 los últimos dos temas 1968 02:20:36,540 --> 02:20:38,100 es que ya, bueno 1969 02:20:38,100 --> 02:20:40,299 el tiempo es el que es y al final 1970 02:20:40,299 --> 02:20:41,719 pero 1971 02:20:41,719 --> 02:20:44,680 eso, los últimos 1972 02:20:44,680 --> 02:20:46,120 algo habrá de los últimos temas 1973 02:20:46,120 --> 02:20:49,079 no va a ser lo más prioritario, no voy a decir que no os pregunte 1974 02:20:49,079 --> 02:20:50,159 no estoy diciendo eso 1975 02:20:50,159 --> 02:20:53,120 pero bueno, los dos últimos temas 1976 02:20:53,120 --> 02:20:54,399 son los que menos peso le daría 1977 02:20:54,399 --> 02:20:56,420 va a haber preguntas de esos temas pero 1978 02:20:56,420 --> 02:20:58,139 bueno, pues 1979 02:20:58,139 --> 02:21:00,319 quizás son más 1980 02:21:00,319 --> 02:21:02,819 son menos de aplicación práctica 1981 02:21:02,819 --> 02:21:05,040 de que entiendo que no habéis trasteado tanto con ello. 1982 02:21:05,219 --> 02:21:09,959 Entonces, bueno, en ese sentido, pues entiendo que lo estoy intentando hacer 1983 02:21:09,959 --> 02:21:10,940 para que sea así, ¿vale? 1984 02:21:11,299 --> 02:21:15,079 Que no significa que lo que hemos visto ahora no sea materia de examen, ¿vale? 1985 02:21:15,079 --> 02:21:16,799 Que es prácticamente todo, ¿no? 1986 02:21:16,799 --> 02:21:18,700 Como os voy a ir diciendo, esto es importante, esto es tal. 1987 02:21:19,079 --> 02:21:24,399 Pero eso, para optimizar, eso es lo que os diría. 1988 02:21:24,700 --> 02:21:27,079 Que estos temas os quedéis más por... 1989 02:21:27,739 --> 02:21:29,920 Bueno, es que no quiero deciros más. 1990 02:21:29,920 --> 02:21:32,219 creo que ya os he dirigido 1991 02:21:32,219 --> 02:21:32,940 un poco la mirada 1992 02:21:32,940 --> 02:21:35,879 pues nada más, muchas gracias 1993 02:21:35,879 --> 02:21:37,219 si no hay más dudas 1994 02:21:37,219 --> 02:21:38,920 y ánimo con ello 1995 02:21:38,920 --> 02:21:42,500 muchas gracias, un saludo 1996 02:21:42,500 --> 02:21:43,899 hasta luego, gracias