1 00:00:01,459 --> 00:00:11,900 Un compañero ha dicho que la tarea la va a empezar tras esta tutoría y la entrega, si no me equivoco, es en pocos días, en lunes, ¿no? Si no me equivoco. O el domingo, exacto. 2 00:00:11,900 --> 00:00:39,100 Vale, no sé si, creo que alguna vez lo he explicado, pero la función de las tutorías es, nosotros damos clase, porque, bueno, damos clase, damos como pautas, digamos, más allá de los temas incluso, porque consideramos que es una buena práctica y, bueno, que nuestro ciclo en concreto es muy práctico y, bueno, tiene muchas ampliaciones y muchas cosas a tener en cuenta, ¿no? 3 00:00:39,100 --> 00:00:56,039 Pero en teoría las tutorías están planteadas para que vosotros planteéis vuestras dudas. Entonces, creo que es mal enfoque y desde luego no es el que se supone por el que se hacen las tutorías a nivel normativo, me refiero, que hagáis las tareas después de las unidades. 4 00:00:56,039 --> 00:01:02,420 De lo suyo es que vayáis estudiando los contenidos y vayáis al menos intentándolo para tener estas dudas, ¿vale? 5 00:01:02,420 --> 00:01:09,920 Lo digo porque si no luego os ponéis con la tarea, la entregáis el domingo, si las dudas surgen el sábado, pues no vais a tener respuesta, claro. 6 00:01:11,079 --> 00:01:19,060 Y aparte que se aprovechan más si ya, no digo a lo mejor tenerla toda hecha, pero sí haber visto los problemas y las vueltas y lo que os pueda asustar de la tarea, 7 00:01:19,060 --> 00:01:20,780 intentarlo y donde 8 00:01:20,780 --> 00:01:23,019 os quedéis atascados es donde 9 00:01:23,019 --> 00:01:24,920 pueden surgir esas dudas 10 00:01:24,920 --> 00:01:27,040 más allá de que ahora 11 00:01:27,040 --> 00:01:29,400 que esto también nos envía un mensaje 12 00:01:29,400 --> 00:01:31,640 en este sentido, más que yo vaya enseñando 13 00:01:31,640 --> 00:01:33,099 código de cómo se podría resolver 14 00:01:33,099 --> 00:01:35,420 y simplemente lo paréis y lo copiéis 15 00:01:35,420 --> 00:01:37,340 ¿vale? A nivel aprender 16 00:01:37,340 --> 00:01:38,859 no es lo más razonable 17 00:01:38,859 --> 00:01:41,280 evidentemente, y lo sé 18 00:01:41,280 --> 00:01:43,219 y soy consciente y cada vez va a ser peor 19 00:01:43,219 --> 00:01:45,299 en este sentido, es fácil atascarse 20 00:01:45,299 --> 00:01:46,819 ¿vale? Pero 21 00:01:46,819 --> 00:02:02,900 Pero, en fin, lo importante es intentar ir resolviendo los problemas que van surgiendo. Me indica que es por tiempo, lo sé. Es decir, yo luego cada uno tiene lo de siempre en esta modalidad. 22 00:02:02,900 --> 00:02:29,680 Si yo sé que el tiempo es limitado, requiere también sacar tiempo para ir llevándolo al día, pero bueno, simplemente quiero que quede claro que el planteamiento sería ese, el más adecuado, ¿vale? Luego pues cada uno llegará hasta donde pueda, etcétera, pero sí que hay que ir llevándolo al día, ¿vale? Siempre lo he dicho, pero este módulo si no es bastante complicado, pero bueno, intentad llevarlo lo mejor posible. 23 00:02:30,479 --> 00:02:52,580 Luego, por otro lado, por un comentario que recibimos, ya se dijo en varias ocasiones, pero simplemente, aunque no es lo recomendable, pero las actividades aquí no es obligatorio entregarlas, porque a veces nos llegan, vosotros de verdad que estáis con módulos de segundo en la mayor parte, pero no es obligatorio entregarlas para aprobar. 24 00:02:52,580 --> 00:03:07,860 Tenéis que aprobar en el examen final, que por cierto, otro comentario, ya como el año pasado ya sucedió, no solo van a ser preguntas tipo test, cada vez va a haber más preguntas de desarrollo o de relacionar o digamos que implique más conocimiento que resolver un tipo test. 25 00:03:07,860 --> 00:03:24,680 Que lo habrá, casi seguro, en alguna parte, pero también va a haber de desarrollo. También porque ya os dije que ahora se pide que no solo aprobéis por nota, sino que cubráis los resultados de aprendizaje. Y para que eso se vea hay que hacer preguntas que interrelacionen los distintos temas, no solo tipo test. 26 00:03:24,680 --> 00:03:39,680 Vale, entonces simplemente tener en cuenta eso. Luego, por otro lado, por último, por mi parte antes de ponernos, os estoy compartiendo pantalla, imagino que estáis viendo la aula virtual, ¿vale? 27 00:03:39,680 --> 00:04:07,740 En los temas, esto también creo que lo he dicho ya alguna vez, está la sección de contenidos con el contenido en este formato navegable, en donde todo se ve como está previsto que se vea y luego damos otras dos formas de estudio que es, a ver si carga, a través de un PDF de esos contenidos, pues abro esta por ejemplo, a través de un PDF de los contenidos, que está aquí, y de una versión página web, 28 00:04:07,740 --> 00:04:29,180 Que es que está todo, digamos, del tirón. Y menos en el PDF, igual en alguno de los primeros temas no está todavía implementado, si alguien lo necesita muchísimo lo hacemos, porque todavía no habíamos descubierto esta forma así, pero hay un encabezado en el que podéis hacer más grande y más pequeño y cambiar la fuente del texto. 29 00:04:29,180 --> 00:04:56,779 Por si os viene bien o tenéis alguna dificultad, os conviene hacerlo así, que lo sepáis. Es verdad que el PDF no se puede ampliar o no, porque cuando se guarda el PDF se ve como se haya guardado. Lo pongo al tamaño como estándar, pero si quisierais tenerlo en otro tamaño más grande, podéis hacerlo en la versión de página única más grande y dando a clic derecho a imprimir, suele salir una opción. 30 00:04:56,779 --> 00:05:01,000 o deberíais tener una opción de Adobe PDF o guardar como PDF, etcétera, ¿vale? 31 00:05:01,019 --> 00:05:07,120 Si no, buscad en internet qué extensión os permite guardar en estos formatos y instaláis, ¿vale? 32 00:05:07,160 --> 00:05:11,680 Pero con esto sí que podéis hacer el texto más grande para guardároslo al tamaño que queráis. 33 00:05:11,800 --> 00:05:17,079 Si lo queréis estudiar en PDF, que esto yo lo concibo, pues a lo mejor para subrayar o alguna cosa, 34 00:05:17,220 --> 00:05:22,180 pero en estos PDF es muy habitual que no, sobre todo si cambiáis esto de los tamaños de tipografías, 35 00:05:22,180 --> 00:05:29,680 que, bueno, pues que no van los enlaces, no van los vídeos de alguno, etc. 36 00:05:29,860 --> 00:05:34,779 Entonces, esto es como complemento, pero recuerdo, lo importante es el contenido. 37 00:05:35,060 --> 00:05:40,040 Y dentro del contenido es lo que sea contenido y lo que pone, a ver si encuentro alguno, 38 00:05:40,040 --> 00:05:44,399 las secciones de saber más, ¿vale? Son para eso, para saber más. 39 00:05:44,500 --> 00:05:47,720 No van a estar metidas en el examen. 40 00:05:47,720 --> 00:05:50,300 evidentemente esto es trampa 41 00:05:50,300 --> 00:05:52,519 es decir, ¿deberíais leerlo? 42 00:05:52,680 --> 00:05:54,199 sí, deberíais leerlo, pero tampoco 43 00:05:54,199 --> 00:05:55,879 si no lo entendéis de esta 44 00:05:55,879 --> 00:05:58,040 suele ser a veces incluso para que volváis 45 00:05:58,040 --> 00:05:59,759 cuando habéis ido a temas más avanzados 46 00:05:59,759 --> 00:06:02,040 porque se suelen dar pues eso, ampliaciones 47 00:06:02,040 --> 00:06:03,579 y se va a entender mejor después 48 00:06:03,579 --> 00:06:06,139 si no es, es decir, directamente 49 00:06:06,139 --> 00:06:08,360 si está en un saber más no se debería preguntar 50 00:06:08,360 --> 00:06:10,180 esto, ¿vale? pero bueno 51 00:06:10,180 --> 00:06:11,839 esto es como lo de las tareas, las tareas 52 00:06:11,839 --> 00:06:13,759 aunque acabo de decir que son voluntarias 53 00:06:13,759 --> 00:06:15,980 en las tareas se entiende 54 00:06:15,980 --> 00:06:33,920 que estáis, aunque no las hagáis, se entiende que se están pidiendo cosas que deberíais más o menos saber hacer, o si hicierais la tarea, aunque no la entreguéis, se entiende que vais a salir de este módulo sabiendo realizarlas o al menos encararlas hasta cierto punto. 55 00:06:33,920 --> 00:06:38,939 Por eso leerlas, porque además en las propias tareas también se dan explicaciones 56 00:06:38,939 --> 00:06:45,819 Normalmente más avanzadas, pero también es una parte del curso, digamos, evaluable 57 00:06:45,819 --> 00:06:49,199 Me han escrito sí, me he dado cuenta a medida que iba cursando el grado 58 00:06:49,199 --> 00:06:53,439 Entiendo que ha ido evolucionando y cambiando de algo muy teórico a tener más elementos prácticos 59 00:06:53,439 --> 00:06:57,779 Lo bueno del formato PDF es que los minitests que tienen ciertos módulos 60 00:06:57,779 --> 00:07:00,699 Vienen con las respuestas correctas para saber si has respondido bien 61 00:07:01,500 --> 00:07:05,459 Pero eso no está en el formato PDF, eso está en los cuestionarios cuando lo resolvéis, ¿verdad? 62 00:07:06,500 --> 00:07:14,439 Me han escrito en el chat que eso, que en los PDFs hay preguntas, pero si te estás refiriendo a los cuestionarios, a los test de evaluación, 63 00:07:15,160 --> 00:07:20,220 tú cuando acabas el test de evaluación, pues vas respondiendo y vas haciéndolos. 64 00:07:20,839 --> 00:07:24,180 Y al final, ¿vale? Y ojo, aquí hay una flecha para ver todas las preguntas si queréis navegar. 65 00:07:24,180 --> 00:07:45,899 Cuando decís terminar el intento, es decir, ya habéis respondido las preguntas y las entregáis, pues ahí te pone, aparte de si están bien o mal, te pone cuál es la correcta, cuál sería la correcta y en ocasiones pone apuntes relevantes para saber por qué no o alguna connotación o algún vídeo en ocasiones, etc. 66 00:07:45,899 --> 00:08:03,339 ¿Vale? ¿Hay dudas con todo esto que estoy contando? Lo digo porque, siendo de segundo, lo dije el primer día y en la primera reunión, o al menos lo intenté hacer, vaya, pero bueno, que si hay dudas en este sentido, pregúntadme, ¿vale? 67 00:08:03,339 --> 00:08:28,240 Vale. Me pone, no me refiero al temario, al menos los PDFs que tengo en el primer año que tienen mini cuestionarios vienen con las respuestas. Sí, si en el tema hay algún caso práctico, algún ejercicio, pero en el propio, en los temas, por ejemplo, en DAME, si nos metemos en el tema 4, por ejemplo, que sé que hay alguno, pero lo tengo ahora más fresco. 68 00:08:28,240 --> 00:08:49,320 No sé si es aquí, pero... ¿Cómo puedo entrar de datos? Puede que sea. Vale, pues a veces hay como casos prácticos que te hace una pregunta. A ver, porque lo pongo en ocasiones. Que hay alguna pregunta para que la penséis, la intentéis resolver, pero... Vale, ejercicio de ampliación. 69 00:08:49,320 --> 00:09:09,860 Y te pone como un... te pone un supuesto, ¿no? Para ver la retroalimentación, la respuesta, ¿vale? Pulsáis ahí y la veis. Entonces, aquí también se ve, ¿verdad? Que al imprimirlo te lo suele poner, pero no significa que no esté en la versión, repito, que debéis estudiar. La PDF es de Apoya, ¿vale? 70 00:09:09,860 --> 00:09:15,320 No sé si tenéis alguna duda más 71 00:09:15,320 --> 00:09:17,259 En este aspecto 72 00:09:17,259 --> 00:09:25,190 Sí 73 00:09:25,190 --> 00:09:27,470 Hola a todos 74 00:09:27,470 --> 00:09:29,990 Yo tenía una duda 75 00:09:29,990 --> 00:09:31,690 No específicamente con esto 76 00:09:31,690 --> 00:09:34,509 Las tareas que subimos a compartidos 77 00:09:34,509 --> 00:09:37,210 Cinco días de caducidad 78 00:09:37,210 --> 00:09:40,070 Claro, el problema que tiene compartidos 79 00:09:40,070 --> 00:09:42,049 Y compartidos ya os envía algún enlace 80 00:09:42,049 --> 00:09:43,370 De qué es y para qué es 81 00:09:43,370 --> 00:09:45,990 Que es básicamente para poder subir archivos pesados 82 00:09:45,990 --> 00:10:11,809 Y funciona como un WeTransfer, básicamente te genera una URL con el contenido. El problema, que entiendo que es para que los servidores de Duca Madrid o de la Comunidad de Madrid o donde estén, no se almacene un peso excesivo, es que ponen, y lo vais a ver cuando intentéis hacer uno de estos enlaces, el tiempo máximo de caducidad, de vigencia, mejor dicho, antes de que caduque ese enlace y ya no se pueda descargar nada, es de una semana. 83 00:10:11,809 --> 00:10:13,850 por eso veréis que las entregas 84 00:10:13,850 --> 00:10:16,110 si por ejemplo es un lunes, pondré que el primer día 85 00:10:16,110 --> 00:10:18,309 sea el miércoles anterior, porque si me subís 86 00:10:18,309 --> 00:10:20,309 ese enlace dos semanas 87 00:10:20,309 --> 00:10:22,590 antes, cuando yo vaya a descargarlo 88 00:10:22,590 --> 00:10:24,129 dado que se corrige una vez 89 00:10:24,129 --> 00:10:26,129 ha cerrado el plazo, de pronto puede haber 90 00:10:26,129 --> 00:10:27,509 enlaces en el que no hay nada 91 00:10:27,509 --> 00:10:30,190 precisamente esa era mi duda, porque yo 92 00:10:30,190 --> 00:10:31,950 ya he subido tareas hace 93 00:10:31,950 --> 00:10:33,649 tres días, ponlo tú 94 00:10:33,649 --> 00:10:36,110 y claro, tenía la 95 00:10:36,110 --> 00:10:38,250 inquietud de que si acaso tú lo estabas revisando 96 00:10:38,250 --> 00:10:40,029 constantemente, entonces lo que tenemos que hacer es 97 00:10:40,029 --> 00:10:42,110 esperar una semana, cinco días antes 98 00:10:42,110 --> 00:10:44,090 y subirla. Mira, si os fijáis, eso 99 00:10:44,090 --> 00:10:45,669 ya, digamos que me 100 00:10:45,669 --> 00:10:47,169 entre comillas preocupo yo 101 00:10:47,169 --> 00:10:49,789 de, por ejemplo, la 102 00:10:49,789 --> 00:10:52,009 tarea de la UT4, ¿vale? Y esto 103 00:10:52,009 --> 00:10:53,889 lo hago sobre todo, a mí me toca 104 00:10:53,889 --> 00:10:55,269 módulos en los que las entregas 105 00:10:55,269 --> 00:10:57,950 tienen mucho peso, porque hasta 100 megas te deja 106 00:10:57,950 --> 00:11:00,190 adjuntarlo a la tarea y no habría este problema. 107 00:11:00,649 --> 00:11:01,970 Pero como aquí es muy normal que tenga 108 00:11:01,970 --> 00:11:03,629 más de 100 megas la entrega, 109 00:11:03,889 --> 00:11:05,450 pues este es el método que hay. 110 00:11:05,850 --> 00:11:07,929 Vais a ver que las tareas, si esta se 111 00:11:07,929 --> 00:11:09,669 entrega, ¿vale? La que se abrió ayer 112 00:11:09,669 --> 00:11:12,090 el tema. Se entrega el lunes 10 de marzo 113 00:11:12,090 --> 00:11:14,029 para que podáis 114 00:11:14,029 --> 00:11:15,990 enviar vosotros, donde os va a poner 115 00:11:15,990 --> 00:11:17,490 enviar tarea o algo así, ¿vale? 116 00:11:18,230 --> 00:11:20,029 Va a empezar a estar activo a partir 117 00:11:20,029 --> 00:11:21,990 del miércoles 5, ¿vale? Porque yo este 118 00:11:21,990 --> 00:11:24,090 lunes sí que lo miraré como lo máximo 119 00:11:24,090 --> 00:11:26,090 y os pido además en las instrucciones de que pongáis 120 00:11:26,090 --> 00:11:27,730 una semana, no va a caducar 121 00:11:27,730 --> 00:11:30,029 porque yo el martes, ¿sabes? Según acabe 122 00:11:30,029 --> 00:11:31,190 esto, el martes por la mañana 123 00:11:31,190 --> 00:11:33,929 me lo descargo. Entonces ahí todavía deberían 124 00:11:33,929 --> 00:11:35,809 estar activas todas las 125 00:11:35,809 --> 00:11:38,350 todos esos enlaces de compartidos. 126 00:11:39,269 --> 00:11:43,870 Entonces, no vais a poder entregar una tarea de este tema antes de esta fecha, ¿vale? 127 00:11:43,870 --> 00:11:49,149 Que está ya medida un poco para que yo el martes, todavía no haya pasado una semana desde este miércoles, 128 00:11:49,269 --> 00:11:50,970 y me las pueda descargar, ¿vale? 129 00:11:52,289 --> 00:11:57,529 En las primeras veréis, algunas, las dos primeras, no ponía esta fecha porque no pesaba mucho. 130 00:11:57,629 --> 00:12:00,870 Entonces, pues si la dejabais ahí, pues ya estaba ya en la tarea. 131 00:12:01,049 --> 00:12:04,370 Pero cuando osáis compartidos caducan los enlaces, ¿sí? 132 00:12:04,370 --> 00:12:06,610 Vale, ok 133 00:12:06,610 --> 00:12:08,570 Sí, sí, era precisamente por la primera 134 00:12:08,570 --> 00:12:10,250 tarea que vencía 135 00:12:10,250 --> 00:12:11,070 ahora, ¿no? 136 00:12:11,490 --> 00:12:11,889 Ayer 137 00:12:11,889 --> 00:12:15,289 A mí se me fue un poco la pinza 138 00:12:15,289 --> 00:12:16,769 y claro, me interesaba lo suyo 139 00:12:16,769 --> 00:12:18,950 por eso lo tuve que compartir por el otro lado también 140 00:12:18,950 --> 00:12:20,330 Vale 141 00:12:20,330 --> 00:12:21,409 Pues no 142 00:12:21,409 --> 00:12:24,730 lo que tenéis que hacer es subirlo a compartido 143 00:12:24,730 --> 00:12:26,110 si lo necesitáis usar 144 00:12:26,110 --> 00:12:28,750 y el enlace 145 00:12:28,750 --> 00:12:29,970 esa URL 146 00:12:29,970 --> 00:12:32,590 de la que cualquier persona puede descargar 147 00:12:32,590 --> 00:12:34,289 vosotros también si lo probáis, que es buena 148 00:12:34,289 --> 00:12:38,309 práctica, probar si ese enlace, si lo metéis en el navegador, os abre el área de descarga 149 00:12:38,309 --> 00:12:43,830 de eso que habéis subido, porque a veces enviáis enlaces que no funcionan, y no por 150 00:12:43,830 --> 00:12:47,929 caducidad, sino porque no está bien metido nada, entonces vosotros lo podéis comprobar 151 00:12:47,929 --> 00:12:53,049 si copiáis ese enlace. Pues ese enlace lo copiáis y me lo pegáis en la tarea, en el 152 00:12:53,049 --> 00:12:59,830 cuerpo de texto que hay para las tareas, y yo ya de ahí me lo descargo. Es una dificultad 153 00:12:59,830 --> 00:13:03,769 que tenemos de módulos, eso. Imagino que en ciclos 154 00:13:03,769 --> 00:13:07,909 de contabilidad no pesan tanto las cosas, pero nosotros entre que trabajamos con vídeos 155 00:13:07,909 --> 00:13:11,830 o trabajamos con archivos pesados, pues 156 00:13:11,830 --> 00:13:17,100 tenemos estos problemas. ¿Vale? Más cosas. 157 00:13:24,139 --> 00:13:27,159 Vale, pues voy a abrir la consulta que 158 00:13:27,159 --> 00:13:31,340 he visto en el foro, que es, bueno, acabo de ver una 159 00:13:31,340 --> 00:13:35,259 en Dane UT4, PDF. Buenas tardes, 160 00:13:35,259 --> 00:13:36,820 No soy cabal de imprimirme la práctica. 161 00:13:37,360 --> 00:13:38,899 Última, cuatro, gracias. 162 00:13:39,059 --> 00:13:41,759 Si tenéis que imprimir algún apartado que no está ya en ese PDF 163 00:13:41,759 --> 00:13:45,080 porque no es de los contenidos, aquí están los contenidos solo. 164 00:13:45,539 --> 00:13:48,500 Pero, por ejemplo, queremos el enunciado de la tarea en PDF, por lo que sea. 165 00:13:49,039 --> 00:13:52,320 Si le dais, o debería ser, si os metéis en el área, 166 00:13:52,399 --> 00:13:56,799 dais clic derecho e imprimir, con lo que os he dicho de guardar Adobe PDF, 167 00:13:57,159 --> 00:14:02,139 vale, exactamente, no deja porque no muestra todo. 168 00:14:02,139 --> 00:14:06,059 Vale, en principio las tareas 169 00:14:06,059 --> 00:14:07,720 Por recomendación 170 00:14:07,720 --> 00:14:09,879 Vamos, por cómo está organizado 171 00:14:09,879 --> 00:14:10,559 El tema 172 00:14:10,559 --> 00:14:13,460 No se pueden imprimir, no las damos impresas 173 00:14:13,460 --> 00:14:15,480 Mejor dicho, y por cómo está en la plataforma 174 00:14:15,480 --> 00:14:16,399 Pues no permite 175 00:14:16,399 --> 00:14:19,799 La solución que os puedo dar a este respecto 176 00:14:19,799 --> 00:14:20,720 Vale, es 177 00:14:20,720 --> 00:14:22,820 Que hagáis zoom con el navegador 178 00:14:22,820 --> 00:14:24,700 Podéis irlo haciendo más grande 179 00:14:24,700 --> 00:14:27,159 Entonces podéis ir ampliando 180 00:14:27,159 --> 00:14:28,519 Con el navegador 181 00:14:28,519 --> 00:14:31,259 A nivel de zoom que tenemos aquí 182 00:14:31,259 --> 00:14:34,059 y podéis ir haciendo más 183 00:14:34,059 --> 00:14:35,379 más grande y más pequeña 184 00:14:35,379 --> 00:14:37,960 de todo modo si tenéis 185 00:14:37,960 --> 00:14:40,100 digo hasta ahora en los tres años que llevo 186 00:14:40,100 --> 00:14:41,519 no he tenido este problema 187 00:14:41,519 --> 00:14:42,740 si alguien tiene problema 188 00:14:42,740 --> 00:14:46,500 con los textos, etcétera, pues vemos una solución 189 00:14:46,500 --> 00:14:48,279 ¿vale? pero en principio está pensado 190 00:14:48,279 --> 00:14:49,940 para que se vea de este modo 191 00:14:49,940 --> 00:14:53,919 luego hay 192 00:14:53,919 --> 00:14:55,580 si no me equivoco 193 00:14:55,580 --> 00:14:56,799 hay otra opción 194 00:14:56,799 --> 00:14:57,860 que es 195 00:14:57,860 --> 00:15:12,460 A ver, en esta página no está disponible. Esto estoy improvisando a ver si se puede hacer de algún modo, pero es verdad que justo en estos no. 196 00:15:12,460 --> 00:15:29,620 Si no, a partir de ahora, lo que puedo ir haciendo es, aunque aquí no lo hacía porque en principio pensaba que nadie tenía este problema, es poner también la barra de ampliación y que podáis cambiar también los tamaños de textos, etc. 197 00:15:29,620 --> 00:15:42,360 Pero ya os digo, en nuestras instrucciones no está previsto que convirtamos todo a PDF, porque supone diferentes problemas. Y además que las tareas, por ejemplo, si tienen un vídeo, etc., no se pueden ver en ese PDF. 198 00:15:42,360 --> 00:16:00,539 Pero, teniendo en cuenta, para siguientes, lo que sí puedo es estos Excel Learning, que es un formato que usamos nosotros, le ponemos esta barra avanzada de poder aumentar las medidas, etc., del texto. 199 00:16:00,539 --> 00:16:09,580 Y vamos a la que tengo aquí pendiente 200 00:16:09,580 --> 00:16:12,159 Y os la voy a resumir para contarla rápido 201 00:16:12,159 --> 00:16:14,799 Porque tampoco quiero que pasemos mucho tiempo 202 00:16:14,799 --> 00:16:18,360 Y bueno, una compañera me ha escrito básicamente 203 00:16:18,360 --> 00:16:21,799 Que buenas tardes, planteo una duda 204 00:16:21,799 --> 00:16:23,460 Ya que mañana no podré asistir a la tutoría 205 00:16:23,460 --> 00:16:24,580 Bueno, he tenido el mismo problema 206 00:16:24,580 --> 00:16:27,759 Y básicamente tiene un problema en la unidad 2, en la tarea 207 00:16:27,759 --> 00:16:45,120 que es que tiene un elemento que está instanciando los obstáculos, ¿no? Recordemos que básicamente en esta tarea tenemos esta nave que se va moviendo, etcétera, y bueno, puede rotar, etcétera, ahora vemos algunas posibilidades, 208 00:16:45,120 --> 00:16:50,899 pero que llega un momento que no se siguen instanciando estos obstáculos, ¿vale? 209 00:16:51,379 --> 00:16:56,320 Ella indica que tiene, igual que yo, de otra forma, pero ha llegado a la solución correcta, 210 00:16:56,320 --> 00:17:00,259 tiene un código que sirve para instanciar, igual que hacíamos en la primera tarea, 211 00:17:01,059 --> 00:17:08,940 que sirve para instanciar un obstáculo que está capturando, por este sería el Icefield, 212 00:17:09,039 --> 00:17:12,559 como un GameObject, ¿vale? Igual que hacíamos en la primera tarea, y lo tiene ahí. 213 00:17:12,559 --> 00:17:40,880 ¿Qué problema está teniendo? Importante, porque es verdad que esto se olvida a veces rápido, pero es que ella ha puesto que el GameObject, que es instancia, que está juntando aquí, no es el prefab en sí, no es este prefab que tenemos en el área de proyecto, sino que lo que ha incorporado es que ella metió un obstáculo ya para tenerlo aquí de referencia, imagino, y dijo, este es el obstáculo, me pongo un instanciador, 214 00:17:40,880 --> 00:17:56,740 Y este es el obstáculo que lo ha arrastrado y parece el mismo. Pero ¿qué problema hay? Que ella, en cierto momento, con todos los obstáculos, dentro del script del obstáculo, se está moviendo y también se destruye a sí misma, que es lo que se pide con la función destroy. 215 00:17:56,740 --> 00:18:14,900 ¿Qué pasa? Que como el instanciador está cogiendo este obstáculo de la jerarquía, si yo doy play al juego, vais a ver que se están reproduciendo los obstáculos y en cuanto se destruye, ahora está ya otro, aquí no aparece. 216 00:18:14,900 --> 00:18:35,279 Es decir, se ha perdido porque se ha borrado ese obstáculo que teníamos en la jerarquía, que es este que está cogiendo como referencia, y cuando se destruye, porque es cuando pasa la cámara, donde lo he configurado se ha destruido, solo ha dado tiempo a hacer un clon, una instancia, y aquí de pronto aparece este mensaje de missing y ya no sabe que seguir instanciando y ya no hay copias, ¿vale? 217 00:18:35,279 --> 00:18:54,000 Es la diferencia con, si yo borro y a este instanciador le digo que sea este obstáculo, que al estar fuera de la jerarquía, ¿vale? Está como en un nivel superior porque está en el proyecto, pues yo si arrastro este, este nunca se va a borrar, ¿vale? Fijaos que yo me estoy fijando aquí en obstáculo, no está en ningún lado, pero se están haciendo estas copias, ¿no? 218 00:18:54,000 --> 00:18:56,799 en el tiempo, con la corrutina 219 00:18:56,799 --> 00:18:58,680 como está pedido en la tarea 220 00:18:58,680 --> 00:19:00,799 pero este obstáculo 221 00:19:00,799 --> 00:19:02,440 aquí no se borra, por tanto siempre 222 00:19:02,440 --> 00:19:05,039 el instanciador va a tener la referencia de qué objeto 223 00:19:05,039 --> 00:19:06,180 instanciar 224 00:19:06,180 --> 00:19:08,039 ¿vale? Creo 225 00:19:08,039 --> 00:19:10,779 y eso es lo que os comento, que a veces por el foro 226 00:19:10,779 --> 00:19:13,039 pues no tengo todos los detalles 227 00:19:13,039 --> 00:19:14,819 ¿vale? Dentro de todo esto 228 00:19:14,819 --> 00:19:16,980 que me ha enviado, pues por ejemplo 229 00:19:16,980 --> 00:19:18,240 me envía indicaciones 230 00:19:18,240 --> 00:19:20,880 bastantes imágenes y por eso lo he podido deducir, lo he hecho bien 231 00:19:20,880 --> 00:19:22,599 pero me falta información de 232 00:19:22,599 --> 00:19:48,680 Yo no sé este obstáculo si es el del prefab o es el de el que tenemos aquí, ¿vale? Y de hecho lo tiene marcado porque es el que desaparece y por tanto es el que ya no puede generar, no se pueden generar más instancias porque aquí pondrá un missing object, ¿vale? Bueno, pues es el que está dándole el problema, ¿vale? Entonces, bueno, que a veces es complicado dar con el motivo, pero entiendo que es ese, si no, pues ya me lo dirá la compañera, ¿vale? 233 00:19:48,680 --> 00:20:04,740 La tarea, los que os habéis puesto a hacerla. La tenéis enfocada. La estáis resolviendo. Algún problema concreto. El último día sí que vimos ya bastantes pautas. 234 00:20:04,740 --> 00:20:08,299 Vale, hay gente que ya me está poniendo 235 00:20:08,299 --> 00:20:09,900 La tengo terminada, entregada 236 00:20:09,900 --> 00:20:12,500 Vale, quiero que veamos un par de cosas 237 00:20:12,500 --> 00:20:13,700 Bueno, pone 238 00:20:13,700 --> 00:20:16,599 Un compañero, tengo que pulir porque tengo algún código alternativo 239 00:20:16,599 --> 00:20:17,920 Para hacer pruebas, exacto 240 00:20:17,920 --> 00:20:20,240 Eso es muy habitual, es decir 241 00:20:20,240 --> 00:20:22,039 Y os lo digo así 242 00:20:22,039 --> 00:20:24,240 Este módulo, vamos, las tareas 243 00:20:24,240 --> 00:20:26,039 Se pueden llegar a soluciones 244 00:20:26,039 --> 00:20:27,799 A la misma, además, e igual de válidas 245 00:20:27,799 --> 00:20:28,940 Esto creo que ya lo he dicho 246 00:20:28,940 --> 00:20:32,019 Por diversos caminos, incluso podéis tener 247 00:20:32,019 --> 00:20:34,599 Varias formas de resolverla 248 00:20:34,599 --> 00:20:52,519 Mira, por ejemplo, fijaos en este código que yo tengo aquí. Este es el que acabo de abrir. Dame un segundo que me organizo las pantallas. Este no es el que me interesa ahora, pero por ejemplo, la nave lo estoy moviendo ahora mismo con este código. 249 00:20:52,519 --> 00:21:10,119 Y si os fijáis, tanto por probar o porque tengo varios, uno por ejemplo, os voy a contar ahora, ¿vale? Les comento uno y comento otro. Yo tengo aquí distintos métodos. No sé por qué aquí me ha dado error ahora, no debería. Ah, bueno, sí, porque aquí me falta otra línea de comentario. 250 00:21:10,119 --> 00:21:17,480 Yo voy viendo que aquí tengo un montón de métodos preparados 251 00:21:17,480 --> 00:21:21,059 Pero cuando sale además con esta palabra en gris 252 00:21:21,059 --> 00:21:24,019 Vamos, en gris, es amarillo pero está como sombreado 253 00:21:24,019 --> 00:21:25,500 Significa que no está usándose 254 00:21:25,500 --> 00:21:27,259 Pero yo tengo este código aquí preparado 255 00:21:27,259 --> 00:21:29,259 Por si lo quisiera usar 256 00:21:29,259 --> 00:21:32,420 E incluso veréis que cuando tenéis un script 257 00:21:32,420 --> 00:21:34,579 Y fijaos también en el número de las líneas 258 00:21:34,579 --> 00:21:39,259 Tenéis hasta flechitas para reducir 259 00:21:39,259 --> 00:21:41,920 para ir compactando estos scripts. 260 00:21:42,160 --> 00:21:43,960 Así de primeras a lo mejor no es lo más óptimo, 261 00:21:44,400 --> 00:21:46,119 pero si dice, vale, estos no los estoy usando, 262 00:21:46,240 --> 00:21:46,700 pero los quiero aquí. 263 00:21:46,819 --> 00:21:48,839 Fijaos que hay saltos de línea y los habéis encogido. 264 00:21:49,660 --> 00:21:51,619 Estos son códigos que yo tengo aquí comentados 265 00:21:51,619 --> 00:21:52,519 porque no quiero usar, 266 00:21:52,799 --> 00:21:54,299 porque a lo mejor los he probado y no me funcionan, 267 00:21:54,660 --> 00:21:56,279 o porque es una funcionalidad que no tengo claro 268 00:21:56,279 --> 00:21:58,319 si va bien o si la voy a usar. 269 00:21:58,880 --> 00:22:02,359 Bueno, yo puedo tener un montón de métodos, 270 00:22:02,400 --> 00:22:03,460 por ejemplo, aquí preparados. 271 00:22:03,460 --> 00:22:07,759 Entonces podéis comentar y llegar de distintas formas. 272 00:22:07,759 --> 00:22:17,420 Así que es verdad que para las entregas intentad dejarme la solución sin mucha, lo voy a decir así rápido, morralla, porque si no me vuelvo loco de qué estáis intentando entregar. 273 00:22:19,339 --> 00:22:27,099 Y otra cosa importante es en las tareas, y vais a ver que ya son amplias y se piden muchas cosas, os pido por favor que intentéis resolver lo que se os pide en la tarea. 274 00:22:27,579 --> 00:22:31,779 Luego vosotros si queréis complicarlas todo lo que queráis o seguir, pues por supuesto hacedlo. 275 00:22:31,779 --> 00:22:39,220 Pero de cara a la tarea, no uséis, por ejemplo, si se pide el input manager, no uséis el input system que es bastante más complicado. 276 00:22:39,619 --> 00:22:42,819 El input system, por ejemplo, se explica para que lo conozcáis y porque es relevante. 277 00:22:43,420 --> 00:22:49,180 Pero con todas las cosas que hay que dar, no es asumible pasar mucho tiempo con el input system. 278 00:22:49,779 --> 00:22:54,299 Y si no, ya lo haremos cuando acabemos, digamos, en los últimos impases. 279 00:22:54,299 --> 00:23:17,779 Pero hay tantas cosas que vamos a ir a por lo que hay que sacar, ¿vale? Que no es poca cosa. Entonces, lo dicho, a veces se puede llegar al mismo camino por distintos. Y el último día, ¿vale? El rotar nave, lo que os dije, bueno, lo que se puede hacer es, bueno, más que rotar nave era, la que puse era rotar nave y fijar. 280 00:23:17,779 --> 00:23:20,720 Bueno, aquí tenía otra preparada 281 00:23:20,720 --> 00:23:22,180 Pero esta creo que no 282 00:23:22,180 --> 00:23:25,220 Es que hay bastantes cosas que os podría comentar 283 00:23:25,220 --> 00:23:26,859 Más complicadas y tampoco me quiero 284 00:23:26,859 --> 00:23:29,220 Complicar 285 00:23:29,220 --> 00:23:30,420 Porque quiero pasar a la 3 286 00:23:30,420 --> 00:23:31,700 Y no es relevante, ¿vale? 287 00:23:31,700 --> 00:23:33,980 El otro día, entiendo que todos los que lo habéis hecho 288 00:23:33,980 --> 00:23:34,980 Lo que habéis 289 00:23:34,980 --> 00:23:37,160 La que le estáis entregando, la que le estáis acabando 290 00:23:37,160 --> 00:23:38,640 Básicamente lo que habéis hecho es usar 291 00:23:38,640 --> 00:23:40,819 El método rotate del transform, ¿vale? 292 00:23:40,819 --> 00:23:42,720 Como aquí, ¿vale? En base al eje Z 293 00:23:42,720 --> 00:23:45,920 Porque dijimos que gira en base a ese 294 00:23:45,920 --> 00:23:47,099 Eje, ¿vale? 295 00:23:47,099 --> 00:24:12,559 Entonces, pues rotará hacia los lados realmente con el eje Z. Y bueno, pues con lo que se va capturando de los inputs, ¿vale? Que ya, bueno, pues hablamos de los axis y cómo crearlo y ese menos uno y uno como límites de un eje entre un valor positivo y negativo para transmitir esa información, ese dato a, por ejemplo, a un cambio de posición o de rotación, ¿vale? 296 00:24:12,559 --> 00:24:31,799 Esto era una forma de hacer que la nave rotara. Y de hecho, yo si comentara todo esto hasta aquí, y este es el método que estoy usando, ¿vale? A ver, aquí lo tengo y debería estar comentando hasta ahí. 297 00:24:32,140 --> 00:24:44,779 Ah, vale, es que tengo aquí abierto otro. Voy a cerrarlo también. No quiere. Espera, aquí en vez de poner una estrellita voy a poner esto y tampoco quiere. 298 00:24:44,779 --> 00:24:47,160 No puedo colocar en el comentario de bloques 299 00:24:47,160 --> 00:24:48,339 Dentro del comentario de bloques 300 00:24:48,339 --> 00:24:53,559 Vale, esperad un segundico 301 00:24:53,559 --> 00:24:55,359 Ahí está 302 00:24:55,359 --> 00:24:57,299 Vale, entonces 303 00:24:57,299 --> 00:24:59,180 Con este rotate básicamente 304 00:24:59,180 --> 00:25:01,660 Yo cuando, bueno si guardo 305 00:25:01,660 --> 00:25:03,240 Etcétera, el problema que tenemos 306 00:25:03,240 --> 00:25:03,900 Bueno, es decir 307 00:25:03,900 --> 00:25:07,200 A ver que me ha puesto 308 00:25:07,200 --> 00:25:10,779 Vale, me habré cargado 309 00:25:10,779 --> 00:25:12,519 Alguna cosa, esto es lo malo 310 00:25:12,519 --> 00:25:14,680 Pero básicamente 311 00:25:14,680 --> 00:25:25,700 Exactamente. Vale, aquí. Entiendo que hay alguna llave que no he cerrado. O mejor dicho, que sobra. 312 00:25:25,700 --> 00:25:43,150 Bueno, cierro esto. Bla, bla, bla. Vale, y aquí. Es que ir explicando a la vez que os hablo no es a veces la mejor idea. Está complicado. 313 00:25:43,730 --> 00:25:50,390 Baja, baja, baja. Ahí te sobra un paréntesis, el anterior. En la 135. 314 00:25:50,390 --> 00:26:11,549 135. ¿Este? Ah, vale, perfecto. Vale, sí, que estaba ahí. Venga, genial, muchas gracias. Pues, vale, básicamente lo que hemos conseguido ahora, y es una buena solución, ¿vale? Porque cumple lo que estábamos diciendo, es que esta nave, si le doy hacia, que rota hacia la derecha, pues rotará indefinidamente. Si doy a la izquierda, rota indefinidamente también. 315 00:26:11,549 --> 00:26:35,670 Y además, como el transform lo hemos puesto, recordad, el translate, ¿verdad? Como que use el espacio, ¿vale? El mundo en vez de el self. Recordad esto que teníamos por aquí, ¿vale? Que el space sea el world y no el propio objeto en sí, pues da igual lo que giremos, que siempre la arriba va a ser la arriba del mundo o el abajo del mundo, etc. ¿Vale? 316 00:26:35,670 --> 00:26:41,589 ¿Qué ocurre? Que a lo mejor, y yo en mi planteamiento seguramente sería este al hacer el juego 317 00:26:41,589 --> 00:26:46,210 Es que la nave rote hasta este punto o hasta este punto, ¿vale? Y no pase de ahí 318 00:26:46,210 --> 00:26:50,650 ¿Qué ocurre? Que no estamos haciendo ningún límite para que esto deje de hacerlo así 319 00:26:50,650 --> 00:26:54,869 Entonces ahora la nave de pronto la podemos poner boca abajo o boca arriba o como nos dé la gana 320 00:26:54,869 --> 00:26:57,789 Porque rota indefinidamente y ya está, ¿vale? 321 00:26:58,670 --> 00:27:03,170 Aquí no se pedía explícitamente que limitáramos esos movimientos 322 00:27:03,170 --> 00:27:10,470 pero os quería contar un par de cosas sobre cómo se podría hacer, porque también nos da, bueno, pues ideas de cómo podríamos hacer esto, ¿vale? 323 00:27:11,490 --> 00:27:18,430 Voy a descomentar esto, que tantos problemas me ha dado, ¿vale? Está ahí. Luego os hablo de esta fórmula, ¿vale? 324 00:27:18,470 --> 00:27:27,329 Pero os voy a comentar, os voy a poner la otra, que es una muy simple realmente, y vais a ver que, a ver, otra vez me ha pasado lo mismo, 325 00:27:27,329 --> 00:27:28,450 Y bajo, bajo, bajo 326 00:27:28,450 --> 00:27:30,009 Tienes que añadir ahora 327 00:27:30,009 --> 00:27:34,049 Y aquí la tengo 328 00:27:34,049 --> 00:27:35,029 Vale 329 00:27:35,029 --> 00:27:37,349 Ahora mismo he activado 330 00:27:37,349 --> 00:27:39,150 Otro método que tenía aquí de rotar nave 331 00:27:39,150 --> 00:27:41,809 Que si bajamos, hace una cosa muy simple 332 00:27:41,809 --> 00:27:42,529 Y que 333 00:27:42,529 --> 00:27:44,849 Vais a ver como funciona 334 00:27:44,849 --> 00:27:46,509 Lo que estoy consiguiendo es 335 00:27:46,509 --> 00:27:49,630 En el update, recordad que esto está dentro del update 336 00:27:49,630 --> 00:27:51,549 Voy a ampliar esto para que se vea más 337 00:27:51,549 --> 00:27:53,190 Y un segundo 338 00:27:53,190 --> 00:27:54,750 Vale, perfecto 339 00:27:54,750 --> 00:27:55,450 En el update 340 00:27:55,450 --> 00:28:21,990 Lo que estoy diciendo es que, y recordad que los ángulos en Unity, si usáramos lo que a priori sería lo lógico, que es un parámetro que se llamara rotation, igual que hacemos position, si usamos rotation, y bueno, lo pone en el propio tema, etc., está usando esta clase quaternion que se basa en cuatro ejes, que es poco comprensible para el ser humano, aunque tiene su explicación de uso, etc. 341 00:28:21,990 --> 00:28:41,970 Y nosotros nos deberíamos ceñir más a lo que son los ángulos Euler, que se basan en grados, en degrees, y se basa además en tres dimensiones. Hace una traslación, si me meto en el transform, nuestra forma de entender la rotación en los software de 3D, etc., se basan en estas tres dimensiones. 342 00:28:41,970 --> 00:28:51,769 entonces, digamos que lo que hacemos aquí es decir, vale, pasamos, entre comillas, 343 00:28:52,309 --> 00:28:57,970 queremos que la traslación del quaternion la usemos dentro de esta forma que nosotros sabemos usar, 344 00:28:58,150 --> 00:29:06,809 que son estos tres ejes de X y Z, y le vamos a decir, básicamente, que la posición o el valor que tengan estos ángulos Euler 345 00:29:06,809 --> 00:29:09,950 recojan un vector nuevo que estamos creando en ese momento 346 00:29:09,950 --> 00:29:13,089 que no interfiera, es decir, que siempre mantenga en cero 347 00:29:13,089 --> 00:29:15,789 la rotación de X e Y 348 00:29:15,789 --> 00:29:18,849 porque no nos interesa, porque la nave no va a inclinarse hacia abajo 349 00:29:18,849 --> 00:29:22,109 ni hacia, no sé cuál sería el otro eje 350 00:29:22,109 --> 00:29:24,809 hacia, bueno, pues 351 00:29:24,809 --> 00:29:29,049 que haga, digamos, que haga un derecha-izquierda 352 00:29:29,049 --> 00:29:30,970 en el sentido de que lo haga en torno al eje Y 353 00:29:30,970 --> 00:29:34,730 entonces, el que nos interesa en esta práctica 354 00:29:34,730 --> 00:29:45,109 porque lo que estamos pidiendo es que rote en torno al eje Z, ¿verdad? Entonces, podemos decir, vale, lo que vamos a hacer es poner un rotate data, que básicamente es este input axis, 355 00:29:45,430 --> 00:29:58,349 que puede dar como máximo 1 o menos 1, recordad, ¿vale? Según los dos extremos, y multiplicarlo por 90 o por menos 90. Bueno, podría ser 90 o menos 90, cuando se invierten a veces los valores es simplemente 356 00:29:58,349 --> 00:30:05,089 porque el eje ya es o positivo o negativo, si vemos que va en la dirección contraria a la que nos interesa, 357 00:30:05,569 --> 00:30:08,990 como al final esto lo que está dando es valores de rotación que queremos que vayan hacia un lado 358 00:30:08,990 --> 00:30:13,190 que es positivo o negativo, aunque esto luego voy a contar que tiene trampa, ¿vale? 359 00:30:13,809 --> 00:30:20,869 Va entre o a 90 o a menos 90, ¿no? Entonces, si es 1, pues será menos 90, si es menos 1, será más 90, ¿no? 360 00:30:21,490 --> 00:30:25,369 Y, bueno, pues si ponemos este menos es porque nos interesa invertir la dirección, simplemente. 361 00:30:25,809 --> 00:30:50,009 ¿Qué significa esto? Que si pulsamos en un teclado, que además en un teclado, como ya hemos hablado, no es como un gamepad, un joystick, que tiene un recorrido entre el 0 y el 1 en esa mitad del eje, sino que es pulsar una tecla y es de pronto 1, de pronto 0 o de pronto menos 1, si es la del eje negativo, pues de un momento a otro, porque esto es en el update, de un fotograma al siguiente, de pronto se encuentra que es o más 90 o menos 90. 362 00:30:50,009 --> 00:31:11,289 Si ahora tengo activado este RotarNave, y os vuelvo a decir, si veis que está el nombrecito en amarillo vibrante, significa que esto lo está usando algún punto del código. Si tenemos aquí preparado y está así desvanecido, significa que está preparado, está planteado este método, pero no se está usando. 363 00:31:11,289 --> 00:31:14,750 problema y beneficio 364 00:31:14,750 --> 00:31:16,490 que hemos encontrado con esta solución de una línea 365 00:31:16,490 --> 00:31:18,150 ahora sí que conseguimos que la nave 366 00:31:18,150 --> 00:31:20,309 solo, y le voy a dar a play 367 00:31:20,309 --> 00:31:22,190 y lo vemos, la nave solo va a 368 00:31:22,190 --> 00:31:24,190 rotar hacia un lado 369 00:31:24,190 --> 00:31:26,190 suelto, cuando suelto, como no estoy 370 00:31:26,190 --> 00:31:28,210 dando ni más uno ni menos uno, sino que es cero 371 00:31:28,210 --> 00:31:30,470 se vuelve a su posición estática 372 00:31:30,470 --> 00:31:31,589 ¿vale? y fijaros en el Z 373 00:31:31,589 --> 00:31:34,230 en la rotación de Z, si yo giro 374 00:31:34,230 --> 00:31:35,789 hacia la izquierda, pues es 90 375 00:31:35,789 --> 00:31:37,869 suelto, es cero 376 00:31:37,869 --> 00:31:40,150 doy al botón de la derecha 377 00:31:40,150 --> 00:31:50,029 y a menos 90, ¿vale? Lo que no hay es valores intermedios. Hace esto, que es así, de rápido. ¿Qué pasa? Que hay una forma, y así también entendéis este concepto, 378 00:31:50,069 --> 00:31:59,950 hay una forma de, digamos, al pulsar un input, aunque sea una tecla que da un valor de 1 o menos 1 repentino, recordad, y si veis los apuntes lo pone, 379 00:32:00,630 --> 00:32:09,910 que cada uno de estos, ¿vale? Y esto recordad que para llegar a esta ventana donde se configuran los axis era en Edit, Project Settings y el Input Manager, ¿vale? 380 00:32:09,910 --> 00:32:11,849 Porque estamos usando este en estos momentos. 381 00:32:14,490 --> 00:32:17,190 Tenemos uno, no que crea yo, porque es el que me interesaba, 382 00:32:17,269 --> 00:32:19,329 que fuera específico de esto, ¿no? 383 00:32:19,329 --> 00:32:23,450 Que era el rotador, el eje que recogía este rotate data, ¿vale? 384 00:32:24,190 --> 00:32:28,930 Que yo lo he creado y le he dicho, vale, cuando pulso, 385 00:32:29,089 --> 00:32:33,049 yo he puesto estas teclas, cada uno puede poner las que considere, ¿vale? 386 00:32:34,049 --> 00:32:37,410 Aunque, bueno, poner unas lógicas también para un juego, ¿vale? 387 00:32:37,410 --> 00:32:54,490 Yo, si pones la mano derecha en la U y la I, más o menos tienes espacio para la cruceta del WAS y para la rotación, ¿no? Para esta rotación en este caso. Valor negativo para que vaya a la izquierda la U, para que vaya a la derecha la I latina, ¿vale? Y tenemos estos valores de gravity y sensitivity, ¿vale? 388 00:32:54,490 --> 00:33:13,390 Y si nos ponemos encima es, por un lado, la sensibilidad, mejor dicho, que tiene el input según se pulsa hasta que llega a su valor máximo, que sería este 1 o más 1, más 1 o menos 1, ¿vale? Y hay de 1000, es súper rápido. Pero eso no significa que yo este valor no lo pueda cambiar. 389 00:33:13,390 --> 00:33:18,829 esto significa que si yo le digo vale que la sensibilidad sea de 5 yo que sé 390 00:33:18,829 --> 00:33:24,549 vale y lo pruebo ahora vais a ver que yo desplazo esto para que no esté aquí 391 00:33:24,549 --> 00:33:30,130 molestando le doy al play que va a llegar a ese más uno y menos uno vale de 392 00:33:30,130 --> 00:33:34,609 una forma progresiva al soltar veis que vuelve al volver a relajar y que sea el 393 00:33:34,609 --> 00:33:38,349 cero vuelve inmediatamente pero veis que con esto ya hemos conseguido que los 394 00:33:38,349 --> 00:33:48,529 valores máximos y mínimos, sea porque aunque sea una tecla el input, haya un cierto periodo de, digamos, de interpolación, no es la palabra, 395 00:33:48,529 --> 00:34:02,690 de recorrido hasta llegar a ese punto. Lo mismo pasa, si lo alteramos aquí, con la contraria que es al soltar cuánto tiempo vuelve a la situación de origen. 396 00:34:02,690 --> 00:34:22,190 Si yo en gravedad pongo 5, por ejemplo, un valor mucho más pequeño que este 1000, lo que vamos a conseguir es que aparte de que cuando giremos haya esta interpolación, cuando soltemos y vuelva al valor neutro, porque ahora hay un valor neutro de 0 cuando no estamos pulsando nada, veis que vuelve a ese valor relajado. 397 00:34:22,190 --> 00:34:51,590 Entonces, bueno, aparte de subir, bajar, ir a la derecha, etc., pues tiene esta interpolación y, ojo, tiene unos límites. Ahora no hace este giro continuo que teníamos en la anterior opción. Esto siempre es según lo que se busque. A lo mejor en el juego quiero que la nave rote sin parar, pero bueno, es una forma también para que veáis que aunque usemos teclas, hay valores relacionados con que no sean repentinos estos inputs. 398 00:34:52,190 --> 00:35:12,159 Perdón, oigo un micro por ahí abierto. A ver, perdón, creo que es... Sí, cerrad el micrófono, porfa. Vale. Pone un compañero, ¿puedes usar una variable serializada para seleccionar qué método usar? 399 00:35:12,159 --> 00:35:14,639 Sí, sí, sí, se pueden hacer muchas cosas 400 00:35:14,639 --> 00:35:16,619 Esto es lo de siempre 401 00:35:16,619 --> 00:35:17,920 Y yo no lo voy a ocultar 402 00:35:17,920 --> 00:35:18,900 Yo no soy programador 403 00:35:18,900 --> 00:35:22,019 No tengo formación en ello 404 00:35:22,019 --> 00:35:25,039 Entonces mi idea es explicar los conceptos básicos 405 00:35:25,039 --> 00:35:27,079 Para que estén lo más claro posible 406 00:35:27,079 --> 00:35:29,619 Y se pueda abarcar mucho de lo que vamos a usar 407 00:35:29,619 --> 00:35:30,199 ¿Vale? 408 00:35:30,440 --> 00:35:32,000 Todo se puede complicar muchísimo más 409 00:35:32,000 --> 00:35:35,139 Entonces lo digo porque en ocasiones 410 00:35:35,139 --> 00:35:37,739 Todo puede hacerse mucho más avanzado 411 00:35:37,739 --> 00:35:40,880 Pero dado que es un poco introductorio 412 00:35:40,880 --> 00:35:45,300 a gente que no sabe de código, lo digo porque entiendo que habrá gente aquí que sabe más, 413 00:35:45,880 --> 00:35:51,780 nos vamos a intentar restringir un poco a lo que se va explicando a los temas, 414 00:35:51,780 --> 00:35:57,539 que es una introducción creo bastante completa. Lo digo porque siempre hay varios ritmos 415 00:35:57,539 --> 00:36:03,739 y hay gente que le cuesta muchísimo salir de curso y otra gente que, bueno, pues que al contrario, 416 00:36:04,139 --> 00:36:09,539 que lo tiene súper asumido. Entonces hay que navegar un poco entre esas dos aguas. 417 00:36:09,539 --> 00:36:27,780 Esto es una solución para llegar a estos límites máximos usando esta suavización de los inputs. 418 00:36:27,780 --> 00:36:40,840 Hay otra solución más compleja, por ejemplo, otra alternativa, y aquí es donde voy a comentar este método y voy a poner esto de rotarNave y fijar, que es la que antes había comentado. 419 00:36:40,840 --> 00:36:58,760 Que básicamente es seguir empleando, por poner un valor que hemos creado aquí una variable para que sea más o menos rápida, este rotate. Solo que se han añadido unas cuantas líneas más para que ese rotate también tenga una limitación de esa rotación. 420 00:36:58,760 --> 00:37:20,219 Y esto lo voy a explicar para que veamos la trampa que tienen estos Euler angles, porque al final lo que estamos variando a veces, aunque estemos viendo una cosa en el inspector, cuando vemos aquí esta nave que vaya girando en Z, realmente la traslación de los Euler angles no es tal. 421 00:37:20,219 --> 00:37:30,860 Me explico, yo si cojo esta nave y empiezo aquí a girarla con el inspector y empiezo a girar, a girar, a girar, veis que hay valores que superan los 360 grados que tiene una rotación completa. 422 00:37:31,219 --> 00:37:43,920 ¿Y qué es? Pues que cada 360 grados básicamente está volviendo a empezar otra vez la rotación. Creo que hasta aquí es lo que ya sabemos y del mismo modo en negativo, que rotará en la otra dirección. 423 00:37:43,920 --> 00:38:00,400 ¿Qué ocurre? Que si yo, y esto también para que lo tengamos claro, si yo llego a este punto, que estoy haciendo esta rotación de la nave, y le digo, voy a crear otra variable, un float, que coja la rotación actual de esta nave, 424 00:38:00,400 --> 00:38:12,380 que básicamente es de este objeto, la nave, voy a coger el valor del eje Z, que es el que estamos cambiando y el que nos interesa, en su valor de ángulo seuler. 425 00:38:12,780 --> 00:38:20,099 Y justo a continuación, esto de momento lo omitimos, pero justo a continuación vamos a ver el valor que está mostrando esto. 426 00:38:20,099 --> 00:38:35,219 Y vais a ver que no es concordante siempre. Bueno, voy a comentar de hecho esto que tenemos aquí. Vale, hasta aquí. Bueno, a ver, hasta aquí, hasta aquí, hasta aquí. 427 00:38:35,219 --> 00:39:13,539 Ahí lo tenemos. Tenemos estas líneas, en principio está bien, guardo y vamos a ver que yo cuando vamos mostrando ese eje Z simplemente en la consola, yo empiezo a dar aquí y veis que si yo pongo aquí la nave prefab, 428 00:39:13,539 --> 00:39:33,659 Aquí pone Z menos 61 y sin embargo si vemos la consola pone 298 y vais a ver que este valor siempre está entre el 0 y el 360 mostrando una rotación de una sola vuelta y yo sigo haciendo esta rotación. 429 00:39:33,659 --> 00:39:43,880 veis que nunca es negativo el valor y aquí sí estamos viendo negativos. ¿Qué significa? Que aunque en el inspector no lo muestre con valores negativos, realmente en el código 430 00:39:43,880 --> 00:39:55,019 y como está funcionando por debajo esto de los ángulos Euler es siempre en un valor que muestra entre el 0 y el 360 en positivo. Esto implica muchas dificultades porque si, por ejemplo, 431 00:39:55,019 --> 00:40:11,119 yo quiero decirle que esta nave me la mueva al menos 4, si yo lo pongo menos 4, realmente por detrás lo que está gestionando es un 356, que son los 360 menos los 4. 432 00:40:11,119 --> 00:40:26,639 Entonces, si yo quiero girar la nave con algo que sea directamente usar los ángulos Euler, manipulando estos valores directamente, hay que hacer operaciones intermedias o conversiones para que esto no dé problema. 433 00:40:26,639 --> 00:40:44,280 Porque si ponemos valores negativos, lo que va a hacer es saltar directamente al final del recorrido del siguiente, ¿vale? Porque pasará de 0 a 200, a 350 y pico, yo que sé, y va a haber saltos y va a haber problemas y para limitar también pueden surgir ciertos inconvenientes, ¿vale? 434 00:40:44,280 --> 00:40:56,820 Por eso os doy aquí un planteamiento, hay más, etcétera, ¿vale? Que quiero comentar para que veáis también el uso que se puede dar a este operador módulo del que hablamos el otro día, ¿sí? 435 00:40:57,300 --> 00:41:08,519 Entonces, lo que esta línea ya, por ejemplo, bueno, la voy a dejar ahí que en todo momento nos enseñe el valor del angular Euler de z según estamos haciendo esta rotación, ¿vale? 436 00:41:08,519 --> 00:41:25,760 Pero lo que vamos a hacer es esta operación, que de primeras puede costar, pero es esta variable de current rotation, que en su momento valía este valor, siempre positivo, hemos dicho, de 0 a 360. Voy a hacer que se guarde y opero, que esto se puede hacer también. 437 00:41:25,760 --> 00:41:45,480 Es algo que vimos cuando se usaba la suma, por ejemplo, que se podía hacer este current rotation es igual a current rotation más uno, ¿vale? Recordad que se puede operar, esto es un ejemplo, se puede guardar en una variable un valor que apele a esa variable y luego más operaciones aritméticas, ¿vale? 438 00:41:45,480 --> 00:42:02,159 Que a veces parece un poco intuitivo decir, current rotation es igual a current rotation extrajosa, ¿vale? Lo que está haciéndose aquí es guardar un contenido que estamos designando aquí y estamos apelando en este momento, en el que todavía no se ha guardado, está en esa operación, este valor que se había puesto. 439 00:42:02,159 --> 00:42:17,019 Entonces, imaginaos que yo he rotado 4 a la izquierda, ¿vale? Ese menos 4 que se ve en el inspector, pero que a nivel interno el código realmente aquí está viendo reflejado como un 356, ¿vale? 440 00:42:17,940 --> 00:42:40,000 ¿Qué es lo que vamos a hacer aquí? Poner siempre que este valor sea mayor a 360, ¿vale? Es decir, si yo tengo una current rotation, bueno, en realidad no es que sea siempre mayor que 360, es que esté en un rango, ¿vale? Que se mueva entre 180 y menos 180. 441 00:42:40,000 --> 00:42:52,940 ¿Qué conseguimos aquí? Que este valor que tengamos aquí, al dividirlo entre 360 y dar el módulo, básicamente estoy diciendo qué grados hay en una sola vuelta. 442 00:42:52,940 --> 00:43:14,659 ¿Por qué? Porque si, por ejemplo, habíamos hecho que en este valor fuera en vez de menos 4 menos 364, ¿vale? Como hemos dicho que los ángulos Euler solo operan en un giro, es decir, de 0 a 360 y no pasa de ahí, ¿vale? Pues al hacer este módulo estamos diciendo, oye, al dividirlo entre 360, ¿cuántas vueltas hemos dado? 443 00:43:14,659 --> 00:43:28,039 Entonces se le suma a ese ángulo estos 180, se divide ese valor entre las vueltas que puede tener y luego esa compensación, es decir, esos 180 que se habían contado, 444 00:43:28,039 --> 00:43:34,820 al final el resultado de esto puede ser 0, 1, 2, que es el número de vueltas, que es lo que estamos consiguiendo con esta operación. 445 00:43:35,800 --> 00:43:39,579 Si es positivo, se estabiliza con esto para que llegue a cero. 446 00:43:39,760 --> 00:43:42,539 Si, por ejemplo, hemos girado 180, ¿vale? 447 00:43:42,780 --> 00:43:48,840 Y al girar 180, le sumamos 180 y lo unimos entre 360, el módulo va a ser cero. 448 00:43:49,739 --> 00:43:52,780 Y al restarle este 180 se va a quedar en el valor negativo. 449 00:43:54,360 --> 00:43:59,440 No sé si me estáis siguiendo, pero con esta operación lo que estamos haciendo en todo momento es compensar, ¿vale? 450 00:43:59,440 --> 00:44:07,320 el número de vueltas que hay y también restringir que los valores que dé esto sea entre menos 180 y 180. 451 00:44:08,159 --> 00:44:16,179 Porque si tiene el valor máximo, que va a ser 0, va a dar menos 180, ¿vale? 452 00:44:16,800 --> 00:44:25,119 Y si está entre 159, cuando se le reste 180, pues va a estar en los valores positivos del comienzo del giro, digamos. 453 00:44:26,119 --> 00:44:37,079 Básicamente, si yo me meto ahora en el código, y esto me sirve sobre todo para hablaros de estas discordancias que hay entre el eje Z y lo que va mostrando la consola. 454 00:44:37,760 --> 00:44:49,980 Vais a ver que está todo el rato, a ver, aquí lo voy dando, va a estar en todo momento yendo entre los valores de 180 positivos y luego automáticamente pasa a menos 180. 455 00:44:49,980 --> 00:45:12,360 Y una vez tenemos esto preparado, lo que podemos ir haciendo y haberlo convertido ya a una rotación que va entre menos 180 y más 180, que no es lo que hace por defecto los Euler angles, sí que podemos crear otras variables y poner unos límites nosotros, que es menos 90 como máximo de giro hacia la izquierda y más 90 de máximo de giro a la derecha. 456 00:45:12,360 --> 00:45:34,860 Y con esta conversión hecha entre 180 y menos 180, es decir, si esta rotación es menor al mínimo o mayor, recordad que este operador de las dos líneas es una condición o la otra, o mayor a estos 90 grados, es decir, dicho de otra manera, si sale dentro de los rangos que queremos definir aquí, 457 00:45:34,860 --> 00:45:58,039 Y lo que vamos a hacer es decir que esta rotación, este valor que puede estar por encima de 90 o de menos 90, si está en alguna de esas dos situaciones que se sale del rango que queremos, vamos a limitarlo y vamos a hacer que este giro se encuentre dentro de unos límites. 458 00:45:58,039 --> 00:46:02,960 Para ello, este método no está en los contenidos 459 00:46:02,960 --> 00:46:05,199 Esto es de ampliación lo que os estoy contando todo 460 00:46:05,199 --> 00:46:08,739 Hay una operación, un método que se llama el MathF 461 00:46:08,739 --> 00:46:17,539 Que es una clase que hay en Unity para operaciones matemáticas 462 00:46:17,539 --> 00:46:22,440 Y este clamp que significa, o sirve, o se usa 463 00:46:22,440 --> 00:46:50,300 Si lo buscamos en el navegador, si decimos que nos diga que es el clamp Unity, nos metemos, dice que existe esta clase, que si nos fijamos con esto se puede dar el valor que tengamos o que queramos evaluar 464 00:46:50,300 --> 00:46:58,880 Y queremos que lo que devuelva este método sea siempre o esté limitado a un número mínimo o a un número máximo. 465 00:46:59,179 --> 00:47:13,880 Es decir, que aquí ahora mismo, si estamos pasándole una rotación de 0 o de 10 o de 50 o de menos 50, como está dentro de los mínimos y máximos que estamos marcando en los otros dos argumentos, 466 00:47:13,880 --> 00:47:37,639 pues no lo va a cambiar, pero si este valor de pronto valiera 180 o 150, porque se sale del máximo que hemos marcado, lo pondrá en el máximo, es decir, lo restringirá a ese máximo, lo dejará que como máximo de aquí salga un valor de 90 y como mínimo uno de menos 90 y lo guarda en current rotation de nuevo. 467 00:47:38,239 --> 00:47:43,760 Daniel, pero entiendo entonces que está de más el IF anterior. 468 00:47:43,880 --> 00:47:45,880 ¿no? porque el clamp 469 00:47:45,880 --> 00:47:47,900 ya te lo va a dar el valor 470 00:47:47,900 --> 00:47:49,760 que corresponda, sin el if 471 00:47:49,760 --> 00:47:52,039 el problema que hay si quitamos 472 00:47:52,039 --> 00:47:53,880 este if, ¿vale? es que 473 00:47:53,880 --> 00:47:55,840 estamos en todo momento llegando a 474 00:47:55,840 --> 00:47:57,840 este math clamp, realmente 475 00:47:57,840 --> 00:48:00,039 vamos a probarlo, vamos a probarlo 476 00:48:00,039 --> 00:48:02,000 puede que lleve razón 477 00:48:02,000 --> 00:48:03,719 y lo dejar ahí porque 478 00:48:03,719 --> 00:48:05,820 es que te lo ponía ahí 479 00:48:05,820 --> 00:48:08,059 la definición que te daba el valor si es que no se pasa 480 00:48:08,059 --> 00:48:09,559 a ver 481 00:48:09,559 --> 00:48:11,800 pues aquí y aquí 482 00:48:11,800 --> 00:48:13,860 efectivamente, si que 483 00:48:13,860 --> 00:48:17,519 verdad que a veces yo creo que es bueno poner algún if de control para que no se 484 00:48:17,519 --> 00:48:19,980 meta a hacer otras operaciones pero es verdad que lo poquito que tiene aquí 485 00:48:19,980 --> 00:48:26,739 tampoco hace mucho sí que esto puede venir de que en vez de hacer 486 00:48:26,739 --> 00:48:31,440 con un roteo menor vale si hacemos esta operación y la 487 00:48:31,440 --> 00:48:35,699 invertimos realmente vale 488 00:48:35,699 --> 00:48:41,099 pero aquí si hacemos esta operación lo que sí podemos hacer es limitar los 489 00:48:41,099 --> 00:48:43,039 ángulos, porque decimos 490 00:48:43,039 --> 00:48:45,099 esto es igual que lo de los límites 491 00:48:45,099 --> 00:48:47,099 que pusimos 492 00:48:47,099 --> 00:48:48,920 el otro día, bueno y lo puse en un comentario 493 00:48:48,920 --> 00:48:50,860 de marcar si los límites es verdadero 494 00:48:50,860 --> 00:48:53,300 que entonces si se ejecute un movimiento en base a 495 00:48:53,300 --> 00:48:54,940 límites de posición 496 00:48:54,940 --> 00:48:56,079 que hemos puesto, etcétera 497 00:48:56,079 --> 00:48:59,139 hay un comentario 498 00:48:59,139 --> 00:49:00,960 del foro que entiendo que habréis visto 499 00:49:00,960 --> 00:49:03,019 resolviendo una duda que explica un poco como hacer 500 00:49:03,019 --> 00:49:05,139 la parte de los límites, por eso no me estoy metiendo 501 00:49:05,139 --> 00:49:06,639 mucho aquí, pero 502 00:49:06,639 --> 00:49:08,780 si hacíamos esto 503 00:49:08,780 --> 00:49:10,199 básicamente 504 00:49:10,199 --> 00:49:16,340 también se limita a más 90 505 00:49:16,340 --> 00:49:17,539 y a menos 90 506 00:49:17,539 --> 00:49:18,619 bueno, espera, porque 507 00:49:18,619 --> 00:49:20,579 si curro en rotation es 508 00:49:20,579 --> 00:49:25,989 claro, el problema que hay aquí, nuevamente 509 00:49:25,989 --> 00:49:28,010 es un AND en vez de un NO 510 00:49:28,010 --> 00:49:29,489 efectivamente, eso es 511 00:49:29,489 --> 00:49:30,949 si lo ponemos como AND 512 00:49:30,949 --> 00:49:34,469 ahí lo tenemos 513 00:49:34,469 --> 00:49:37,170 la condición se está cumpliendo 514 00:49:37,170 --> 00:49:38,230 el problema es que cuando 515 00:49:38,230 --> 00:49:40,670 y esto también es importante a la hora de hacer rotaciones 516 00:49:40,670 --> 00:49:42,190 cuando llegamos a uno de los límites 517 00:49:42,190 --> 00:49:42,809 bueno 518 00:49:42,809 --> 00:49:51,030 es que el problema está aquí si es mayor a la rotación mínima y menor para aquí menor a la 519 00:49:51,030 --> 00:49:59,989 máxima ahora ya creo que sí vale ahora sí que va a decir vale cuando sobrepase el mayor el máximo 520 00:49:59,989 --> 00:50:10,789 el mínimo lo está haciendo ahí pero da a otros problemas si la curren rotation que va entre 180 521 00:50:10,789 --> 00:50:27,929 y menos 180, porque es lo que hemos definido aquí, ¿vale? Lo que sale de aquí. Si es mayor de la mínima, ¿vale? Y menor de la máxima, ¿vale? 522 00:50:27,929 --> 00:50:38,670 si se hace se hace esta transformación vale pues después pues eso es si debería hacer este cambio 523 00:50:38,670 --> 00:50:48,809 y hacerlo efectivamente he guardado está aplicado si está todo bien guardo otra vez y si voy aquí 524 00:50:48,809 --> 00:50:56,929 y lo giro y no tengo otro método por ahí girando no pues entra este conflicto que 525 00:50:56,929 --> 00:51:03,210 es que básicamente, y el problema vendrá por ahí, ¿veis? No sé si lo notáis, se anota en el primero, 526 00:51:03,369 --> 00:51:08,170 da un pequeño salto cuando llega a ese menos 90 y más 90. ¿Por qué? Porque de la inercia que tiene, 527 00:51:08,650 --> 00:51:15,289 se pasa de ese 90 y de ese más 90. Entonces, al pasarse otra vez, entra en el siguiente ciclo, 528 00:51:15,530 --> 00:51:23,969 y creo que ya vuelve a entrar otra vez en la condición. No, en realidad lo que estoy diciendo no lo tengo muy claro, 529 00:51:23,969 --> 00:51:30,030 que sea así pero no está funcionando vale entonces vuelvo otra vez a asegurármelo con esta condición 530 00:51:30,030 --> 00:51:38,369 que ya de primera pone una una condición para acotar un poquito y luego ya además que tampoco 531 00:51:38,369 --> 00:51:43,710 es una línea es una operación tampoco gasta mucho hago que estos valores independientemente de que 532 00:51:43,710 --> 00:51:48,530 salgan o no vuelvan y esto lo que hace es obligar a que vuelvan al más 90 o al menos 90 como valor 533 00:51:48,530 --> 00:51:58,409 en máximo. Porque ya os digo, cuando se rota, a veces de la rotación se queda en el 90.05, ¿vale? Y sobrepasa un poco y a lo mejor ya hace que esto 534 00:51:58,409 --> 00:52:06,710 sea condición de problemas. Con esto sí que decimos, si se pasa de los dos argumentos que tenemos aquí, de ese 90 o de ese menos 90, lo restringe 535 00:52:06,710 --> 00:52:17,369 para que nunca sobrepase finalmente ese 90 y ese menos 90. Entonces, ahí aseguramos. Y ya, por último, lo que decimos es, ¿vale? Este valor de Euler-Engels 536 00:52:17,369 --> 00:52:30,869 directamente lo modificamos, es decir, estamos como tocando el transform, estos valores que tenemos aquí, para que el X y el Y de esa rotación se mantengan estables, 537 00:52:30,869 --> 00:52:38,289 no los estamos afectando, esto lo expliqué el otro día, que si ponemos el nombre del eje, pues se mantiene, no está habiendo ninguna perturbación de ella, 538 00:52:38,289 --> 00:52:45,949 y coja este valor, que va a estar siempre entre máximo 90 o menos 90, y lo ponga en el Euler-Angels. 539 00:52:46,489 --> 00:52:56,050 Entonces, básicamente estamos haciendo este rotate como veníamos haciendo, y con todo esto lo que hemos hecho es, por un lado, recoger el eje Z, 540 00:52:56,050 --> 00:52:58,449 Hacer con esta operación 541 00:52:58,449 --> 00:53:00,889 Que se mantenga entre el menos 180 542 00:53:00,889 --> 00:53:02,849 Y el 180, porque lo que hace es 543 00:53:02,849 --> 00:53:05,289 Dar unos valores 544 00:53:05,289 --> 00:53:07,130 Que al darse entre 0 545 00:53:07,130 --> 00:53:08,889 Y 360, se estabilizan 546 00:53:08,889 --> 00:53:10,630 Restándole 180, ¿vale? 547 00:53:10,630 --> 00:53:12,650 Y si es un 0, se queda en el menos 180 548 00:53:12,650 --> 00:53:15,250 Y si al dar un máximo 549 00:53:15,250 --> 00:53:17,090 De grados posibles 550 00:53:17,090 --> 00:53:19,130 De 360, al resultado de esto 551 00:53:19,130 --> 00:53:20,309 Antes de su operación 552 00:53:20,309 --> 00:53:22,230 Antes de restarle 180 553 00:53:22,230 --> 00:53:24,670 Si el máximo es 360 554 00:53:24,670 --> 00:53:35,750 al restarle 180, se queda en 180, y si es 0, es decir, ha comenzado una rotación nueva, un ciclo de rotación, al restarle menos 180, se queda en el mínimo de 180. 555 00:53:35,929 --> 00:53:45,670 Entonces, digamos que el rango de esos 360 grados, en vez de ir de 0 a 360, con esto hemos conseguido que se quede en un rango de menos 180 a 180, 556 00:53:45,949 --> 00:53:51,690 que es lo que nos interesa para operar a nosotros con valores negativos, que es lo que nosotros vemos en ese transform. 557 00:53:51,690 --> 00:54:12,150 Aquí fijamos esta rotación máxima o mínima, que es la que hemos establecido. Si quisiera que fuera menos 120 y 120, con esto, siempre y cuando esté dentro de este rango, podemos marcar una rotación máxima y mínima. 558 00:54:12,150 --> 00:54:26,769 Y con esto, al final lo que decimos, esta rotación que hemos dado, al final que se traduzca y que se ponga en el transform, ¿vale? Dentro de este rango que se ha puesto aquí limitado por este clamp, ¿vale? Esta sería un poco la lógica. 559 00:54:26,769 --> 00:54:53,250 Esto se puede hacer de más formas, evidentemente, hay muchas, pero bueno, esta es una que me sirve para explicar también esto del módulo y, ¿veis? Ahora el máximo es 120, a ver, 120, 120, espera, aquí hay algo que no me está gustando, que es, sí, está bien, está bien, es decir, debería funcionar correctamente. 560 00:54:53,250 --> 00:54:56,329 solo que hay una cosa, esperad, que aquí voy a quitar 561 00:54:56,329 --> 00:54:58,230 que igual lo está volviendo un poco 562 00:54:58,230 --> 00:54:59,789 loquer, que es 563 00:54:59,789 --> 00:55:02,070 vale 564 00:55:02,070 --> 00:55:03,949 yo giro y se queda en 565 00:55:03,949 --> 00:55:05,949 120, sobrepasa un poco los 90 566 00:55:05,949 --> 00:55:07,510 y 120, vale 567 00:55:07,510 --> 00:55:10,289 entonces ahora, es verdad que esta rotación es un poco 568 00:55:10,289 --> 00:55:12,130 rara porque se queda como mirando para abajo, voy a poner 569 00:55:12,130 --> 00:55:14,190 45, bueno, creo que se 570 00:55:14,190 --> 00:55:14,929 entiende esto, ¿no? 571 00:55:16,070 --> 00:55:17,909 45, 45 y con esto 572 00:55:17,909 --> 00:55:20,090 ya tengo una rotación preparada para 573 00:55:20,090 --> 00:55:21,789 tener límites, ¿vale? y en principio 574 00:55:21,789 --> 00:55:30,190 más o menos debería funcionar en cualquier 45 menos 45 se queda ahí en un grado intermedio y 575 00:55:30,190 --> 00:55:37,030 ahí sí que además ahí al ser un rotate sí que tiene ese suavizado independientemente de que 576 00:55:37,030 --> 00:55:43,590 aquí tenga un input que tarde más o menos en captarse vale que ojo si vamos a hacer esta 577 00:55:43,590 --> 00:55:49,369 yo le llamo interpolación a esta suavidad mejor dicho vale y queremos que sea todo en base al 578 00:55:49,369 --> 00:55:53,389 código, aquí lo más correcto sería nuevamente poner un valor muy alto, ¿vale? 579 00:55:53,389 --> 00:55:56,349 Porque no queremos que tarde en recoger el valor del input. 580 00:55:56,590 --> 00:56:00,530 Queremos que vuelva a ser, como viene por defecto, por ejemplo, este 1000 y 1000, ¿vale? 581 00:56:00,630 --> 00:56:07,409 Y, bueno, pues ahora la rotación empieza y se hace con el rotate, básicamente, ¿vale? 582 00:56:08,989 --> 00:56:14,250 ¿Vale? Entonces, bueno, ¿qué tal? A ver, voy a leer, que me escribís a veces. 583 00:56:14,329 --> 00:56:18,130 Vale, no he escrito nada. ¿Qué tal esto? Entiendo que lo que es la instanciación, 584 00:56:18,130 --> 00:56:46,929 Más o menos la entendéis con este detalle de que os puede interesar en muchas ocasiones que el elemento que estemos llevando o recogiendo en una variable de tipo GameObject no sea un prefab de la jerarquía, sino que normalmente nos va a interesar más que sea el prefab del proyecto en sí, ajeno a que se borre o no de una jerarquía uno de estos dos elementos. 585 00:56:48,130 --> 00:57:04,449 De hecho, hay otro método del que se ha hablado un poco por encima, que es, y pensadlo, ahora mismo no tengo un ejemplo, me ha venido así de pronto, pero tened en cuenta que a lo mejor en un start instanciáis o recogéis un elemento que todavía no se ha creado la jerarquía. 586 00:57:04,449 --> 00:57:21,510 Y todavía no está aquí. Y bueno, pues un poco dicho lo mismo, si yo la opción que dijera es este es el obstáculo que voy a instanciar, lo que estábamos hablando antes, lo voy a cambiar el nombre para que sea más notorio el cambio entre uno y otro, lo voy a llamar en español obstáculo. 587 00:57:21,510 --> 00:57:44,469 Y el que estoy incorporando al instanciador es obstáculo, no obstáculo. Si yo este elemento a lo mejor lo genero en algún momento, que es en el start, y en ocasiones puede suceder que tengo aquí un, digamos que estoy incorporando un elemento a un serialize field, 588 00:57:44,469 --> 00:57:57,829 En ocasiones, en vez de coger ese elemento, cargar ese GameObject, esa variable, en el momento de start, existe otro método que se ejecuta y está preparado antes de que se lance el script, que es este Awake. 589 00:57:57,829 --> 00:58:01,269 Esto lo dejo ahí un poco planteado 590 00:58:01,269 --> 00:58:05,929 Pero si en alguna ocasión os encontráis en la circunstancia 591 00:58:05,929 --> 00:58:08,809 De que aquí queréis rellenar por código 592 00:58:08,809 --> 00:58:11,650 Un gain object que todavía no se ha generado 593 00:58:11,650 --> 00:58:14,469 En la jerarquía 594 00:58:14,469 --> 00:58:17,510 En ocasiones se puede cargar previamente 595 00:58:17,510 --> 00:58:18,590 Con este awake 596 00:58:18,590 --> 00:58:20,889 Ahora mismo no me sale un ejemplo 597 00:58:20,889 --> 00:58:24,329 Pero en algún momento de la vida puede suceder 598 00:58:24,329 --> 00:58:26,170 Vale, me preguntan 599 00:58:26,170 --> 00:58:46,780 Para que la rotación sea suave es mejor usar Euler Angle que Time Delta Time siempre. Vale, lo vuelvo a leer, ¿vale? Para que la rotación sea suave es mejor usar Euler Angle que Time Delta Time. 600 00:58:46,780 --> 00:59:04,380 Se juntan dos cosas en esta consulta. Cuando se usa rotate y transform, en principio ya están estabilizados esos movimientos. No hace falta usar el time delta time. 601 00:59:04,380 --> 00:59:28,820 Si buscamos, y ya hasta dudo a veces, pero vamos, en el Translate, perdón, en el Rotate, Transform, Translate, aquí lo tenemos, nos va a poner, la distancia es Translation, y, a ver, sí, bueno, no, qué diablos, sí que hay que poner el Time Delta Time. 602 00:59:28,820 --> 00:59:52,320 Entonces lo que está diciendo el compañero, aquí básicamente estaría bien o sería adecuado, y luego subir el valor de rotación porque esto lo va a bajar, no sería ninguna tontería poner un time, delta time, para hacer esta estabilización que hablamos de la rotación, de los tiempos de ejecución de la date a lo largo del tiempo. 603 00:59:52,320 --> 01:00:12,039 Entonces, una cosa es esta estabilización que se hace en el momento de la rotación con que luego estemos en todo momento recuperando un valor de los Euler angles, que es básicamente leer, en este caso cuando lo estamos recogiendo, leer lo que pone en el componente transform del objeto. 604 01:00:12,039 --> 01:00:25,300 y si estás aplicando estos Euler angles, básicamente lo que estás haciendo es pasar una posición, una coordenada que ya tienes. 605 01:00:25,780 --> 01:00:32,500 Por eso en este caso no habría que poner time delta time, porque ya está dando valores automáticamente. 606 01:00:33,000 --> 01:00:39,800 Tendrás que estabilizar en todo caso lo que da ese valor para que llegue a los Euler angles. 607 01:00:39,800 --> 01:00:42,019 No sé si me explico 608 01:00:42,019 --> 01:00:45,179 Me pone, no, según entiendo es que los movimientos con físicas 609 01:00:45,179 --> 01:00:46,880 No necesitas time delta time 610 01:00:46,880 --> 01:00:48,300 Evidentemente, sí, es decir 611 01:00:48,300 --> 01:00:50,760 Con físicas no, pero es que en este ejercicio 612 01:00:50,760 --> 01:00:52,519 Ahora mismo no estamos usando 613 01:00:52,519 --> 01:00:53,860 Ninguna física 614 01:00:53,860 --> 01:00:55,400 Estamos cambiando el transform 615 01:00:55,400 --> 01:00:58,099 De hecho en el tema 2 todavía no se ha explicado 616 01:00:58,099 --> 01:00:59,619 Lo que son las físicas que se explican en el 3 617 01:00:59,619 --> 01:01:01,199 Si aplicamos fuerza 618 01:01:01,199 --> 01:01:03,079 Ahí va por otros 619 01:01:03,079 --> 01:01:05,059 Por otros mecanismos 620 01:01:05,059 --> 01:01:06,739 Que es que básicamente, entre otras cosas 621 01:01:06,739 --> 01:01:08,260 No se debe usar el update 622 01:01:08,260 --> 01:01:22,260 y por tanto no va a depender del tiempo de actualización del ordenador, sino que se va a usar el otro método que se habla, que es FixUpdate, que lo que hace es tener un tiempo de ejecución predeterminado, 623 01:01:23,059 --> 01:01:35,719 que se va a ejecutar cada 0,02 segundos. Entonces ahí no hay que usar el TimeDeltaTime porque es constante ya de por sí. La ejecución, lo que hay aquí dentro, se va a hacer cada cierto tiempo. 624 01:01:35,719 --> 01:01:55,480 No es como aquí, como comentamos el otro día en el update, que lo que va a hacer es, cuanto más rápido y cuanto más capacidad de procesamiento tenga el ordenador, más rápido va a ir ejecutando esos fotogramas de ejecución. Esto es muy adecuado para capturar, para recoger valores de interacción, para que sea cuanto antes mejor. 625 01:01:55,480 --> 01:02:14,659 Pero una cosa son, y esto es importante y es esencial entenderlo, que es que cuando estamos usando un rotate, un translate, que vais a ver que además eso pertenece a la clase transform, son movimientos, lo que se llaman kinemáticos, kinéticos, lo he encontrado de las dos maneras. 626 01:02:14,659 --> 01:02:32,260 Lo que estamos haciendo es como si aquí hiciéramos esto, mover y decirle por código, ah, vale, pues ve moviendo así o ve moviendo la rotación así, ¿vale? En cierto momento. En ese caso sí que lo hacemos en base a un update, ¿vale? Pero, y para compensarlo es cuando se usa el time delta time. 627 01:02:32,260 --> 01:02:40,260 Cuando se usan físicas, que de hecho es de lo que va la tarea 3, pues ahí el time delta time no tendrá sentido porque ya está estable, ya es estable. 628 01:02:41,300 --> 01:02:46,800 Entonces, vuelvo a la pregunta de antes, para que la rotación sea suave es mejor usar Euler angle que time delta time. 629 01:02:48,139 --> 01:02:51,159 Es que no son contradictorias una de otras, son distintas cosas. 630 01:02:51,159 --> 01:02:57,280 el huler ángel se refiere a estos valores de aquí de rotación vale y el tan delta time es un valor 631 01:02:57,280 --> 01:03:02,280 porque en este uso al menos por el que se multiplican los valores de movimiento del 632 01:03:02,280 --> 01:03:13,349 transform vale o vale para que sean más estables entonces no son las mismas cosas de todos modos 633 01:03:13,349 --> 01:03:23,050 sí que ahora ahora me hace ha puesto que entiendo genial ahora me hace dudar en el transform en el 634 01:03:23,050 --> 01:03:50,940 Vamos a ver un segundo los contenidos, que ahí ya me hace dudar, porque es verdad que si lo ponemos un rotate o un translate, mover y rotar objetos, métodos públicos de translate, transform translate, y es verdad que aquí ya está normalizado. 635 01:03:50,940 --> 01:03:52,679 Es que no hay que hacerlo 636 01:03:52,679 --> 01:03:54,699 Pero es verdad que leyendo ahora 637 01:03:54,699 --> 01:03:57,719 Ah bueno 638 01:03:57,719 --> 01:04:01,539 Es que me parece raro 639 01:04:01,539 --> 01:04:03,119 Que cuando se 640 01:04:03,119 --> 01:04:05,980 Realmente no sería necesario 641 01:04:05,980 --> 01:04:07,000 Usar el time delta time 642 01:04:07,000 --> 01:04:09,679 Porque es que estos valores 643 01:04:09,679 --> 01:04:11,139 Ya están normalizados pero me extraña 644 01:04:11,139 --> 01:04:13,579 Ahora que estoy intentando tenerlo claro 645 01:04:13,579 --> 01:04:15,599 Me extraña 646 01:04:15,599 --> 01:04:19,139 Aquí ponen time delta time básicamente 647 01:04:19,139 --> 01:04:20,599 Porque lo que quieren 648 01:04:20,599 --> 01:04:22,840 es que vaya sumándose 649 01:04:22,840 --> 01:04:24,519 cada fotograma un valor 650 01:04:24,519 --> 01:04:26,000 para que haya una rotación automática 651 01:04:26,000 --> 01:04:27,960 aquí no es para estabilizar en este ejemplo 652 01:04:27,960 --> 01:04:30,719 pero sí que es verdad que cuando usamos 653 01:04:30,719 --> 01:04:32,539 aquí el translate en este caso sí que está haciendo 654 01:04:32,539 --> 01:04:34,480 esta estabilización y como no pone nada 655 01:04:34,480 --> 01:04:35,519 relativo a 656 01:04:35,519 --> 01:04:38,599 a que esté 657 01:04:38,599 --> 01:04:39,440 ya normalizado 658 01:04:39,440 --> 01:04:41,380 pues 659 01:04:41,380 --> 01:04:44,260 sí que no está de más poner 660 01:04:44,260 --> 01:04:46,139 ese time delta time 661 01:04:46,139 --> 01:04:49,500 no pone nada 662 01:04:49,500 --> 01:04:58,059 Y viendo estos valores, además, sí que es conveniente usar el TimeDeltaTime, ¿vale? 663 01:04:59,059 --> 01:05:05,039 Vale, dudas de esta tarea, porque si no paso a la 3, rápidamente, 664 01:05:06,400 --> 01:05:08,760 bueno, rápidamente no, vaya, pequeña duda, ¿vale? 665 01:05:10,059 --> 01:05:14,199 Pues, si es por... pequeña duda con la cámara, ¿vale? 666 01:05:14,699 --> 01:05:17,840 Voy a ir modo cámara, dame un segundo. 667 01:05:17,840 --> 01:05:19,519 voy a 668 01:05:19,519 --> 01:05:20,860 bueno, de momento 669 01:05:20,860 --> 01:05:22,699 te hablo por aquí mejor 670 01:05:22,699 --> 01:05:24,699 dame un segundito que dejo esto aquí preparado 671 01:05:24,699 --> 01:05:26,099 que si no luego de pronto hay fallos 672 01:05:26,099 --> 01:05:28,780 ya os estaréis dando cuenta de lo pejiguero 673 01:05:28,780 --> 01:05:30,980 que es esto del código 674 01:05:30,980 --> 01:05:32,940 hay que tener mil ojos 675 01:05:32,940 --> 01:05:35,019 porque los fallos pueden venir por tantos lados 676 01:05:35,019 --> 01:05:36,320 dame un segundo y 677 01:05:36,320 --> 01:05:37,619 vamos a la cámara 678 01:05:37,619 --> 01:05:39,579 dime la consulta 679 01:05:39,579 --> 01:05:42,400 yo la cosa es que estuve mirando porque 680 01:05:42,400 --> 01:05:44,440 en teoría ya lo tengo hecho 681 01:05:44,440 --> 01:05:46,880 me falta pulir los códigos 682 01:05:46,880 --> 01:05:49,280 Y como tengo varios scripts distintos 683 01:05:49,280 --> 01:05:50,239 Pues pulirlo 684 01:05:50,239 --> 01:05:52,460 Entonces tengo dos códigos para la cámara 685 01:05:52,460 --> 01:05:53,519 Porque estuve probando 686 01:05:53,519 --> 01:05:55,679 Y el caso es que utilicé el Lucat 687 01:05:55,679 --> 01:05:59,019 Para digamos una opción 688 01:05:59,019 --> 01:06:01,639 Pero que pasa que cuando yo muevo la nave 689 01:06:01,639 --> 01:06:03,139 Cuando muevo lo que es 690 01:06:03,139 --> 01:06:04,219 El avión 691 01:06:04,219 --> 01:06:06,500 La cámara digamos que está estática 692 01:06:06,500 --> 01:06:08,420 Y lo que hace es, lo sigue 693 01:06:08,420 --> 01:06:09,800 Pero si queda estática 694 01:06:09,800 --> 01:06:12,360 Entonces lo que si, no se si estaría bien 695 01:06:12,360 --> 01:06:13,719 Porque yo lo que hice fue 696 01:06:13,719 --> 01:06:16,380 Espera que te digo, a ver porque le tengo por aquí el código 697 01:06:16,380 --> 01:06:29,059 Sí, básicamente has puesto, claro, en LUCAT, tened en cuenta que lo que hace, a no ser que incorporeis más líneas de código para que se mueva, LUCAT lo que hace es meterle hacia dónde tiene que mirar. 698 01:06:29,059 --> 01:06:39,099 Entonces lo que va a cambiar es la rotación relativa a dónde tiene que estar mirando, pero eso no significa que la cámara se mueva, solo rotará con respecto a su posición. 699 01:06:39,099 --> 01:06:41,059 Se pueden combinar las dos cosas 700 01:06:41,059 --> 01:06:42,800 Se puede combinar que se mueva 701 01:06:42,800 --> 01:06:45,320 Y aparte que siempre esté mirando al objeto 702 01:06:45,320 --> 01:06:46,079 Que en este caso es la nave 703 01:06:46,079 --> 01:06:48,840 Yo lo que hice fue al final 704 01:06:48,840 --> 01:06:51,719 Porque bueno, al final como estoy también con otras 705 01:06:51,719 --> 01:06:53,840 Cosas aparte para ir aprendiendo un poco más de esto 706 01:06:53,840 --> 01:06:55,860 Que imagino que está bien 707 01:06:55,860 --> 01:06:57,599 Yo lo que tengo es que la cámara 708 01:06:57,599 --> 01:07:00,039 Sigue la misma posición de donde está la nave 709 01:07:00,039 --> 01:07:01,980 Pero la cámara 710 01:07:01,980 --> 01:07:03,480 Le ha añadido otra coordenada 711 01:07:03,480 --> 01:07:04,579 Para que esté un poco más detrás 712 01:07:04,579 --> 01:07:07,519 Donde según se vaya moviendo la nave 713 01:07:07,519 --> 01:07:08,920 No sé si estará correcto 714 01:07:08,920 --> 01:07:12,800 Lo tendría que ver, pero sí, no suena mal. 715 01:07:13,400 --> 01:07:18,039 Si queréis os enseño en este caso cómo lo tengo yo, para que también veáis. 716 01:07:18,860 --> 01:07:24,599 Básicamente, para verlo, si os fijáis, la nave se mueve y la cámara tiene un cierto retardo. 717 01:07:24,599 --> 01:07:28,000 Por eso da ese tirón cuando se para la nave, que sube o baja. 718 01:07:28,519 --> 01:07:33,679 Mira, ya he cambiado algo por ahí, que no se están instanciando los obstáculos. 719 01:07:33,900 --> 01:07:35,980 Pero eso, veis que tiene un cierto tirón. 720 01:07:35,980 --> 01:07:38,360 Pero voy a poner el obstáculo porque es que sin obstáculo 721 01:07:38,360 --> 01:07:40,039 Como que se pierde un poco la referencia 722 01:07:40,039 --> 01:07:42,440 Y básicamente es lo mismo 723 01:07:42,440 --> 01:07:44,880 Que voy a poner aquí obstáculo y me cargo este 724 01:07:44,880 --> 01:07:46,119 Porque quiero que instancie 725 01:07:46,119 --> 01:07:47,400 Los obstáculos, vale 726 01:07:47,400 --> 01:07:49,780 Y creo que ya debería ir 727 01:07:49,780 --> 01:07:51,800 Pues no, bueno, algo ha pasado por ahí, vale 728 01:07:51,800 --> 01:07:53,599 Pero bueno, lo importante 729 01:07:53,599 --> 01:07:55,719 Tienes que instanciar el prefab 730 01:07:55,719 --> 01:07:58,360 Tienes que instanciar el prefab 731 01:07:58,360 --> 01:08:00,719 Sí, sí, es el que tengo 732 01:08:00,719 --> 01:08:02,199 Ah, vale, vale 733 01:08:02,199 --> 01:08:03,539 Pero bueno, algo 734 01:08:03,539 --> 01:08:06,139 he cambiado por ahí y luego 735 01:08:06,139 --> 01:08:08,739 deje de explicar y hablar a la vez, es un jaleo 736 01:08:08,739 --> 01:08:10,639 a ver, un segundo, si no 737 01:08:10,639 --> 01:08:14,300 el obstáculo 738 01:08:14,300 --> 01:08:15,599 la nave 739 01:08:15,599 --> 01:08:18,380 pues sinceramente no sé 740 01:08:18,380 --> 01:08:20,479 qué es, pero algo ha habido 741 01:08:20,479 --> 01:08:21,039 por ahí 742 01:08:21,039 --> 01:08:24,439 da igual, porque si de eso no hay 743 01:08:24,439 --> 01:08:25,079 dudas, tampoco 744 01:08:25,079 --> 01:08:31,560 no quiero instanciar 745 01:08:31,560 --> 01:08:33,260 y esto es que antes, ah vale 746 01:08:33,260 --> 01:08:35,560 sí, que he comentado sin querer en algún momento 747 01:08:35,560 --> 01:08:38,199 vale, ya, lo estoy viendo en otro monitor que tengo 748 01:08:38,199 --> 01:08:40,079 vale, explicar 749 01:08:40,079 --> 01:08:41,800 algo he comentado, vale 750 01:08:41,800 --> 01:08:43,500 ahí ya van saliendo cositas, vale 751 01:08:43,500 --> 01:08:45,439 veis que eso, que cuando la cámara para 752 01:08:45,439 --> 01:08:47,880 hasta, desde que para hasta que se coloca 753 01:08:47,880 --> 01:08:49,600 la cámara hay un pequeño tirón, vale 754 01:08:49,600 --> 01:08:51,000 es algo que se 755 01:08:51,000 --> 01:08:54,180 pedía, ¿no? o que es 756 01:08:54,180 --> 01:08:55,979 recomendable, entonces bueno, en esa 757 01:08:55,979 --> 01:08:57,539 cámara, para que lo veáis, tengo 758 01:08:57,539 --> 01:08:59,279 un script llamado camera follow 759 01:08:59,279 --> 01:09:01,939 se puede llamar seguimiento cámara 760 01:09:01,939 --> 01:09:04,119 vale, ya sabemos que eso es una convención 761 01:09:04,119 --> 01:09:05,039 que usemos nosotros 762 01:09:05,039 --> 01:09:28,619 Y vais a ver que lo que estoy buscando, las dos variables públicas o serializadas, que las tenemos aquí, básicamente tenemos por un lado, y son estas dos, una que tiene el objetivo al que tiene que estar siguiendo, que tenemos mejor dicho de referencia para que la cámara lo haga en relación a ese objeto. 763 01:09:28,619 --> 01:09:30,300 básicamente lo que estamos haciendo 764 01:09:30,300 --> 01:09:32,800 si lo decimos incluso verbalmente es 765 01:09:32,800 --> 01:09:34,460 la cámara se va a mover 766 01:09:34,460 --> 01:09:36,600 X en relación a 767 01:09:36,600 --> 01:09:39,140 la nave, entonces siempre hay que tener 768 01:09:39,140 --> 01:09:41,079 esa relación a la nave, aquí en vez de tener 769 01:09:41,079 --> 01:09:43,199 el GameObject, lo que cojo son 770 01:09:43,199 --> 01:09:45,079 que esto lo vimos también en la primera 771 01:09:45,079 --> 01:09:47,119 tarea, os hablo de ello, la variable 772 01:09:47,119 --> 01:09:48,300 transform para recoger 773 01:09:48,300 --> 01:09:51,199 los valores de este componente 774 01:09:51,199 --> 01:09:53,260 lo guarda y yo lo que le he 775 01:09:53,260 --> 01:09:55,140 dicho a la nave es, oye, tú sigue a esta 776 01:09:55,140 --> 01:09:57,380 nave prefab, es la referencia 777 01:09:57,380 --> 01:10:20,340 Y vais a ver que lo que hago es, en el primer momento, según arranca el juego, es la posición actual, ¿vale? Esto que se llama current post, la posición actual en la que debería estar la nave, la cámara, perdonad, ¿vale? Este objeto que tiene el script, ¿vale? Que coja la posición de origen que tengo yo aquí, ¿vale? 778 01:10:20,340 --> 01:10:48,819 ¿Por qué? Porque si yo, y esto además, si no da tirones, si yo pongo aquí la cámara, vais a ver que cuando le doy al play, da ese tirón y se coloca, ¿vale? Esto da este efecto de que se va moviendo hacia ese punto, pero básicamente yo voy a estar en todo momento partiendo de una posición que marco y que deberíamos poner aquí como centrada para que coja esa de comienzo y luego en el update voy a estar diciendo, vale, creo una variable que está aquí, un vector 3, ¿vale? 779 01:10:48,819 --> 01:11:02,319 Dado que hablamos ya de posiciones, rotaciones, escala, que se basan en tres valores, voy a crear un valor que se llama target post, que de momento simplemente guarda este vector, ¿vale? 780 01:11:02,319 --> 01:11:13,199 Que va a coger la posición en los tres ejes de donde está la nave, ¿vale? Por eso pongo target y no es el transform, a diferencia de aquí, si os fijáis. 781 01:11:13,199 --> 01:11:16,279 Pongo, coge la posición de esta nave en X 782 01:11:16,279 --> 01:11:19,920 ¿Vale? En X, básicamente, no quiero que haya un offset 783 01:11:19,920 --> 01:11:23,039 No quiero que haya un offset lateral con respecto a la nave 784 01:11:23,039 --> 01:11:25,779 Quiero que haya un offset hacia arriba, ¿vale? 785 01:11:25,899 --> 01:11:27,659 Y en profundidad hacia atrás, ¿no? 786 01:11:27,659 --> 01:11:30,260 Para que esté alejado hacia atrás y hacia arriba 787 01:11:30,260 --> 01:11:33,479 Porque básicamente, pues es eso 788 01:11:33,479 --> 01:11:36,000 Me quiero alejar hacia atrás y subirla un poco para angularlo hacia abajo 789 01:11:36,000 --> 01:11:38,300 ¿Qué hago? ¿Y qué se puede hacer? 790 01:11:38,359 --> 01:11:40,960 Crear una variable, igual que se podría poner aquí un número a pelo 791 01:11:40,960 --> 01:11:49,159 pero mejor si lo agrupamos en una variable, que uno indique cuánto va a ser ese offset en el eje Z y cuánto va a ser el offset en el eje Y. 792 01:11:49,939 --> 01:12:00,000 Y le digo, el offset en el eje Y va a ser que va a coger la posición de la nave y si está en 10, se va a poner la cámara en 25, más arriba. 793 01:12:00,880 --> 01:12:07,899 Y del Z, si la nave está en 0, se va a ir hacia atrás, va a ir hacia menos 6, porque es lo que he puesto aquí. 794 01:12:07,899 --> 01:12:22,479 Con esto, al ir cambiando estos números, el offset va a ser mayor o menor. Aquí todavía no lo estamos aplicando. Lo tengo guardado y aquí me está dando la posición donde debería estar la cámara en relación al target, que es la nave. 795 01:12:22,479 --> 01:12:40,220 Y luego le digo, ya sí, efectivamente. Ojo, quiero que la nave esté, se podría hacer directamente, se podría decir, oye, quiero que la nave esté en TargetPos. 796 01:12:40,220 --> 01:12:43,659 Espera, voy a hacer otra cosa que si no veo que la lío 797 01:12:43,659 --> 01:12:44,920 Que se me olvida 798 01:12:44,920 --> 01:12:46,600 Voy a hacer que esto es buena práctica 799 01:12:46,600 --> 01:12:48,380 Aquí tengo algo seguro que me funcionaba 800 01:12:48,380 --> 01:12:50,000 Lo comento y ahora digo 801 01:12:50,000 --> 01:12:51,399 Quiero que esté en target post 802 01:12:51,399 --> 01:12:54,380 Target.post 803 01:12:54,380 --> 01:12:58,380 No, no, yo quiero post 804 01:12:58,380 --> 01:13:00,079 Target solamente 805 01:13:00,079 --> 01:13:00,960 Eso también post 806 01:13:00,960 --> 01:13:04,420 Vale, y quiero que en todo momento 807 01:13:04,420 --> 01:13:06,199 La posición de este objeto 808 01:13:06,199 --> 01:13:08,359 Cuando ponemos transform y posición 809 01:13:08,359 --> 01:13:09,199 Nos hablamos de lo 810 01:13:09,199 --> 01:13:23,520 La verdad es que a veces es redundante, pero es un poco para ir repitiendo y que vaya asentándose cosas. Quiero que la posición de este objeto sea la del target post, que es básicamente la que hemos guardado aquí con ya los offsets aplicados. 811 01:13:23,520 --> 01:13:26,720 Si yo es esto lo que aplico a esta cámara 812 01:13:26,720 --> 01:13:28,300 Pues vamos a ver que 813 01:13:28,300 --> 01:13:29,760 No va a haber este retardo 814 01:13:29,760 --> 01:13:32,119 Simplemente la cámara va a tener ese offset 815 01:13:32,119 --> 01:13:34,180 Y se va a mover con la cámara 816 01:13:34,180 --> 01:13:36,380 Como si estuviera anclada en este caso a la nave 817 01:13:36,380 --> 01:13:38,500 A cierta distancia y se moviera con la nave 818 01:13:38,500 --> 01:13:39,340 Vale, pues ya está 819 01:13:39,340 --> 01:13:42,020 Si yo el offset le digo que en vez de 820 01:13:42,020 --> 01:13:44,600 Z sea, ah bueno antes eso lo he dicho al revés 821 01:13:44,600 --> 01:13:45,600 Que era Z y tal 822 01:13:45,600 --> 01:13:48,460 Si le digo que en vez de a 15 unidades por detrás 823 01:13:48,460 --> 01:13:50,039 Este a 50 824 01:13:50,039 --> 01:13:52,220 Simplemente con cambiar ese valor 825 01:13:52,220 --> 01:13:56,020 vais a ver que va a estar anclada igual 826 01:13:56,020 --> 01:13:57,300 pero bastante más lejos 827 01:13:57,300 --> 01:14:01,500 hasta aquí es eso, que haya 828 01:14:01,500 --> 01:14:03,960 ese offset, lo voy a poner más cerca 829 01:14:03,960 --> 01:14:05,699 que es lo que 830 01:14:05,699 --> 01:14:07,119 sí, oigo por ahí un micro 831 01:14:07,119 --> 01:14:10,159 te lleva una acotación 832 01:14:10,159 --> 01:14:11,739 porque a mí me han preguntado también 833 01:14:11,739 --> 01:14:12,939 algunos compañeros 834 01:14:12,939 --> 01:14:15,739 y para aclarar un tema que cuando 835 01:14:15,739 --> 01:14:17,319 aquí por ejemplo estamos hablando de 836 01:14:17,319 --> 01:14:19,399 transform position 837 01:14:19,399 --> 01:14:21,939 el transform se refiere al objeto 838 01:14:21,939 --> 01:14:24,260 al que está asignado 839 01:14:24,260 --> 01:14:25,399 este script 840 01:14:25,399 --> 01:14:28,300 el transform o cualquier cosa que no le ponemos 841 01:14:28,300 --> 01:14:29,319 antes en la clase 842 01:14:29,319 --> 01:14:32,039 siempre estamos hablando del objeto al cual 843 01:14:32,039 --> 01:14:34,180 está asociado, entonces es un punto 844 01:14:34,180 --> 01:14:35,399 que a veces confunde a la gente 845 01:14:35,399 --> 01:14:37,279 porque ahí tienes target, target, target 846 01:14:37,279 --> 01:14:39,199 y vale, target sale 847 01:14:39,199 --> 01:14:41,300 de arriba de la variable 848 01:14:41,300 --> 01:14:43,020 pero realmente has puesto 849 01:14:43,020 --> 01:14:45,159 transform position y 850 01:14:45,159 --> 01:14:47,199 algunos, vale, pero transform de qué 851 01:14:47,199 --> 01:14:47,960 de qué cosa 852 01:14:47,960 --> 01:14:51,100 es importante creo que 853 01:14:51,100 --> 01:14:56,859 aclarar ese punto si hay una confusión con eso esto ya se habló creo en otra 854 01:14:56,859 --> 01:15:01,600 tutoría pero lo repetimos por supuesto ya hablamos que existe vale y esto en la 855 01:15:01,600 --> 01:15:05,600 de instancia acción lo hablamos a colación de que también se creaba se 856 01:15:05,600 --> 01:15:09,579 podía crear una variable de tipo transform y fijaos que aquí se refiere a 857 01:15:09,579 --> 01:15:14,439 la clase transform con la t mayúscula vale normalmente y lo vais a ver en el 858 01:15:14,439 --> 01:15:20,199 tema 3 cuando queremos hacer cambios en un componente es decir recordar que los 859 01:15:20,199 --> 01:15:27,640 componentes son estos distintos bloques que proporcionan propiedades a 860 01:15:27,640 --> 01:15:32,199 los GameObjects, hay uno que se llama transform que está siempre en 861 01:15:32,199 --> 01:15:37,239 todos los GameObjects, a excepción de algunos de la UserInterface, bueno 862 01:15:37,239 --> 01:15:40,359 algunos puntuales que no lo tienen, pero en general todos tienen este transform 863 01:15:40,359 --> 01:15:43,319 porque todos se ubican en el espacio, tiene una rotación y una escala 864 01:15:43,319 --> 01:15:47,420 impepinablemente. Entonces, a diferencia de por ejemplo lo que tendremos que hacer 865 01:15:47,420 --> 01:16:13,500 En la siguiente tarea, cuando queramos cambiar, por ejemplo, estoy poniendo uno de los valores, una de las propiedades del componente RigidBody, que no se va a poder poner directamente RigidBody.más, ¿vale? Para cambiarlo. A diferencia de eso, en Transform se considera que al ser tan universal, ¿vale? Se puede apelar a él directamente sin tener que recogerlo, ¿vale? 866 01:16:13,500 --> 01:16:19,600 Esto cuando veáis la unidad 2, vais a ver eso, que por ejemplo, si yo quiero cambiar, vamos a hacer el ejemplo de hecho, ¿vale? 867 01:16:19,600 --> 01:16:24,920 Una de las propiedades de un RigidBody es la masa, ¿vale? El más. Y lo podemos querer cambiar. 868 01:16:25,100 --> 01:16:33,640 Y yo digo, voy a crear un RigidBody, lo llamo RB, ahora os explico esto un poco más en detalle. 869 01:16:33,880 --> 01:16:36,439 Aunque ya os digo que esto se explica en la unidad 3. 870 01:16:36,439 --> 01:16:38,680 pero si yo capturo 871 01:16:38,680 --> 01:16:40,899 este RigidBody 872 01:16:40,899 --> 01:16:42,880 lo escribo y ahora lo voy explicando 873 01:16:42,880 --> 01:16:44,159 que va a ser más sencillo 874 01:16:44,159 --> 01:16:46,819 y yo, aquí me ha hecho lo que ha querido 875 01:16:46,819 --> 01:16:48,920 digo, quiero meterme en la masa 876 01:16:48,920 --> 01:16:51,060 y decirle que esto es igual a 10 877 01:16:51,060 --> 01:16:51,960 ¿vale? 878 01:16:53,079 --> 01:16:54,800 básicamente con este código lo que estoy 879 01:16:54,800 --> 01:16:55,979 diciéndole es 880 01:16:55,979 --> 01:16:58,539 este objeto 881 01:16:58,539 --> 01:17:00,180 que tiene este script 882 01:17:00,180 --> 01:17:02,420 incluido, que es la 883 01:17:02,420 --> 01:17:04,479 cámara, ¿vale? al final un script 884 01:17:04,479 --> 01:17:11,239 se incorpora en un GameObject como un componente, si yo este componente, este objeto que tiene 885 01:17:11,239 --> 01:17:18,420 esta clase CameraFollow, quiero cambiar sus valores, al final lo que tengo que hacer es 886 01:17:18,420 --> 01:17:31,859 crear una clase que se llame como el componente. Y vais a ver que para ir accediendo a los 887 01:17:31,859 --> 01:17:35,640 distintos componentes básicamente va a haber que hacer una variable de ese tipo 888 01:17:35,640 --> 01:17:42,000 de componente por ejemplo si yo quiero variar los valores de cámara aquí habrá 889 01:17:42,000 --> 01:17:46,539 una clase que se llama cámara si quiero variar los de pues yo que sé audio 890 01:17:46,539 --> 01:17:53,279 listener va a haber una clase que se llama audio listener vale y está esta 891 01:17:53,279 --> 01:18:00,420 creación de clases clase manipulador audio listener vale 892 01:18:00,420 --> 01:18:11,060 Entonces tendremos que ir, para poder apelar a que estamos haciendo los cambios, va a haber siempre que crear una variable con el tipo de variable llamada como el componente. 893 01:18:11,500 --> 01:18:19,560 A veces pueden cambiar un poco los nombres, pero fijáis que, no me lo sé de memoria, sé que como hay uno que se llama AudioListener, yo lo pongo ahí y es un tipo de clase posible, ¿vale? 894 01:18:19,560 --> 01:18:25,899 Que se puede crear como variable. Y a partir de aquí lo usaremos con el nombre que hayamos atribuido a esa variable, ¿vale? 895 01:18:25,899 --> 01:18:47,659 Entonces, ¿qué ocurre? Que hay un proceso intermedio, que es que aunque pongamos que aquí vamos a trabajar con una variable de tipo RigidBody, hasta que no le digamos a qué RigidBody se refiere, que es lo que se hace con esta operación, ahora la explicamos en más detalle, no va a poder hacer ningún cambio. 896 01:18:47,659 --> 01:19:00,979 Fijaos, ¿vale? Bueno, primero, para que veáis que esto ocurre, si como yo le he dicho que la masa me la cambia a 10, yo cuando guardo y ejecuto este código, ¿vale? Vais a ver que efectivamente está cambiando la masa a 10. 897 01:19:00,979 --> 01:19:03,359 veis que se ha puesto 10 al lanzarse 898 01:19:03,359 --> 01:19:05,199 ¿vale? que sí que está habiendo 899 01:19:05,199 --> 01:19:06,979 este cambio mediante código 900 01:19:06,979 --> 01:19:09,460 ¿qué pasa si yo borro esta línea? 901 01:19:10,539 --> 01:19:10,739 ¿vale? 902 01:19:11,359 --> 01:19:12,479 aparentemente no pasa nada 903 01:19:12,479 --> 01:19:13,920 pero 904 01:19:13,920 --> 01:19:17,119 vais a ver que solo por borrar esa línea 905 01:19:17,119 --> 01:19:18,199 que ahora explicábamos, perdón 906 01:19:18,199 --> 01:19:20,760 yo le doy a play y este cambio no se realiza 907 01:19:20,760 --> 01:19:22,079 no se pone a 10 908 01:19:22,079 --> 01:19:24,500 pero según la lógica 909 01:19:24,500 --> 01:19:27,220 yo estoy diciendo que la variable 910 01:19:27,220 --> 01:19:27,720 rb 911 01:19:27,720 --> 01:19:30,340 se opere con 912 01:19:30,340 --> 01:19:33,840 los contenidos de este componente RigidBody 913 01:19:33,840 --> 01:19:38,880 y me cambie el parámetro, RB pues dentro tiene propiedades 914 01:19:38,880 --> 01:19:42,779 que es el de masa, que me lo cambia a 10, ¿por qué no está haciendo esto? 915 01:19:44,199 --> 01:19:46,939 porque hay que usar la captura de componentes 916 01:19:46,939 --> 01:19:50,319 la captura de componentes básicamente es un paso, a veces un poco tedioso 917 01:19:50,319 --> 01:19:54,659 que es igual que cuando decimos que esto es un transform y ponemos 918 01:19:54,659 --> 01:19:58,640 un serialize field y hasta que no arrastramos en el inspector 919 01:19:58,640 --> 01:20:03,260 cuál es ese elemento, no sabe a qué elemento tiene que influir 920 01:20:03,260 --> 01:20:08,479 o cuál tiene que guardar aquí, voy a hacer el ejemplo de decir, 921 01:20:08,960 --> 01:20:11,619 sería light fill y esto lo pongo como un serial light fill, 922 01:20:13,640 --> 01:20:17,760 y tengo aquí ese serial light fill y como lo he generado como un serial light fill, 923 01:20:18,819 --> 01:20:24,760 cuando yo voy a esta cámara, vais a ver que se ha generado un serial light fill 924 01:20:24,760 --> 01:20:26,479 de esta variable llamada rb 925 01:20:26,479 --> 01:20:28,659 que está pidiendo, ahora está vacío 926 01:20:28,659 --> 01:20:30,880 está pidiendo que le incorporemos un RigidBody 927 01:20:30,880 --> 01:20:33,539 ¿qué quiere decir esto por defecto? 928 01:20:34,220 --> 01:20:35,460 que hasta que no arrastremos 929 01:20:35,460 --> 01:20:37,300 aquí un GameObject 930 01:20:37,300 --> 01:20:38,560 con RigidBody 931 01:20:38,560 --> 01:20:40,920 como por ejemplo este mismo, si yo arrastro 932 01:20:40,920 --> 01:20:42,279 MainCamera, tiene un RigidBody 933 01:20:42,279 --> 01:20:44,340 entonces me coge el RigidBody de MainCamera 934 01:20:44,340 --> 01:20:46,000 y sabe que tiene que cambiar 935 01:20:46,000 --> 01:20:48,119 rb tiene que cambiar este RigidBody 936 01:20:48,119 --> 01:20:49,119 y no otro 937 01:20:49,119 --> 01:20:51,899 pero hasta que no lo captura 938 01:20:51,899 --> 01:20:54,300 o no se lo determinaba de una forma explícita 939 01:20:54,300 --> 01:20:55,779 esto está vacío 940 01:20:55,779 --> 01:20:57,760 simplemente ha creado una variable 941 01:20:57,760 --> 01:20:59,319 que es de tipo RigidBody 942 01:20:59,319 --> 01:21:02,539 y esto también lo comenté al principio 943 01:21:02,539 --> 01:21:04,500 pero la gracia que tiene 944 01:21:04,500 --> 01:21:06,079 que haya distintas clases 945 01:21:06,079 --> 01:21:08,579 con los nombres de los componentes 946 01:21:08,579 --> 01:21:09,579 es que aquí si nos metemos 947 01:21:09,579 --> 01:21:12,119 ya os dije que si dais a la tecla control 948 01:21:12,119 --> 01:21:13,560 sobre el nombre de 949 01:21:13,560 --> 01:21:15,100 las variables 950 01:21:15,100 --> 01:21:17,560 o mejor dicho, de las clases 951 01:21:17,560 --> 01:21:19,979 lo que nos metemos es en un código 952 01:21:19,979 --> 01:21:21,920 que ya alguien ha hecho en Unity 953 01:21:21,920 --> 01:21:24,220 o no sé quién desarrolla esto, sinceramente 954 01:21:24,220 --> 01:21:29,840 con todo lo que se ocupa ese componente, ¿vale? 955 01:21:29,840 --> 01:21:33,760 Por eso ya aparecen estas variables, estos campos serializados, 956 01:21:33,859 --> 01:21:37,760 por eso básicamente un componente tiene unas propiedades y no otras, ¿vale? 957 01:21:37,760 --> 01:21:39,760 Y unos comportamientos y no otros, ¿vale? 958 01:21:39,760 --> 01:21:45,239 Entonces, recordad que básicamente tenemos preparado que queremos afectar a un componente 959 01:21:45,239 --> 01:21:49,779 y por eso ponemos su nombre, pero hasta que no le digamos qué componente de los que hay en la escena es, 960 01:21:50,479 --> 01:21:53,880 básicamente Unity no sabe con cuál tiene que hacer nada. 961 01:21:54,220 --> 01:21:56,739 a ver 962 01:21:56,739 --> 01:21:59,859 ahí estamos, otra vez 963 01:21:59,859 --> 01:22:00,880 ¿vale? entonces 964 01:22:00,880 --> 01:22:03,180 ¿cómo se hace esto? se puede hacer 965 01:22:03,180 --> 01:22:05,220 o mediante un serialize fill y decírselo 966 01:22:05,220 --> 01:22:07,100 a través del editor, que es lo que hemos hecho 967 01:22:07,100 --> 01:22:08,600 con este target, ¿vale? 968 01:22:09,020 --> 01:22:10,779 o podemos hacerlo por código 969 01:22:10,779 --> 01:22:12,560 ya os digo, es que esto estamos yendo un paso más adelante 970 01:22:12,560 --> 01:22:14,939 porque de esto, porque es la primera vez que es necesario 971 01:22:14,939 --> 01:22:17,199 realmente, es en la unidad 3 972 01:22:17,199 --> 01:22:19,279 ¿vale? pero bueno, como estamos ya en el paso 973 01:22:19,279 --> 01:22:20,420 de dar el salto a la unidad 3 974 01:22:20,420 --> 01:22:23,159 lo que hay que hacer es, una vez se ha creado esta caja 975 01:22:23,159 --> 01:22:42,600 Recordad, esta variable, que a partir de ahora, aunque sea de tipo RigidBody, su nombre que le hemos puesto es RB, como podríamos poner Joaquín, yo que sé, cualquiera, ¿vale? Yo puedo decirle, vale, RB, esta variable, esta caja, lo que tiene que usar es coger este componente, ¿vale? Y la sintaxis es la que sigue. 976 01:22:42,600 --> 01:23:04,380 Se abren estas llavecitas y paréntesis. El paréntesis aquí, por defecto, en los usos que le vamos a dar nosotros, sirve, y recordad que cuando estamos llamando, esto lo hacíamos, por ejemplo, en el que hemos visto antes de mover el objeto, 977 01:23:04,380 --> 01:23:11,340 para que se sepa que un método al que estamos llamando es un método y no otra cosa, hay que poner esos paréntesis. 978 01:23:11,560 --> 01:23:17,079 Si no, no es un método. Siempre que veáis unos paréntesis llenos o vacíos después de un nombre, 979 01:23:17,659 --> 01:23:22,640 suele ser porque es un método al que estamos apelando. Entonces, GetComponent es un método, 980 01:23:22,739 --> 01:23:28,720 pero funciona de una forma diferente a otras ocasiones, que es que en estas llaves es donde ponemos el nombre del componente. 981 01:23:28,720 --> 01:23:30,539 ¿Vale? Con esta 982 01:23:30,539 --> 01:23:32,579 línea lo que estamos haciendo es 983 01:23:32,579 --> 01:23:34,460 que esta caja que abrimos aquí de tipo 984 01:23:34,460 --> 01:23:36,920 RigidBody, porque vamos a usar las propiedades 985 01:23:36,920 --> 01:23:38,659 que se han ya 986 01:23:38,659 --> 01:23:39,720 programado previamente 987 01:23:39,720 --> 01:23:42,779 de ese componente llamado RigidBody 988 01:23:42,779 --> 01:23:44,720 es decirle, vale, yo quiero 989 01:23:44,720 --> 01:23:46,079 que guardes en esa caja 990 01:23:46,079 --> 01:23:48,539 el componente RigidBody de este objeto 991 01:23:48,539 --> 01:23:49,260 que tiene el script 992 01:23:49,260 --> 01:23:51,960 es decir, ahora mismo en RB 993 01:23:51,960 --> 01:23:54,420 como este es el script que tiene 994 01:23:54,420 --> 01:23:56,260 este código, ¿vale? 995 01:23:56,500 --> 01:23:58,460 al lanzarse en el start dice, vale, me 996 01:23:58,460 --> 01:24:08,319 meto y le digo, a ver, bueno, esto ya lo puedo cerrar, me meto y dice, a ver, me meto y cojo el componente que hay en este objeto, porque no le estoy 997 01:24:08,319 --> 01:24:19,239 diciendo que sea en otro, RigidBody, ¿vale? Y lo meto, me ha dicho en, este ya también me lo voy a mover, y me ha dicho que lo meta en RB, ¿vale? 998 01:24:19,260 --> 01:24:27,960 Y a partir de ahora RB sí que se va a estar refiriendo en todo caso a ese componente que está en este objeto, ¿vale? Y por eso, a partir de ahí, sí 999 01:24:27,960 --> 01:24:37,699 podemos entrar en las propiedades. Yo ahora pongo rb y al dar a punto y ver las propiedades vais a ver que hay muchas propiedades, pero básicamente 1000 01:24:37,699 --> 01:24:46,279 eskinematic, quedad con estos nombres, eskinematic, más, si voy arriba estará drag, por ejemplo, angular drag, drag, ¿vale? 1001 01:24:46,399 --> 01:24:53,739 Todo esto son propiedades que si os fijáis lo que hacen es alterar el contenido de este componente, ¿vale? Es la forma de acceder. 1002 01:24:53,739 --> 01:25:13,699 Si yo aquí pongo drag y le digo que drag es igual a 10, nuevamente, cuando guardo, estoy diciendo, vale, capturo en una variable de tipo RigidBody, mediante esta operación, este RigidBody, ya puedo acceder directamente a las propiedades de este RigidBody, entre una de ellas es drag. 1003 01:25:14,020 --> 01:25:22,659 Al darle a reproducir, vais a ver que drag se pone a 10. Esta es la forma de acceder por código a las propiedades de cada componente. 1004 01:25:23,739 --> 01:25:37,619 ¿Vale? Vuelvo rápidamente y luego volvemos a esto. ¿Qué sucede con el transform? Que si esto hubiera que hacerlo con el transform para cambiar la posición, ¿vale? Para acceder a position, sería un rollo, por decirlo así rápido. 1005 01:25:37,619 --> 01:25:54,079 Habría que hacer transform, darle el target o el nombre que fuera, luego target, luego igual a getComponent, transform, ¿vale? Y esto sería para preparar que target funcionara como transform y ya pudiera entrar a position o a lo que fuera. 1006 01:25:54,079 --> 01:26:10,399 ¿Qué han hecho? Se ha simplificado porque Transform se usa tanto que sin necesidad de hacer nada de todo esto que hemos hecho para, por ejemplo, RB o acceder a cualquier otro, ¿vale? Y esto es cualquier otro de los componentes en los que queramos cambiar parámetros o propiedades, ¿vale? 1007 01:26:10,399 --> 01:26:25,960 Pues directamente al dar a transform ya se ha hecho toda esa operación. Es un atajo, digamos, a este componente transform, ¿vale? Lo veis, transform es la clase donde está todo el código, pero hay un atajo que es con este transform ya que apela directamente a todo este recorrido que hemos hecho. 1008 01:26:25,960 --> 01:26:41,640 Y por eso ya podemos acceder al position, al Euler angles, a la escala local, ¿vale? Por eso es esa diferencia entre el transform o otros tipos de componentes, ¿vale? 1009 01:26:41,960 --> 01:26:49,260 ¿Qué pasa? Que cuando damos al transform, básicamente en una línea estamos diciendo que está refiriéndose al transform de ese objeto, no de otro, de ese objeto. 1010 01:26:49,260 --> 01:27:06,439 Por eso, a diferencia de cuando usamos el transform capturado por un serialize fill llamado target, aquí al decirle target.position, no estamos accediendo a las propiedades del transform de ese objeto, estamos accediendo a las propiedades de transform de ese objeto al que hemos referenciado aquí. 1011 01:27:06,439 --> 01:27:21,399 Y por eso ese target.position no se refiere a la posición del mismo objeto que tiene el script, sino a la posición, ahí está accediendo al transform de este objeto, aquí. 1012 01:27:24,180 --> 01:27:25,060 ¿Hasta aquí qué tal? 1013 01:27:27,550 --> 01:27:33,510 A ver, también se puede plantear que por defecto un script ha hecho una captura de transform, pero que no necesitaba... 1014 01:27:33,510 --> 01:27:41,350 Sí, es lo que acabo de explicar, que no hay que especificar en el caso de transform del mismo objeto que está apelando a su transform, ¿vale? 1015 01:27:41,449 --> 01:27:44,810 Componer transform, ya estamos hablando de su propio componente transform. 1016 01:27:45,470 --> 01:27:47,010 Vale, y bueno, sí, es justo lo que has puesto, ¿vale? 1017 01:27:48,470 --> 01:27:52,170 Entonces, lo llevo un poco más, ¿vale? Por si esto os ayuda. 1018 01:27:53,289 --> 01:27:58,470 Sé que es un poco lío, pero básicamente es quedarse con que para cambiar valores de un componente, 1019 01:27:58,470 --> 01:28:27,310 Que básicamente lo vamos a hacer constantemente, porque esto también lo expliqué, pero creo que no es de más. Cuando creamos un objeto vacío, ves que ya viene con el transform, ¿vale? Otra pista de que el transform es tan universal que ya se hacen atajos para acceder a él, pero que al final lo que proporciona que un objeto sea de una forma u otra es los diferentes componentes que vamos incorporando, esos bloques de código que ya están prehechos con sus configuraciones, comportamientos, etc. 1020 01:28:27,310 --> 01:28:46,289 Entonces básicamente todo lo que vamos a ir haciendo es ir cambiando los distintos componentes de cada objeto. Si queremos cambiar los valores de un componente, como acabamos de decir, habrá que hacer ese tipo de variable con el nombre del componente y guardarlo en una variable. 1021 01:28:46,289 --> 01:29:02,289 Y ojo, porque también os he dicho que los scripts, a su modo, también son componentes. Ya os he dicho. Esto al final, aunque es una script, se llama CameraFollow y es un componente. Lo hemos incorporado como cualquier otro componente. Por eso hay que arrastrar al GameObject, porque hay que incorporarlo como componente. 1022 01:29:02,289 --> 01:29:19,770 A estos scripts se puede hacer desde otros scripts también poniendo su nombre. Si yo pongo aquí Camera Follow, ¿vale? Veis que esto no existía por defecto. Esto se llama así porque hay un componente que he creado yo, en este caso, que se llama Camera Follow. 1023 01:29:19,770 --> 01:29:35,670 Y por eso sale aquí. Si yo desde otro código, ¿vale? Y este ya os digo que es el que tiene el código, pero si yo me meto en otro de los scripts que estoy usando, a ver, aquí tengo scripts, pues yo que sé, el de instanciar, ¿vale? Lo pongo aquí, yo que sé. 1024 01:29:35,670 --> 01:29:54,390 Y yo quisiera cambiar algo de ese otro script que he creado yo, ¿vale? Yo si me meto y busco Camera Follow, veis que está aquí. En parte porque cuando, esto lo hace automáticamente Unity, pero cuando generamos esta clase, que es en el fondo el componente, veréis que es pública por defecto. 1025 01:29:54,390 --> 01:30:09,590 Entonces, al ser pública, podemos acceder de otros códigos. Si recordáis, el ámbito es público, es general, se puede acceder de otros puntos. Por eso, si yo ahora quiero acceder a Camera Follow y le digo, vale, este se va a llamar CF, ¿qué problema hay? 1026 01:30:09,590 --> 01:30:12,010 que yo si luego en el start digo 1027 01:30:12,010 --> 01:30:13,010 camera follow 1028 01:30:13,010 --> 01:30:15,689 follow 1029 01:30:15,689 --> 01:30:18,149 y he puesto 1030 01:30:18,149 --> 01:30:20,689 bueno, habría que hacer 1031 01:30:20,689 --> 01:30:23,029 alguna variable 1032 01:30:23,029 --> 01:30:24,449 pero, a ver 1033 01:30:24,449 --> 01:30:26,689 dejadme que me meta 1034 01:30:26,689 --> 01:30:28,649 espera, que ya no sé dónde tengo cada código 1035 01:30:28,649 --> 01:30:30,750 aquí, vale, lo voy a unir al otro 1036 01:30:30,750 --> 01:30:31,829 para tenerlo ahí pegaico 1037 01:30:31,829 --> 01:30:34,909 aquí el problema que voy a tener en un rato 1038 01:30:34,909 --> 01:30:36,649 es que he desorganizado tanto 1039 01:30:36,649 --> 01:30:38,310 todo que me voy a volver loco, pero vale 1040 01:30:38,310 --> 01:30:57,050 Yo tengo, igual que tengo propiedades, a lo mejor yo quiero acceder al Offset Camera Z de Camera Follow, que es una de sus propiedades. Si doy aquí a Offset Camera, no sale aquí en primer punto porque no es público. 1041 01:30:57,050 --> 01:31:13,369 Para que sea público hay que ponerlo aquí y hay que ponerlo como público, si no se encapsula. Si yo ahora pongo punto, ¿aparecerá offset cámara? No. ¿Por qué? 1042 01:31:13,369 --> 01:31:37,510 Porque nuevamente nos falta una operación que es decir cuál es este cameraFollow. En principio habrá que decirle que cf capture el cameraFollow con el problema de que si ponemos esto así va a buscar dentro de sus componentes ese cameraFollow. 1043 01:31:37,510 --> 01:31:54,489 Y Camera Follow no está dentro de los componentes del objeto, del GameObject que tiene instanciar obstáculos. Es decir, yo voy al Instanciador que es el que tiene instanciar obstáculos y no tiene ningún componente llamado Camera Follow. 1044 01:31:54,489 --> 01:31:55,970 está en 1045 01:31:55,970 --> 01:31:58,270 main camera, ¿vale? 1046 01:31:58,590 --> 01:32:00,310 es un poco lo mismo de antes 1047 01:32:00,310 --> 01:32:02,409 ¿qué hay que hacer? pues hay dos formas 1048 01:32:02,409 --> 01:32:04,550 o hacer que esto sea 1049 01:32:04,550 --> 01:32:05,369 un serialize field 1050 01:32:05,369 --> 01:32:10,260 y le decimos, arrastrando en el editor 1051 01:32:10,260 --> 01:32:12,180 esto lo voy a comentar porque si no igual da fallo 1052 01:32:12,180 --> 01:32:14,520 arrastrar cuál es 1053 01:32:14,520 --> 01:32:16,300 el game object que sí tiene ese camera follow 1054 01:32:16,300 --> 01:32:18,159 y ya sí que al poner cf podremos 1055 01:32:18,159 --> 01:32:20,420 acceder a sus variables 1056 01:32:20,420 --> 01:32:22,060 ¿vale? y 1057 01:32:22,060 --> 01:32:23,420 primero tenemos que ir 1058 01:32:23,420 --> 01:32:26,340 instanciador, a ver, tengo que guardar primero 1059 01:32:26,340 --> 01:33:02,729 Si ahora vamos a instanciador, guardo, a ver si me hace caso, ahora instanciador, bueno, tiene el de obstáculo y el de camera follow, porque no está saliendo, debería salir, bla, bla, bla, vale, aquí, ah, hay algo que no está bien, 35, 18, y en el script, camera follow, vale, que es que he dejado algo por ahí también a medias. 1060 01:33:03,149 --> 01:33:10,170 ser cámara solo y aquí a vale si hay un error y esto puede que esté dando problemas vale guardo 1061 01:33:10,170 --> 01:33:18,130 a ver si ahora sí vale ahí está vale y ahora en el distanciador veis que está esperando que le 1062 01:33:18,130 --> 01:33:23,270 diga vale pero este cámara follow de dónde sale porque ojo el camera follow es un script que 1063 01:33:23,270 --> 01:33:27,609 hemos incorporado a main camera pero podemos haber arrastrado más objetos también tiene esa lógica de 1064 01:33:27,609 --> 01:33:34,090 determinar a qué objeto y qué main camera es el que cambiamos. Si ahora vamos a instanciador le 1065 01:33:34,090 --> 01:33:39,310 decimos vale el camera follow del que hablamos es este, el de main camera. Hemos arrastrado main 1066 01:33:39,310 --> 01:33:44,529 camera y él ya sabe que tiene que buscar el script porque es de tipo camera follow que realmente es 1067 01:33:44,529 --> 01:33:52,810 de tipo script. Por eso sale ese iconito de script y no el de prefab por ejemplo. ¿Ahora qué ocurre? 1068 01:33:52,810 --> 01:34:16,029 Cuando vamos a este código, al código en el que hemos llamado a Camera Follow, que lo tengo aquí, ahora sí que cuando yo, sin hacer que componen, porque se lo hemos pasado de forma explícita por el editor, cuando damos a CF, al dar punto, sí que aparecerán Offset Camera, Offset Camera Z, Smooth Time, 1069 01:34:16,029 --> 01:34:25,170 que son las variables o propiedades que sí hemos creado en esta clase, en este script. 1070 01:34:26,170 --> 01:34:33,229 ¿Esto qué significa? Que de una forma ya que nos permite cambiar casi cualquier valor de un componente, 1071 01:34:33,829 --> 01:34:40,909 si en el start, lo voy a poner en el update, yo qué sé, por ponerlo ahí, bueno, no me ha hecho caso. 1072 01:34:41,630 --> 01:34:45,609 Update, update, update, espera. 1073 01:34:46,029 --> 01:34:59,689 No es ese el update que quiero. Bueno, sí, sí, sí, es el void update, pero debería, bueno, pensaba que salía igualmente, ¿vale? Aquí tenemos el update, ¿vale? El ciclo. Aquí nos pone private, no nos da igual. 1074 01:34:59,689 --> 01:35:02,550 si yo ahora le digo, vale, quiero 1075 01:35:02,550 --> 01:35:04,770 yo ahora todo lo que ponga cf 1076 01:35:04,770 --> 01:35:05,970 me estoy refiriendo a ese 1077 01:35:05,970 --> 01:35:10,270 a ese componente camera follow 1078 01:35:10,270 --> 01:35:12,550 al otro script, básicamente, a lo que tengo 1079 01:35:12,550 --> 01:35:14,829 aquí, vale, y le voy a decir que por ejemplo 1080 01:35:14,829 --> 01:35:16,989 el camera offset 1081 01:35:16,989 --> 01:35:18,630 en z, vale 1082 01:35:18,630 --> 01:35:20,470 en vez de ponerlo en su código, voy a decirle 1083 01:35:20,470 --> 01:35:21,090 es 50 1084 01:35:21,090 --> 01:35:24,750 y ahora que va a pasar, que cuando empezamos en el juego 1085 01:35:24,750 --> 01:35:26,170 cuando llegue a este punto 1086 01:35:26,170 --> 01:35:28,489 le estamos diciendo por un código que 1087 01:35:28,489 --> 01:35:32,510 cambie otro de nuestros códigos ni siquiera es uno de los componentes que ya viene por unity sino 1088 01:35:32,510 --> 01:35:38,390 uno de nuestros códigos y aunque aquí hubiéramos puesto el offset de z 15 vais a ver que se va a 1089 01:35:38,390 --> 01:35:46,729 poner en 50 es decir que igual que hemos hablado antes tú tú tú se va a poner a 50 de distancia la 1090 01:35:46,729 --> 01:35:54,649 cámara lo ponemos aquí y vais a fijaros bueno que está alejado a ver 50 50 porque no me está 1091 01:35:54,649 --> 01:35:55,930 cogiendo el offset 1092 01:35:55,930 --> 01:36:03,689 y ha puesto aquí unas cuantas cosas 1093 01:36:03,689 --> 01:36:05,770 ah vale, espera, si le doy a este 1094 01:36:05,770 --> 01:36:07,850 offset vais a ver que aquí 1095 01:36:07,850 --> 01:36:09,710 el camera offset de pronto se ha puesto en 1096 01:36:09,710 --> 01:36:11,949 50 y no está en el objeto instanciador 1097 01:36:11,949 --> 01:36:13,729 que es en el que tenemos ese script, sino 1098 01:36:13,729 --> 01:36:15,770 en el de main camera y aquí se ha puesto 1099 01:36:15,770 --> 01:36:16,710 el 50 1100 01:36:16,710 --> 01:36:18,109 ¿vale? 1101 01:36:19,489 --> 01:36:21,470 otra forma y ya la última 1102 01:36:21,470 --> 01:36:23,609 a ver, os leo que no sé si me estáis 1103 01:36:23,609 --> 01:36:25,850 ¿me vais siguiendo más o menos? 1104 01:36:26,270 --> 01:36:27,750 esto es también practicarlo y tener 1105 01:36:27,750 --> 01:36:31,970 la lógica de que lo que hemos hecho por SerializeField es una forma rápida 1106 01:36:31,970 --> 01:36:39,270 y por el editor y visual de indicar qué componente o incluso el GameObject 1107 01:36:39,270 --> 01:36:42,250 de la jerarquía es al que queremos afectar con esa variable. 1108 01:36:42,949 --> 01:36:46,470 Pero esto llegará a un punto que si no lo queremos hacer por el editor 1109 01:36:46,470 --> 01:36:49,529 y lo queremos hacer por código, tenemos que usar esto del GetComponent 1110 01:36:49,529 --> 01:36:54,109 y tener la lógica de, ojo, que no por declarar una variable de un tipo 1111 01:36:54,109 --> 01:36:57,970 o que se llame igual que un componente, vamos ya a poder afectar ese componente, 1112 01:36:58,090 --> 01:37:04,789 sino que hay que capturarlo primero e indicarle qué componente en concreto es al que vamos a afectar. 1113 01:37:05,189 --> 01:37:07,569 Esto ya os digo, en el tema 3 es más capital. 1114 01:37:08,890 --> 01:37:14,729 Y bueno, todo esto me sirve también para explicar por qué el transform tiene ese atajo del transform con minúscula, 1115 01:37:14,729 --> 01:37:18,670 sin tener que capturar nada, si hablamos del transform del mismo objeto de sí mismo. 1116 01:37:19,869 --> 01:37:23,310 Si hablamos de otro, pues habrá que indicar qué otro objeto es. 1117 01:37:24,109 --> 01:37:40,949 Y esto que hemos hecho aquí, con un serialize fill, hablar de otro camera follow, si en vez de hacerlo con un serialize fill lo queremos hacer por código, el problema que tenemos aquí es que decimos lo que hemos dicho antes. 1118 01:37:40,949 --> 01:38:05,569 He preparado que recoja este script de cameraFollow, pero en un objeto que no tiene cameraFollow. Entonces, al hacer la captura de componente, esta línea es incorrecta, porque aquí le estamos diciendo en el script, en este script, en el objeto, mejor dicho, que tiene este script, que es instanciar obstáculos y es instanciador, busca o captura el componente llamado cameraFollow y aquí no está. 1119 01:38:05,569 --> 01:38:21,710 Por tanto, esto va a dar error, es decir, no va a ser, de hecho, si intento darle a play, vais a ver que lo que ocurre es que da un error, porque dice, no encuentro la referencia al objeto que me estás pidiendo que capture, porque aquí no hay nada que se llame camera follow. 1120 01:38:21,710 --> 01:38:23,090 vale, en ese caso 1121 01:38:23,090 --> 01:38:25,750 ya esto es por complicarse, a lo mejor lo más rápido 1122 01:38:25,750 --> 01:38:27,649 aquí, nuestro nivel es poner un serial 1123 01:38:27,649 --> 01:38:29,470 y fill, arrastrar y se lo decimos 1124 01:38:29,470 --> 01:38:31,630 pero aquí lo que podemos hacer es decirle 1125 01:38:31,630 --> 01:38:34,010 hay distintos 1126 01:38:34,010 --> 01:38:36,149 mira, de hecho, si nos metemos 1127 01:38:36,149 --> 01:38:38,050 esto ya de momento es más avanzado 1128 01:38:38,050 --> 01:38:39,710 y hay uno de los vídeos de Álvaro Holguera 1129 01:38:39,710 --> 01:38:41,449 que si no me equivoco está en la unidad 3 1130 01:38:41,449 --> 01:38:43,310 que habla de esto específicamente 1131 01:38:43,310 --> 01:38:45,869 pero hay distintos, si nos ponemos 1132 01:38:45,869 --> 01:38:47,770 en la API de 1133 01:38:47,770 --> 01:38:49,729 Unity Documentation y damos a 1134 01:38:49,729 --> 01:38:54,869 GetComponent, vais a ver que hay GetComponent a pelo, que es este que estamos usando, 1135 01:38:55,550 --> 01:38:59,909 este de cógeme el componente llamado tal y me lo guardas en una variable de este tipo. 1136 01:39:00,470 --> 01:39:04,670 De hecho, veis que suele haber esta rima de que el tipo de variable luego es la que se busca aquí, 1137 01:39:04,869 --> 01:39:05,430 se llaman igual. 1138 01:39:06,829 --> 01:39:10,149 Aquí lo ha hecho en una sola línea, pero es exactamente lo mismo que hemos hecho, 1139 01:39:10,369 --> 01:39:12,689 la lógica que hemos usado en los ejemplos. 1140 01:39:12,689 --> 01:39:16,890 Pero si vais viendo, hay otros que se llaman GetComponentInChildren, 1141 01:39:16,890 --> 01:39:18,050 GetComponentImparent 1142 01:39:18,050 --> 01:39:20,170 GetComponentIndex 1143 01:39:20,170 --> 01:39:23,029 GetComponent, por ejemplo, vamos a usar uno que se llama 1144 01:39:23,029 --> 01:39:31,779 GetComponentImparent 1145 01:39:31,779 --> 01:39:34,819 Ya, bueno 1146 01:39:34,819 --> 01:39:38,000 Podríamos usar 1147 01:39:38,000 --> 01:39:40,739 Bueno, esto sirve sobre todo para buscar los componentes 1148 01:39:40,739 --> 01:39:43,000 En los hijos de la jerarquía o en los padres 1149 01:39:43,000 --> 01:39:43,220 ¿Vale? 1150 01:39:43,960 --> 01:39:46,899 Pero ahora mismo no me viene 1151 01:39:46,899 --> 01:39:48,000 Pero hay otro 1152 01:39:48,000 --> 01:40:11,000 Eso es, eso es. Vale, perdonad, que es que a veces yo me desubico. Hay otro tipo de métodos, como este define, si lo buscamos aquí, que es buscar un objeto por distintas tipologías o distintas criterios que demos. 1153 01:40:11,000 --> 01:40:13,859 Podemos buscarlo por el tipo de objeto que sea 1154 01:40:13,859 --> 01:40:14,920 Por el nombre 1155 01:40:14,920 --> 01:40:17,539 Por el index que tenga 1156 01:40:17,539 --> 01:40:19,859 Por ejemplo, si vemos este transform 1157 01:40:19,859 --> 01:40:20,819 Find 1158 01:40:20,819 --> 01:40:23,119 No, mejor dicho, GameObjectFind 1159 01:40:23,119 --> 01:40:25,600 Lo que hace será buscar un GameObject 1160 01:40:25,600 --> 01:40:27,760 En la jerarquía 1161 01:40:27,760 --> 01:40:29,260 Pero por código, ojo 1162 01:40:29,260 --> 01:40:31,760 Entonces con esto lo que podemos hacer es poner 1163 01:40:31,760 --> 01:40:33,819 Poniendo esta operación 1164 01:40:33,819 --> 01:40:35,100 De GameObject.find 1165 01:40:35,100 --> 01:40:37,500 Y poniéndole un nombre 1166 01:40:37,500 --> 01:40:39,760 Vamos a decirle, oye, búscame 1167 01:40:39,760 --> 01:40:42,100 dentro de la jerarquía un objeto que se llame 1168 01:40:42,100 --> 01:40:44,060 de tal manera y de ese objeto 1169 01:40:44,060 --> 01:40:45,939 ya dentro me buscas el componente 1170 01:40:45,939 --> 01:40:47,359 que se llame CameraFollow, ¿vale? 1171 01:40:47,699 --> 01:40:49,520 Por ejemplo, nos vamos a quedar que aquí hay un 1172 01:40:49,520 --> 01:40:51,960 GameObject que se llama MainCamera que es el que tiene el 1173 01:40:51,960 --> 01:40:53,840 CameraFollow. Entonces vamos ahí 1174 01:40:53,840 --> 01:40:55,199 y le decimos 1175 01:40:55,199 --> 01:40:57,659 ¿vale? Quiero que me hagas... 1176 01:40:57,659 --> 01:41:00,199 Bueno, borro esto de... Bueno, el GameComponent lo dejo ahí. 1177 01:41:00,899 --> 01:41:01,920 Es dentro 1178 01:41:01,920 --> 01:41:03,840 de la clase GameObject 1179 01:41:03,840 --> 01:41:05,840 que es una genérica que guarda 1180 01:41:05,840 --> 01:41:07,779 un montón de código relacionado con 1181 01:41:07,779 --> 01:41:10,180 la gestión de los game objects 1182 01:41:10,180 --> 01:41:11,039 vale 1183 01:41:11,039 --> 01:41:13,199 le decimos find 1184 01:41:13,199 --> 01:41:15,439 y vamos a decirle que en vez de por 1185 01:41:15,439 --> 01:41:17,439 se puede buscar por las etiquetas que ya lo veremos 1186 01:41:17,439 --> 01:41:20,060 por los tipos, hay muchos tipos de búsqueda 1187 01:41:20,060 --> 01:41:21,539 pero el básico 1188 01:41:21,539 --> 01:41:24,199 si le damos aquí entre el paréntesis 1189 01:41:24,199 --> 01:41:25,600 el nombre de lo que tiene que buscar 1190 01:41:25,600 --> 01:41:27,939 que es main camera hemos dicho 1191 01:41:27,939 --> 01:41:29,720 al ser un string hay que meterlo tal cual 1192 01:41:29,720 --> 01:41:31,579 lo que va a hacer es 1193 01:41:31,579 --> 01:41:33,079 en este punto de código va a buscar 1194 01:41:33,079 --> 01:41:36,100 un objeto de la jerarquía llamado main camera 1195 01:41:36,100 --> 01:41:52,739 Es decir, llegará aquí al primero que encuentre, se llama así. Si hay varios llamados de distinta forma, solo cogería el primero en este caso. Y ya una vez encontrado, seguimos enlazando, quiero que de ese objeto que has llegado hasta ahí, me cojas el componente llamado Camera Follow. 1196 01:41:52,739 --> 01:42:21,920 Y ahí sí que está cogiendo el componente de otro objeto. En vez de hacerlo por un serialize field arrastrando, aquí estamos diciendo busca este objeto y me coges el componente. Por eso ahora, aunque estemos haciéndolo a través, sin serialize field, del instanciador, de este script que tenemos en instanciador, vais a ver que va a cambiar el valor del offset de cámara Z a 50, porque estamos apelando a otro objeto y a otro código. 1197 01:42:21,920 --> 01:42:39,920 Entonces yo ahora si ejecuto el juego vais a ver que aquí se ponen 50. Desde el script de un GameObject estamos buscando el componente en otro GameObject y cambiamos una de sus propiedades. Esto es como la base para interconectar distintos scripts. 1198 01:42:39,920 --> 01:42:43,239 vale, indica un compañero que se 1199 01:42:43,239 --> 01:42:44,100 marcha 1200 01:42:44,100 --> 01:42:47,100 si la subiremos cuando se acabe 1201 01:42:47,100 --> 01:42:49,199 la tutoría, ¿qué tal hasta aquí? 1202 01:42:49,260 --> 01:42:51,300 ¿me seguís? todo esto lo he contado, no es lo que tenía 1203 01:42:51,300 --> 01:42:52,880 pensado contaros, lo porque 1204 01:42:52,880 --> 01:42:55,420 ya hubo un día que os introduje un poco esto 1205 01:42:55,420 --> 01:42:57,279 y hay uno de los vídeos de Álvaro Dolguera 1206 01:42:57,279 --> 01:42:58,720 que habla también de esto, entonces 1207 01:42:58,720 --> 01:43:00,579 bueno, pero creo que 1208 01:43:00,579 --> 01:43:02,800 sirve para que lo vayáis 1209 01:43:02,800 --> 01:43:04,420 entendiendo, ¿vale? 1210 01:43:04,500 --> 01:43:06,359 sobre todo es entender la lógica, luego ya 1211 01:43:06,359 --> 01:43:08,420 pues igual que ahora no me acordaba de que era fine 1212 01:43:08,420 --> 01:43:09,939 Eso es, buscas en internet 1213 01:43:09,939 --> 01:43:11,500 ¿Cómo se buscaba un GameObject? Por código 1214 01:43:11,500 --> 01:43:14,199 Y ya rápidamente alguien os va a decir 1215 01:43:14,199 --> 01:43:15,460 Pues con el método, fine 1216 01:43:15,460 --> 01:43:17,699 Y ya os metéis en fine y veis como funciona 1217 01:43:17,699 --> 01:43:20,199 ¿Vale? Esto dicho rápido 1218 01:43:20,199 --> 01:43:21,439 Sé que es más complicado que esto 1219 01:43:21,439 --> 01:43:24,300 Pero que bueno, que es un poco la lógica que creo que hay que seguir 1220 01:43:24,300 --> 01:43:26,140 Para resolver dudas 1221 01:43:26,140 --> 01:43:27,880 Vale 1222 01:43:27,880 --> 01:43:28,920 Pues 1223 01:43:28,920 --> 01:43:31,079 Con esto 1224 01:43:31,079 --> 01:43:33,960 No he hecho la introducción 1225 01:43:33,960 --> 01:43:35,840 A la tarea 3 1226 01:43:35,840 --> 01:43:37,859 Pero os dejo que la leáis 1227 01:43:37,859 --> 01:43:59,630 Y en un par de semanas o así hacemos otra tutoría y hablamos más de ella. ¿Dudas con algo de lo que hemos tratado hoy? ¿Algo que queráis que veamos de la UT2? Que es el momento porque es en la que estamos, es el mejor momento. Vale, pues entiendo que no. 1228 01:43:59,630 --> 01:44:03,949 ¿Alguien ha empezado la tarea 3? 1229 01:44:04,409 --> 01:44:06,409 Por ver si hay alguna duda así de 1230 01:44:06,409 --> 01:44:08,069 De comienzo 1231 01:44:08,069 --> 01:44:12,640 ¿No? 1232 01:44:14,220 --> 01:44:16,079 Vale, pues sí, entonces casi 1233 01:44:16,079 --> 01:44:17,359 Esperamos a que 1234 01:44:17,359 --> 01:44:20,000 Leáis y veáis que se pide 1235 01:44:20,000 --> 01:44:21,939 Y ya nos pegamos con ella, ¿vale? 1236 01:44:22,000 --> 01:44:23,100 Y las dudas que tengáis 1237 01:44:23,100 --> 01:44:25,619 Las dudas que tengáis me las 1238 01:44:25,619 --> 01:44:27,479 Las vais planteando, ¿de acuerdo? 1239 01:44:31,479 --> 01:44:31,699 Vale 1240 01:44:31,699 --> 01:44:34,180 ¿Dudas? 1241 01:44:34,180 --> 01:44:40,699 ya os digo, todo esto que os he contado 1242 01:44:40,699 --> 01:44:42,300 ahora me la planteas 1243 01:44:42,300 --> 01:44:44,199 es para explicar esto del transform con minúscula 1244 01:44:44,199 --> 01:44:46,140 que me habéis dicho, la forma rápida 1245 01:44:46,140 --> 01:44:47,920 pero también desorganizada 1246 01:44:47,920 --> 01:44:50,060 porque hay que estar arrastrando y cuando se 1247 01:44:50,060 --> 01:44:52,279 resetean ciertos objetos puede dar 1248 01:44:52,279 --> 01:44:54,439 error o que se desconfiguren 1249 01:44:54,439 --> 01:44:56,420 cosas y hay que estar pendiente de volver a arrastrar 1250 01:44:56,420 --> 01:44:58,180 la forma rápida de acceder 1251 01:44:58,180 --> 01:45:00,380 a los componentes es arrastrando con este serialize 1252 01:45:00,380 --> 01:45:01,220 fill, por eso 1253 01:45:01,220 --> 01:45:04,319 es una de las primeras cosas 1254 01:45:04,319 --> 01:45:05,600 que se ven, claro, por código 1255 01:45:05,600 --> 01:45:08,140 porque es la forma de poder 1256 01:45:08,140 --> 01:45:09,979 referirnos a objetos y cambiar propiedad 1257 01:45:09,979 --> 01:45:10,979 de objetos 1258 01:45:10,979 --> 01:45:14,159 vale, sí, esa duda que creo que 1259 01:45:14,159 --> 01:45:16,020 me está escribiendo alguien, la esperamos 1260 01:45:16,020 --> 01:45:18,199 sí, hola, mejor lo 1261 01:45:18,199 --> 01:45:19,399 digo por micro 1262 01:45:19,399 --> 01:45:22,159 no sé si es por 1263 01:45:22,159 --> 01:45:23,840 mi internet o por la retransmisión 1264 01:45:23,840 --> 01:45:25,159 pero los 1265 01:45:25,159 --> 01:45:27,260 cuando lanzabas 1266 01:45:27,260 --> 01:45:30,159 la escena 1267 01:45:30,159 --> 01:45:31,859 y salían los objetos 1268 01:45:31,859 --> 01:45:34,039 o sea, los obstáculos, iban como 1269 01:45:34,039 --> 01:45:36,159 a tirones. ¿Eso es por mi internet o es porque 1270 01:45:36,159 --> 01:45:38,000 realmente van como un poco a 1271 01:45:38,000 --> 01:45:39,880 tirones? A ver, déjame que lo veamos. 1272 01:45:41,579 --> 01:45:41,939 Pues 1273 01:45:41,939 --> 01:45:43,619 probablemente es de tu internet, sí. 1274 01:45:44,159 --> 01:45:46,119 Sí puede ser, ¿eh? A ver, yo también lo veo 1275 01:45:46,119 --> 01:45:47,960 así, pero es por la transmisión que está 1276 01:45:47,960 --> 01:45:49,020 haciendo en OBS. 1277 01:45:49,560 --> 01:45:50,979 Vale, vale, vale. 1278 01:45:51,079 --> 01:45:53,000 A 30 frames o menos incluso. 1279 01:45:53,359 --> 01:45:54,920 Sí, o bueno, o que el 1280 01:45:54,920 --> 01:45:57,579 refresco de la retransmisión 1281 01:45:57,579 --> 01:45:59,720 pues está, no va todo lo fluida que debiera. 1282 01:46:00,060 --> 01:46:01,960 Sí, sí, es algo que veis vosotros, no es... 1283 01:46:02,560 --> 01:46:03,760 Después cuando veas el 1284 01:46:03,760 --> 01:46:05,500 vídeo que suba, se va a ver mejor 1285 01:46:05,500 --> 01:46:07,140 en mejor calidad. Vale, vale, porque 1286 01:46:07,140 --> 01:46:09,640 cuando me meta yo a poner 1287 01:46:09,640 --> 01:46:11,680 el código, digo, a lo mejor le meto un 1288 01:46:11,680 --> 01:46:13,380 parejo un poco enfermizo, pero 1289 01:46:13,380 --> 01:46:15,739 un time delta time para que vaya un poco más 1290 01:46:15,739 --> 01:46:17,579 fluido el obstáculo. 1291 01:46:17,699 --> 01:46:19,619 De todos modos, yo 1292 01:46:19,619 --> 01:46:21,560 te doy un consejo con respecto a esto 1293 01:46:21,560 --> 01:46:22,739 del time delta time, y es 1294 01:46:22,739 --> 01:46:25,260 que cuando tengas claro que hay que usarlo, lo uses, 1295 01:46:26,039 --> 01:46:27,539 pero si no lo usas 1296 01:46:27,539 --> 01:46:28,760 y no ves que te... Es decir, 1297 01:46:29,260 --> 01:46:31,460 si de verdad lo necesitas, lo vas a notar. 1298 01:46:31,800 --> 01:46:32,840 Y en ese caso, buscas 1299 01:46:32,840 --> 01:46:35,640 qué movimiento, qué propiedad es la que hay que meterle 1300 01:46:35,640 --> 01:46:37,600 time delta time, teniendo en cuenta que luego 1301 01:46:37,600 --> 01:46:39,600 vas a tener que multiplicar por un valor 1302 01:46:39,600 --> 01:46:41,180 alto para compensar 1303 01:46:41,180 --> 01:46:42,960 con una fuerza de un speed para compensar 1304 01:46:42,960 --> 01:46:44,859 que los valores se van a ver reducidos 1305 01:46:44,859 --> 01:46:47,020 pero te quiero decir que 1306 01:46:47,020 --> 01:46:49,220 que bueno, que el time delta time 1307 01:46:49,220 --> 01:46:51,199 está para calibrar o para 1308 01:46:51,199 --> 01:46:52,000 equilibrar 1309 01:46:52,000 --> 01:46:54,279 estos movimientos 1310 01:46:54,279 --> 01:46:56,840 pero que se puede añadir siempre a posteriori 1311 01:46:56,840 --> 01:46:59,340 sabes que a veces a uno le puede paralizar 1312 01:46:59,340 --> 01:47:01,279 mucho el meto el time delta time o no 1313 01:47:01,279 --> 01:47:07,819 pues cuando veas que lo necesitas lo metes después pero bueno en todo caso no te va a solucionar el 1314 01:47:07,819 --> 01:47:12,800 problema que se vea para nación y que al revés normalmente tú vas a ver si no lo aplicas vas 1315 01:47:12,800 --> 01:47:22,100 a ver que va todo muy rápido no exactamente así que sí que puede dar tirones es decir lo que lo 1316 01:47:22,100 --> 01:47:27,239 expliqué en otra tutoría lo que hace es compensar el update en la velocidad de ejecución de fotograma 1317 01:47:27,239 --> 01:47:30,000 lo ejecuta, si tienes un ordenador muy variable 1318 01:47:30,000 --> 01:47:32,220 o que va dando como saltos o inestables 1319 01:47:32,220 --> 01:47:33,359 sí que se pueden dar tirones 1320 01:47:33,359 --> 01:47:35,060 y el time delta time sí que te lo equilibra 1321 01:47:35,060 --> 01:47:37,180 sí tiene una influencia en eso 1322 01:47:37,180 --> 01:47:40,239 pero el efecto también 1323 01:47:40,239 --> 01:47:42,020 colateral es que al aplicar 1324 01:47:42,020 --> 01:47:44,380 un time delta time en una multiplicación de un movimiento 1325 01:47:44,380 --> 01:47:46,699 va a haber que compensar 1326 01:47:46,699 --> 01:47:48,079 subiendo otro 1327 01:47:48,079 --> 01:47:50,079 de los elementos que multiplique 1328 01:47:50,079 --> 01:47:51,720 porque es verdad que te va a reducir la velocidad 1329 01:47:51,720 --> 01:47:53,739 pero la función primaria 1330 01:47:53,739 --> 01:47:55,340 por la que la estamos usando nosotros 1331 01:47:55,340 --> 01:48:04,659 porque tiene más funciones, como hacer un contador, etcétera, que va acumulando tiempo, etcétera, bueno, es para calibrar las velocidades, ¿vale? 1332 01:48:04,659 --> 01:48:11,899 Y también para que los valores, pues eso, sean constantes. Eso lo dije en otra tutoría y creo que puse ejemplos más o menos claros. 1333 01:48:12,579 --> 01:48:21,140 Pero bueno, lo dicho, si ves que hay cosas ilógicas o que das alto, lo pones. Pero por defecto, es verdad, y lleva razón, que cuando se usan movimientos cinemáticos, 1334 01:48:21,140 --> 01:48:23,760 el time delta time es 1335 01:48:23,760 --> 01:48:26,500 recomendable ponerlo, cuando hacemos físicas 1336 01:48:26,500 --> 01:48:28,159 y esto lo pone el tema, no porque 1337 01:48:28,159 --> 01:48:30,159 normalmente también, normalmente 1338 01:48:30,159 --> 01:48:32,319 siempre tiene sus vueltas 1339 01:48:32,319 --> 01:48:34,239 vamos a usarlo dentro del 1340 01:48:34,239 --> 01:48:35,239 fix update 1341 01:48:35,239 --> 01:48:38,380 bueno, cuando leáis el tema se explica 1342 01:48:38,380 --> 01:48:38,899 esto un poco 1343 01:48:38,899 --> 01:48:42,500 vale, perfecto, gracias 1344 01:48:42,500 --> 01:48:43,699 ok 1345 01:48:43,699 --> 01:48:46,220 bueno, alguna 1346 01:48:46,220 --> 01:48:52,619 cosa más, vale, genial 1347 01:48:52,619 --> 01:48:54,600 pues nada, damos por 1348 01:48:54,600 --> 01:48:56,899 cerrada la tutoría porque ya os digo 1349 01:48:56,899 --> 01:48:58,600 prefiero que veáis un poco cómo va 1350 01:48:58,600 --> 01:49:01,020 la tarea de la 3 1351 01:49:01,020 --> 01:49:02,699 y leáis el contenido 1352 01:49:02,699 --> 01:49:04,819 en vez de ponerme aquí a hablar y que no 1353 01:49:04,819 --> 01:49:07,100 sepáis todavía de qué hablo, prefiero que le hayáis 1354 01:49:07,100 --> 01:49:09,239 hecho primero una primera pasadita 1355 01:49:09,239 --> 01:49:09,659 aunque sea