1 00:00:00,000 --> 00:00:07,760 Como entiendo por lo que me habéis estado contando en la iniciación, digamos, que hemos 2 00:00:07,760 --> 00:00:12,780 estado hablando un poquillo sobre cómo estáis afrontando el módulo, me habéis indicado 3 00:00:12,780 --> 00:00:20,040 que no habéis... que habéis leído el tema 2, ya lo habéis ojeado, pero la tarea no 4 00:00:20,040 --> 00:00:26,880 la habéis comenzado. Si la pensáis presentar, vaya, ya sabéis que son voluntarias. Hay 5 00:00:26,880 --> 00:00:32,800 un compañero que me ha dejado en el foro una consulta, ¿vale?, porque... lo ha dejado 6 00:00:32,800 --> 00:00:35,920 en el foro. Por cierto, os recomiendo que uséis el foro para consultas de las tareas, 7 00:00:35,920 --> 00:00:40,560 casi todos podemos participar. Vale, y me ha dejado un poco su solución del movimiento 8 00:00:40,560 --> 00:00:48,320 de la nave que hay que conseguir en esta tarea. Pero le daba un fallo, más que un fallo, 9 00:00:48,320 --> 00:00:54,160 es, bueno, que no estaba haciendo el comportamiento correspondiente al que buscaba, porque estaba 10 00:00:54,160 --> 00:01:00,880 mezclando tanto el desplazamiento, sobre todo el horizontal, con la rotación. Y eso 11 00:01:00,880 --> 00:01:07,560 en principio no tiene problema, porque si revisáis un poco el código, si os fijáis, 12 00:01:07,560 --> 00:01:14,080 el axis lo está captando en este momento, dentro de su update. Esto lo podéis luego 13 00:01:14,080 --> 00:01:21,480 consultar en el foro, también con más detalle. Y esa variable que ha creado con un float 14 00:01:21,480 --> 00:01:28,880 que va del menos uno al uno, según se introduce en este axis, lo usa tanto a la vez para el 15 00:01:28,880 --> 00:01:34,200 translate como para el rotate. Entonces eso significa que si ha configurado que este axis 16 00:01:34,200 --> 00:01:40,920 se controle con, por poner un ejemplo, las teclas A y D, cuando se mueva a la derecha, 17 00:01:40,920 --> 00:01:46,480 con este translate, también rotará a la derecha, que es lo que está configurado aquí. 18 00:01:46,480 --> 00:01:51,720 El problema que hay ahora mismo es que hay que entender que tanto el translate como el rotate 19 00:01:51,720 --> 00:01:57,720 tienen una propiedad muy interesante y que hay que saber, porque si no da problemas como este. 20 00:01:57,720 --> 00:02:01,680 El problema que se está encontrando, ahora que he introducido esto, que se está encontrando el 21 00:02:01,680 --> 00:02:09,240 compañero, y un segundo, que el código lo he repicado y lo he introducido en esta nave, es que cuando yo 22 00:02:09,240 --> 00:02:15,880 empiezo a controlar la nave, subo o bajo sin problema, ha hecho bien la interacción, 23 00:02:17,760 --> 00:02:22,960 pero cuando se da a un lateral, lo que hace es que la nave empieza a orbitar con respecto a un 24 00:02:22,960 --> 00:02:28,560 centro que tiene ahí. No es que vaya a la izquierda y gire y vire a la izquierda también mientras se 25 00:02:28,560 --> 00:02:32,960 desplaza a la izquierda. Y parece que es que se está moviendo a la derecha desde un punto 26 00:02:33,160 --> 00:02:42,280 concreto. Aunque parezca eso, lo que está ocurriendo es que, para ver cómo deducir 27 00:02:42,280 --> 00:02:50,680 estas cosas o buscar más información, si buscamos la documentación de, por ejemplo, 28 00:02:50,680 --> 00:02:57,680 el rotate, que en el translate ocurre un poco lo mismo, de la API, el transform rotate, 29 00:02:57,840 --> 00:03:03,840 aquí estaría. No estoy buscando el manual, sino que estoy buscando la API. 30 00:03:03,840 --> 00:03:07,400 ¿Estás compartiendo pantalla? 31 00:03:07,400 --> 00:03:08,160 No. 32 00:03:08,160 --> 00:03:09,480 Ah, vale, vale. 33 00:03:09,480 --> 00:03:16,640 Sí, sí, es esencial, porque si no, no sé cómo me podéis seguir. 34 00:03:18,080 --> 00:03:23,360 Vale, gracias por decírmelo. Ahora sí que, vale. 35 00:03:23,360 --> 00:03:26,400 No sabía si lo estabas compartiendo. 36 00:03:26,400 --> 00:03:33,840 No, no, no. Perdona, que no lo había hecho. Vale. Nada, eso. Ahí en el foro de DeinUT2, 37 00:03:33,840 --> 00:03:41,720 un código que el compañero ha indicado con el problema de que si ejecuto el movimiento lateral, 38 00:03:41,720 --> 00:03:47,080 también rota, pero le ocurre este problema que estábamos viendo, que es que ahora mismo, 39 00:03:47,080 --> 00:03:51,760 cuando vamos a derecha-izquierda, no está yendo a la derecha y a la A y B rotas, 40 00:03:51,760 --> 00:03:56,360 sino que parece que está orbitando con respecto a un punto. Y la interpretación que puede ser es 41 00:03:56,360 --> 00:03:59,640 que estemos yendo a izquierda-derecha con respecto a este punto central, por ejemplo, 42 00:03:59,640 --> 00:04:04,920 si os dais cuenta, parece que está haciendo aquí un giro en base a este punto que podría ser un nulo. 43 00:04:04,920 --> 00:04:08,640 Pero lo que está ocurriendo en realidad, es que en su código, 44 00:04:11,640 --> 00:04:22,000 un segundete, que lo tengo en el foro, aquí está, está cogiendo el axis, la interacción del eje, 45 00:04:22,280 --> 00:04:28,960 vale, en un punto, en esta variable se está guardando, y luego lo emplea tanto en el 46 00:04:28,960 --> 00:04:33,760 Translate como en el Rotate. Si os fijáis, en ambos casos está el desplazamiento. ¿Y qué 47 00:04:33,760 --> 00:04:40,960 está ocurriendo? Y es en donde me había quedado, que si vamos al API, a ver, vamos al API, 48 00:04:40,960 --> 00:04:54,840 a cómo, a qué, digamos, aquí lo tenemos, aquí está. Cuando estamos usando Transform, 49 00:04:54,840 --> 00:05:03,560 Rotate, como en este caso, estamos incorporando un vector 3 correspondiente a la rotación y a los 50 00:05:03,560 --> 00:05:09,920 tres ejes que hay en la rotación del Transform, pero el problema es que hay un segundo parámetro 51 00:05:09,920 --> 00:05:15,200 que no es obligatorio poner, que es el Relativo a, ¿no? Con respecto a qué hace el giro, con 52 00:05:15,200 --> 00:05:21,120 respecto a qué hace la traslación de posición, ¿vale? Y por defecto, aquí pone Relativo a, 53 00:05:21,120 --> 00:05:26,800 y hay dos opciones, Relativo a sí mismo o Relativo al mundo. Esto lo podríais, por ejemplo, 54 00:05:26,800 --> 00:05:33,840 explicar aquí, ¿vale? Y si veis por defecto, tiene un igual y un valor ya asignado, ¿vale? Recordad 55 00:05:33,840 --> 00:05:38,440 que cuando tenemos un método, pues va teniendo distintas sobrecargas, esto lo hemos visto en 56 00:05:38,440 --> 00:05:43,640 otras tutorías, en los que en cada uno, pues en el orden que se va estableciendo, separados por coma, 57 00:05:43,640 --> 00:05:52,640 se van incorporando valores. En el caso del Rotate, por ejemplo, o si buscamos el Transform, vais a 58 00:05:52,640 --> 00:06:01,800 ver que está ese segundo argumento, ¿vale? Relativo a, con respecto a qué espacio lo hace. Voy a ponerlo 59 00:06:01,800 --> 00:06:08,960 en el Transform, que de hecho creo que se va a ver mejor. Si vamos a Transform, Translate, vais a ver 60 00:06:08,960 --> 00:06:14,800 que la declaración es igual. Va a tener el vector 3 de hacia dónde vamos a decir que se vaya moviendo 61 00:06:14,800 --> 00:06:22,160 esa GameObject, que lo tenga incorporado, pero luego hay un segundo valor, ¿vale? Que por 62 00:06:22,160 --> 00:06:28,920 defecto ya tiene un valor. Y si os fijáis, vienen dos formas de declarar este método. Una, solo meter 63 00:06:28,920 --> 00:06:36,920 el vector y ya está. Y otra que es meter el vector y este segundo espacio. ¿Qué pasa? Que si no ponemos 64 00:06:36,920 --> 00:06:44,080 nada explícitamente como segundo argumento, si lo declaramos así, el método ya está interpretando 65 00:06:44,080 --> 00:06:49,920 que usa a sí mismo para realizar este movimiento. ¿Y qué está ocurriendo? ¿Vale? Vamos a ver el 66 00:06:49,920 --> 00:06:58,360 ejemplo. Si volvemos a desarrollar el juego, a ponerlo en marcha, lo que está sucediendo es que 67 00:06:58,360 --> 00:07:04,160 estamos moviendo la nave a la derecha, por ejemplo, ¿vale? Y a la vez está rotando rotando hacia la 68 00:07:04,160 --> 00:07:10,440 derecha. Entonces, ¿qué ocurre? No es que la nave esté orbitando en base a un punto intermedio, sino que 69 00:07:10,440 --> 00:07:15,560 como va rotando hacia la derecha, y con respecto a la rotación que tiene sí mismo, este self, ¿no? 70 00:07:15,560 --> 00:07:21,640 que significa mismo, ¿vale? Va identificando esta rotación y lo mueve a la derecha y sigue rotando 71 00:07:21,640 --> 00:07:27,840 a la derecha y se realimentan los dos movimientos. Es decir, la nave está tanto yendo a la 72 00:07:27,840 --> 00:07:32,960 derecha como rotando, pero con respecto a la rotación que va teniendo en cada momento. Ahí 73 00:07:32,960 --> 00:07:39,440 está el problema que, por ejemplo, tenía el compañero, que si no definimos nada explícitamente, como 74 00:07:39,440 --> 00:07:51,640 sucedía en su... Si no pone nada explícitamente relacionado con el espacio, por defecto, 75 00:07:51,640 --> 00:07:57,040 va a coger el valor que tenga ya sí mismo. Es decir, si hay una rotación, por poner algo de 45 76 00:07:57,040 --> 00:08:03,920 grados hacia la derecha, pues la nave se moverá en diagonal, ¿no? Porque básicamente está cogiendo 77 00:08:03,920 --> 00:08:08,360 la rotación que tenga en cada momento y ya respecto a esa, mueve la nave hacia la derecha también. 78 00:08:08,360 --> 00:08:13,040 Entonces, se están realimentando. ¿Cómo se solucionaría esto para que hiciera el comportamiento 79 00:08:13,040 --> 00:08:20,360 esperado? Si habéis visto el vídeo, por ejemplo, de la tarea de ejemplo, más o menos se interpreta 80 00:08:20,360 --> 00:08:27,880 que se busca, que es que la nave, dando a cruceta, vaya derecha-izquierda, arriba-abajo y luego, si 81 00:08:27,880 --> 00:08:32,080 queremos, independientemente con otros controles, podamos rotar la izquierda-derecha, ¿vale? Pues 82 00:08:32,080 --> 00:08:37,520 para, por ejemplo, pasar entre estos obstáculos que se van generando. Entonces, ahora 83 00:08:37,520 --> 00:08:42,840 mismo el problema que hay es que, como están las dos acciones, tanto la de rotar como la de 84 00:08:43,840 --> 00:08:51,880 como la de moverse, conectadas a una misma entrada, no hay opción de que cuando yo pulse la derecha 85 00:08:51,880 --> 00:08:57,720 sólo haga la rotación o el movimiento, ¿no? Lo que sí se puede hacer, por ejemplo, como primer paso, y aquí 86 00:08:57,720 --> 00:09:04,000 tengo, es el mismo código que ha puesto Francisco Javier, lo tengo incorporado, ¿vale? Aquí en el 87 00:09:04,000 --> 00:09:09,800 código es exactamente lo mismo, aquí se ve un poco más claro. Es decir que, independientemente de la 88 00:09:09,800 --> 00:09:15,920 rotación que tenga, ¿vale? Los movimientos en vertical, en horizontal, perdonad, es decir, de izquierda- 89 00:09:15,920 --> 00:09:22,160 derecha de la nave, lo hagan en relación al espacio, pero no el sí mismo, no el que tiene ya por defecto, 90 00:09:22,160 --> 00:09:28,760 sino en relación al mundo, ¿vale? A las coordenadas del mundo, que esas son imperturbables. Entiendo, si ya 91 00:09:28,760 --> 00:09:36,800 habéis estado manejando en otros módulos software de 3D, igual que aquí hay ya una forma de 92 00:09:36,800 --> 00:09:43,080 indicar que algo son variables locales o globales, y vais a ver que si yo, por ejemplo, cojo de prueba 93 00:09:43,080 --> 00:09:50,800 y roto este objeto, ¿vale? Si yo lo pongo como local y como global, veis que aquí varían las 94 00:09:50,800 --> 00:09:55,640 coordenadas. ¿Por qué? Porque global siempre va a enseñar las coordenadas en relación al gizmo del 95 00:09:55,640 --> 00:10:00,480 mundo, que es imperturbable, siempre va a haber, digamos, una brújula de hacia dónde apuntan las 96 00:10:00,480 --> 00:10:05,640 cosas, y nosotros podemos, cada objeto que relacionemos, que se vaya representando en base a 97 00:10:05,640 --> 00:10:11,280 esas coordenadas, pero también podemos ver el objeto como local, y como este objeto está rotado en 98 00:10:11,280 --> 00:10:18,720 47 grados, ¿vale? Pues tiene esta inclinación, y por tanto, el eje Y, que es el que representa la 99 00:10:18,720 --> 00:10:25,520 verticalidad, aquí está rotado también. Esto está relacionado con cómo funciona aquí el movimiento, ¿no? 100 00:10:25,520 --> 00:10:31,000 Si aquí ponemos que el movimiento lo haga independientemente de la rotación que tenga y que 101 00:10:31,000 --> 00:10:37,240 en lo que se fije sea en las coordenadas del mundo, va a dar igual que la nave esté rotada o no, porque lo 102 00:10:37,240 --> 00:10:45,320 que va a hacer es moverse hacia ese lado, aunque luego, independientemente, esté rotando. Voy a 103 00:10:45,320 --> 00:10:52,920 deshacer esto un segundo, ¿vale? Para no tener una rotación por defecto, y voy a guardar este script para 104 00:10:52,920 --> 00:10:58,720 que veáis que con este cambio simple, aunque seguimos teniendo un solo input horizontal y 105 00:10:58,720 --> 00:11:05,000 tanto va a desplazarse hacia los lados como que va a rotar, va a hacerse con el mismo control, ¿vale? 106 00:11:05,000 --> 00:11:10,520 Pero vais a ver que ya tiene un comportamiento más esperado, es decir, seguirá rotando porque no hemos 107 00:11:10,520 --> 00:11:15,200 puesto límites a esta rotación, ¿vale? Eso es algo que también está pasando, pero veis que ya no está 108 00:11:15,200 --> 00:11:21,320 orbitando aparentemente, sino que va derecha-izquierda y aparte rota también, ¿vale? Esto es la razón por 109 00:11:21,360 --> 00:11:24,760 la que le sucedía eso al compañero. Si alguien creo que ha pedido... 110 00:11:24,760 --> 00:11:47,960 Sí, yo había pedido una palabra más. Mira, una duda que tengo. ¿Se podría hacer, como lo tengo en la parte de arriba, con los cursores arriba, abajo, izquierda, derecha, y con una booleana, un condicional, para que si, por ejemplo, le doy a la izquierda o a la derecha, además de girar con respecto al mundo en izquierda, se rote un poquito, en determinados grados, con una condicional? 111 00:11:48,320 --> 00:11:51,320 Sí, claro. De hecho... 112 00:11:51,320 --> 00:12:00,440 Perdona, es que lo he intentado con un condicional, con un if, si gira, o un if-else, y no había manera de sacarlo, no he conseguido hacerlo. 113 00:12:00,440 --> 00:12:04,040 Lo que quieres hacer es limitar, ¿no?, la rotación. 114 00:12:04,040 --> 00:12:10,040 Claro, eso es decir, yo le giro el avión a la izquierda y además, cada vez que le doy a la izquierda, es que se rote un poquito. 115 00:12:10,120 --> 00:12:21,000 Y limitando, a lo mejor, a 30 grados, por ejemplo. Se rota 30 grados, además de girarle a la izquierda, y se rota 30 grados a la derecha, además de girarle a la derecha, con una booleana o con un if o algo así. 116 00:12:21,000 --> 00:12:21,720 Era la pregunta. 117 00:12:21,720 --> 00:12:25,560 Eres Francisco Javier, vale, que te has incorporado, que estaba justo hablando de tu tarea. 118 00:12:25,560 --> 00:12:28,520 Vale, ¿has visto esta primera parte de la solución? 119 00:12:28,520 --> 00:12:30,120 Sí, sí, he visto. 120 00:12:30,200 --> 00:12:45,960 Ahora, lo que hay que pensar, ¿vale?, es que aquí, en ningún momento, que por eso estás diciendo lo de la condicional, en ningún momento estás rotando, estás diciendo, llega hasta 90 grados, o no estás diciendo en ningún momento, sino que esto se va sumando, sumando, sumando, y por eso gira indefinidamente, ¿no? 121 00:12:45,960 --> 00:12:49,240 ¿Sí? Hasta aquí lo tenemos claro, ¿vale? 122 00:12:49,320 --> 00:13:02,760 Entonces, tú ten en cuenta que cuando estás cogiendo un axis, como en este caso, ¿vale?, el horizontal, lo que se está trasladando es un valor de entre menos uno o uno, ¿no?, el negativo y el positivo. 123 00:13:02,760 --> 00:13:09,800 Esto, bueno, lo explica en el contenido, y si tenéis alguna duda, lo vemos. 124 00:13:09,880 --> 00:13:35,240 Vamos, de hecho, si yo voy y muestro los valores que tiene el Desk X en cada momento, sabemos que esto está al final del UI, ¿vale?, y esto, cuando yo de a derecha a izquierda, si voy a la consola, vais a ver que el desplazamiento X pasa a 10 o a menos 10, ¿vale? 125 00:13:35,240 --> 00:13:50,280 En realidad es uno menos uno, lo que pasa es que si te fijas, como tú has puesto aquí que se multiplica por una velocidad que has definido, ¿vale?, en el editor, aquí lo tengo, y que lo has puesto de 10 en ambos casos, por eso se multiplica por 10, ¿no? 126 00:13:50,280 --> 00:14:04,280 Cosa importante también, recomiendo, no tiene por qué serlo, pero recomiendo que si vais a multiplicar o hacer alguna operación en los inputs, lo hagáis posteriormente a la recogida del input, ¿vale? 127 00:14:04,280 --> 00:14:24,280 Por ejemplo, aquí este Speed, en vez de ponerlo aquí, ¿vale?, lo pondría aquí también, como multiplicador de la traslación, y como multiplicador en este caso de la rotación, y también el vertical, que habías hecho un poco la misma operación, lo multipliques aquí, ¿por qué? 128 00:14:24,280 --> 00:14:47,280 Porque si no, a lo mejor este input horizontal lo estás usando para varias cosas, y si ya por defecto le has dicho que esté multiplicado por 10 en este caso, pues siempre va a estar por 10, en la operación que queremos que a lo mejor tenga esta velocidad, que se puede llamar Speed o Movimiento-Velocidad, y luego aquí podemos tener Velocidad-Rotación, y podemos hacer dos variables distintas, ¿vale? Por eso os recomiendo que lo hagas así. 129 00:14:47,280 --> 00:15:13,280 Una vez dicho esto, aquí hay que poner algún límite. Bueno, y lo primero, ahora si vuelvo con este Debug Log a mostrar la velocidad que está cogiendo, vais a ver que va de 1 a menos 1. Bueno, no se está refrescando porque se ha perdonado que no lo está cogiendo bien, pero ahora sí, ¿vale? De 1 a menos 1. Doy a la izquierda menos 1 y doy a la derecha y es 1, ¿vale? 130 00:15:13,280 --> 00:15:42,280 Entonces, lo que tenemos que interpretar es jugar a nuestro favor con ese tipo de datos, ¿vale? Ahora mismo en la rotación, ¿no? Vamos a meternos en eso, que ojo, lo mismo, podríamos hacer otro input distinto con otras teclas designadas en el Input Manager, ahora si tenéis dudas de esto, lo definimos también, lo vemos, pero podríamos hacer controles independientes de que cuando dé a la izquierda-derecha vaya a la izquierda-derecha con las crucetas y luego haya dos teclas, la Q y la Y, ¿vale? 131 00:15:43,280 --> 00:15:50,280 Y la E para la rotación solo, ¿vale? Aquí no pasa eso porque están las dos vinculadas a este axis horizontal, ¿vale? 132 00:15:51,280 --> 00:16:10,280 ¿Cómo definimos, o una forma de hacerlo, cómo definimos hasta dónde tiene que llegar este Rotate, para marcar unos límites? En algún momento habrá que decirle cuál es el máximo al que puede llegar la nave, ¿no? 133 00:16:10,280 --> 00:16:25,280 Entonces, si por ejemplo dijéramos, si, igual que has hecho aquí, ¿vale? Que has puesto condicionales de si la posición en Y es menor a esto, pues oye, que no pase de ahí y todo el rato esté refrescando a menos 10, ¿no? 134 00:16:25,280 --> 00:16:43,280 Hemos puesto un límite. Aquí habría que hacer un poco lo mismo con si, y aquí hay algo un poco a veces complejo que es saber cómo usamos la rotación, porque ya lo pone en el temario, que realmente la rotación internamente, todos los cálculos lo está haciendo en cuatro dimensiones, en cuatro ejes, ¿vale? En cuaterniones, ¿vale? 135 00:16:43,280 --> 00:16:56,280 Pero, si nos fijamos en nuestra comprensión, en qué haréis todo el rato en dos over 3D y cómo manipulamos aquí en el editor de Unity, la rotación está basada en tres ejes, como todo el transform, ¿no? 136 00:16:56,280 --> 00:17:10,280 Cuando queramos aludir a estos tres ejes, siempre hay que decir, en vez de rotation, que sería lo lógico, como hacemos en position, ¿vale? El problema es que esto está con un cuaternion. 137 00:17:10,280 --> 00:17:21,280 Lo que hay que hacer es decirle que estamos trabajando en lo que se llaman los Euler angles, que es lo mismo, ¿vale? Poner transform.EulerAngles es lo mismo que aludir a estos tres ejes, al vector 3 de estos tres ejes, ¿no? 138 00:17:22,280 --> 00:17:32,280 Entonces, si le decimos, al rotar a derecha e izquierda, básicamente lo que estamos haciendo es rotar en, a ver, porque yo siempre me confundo, pero es en Z, ¿no? En un vector 3, ¿vale? Sería en Z. 139 00:17:32,280 --> 00:17:52,280 Igual que has hecho aquí, ¿vale? Puedes decir, si el Euler angle, el Z, es, voy a ponerme a Yorkie de 45, ¿vale? Ahora seguimos diciéndole, podemos decir, cuando esto llega a 45, pues ojo, que no vas a poder avanzar un poco lo que acabas de hacer ahí, ¿vale? 140 00:17:53,280 --> 00:18:14,280 Entonces, ¿qué problema hay entre esta? Es decir, ¿por qué no podemos hacer lo mismo con respecto a esto? Pues porque aquí estás usando el rotate, que lo que hace es que va sumando, progresivamente, ¿vale? Más grados a la posición que ya tenga, a la rotación que ya tenga, ¿no? 141 00:18:14,280 --> 00:18:36,280 Si aquí decimos que, si el... Espera, perdona, que me estoy cayendo del cable. Un segundo, eh, perdona. Que no, que me estoy cayendo de la silla. Espera. A ver. Ahora, perdona, eh, que me estaba liando con el cable y me estaba estrangulando a mí mismo. Vale, perdona. 142 00:18:37,280 --> 00:18:39,280 ¿Me oís, verdad, que he tirado el cable? 143 00:18:41,280 --> 00:18:55,280 Sí. Vale. Sí, vale. Si decimos que, si se da esta condición que es menos de 45, ¿vale? Se podría decir, pues la condición, lo que ocurre es, vale, abro llaves. 144 00:18:56,280 --> 00:19:10,280 Lo pongo así, bien formateado, para que lo veamos todos mejor. Si la posición en algún momento es, perdona, mayor que 45, es decir, que va a la derecha. Bueno, esto es a la izquierda, perdona, que es que los ejes van al revés, ¿vale? 145 00:19:10,280 --> 00:19:29,280 Si supera los 45 o los 90, ¿vale? Imaginaos lo que queráis de límite. Si es mayor que 45, habrá que hacer que esto también tenga un... Es decir, no, perdona, es que se puede hacer de las dos formas. 146 00:19:29,280 --> 00:19:44,280 Si esto supera los 45, ¿vale? Este transform rotate no va a funcionar, porque no se está dando la condición, ¿vale? Entonces, ahora mismo vamos a ver qué ocurre. Si yo activo el juego, a ver, he guardado, creo que sí, ¿vale? 147 00:19:44,280 --> 00:20:04,280 Si yo empiezo a moverme a la derecha... Vale, perdonad, lo que hay que hacer es que sea menor de 45. Si es menor de 45, como cuando comienza, que es 0, 0, 0, ¿vale? Guardo. Ahora sí, eso os explico más formas de hacer esto. 148 00:20:04,280 --> 00:20:21,280 Pero si es menor de 45, ¿debería funcionar? No está funcionando, pero no sé si es que he cambiado alguna cosa por el camino. Si es mayor, dale, que no quiero mayor, que quiero menor. 149 00:20:21,280 --> 00:20:41,280 Que no me sale. Ah, ahora sí. Ahora sí debería ir. Si el euro del ángel es mayor, no quiere hacerlo. Vale. Sí, vale, estamos aquí. Vector3, bla, bla, bla. Desplazamiento X. 150 00:20:42,280 --> 00:20:58,280 Si transforme en Z es menor que 45, vale, transforme en Rotate. Vector2, rotación. A ver si es que he cambiado la rotación, perdonad. Está por 10, ¿vale? 151 00:20:58,280 --> 00:21:26,280 Y por Speed, que también está a 10. Si yo dejo esto, lo corto y lo pego. Para comprobar que algo está funcionando lo borro y debería. 152 00:21:29,280 --> 00:21:48,280 Vale, ahora sí lo está haciendo. Si el Transform Angle es menor de 45, debería hacerlo. Ahora digo cómo lo enfocaría yo, pero en teoría debería estar funcionando. 153 00:21:48,280 --> 00:22:10,280 Ahora sí que lo coge el muchacho. ¿Por qué no lo guardo? Estoy en el tuyo, en tu prefab, en todo. Vale. 154 00:22:10,280 --> 00:22:27,280 En este caso, la forma que yo lo hubiera planteado es que, a ver, ¿por qué no está cogiendo? Si el Transform Angle es menor que 45, sí, pero si es que lo está cogiendo bien. 155 00:22:27,280 --> 00:22:40,280 Y es menor de 45, sí, pero debería. Vale, lo voy a... 156 00:22:40,280 --> 00:22:59,280 Vale, pues por lo que sea no lo está haciendo correctamente. Sí, sí, debería estar haciéndolo bien. 157 00:22:59,280 --> 00:23:14,280 Lo pruebo rápido, no voy a hacer que os cuente aquí algo que luego tampoco es. 158 00:23:14,280 --> 00:23:29,280 Vale, las rotaciones siempre suelen dar problemas cuando mezclamos. 159 00:23:29,280 --> 00:23:55,280 Es que debería estar funcionando. A ver, una última. Esperamos que si esto funciona, no tiene mucho sentido. 160 00:23:55,280 --> 00:24:02,280 Y aparte no está haciendo la condición, por tanto, no, porque esto está basado en un quaterniones y por eso no tiene sentido. 161 00:24:02,280 --> 00:24:11,280 Vale, la opción que os daría para este caso, aunque esto debería funcionar, pero está viendo algo que evidentemente no está funcionando. 162 00:24:11,280 --> 00:24:21,280 Estoy en los Shifts, Transform Angle, si el Z, a ver si es que va a ser... No, no, pero es que claro, el Z es el que nos interesa. 163 00:24:21,280 --> 00:24:30,280 Si es menor que 45, sí, sí, es menor que 45, Transform Rotate. 164 00:24:31,280 --> 00:24:38,280 Perdón, ya lo dejo de intentar y os digo cómo lo podemos resolver. Pero es que no está haciendo lo que yo quiero, hombre. 165 00:24:44,280 --> 00:24:55,280 Pues no sé por qué no lo hace. Debería ser menor. Vale, dicho esto, aunque no os estoy dando la solución en base a cómo tú lo estabas planteando, 166 00:24:55,280 --> 00:25:11,280 hay otra forma de conseguir esto, que es, en vez de decir que la nave esté sumando en todo momento rotación, 167 00:25:11,280 --> 00:25:15,280 porque en realidad, como tenemos unos límites tan establecidos, no queremos que siga sumando rotación, 168 00:25:15,280 --> 00:25:24,280 lo que podemos hacer es aludir directamente a los grados que tiene. Me explico. Comento esta línea. 169 00:25:24,280 --> 00:25:33,280 Si yo le digo que lo que tiene que hacer es que la interacción que nosotros hagamos, en este caso con esta variable, 170 00:25:33,280 --> 00:25:42,280 que se vea directamente reflejado en los grados de rotación, que os he dicho, de tres dimensiones, no el quaternion, 171 00:25:42,280 --> 00:25:53,280 lo que podemos decirle es que genere un vector 3, que al final alude a las tres dimensiones que tenemos aquí, 172 00:25:53,280 --> 00:26:01,280 como habréis visto ya en el Transform y en el Translate, y que la rotación, en este caso, que solo nos interesa, 173 00:26:01,280 --> 00:26:11,280 como estábamos intentando hacer en el eje Z, en realidad forcemos a que nunca se mueva la rotación en los ejes que no nos interesan, X e Y, 174 00:26:11,280 --> 00:26:18,280 que también se podría hacer, me da miedo hacerlo, pero también se podría decir que mantenga, como has hecho tú aquí, 175 00:26:18,280 --> 00:26:29,280 que mantenga la rotación que ya tenía en X, que sería lo mismo que cero en este caso, porque no nos interesa que rote en otro eje que no sea Z, 176 00:26:29,280 --> 00:26:38,280 por el videojuego que estamos haciendo. Pero si le decimos que mantenga los valores que ya tuviera en Z en Y, 177 00:26:38,280 --> 00:26:50,280 y lo que hacemos es decirle, ojo, lo que metamos por desplazamiento, por esta variable de X, que se multiplique por el límite que queramos, 178 00:26:50,280 --> 00:27:05,280 lo pongo como float, ¿y esto qué significa? Que si está la nave, estamos dando a la derecha, esto valdrá 1, que se multiplicará por 90, 179 00:27:05,280 --> 00:27:12,280 y si le damos a la izquierda valdrá menos 1, que valdrá menos 90. ¿Con esto qué conseguimos? 180 00:27:17,280 --> 00:27:25,280 Que ahora hay que invertirlo, porque lo está haciendo al revés, pero que cuando yo dé a la derecha, se gira hacia un lado, 181 00:27:25,280 --> 00:27:32,280 y cuando gira a la izquierda, gira hasta el límite de ese lado. Y aquí ocurren varias cosas, que también es a lo que quiero llegar con esto. 182 00:27:32,280 --> 00:27:41,280 Lo primero, habría que decirle que estos valores están invertidos, porque si os fijáis en lo que hemos dicho antes, 183 00:27:41,280 --> 00:27:49,280 que cuando rotamos y sumamos, debería ir a la derecha, va a la izquierda, entonces invertir una variable simplemente se puede hacer 184 00:27:49,280 --> 00:27:59,280 poniéndolo menos delante de la variable, y la hace negativa, lo cual invierte. O por el 90, los máximos grados que tenga, 185 00:27:59,280 --> 00:28:07,280 y ahora sí que lo va a hacer en la dirección que nos interese. Entonces, ahora sí que voy a la derecha, roto a la izquierda, 186 00:28:07,280 --> 00:28:15,280 a la derecha y a la izquierda. ¿Qué problema hay? Si lo pensamos un poco, que era lo que podíamos conseguir con el Rotate, 187 00:28:15,280 --> 00:28:23,280 porque se va sumando progresivamente en el tiempo, y con la Speed, con la velocidad, podíamos decir qué velocidad tiene el giro o no. 188 00:28:23,280 --> 00:28:31,280 Pero si nos damos cuenta ahora mismo, en ningún momento, a diferencia de lo que hemos hecho aquí, y aquí también sería recomendable 189 00:28:31,280 --> 00:28:40,280 poner un Time Delta Time, por lo que explica en el tema, que lo que hace es regular la velocidad de procesamiento del ordenador 190 00:28:40,280 --> 00:28:48,280 para que independientemente del ordenador en el que trabajemos sea constante, lo que vamos a conseguir aquí, 191 00:28:48,280 --> 00:28:57,280 el problema que vamos a tener ahora con esto, es que el 90 que hemos metido, que es un valor exacto, se vea reducido, 192 00:28:57,280 --> 00:29:05,280 ya no sea ese ángulo máximo, porque va a multiplicar el 90 por 0, algo, y vais a ver que ahora casi no tiene rotación. 193 00:29:07,280 --> 00:29:13,280 Sería recomendable hacer esto, pero como voy a explicar ahora, es que lo que está ocurriendo y lo que hace que haya un momento 194 00:29:13,280 --> 00:29:21,280 de interpolación entre que damos al botón y vaya, a ver, que creo que no he guardado, exacto, entre el momento que demos a la interpolación 195 00:29:21,280 --> 00:29:30,280 y ocurra o no ocurra, es que cuando damos a Play, si os fijáis, hay un momento que entre que yo pulso la tecla derecha ahora 196 00:29:30,280 --> 00:29:38,280 y hace el giro completo esos 90, pues durará ponerle un segundo. ¿Y dónde está ese segundo aquí ahora mismo? 197 00:29:39,280 --> 00:29:46,280 En ningún lado, es decir, le estamos dando un input que va de 0 a 1 o de 0 a menos 1, no sabemos en cuánto tiempo, 198 00:29:46,280 --> 00:29:54,280 y llega hasta este límite porque lo está multiplicando. ¿Qué ocurre? Que lo que se explica también en el tema es que los axis, 199 00:29:54,280 --> 00:30:05,280 como es este caso, se configuran, tienen un panel de configuración en el Input Manager. Si dais a Editar y a Project Settings, 200 00:30:05,280 --> 00:30:14,280 hay una sección que se llama Input Manager donde podemos ir configurando estas entradas de los axis. 201 00:30:14,280 --> 00:30:21,280 Y, por ejemplo, en Horizontal, definir qué se corresponde con el valor negativo de ese eje que va de menos 1 a 1. 202 00:30:21,280 --> 00:30:28,280 Y aquí, por ejemplo, yo podría hacer este control tanto con la cruceta, con esta izquierda derecha de la cruceta, 203 00:30:28,280 --> 00:30:33,280 como con el negativo de la A, que va a la izquierda, como a la D, que es lo que estoy usando. 204 00:30:33,280 --> 00:30:45,280 Y, si os fijáis, incluso ya aparece por defecto otro horizontal que, como no tiene ninguna tecla asignada, no está funcionando. 205 00:30:45,280 --> 00:30:51,280 Pero ahí podríamos asignar cualquier otro tipo de valor, por ejemplo, los botones de un mando. 206 00:30:51,280 --> 00:30:59,280 Para eso habría que poner aquí, en negativo y positivo, los códigos que aparecen en el tema, asociados a los mandos, por ejemplo. 207 00:30:59,280 --> 00:31:09,280 Esto simplemente para que sepáis cómo habría que configurarlo si usáramos estas herramientas. 208 00:31:09,280 --> 00:31:22,280 Pero en el tema, en contenido, si vais a la sección de los inputs, aquí interactividad, aquí aparece, por ejemplo, 209 00:31:22,280 --> 00:31:28,280 en el mando de la Xbox, por distintos valores que se asocian, habría que poner JoystickButton0. 210 00:31:28,280 --> 00:31:35,280 Si aquí ponemos JoystickButton0, cuando tiramos a esta tecla correspondiente a la A, que es esta A, 211 00:31:35,280 --> 00:31:41,280 en este mando, cada mando tiene unos, pues haría esa acción, igual que estamos haciendo ahora con el teclado. 212 00:31:41,280 --> 00:31:46,280 Habría que mapearlo en relación al mando que tengamos. 213 00:31:46,280 --> 00:31:54,280 Dicho esto, también aquí hay tres valores que se pueden definir también cómo funcionan. 214 00:31:54,280 --> 00:31:59,280 Esta gravedad, esta muerte, este death, que es el que menos nos interesa, y la sensitivity. 215 00:31:59,280 --> 00:32:05,280 Esto aparece en el tema esbozado, pero aquí puede ser útil, porque lo que hace es que la sensibilidad, 216 00:32:05,280 --> 00:32:13,280 la sensibilidad, ¿vale? Significa que desde que damos a un botón hasta que llega a su valor máximo, ¿vale? 217 00:32:13,280 --> 00:32:18,280 Esto no es un joystick de la Xbox o de la Play, que tiene valores intermedios. 218 00:32:18,280 --> 00:32:24,280 Cuando pulsamos una tecla, por ejemplo, a la cruceta derecha, es 0 o 1 cuando pulsamos. 219 00:32:24,280 --> 00:32:29,280 Lo que pasa es que si os dais cuenta, cuando yo doy al Play y le doy a esa cruceta, 220 00:32:29,280 --> 00:32:34,280 a ver si lo hace, hay como un periodo que pasa por valores intermedios, ¿vale? 221 00:32:34,280 --> 00:32:40,280 Y que de hecho está relacionado con esos momentos en los que la multiplicación que tenemos aquí en el código 222 00:32:40,280 --> 00:32:44,280 no llega a ser el límite de 90 o menos 90. 223 00:32:44,280 --> 00:32:51,280 Entonces, digamos que con estos valores podemos definir la velocidad a la que se hacen estas interpolaciones, 224 00:32:51,280 --> 00:32:53,280 en movimiento horizontal, en este caso. 225 00:32:53,280 --> 00:33:01,280 Pues, por ejemplo, la sensibilidad es el tiempo que tarda desde que damos a un control hasta que llega a ese control. 226 00:33:01,280 --> 00:33:07,280 Si yo pusiera 0, incluso aunque esté en Play podemos probarlo, vais a ver... 227 00:33:09,280 --> 00:33:12,280 ¿Por qué no lo haces? Igual hay que poner un 1, perdón. 228 00:33:12,280 --> 00:33:15,280 ¿Vale? Veis que ahora el movimiento es bastante más lento. 229 00:33:15,280 --> 00:33:22,280 El movimiento de inicio, ¿vale? Porque, a ver, si yo le pongo 001, más exagerado, 230 00:33:22,280 --> 00:33:27,280 vais a ver que lo está haciendo a una velocidad ínfima. 231 00:33:27,280 --> 00:33:33,280 A ver, 0,5. Ahora lo hace mucho más despacio, pero cuando suelto vuelve rápido, ¿vale? 232 00:33:33,280 --> 00:33:35,280 Porque hay otro valor que es el de la gravedad. 233 00:33:35,280 --> 00:33:40,280 Es decir, cuando nos dejamos de intervenir con un input, ¿cuánto tarda en volver? 234 00:33:40,280 --> 00:33:45,280 ¿Vale? Entonces, con estos valores podemos decir la velocidad que tiene el giro de la nave 235 00:33:45,280 --> 00:33:48,280 y cuánto tarda en volver a su valor. 236 00:33:48,280 --> 00:33:54,280 ¿Vale? Es una forma de resolver esto, que lo que hace es usar el axis para... 237 00:33:57,280 --> 00:34:04,280 para ese valor de 1-1 multiplicarlo por un valor que nos sirve para poner unos límites. 238 00:34:04,280 --> 00:34:06,280 ¿Vale? Eso sería una de las formas. 239 00:34:06,280 --> 00:34:13,280 Otra de las formas es usar, a lo mejor, el smooth damp, etc., ¿vale? 240 00:34:13,280 --> 00:34:16,280 Para hacer que la rotación sea suave. 241 00:34:16,280 --> 00:34:21,280 Porque, básicamente, aquí lo que estamos haciendo es cambiar la coordenada según pulsamos. 242 00:34:21,280 --> 00:34:27,280 Así que, ¿verdad? Como tenemos esta interpolación de tiempo, vamos, este tiempo que hay en medio, 243 00:34:27,280 --> 00:34:31,280 por esta sensibilidad que hemos definido aquí en el Input Manager, 244 00:34:31,280 --> 00:34:35,280 pues el ir de un número a otro tiene un desfase. 245 00:34:35,280 --> 00:34:41,280 Pero, realmente, si nos ponemos puros, lo que estamos haciendo es intervenir en la rotación del transform. 246 00:34:41,280 --> 00:34:48,280 Por tanto, cuando estamos introduciendo inputs, está ese offset, ese tiempo, 247 00:34:48,280 --> 00:34:51,280 pero en otros valores puede ser algo repentino. 248 00:34:51,280 --> 00:34:56,280 Entonces, en esos casos, se podría recurrir a lo que pone el tema del smooth damp al final del tema, 249 00:34:56,280 --> 00:35:01,280 que sirve para ir suavizando los movimientos entre un valor y otro. 250 00:35:02,280 --> 00:35:12,280 Evidentemente, aquí también lo que podríamos hacer es hacer un Rotate Data, ¿vale? 251 00:35:12,280 --> 00:35:21,280 Que sea un float que recoja un input, un gain axis, que sea diferente al de horizontal. 252 00:35:21,280 --> 00:35:25,280 Y que se llame como queramos nosotros. 253 00:35:25,280 --> 00:35:27,280 Ahora vemos cómo se ve reflejado esto. 254 00:35:27,280 --> 00:35:31,280 Que sea rotando, ¿vale? 255 00:35:31,280 --> 00:35:41,280 Entonces, ahora mismo podemos crear otro input, que básicamente nosotros llamamos como queramos 256 00:35:41,280 --> 00:35:45,280 y podamos poner las teclas que queramos para que coja un axis del menos uno a uno, 257 00:35:45,280 --> 00:35:47,280 que es lo que hacen los axis. 258 00:35:47,280 --> 00:35:52,280 Entonces, si aquí, por ejemplo, decimos en vez de 20 ejes, en 19 voy a añadir uno más, 259 00:35:52,280 --> 00:35:56,280 que lo que hace es añadir otro al final duplicado del último que había. 260 00:35:56,280 --> 00:36:01,280 Decimos, este eje se va a llamar, y hemos dicho aquí, rotando. 261 00:36:01,280 --> 00:36:08,280 De manera idéntica, si ponemos rotando, ahora lo que podremos hacer es decir, 262 00:36:08,280 --> 00:36:15,280 borro los valores y decimos, el valor negativo va a ser la tecla R, ¿vale? 263 00:36:15,280 --> 00:36:18,280 La tecla R. Y el valor positivo, la T. 264 00:36:18,280 --> 00:36:23,280 Y aquí la gravedad, para que sea parecida a la que había, le vamos a poner 3 y 3, 265 00:36:23,280 --> 00:36:25,280 que son los valores que había. 266 00:36:25,280 --> 00:36:29,280 Lo que pasa es que he generado otro axis, que se controla con otras teclas, 267 00:36:29,280 --> 00:36:37,280 y yo lo puedo llamar con la variable data, que está recogiendo lo que hagamos en ese nuevo axis 268 00:36:37,280 --> 00:36:40,280 llamado rotando, que hemos creado. 269 00:36:40,280 --> 00:36:50,280 Si ahora, en vez de usar el desplazamiento X, decimos que lo haga en función del input RotateData, 270 00:36:50,280 --> 00:36:56,280 ahora mismo lo que hemos hecho es que hemos diversificado, hemos separado esta acción 271 00:36:56,280 --> 00:36:59,280 en dos acciones independientes y en dos inputs independientes. 272 00:36:59,280 --> 00:37:01,280 ¿Qué significa esto? 273 00:37:01,280 --> 00:37:05,280 Si yo doy a derecha e izquierda, no rota nada. 274 00:37:05,280 --> 00:37:09,280 Tengo también la subida y la bajada, porque también estaba configurada en otro momento del código, 275 00:37:09,280 --> 00:37:11,280 en lo que había pasado el compañero. 276 00:37:11,280 --> 00:37:15,280 Pero si yo doy a la R, hará esta rotación a la izquierda, 277 00:37:15,280 --> 00:37:18,280 y luego, independientemente, yo puedo mover con las otras teclas, 278 00:37:18,280 --> 00:37:20,280 con la cruceta, en este caso, izquierda-derecha. 279 00:37:20,280 --> 00:37:26,280 Si quiero que vaya derecha la nave, es decir, que rote, le daré a la T. 280 00:37:26,280 --> 00:37:32,280 Y tengo controles independientes. Puedo subir y bajar y a la vez rotar. 281 00:37:32,280 --> 00:37:34,280 Problema. Y otra vez volvemos. 282 00:37:34,280 --> 00:37:40,280 Cuando rotamos y le damos arriba y abajo, vemos que ahora lo hace con respecto a la nave. 283 00:37:40,280 --> 00:37:44,280 Esto ya lo sabríamos solucionar, porque lo que está pasando es que yo aquí le he dicho 284 00:37:44,280 --> 00:37:50,280 que sean los ejes del mundo los que permitan calcular este Translate, 285 00:37:50,280 --> 00:37:56,280 pero en el de vertical está cogiendo el Self por defecto. 286 00:37:56,280 --> 00:38:00,280 Entonces habría que volver a decirle que este movimiento también es en base 287 00:38:00,280 --> 00:38:03,280 a las coordenadas del mundo. 288 00:38:03,280 --> 00:38:08,280 Entonces ahora, ya con este cambio, nuevamente subimos y bajamos. 289 00:38:08,280 --> 00:38:13,280 Y si rotamos, subimos y bajamos con respecto a los ejes globales del mundo. 290 00:38:14,280 --> 00:38:18,280 ¿Qué tal hasta aquí? Más o menos. 291 00:38:18,280 --> 00:38:22,280 Sé que lo del Euler angle de antes, no sé qué ha pasado. 292 00:38:22,280 --> 00:38:28,280 Pero a ver, ¿la aceleración es de esa aceleración que tiene al moverse esa automática 293 00:38:28,280 --> 00:38:30,280 o hay que configurarla? 294 00:38:30,280 --> 00:38:34,280 Eso es lo que he explicado. Entiendo que te lo he respondido posteriormente, 295 00:38:34,280 --> 00:38:36,280 que no te había leído. 296 00:38:37,280 --> 00:38:42,280 Se modifica con la sensibilidad del Input. 297 00:38:42,280 --> 00:38:47,280 Es cierto que esto, ya te digo, la solución que estaba dando al principio con el Rotate 298 00:38:47,280 --> 00:38:56,280 en vez de asistir directamente a los ángulos, debería funcionar. 299 00:38:56,280 --> 00:39:01,280 Entonces le podría dar vueltas, pero le voy a dar una última vuelta muy rápida. 300 00:39:01,280 --> 00:39:06,280 Si tenéis alguna duda más, sobre todo quien lo haya intentado, que me la pregunte. 301 00:39:06,280 --> 00:39:09,280 Si no, ahora seguimos hablando de otras cosas sutiles. 302 00:39:09,280 --> 00:39:15,280 Pero permitidme un segundo porque ya me ha tocado un poco la moral. 303 00:39:15,280 --> 00:39:18,280 Que si es menor de 45. 304 00:39:21,280 --> 00:39:24,280 Ahora me está dando como que no me coge los Euler angles. 305 00:39:24,280 --> 00:39:27,280 Ah, vale, claro, porque hay que decirle un eje, eje Z. 306 00:39:28,280 --> 00:39:30,280 Y este B. 307 00:39:32,280 --> 00:39:34,280 Si yo aquí le estoy diciendo... 308 00:39:36,280 --> 00:39:38,280 Si la rotación es menor que... 309 00:39:40,280 --> 00:39:44,280 Y teníamos, a ver, que copio la línea literal que tenías tú puesta, 310 00:39:44,280 --> 00:39:46,280 porque estaba bien planteada. 311 00:39:48,280 --> 00:39:51,280 A ver dónde tengo yo esto. Ah, que me salía. 312 00:39:54,280 --> 00:39:56,280 Estaba en el foro, aquí. 313 00:39:56,280 --> 00:39:58,280 Vamos allí. 314 00:39:58,280 --> 00:40:04,280 Lo tenías con un Translate Vector Back, que no debería dar problema. 315 00:40:07,280 --> 00:40:10,280 Tengo aquí un jaleo de botones. 316 00:40:10,280 --> 00:40:16,280 Haría una rotación, es decir, que por cada unidad de tiempo que se estuviera cumpliendo esto, 317 00:40:16,280 --> 00:40:18,280 habría un Vector Back. 318 00:40:18,280 --> 00:40:21,280 Ahora vamos a decirle, por ejemplo, un Rotate Data. 319 00:40:21,280 --> 00:40:24,280 Y a ver si va a ser esto lo que está ocurriendo. 320 00:40:24,280 --> 00:40:27,280 Y me cargo el TimeDeltaTime. 321 00:40:27,280 --> 00:40:30,280 A ver si con esto lo conseguimos. 322 00:40:30,280 --> 00:40:33,280 Que yo creo que si no funciona antes, tampoco va a funcionar. 323 00:40:34,280 --> 00:40:36,280 A ver, perdonad, ¿eh? 324 00:40:37,280 --> 00:40:41,280 Ahora mismo estamos diciendo, por decir, si sobrepasa los 45 grados, 325 00:40:43,280 --> 00:40:47,280 en Z, pues ya no se ejecuta la rotación. 326 00:40:47,280 --> 00:40:51,280 Mientras sí que esté por debajo de los 45, se debería rotar. 327 00:40:51,280 --> 00:40:56,280 Y la rotación lo que voy a hacer es que cuando empiece el juego, 328 00:40:56,280 --> 00:41:00,280 cuando lo arranque, voy a poner un Start para asegurarme, 329 00:41:00,280 --> 00:41:03,280 aunque lo estemos controlando ahora en el editor de Unity, 330 00:41:03,280 --> 00:41:07,280 que la rotación valga 100, algo bastante elevado, 331 00:41:07,280 --> 00:41:11,280 para que sin duda lo coja y no se queje esta un valor muy pequeño. 332 00:41:11,280 --> 00:41:13,280 Que a veces sucede eso también, ¿no? 333 00:41:13,280 --> 00:41:15,280 Entonces lo he guardado. 334 00:41:15,280 --> 00:41:17,280 Y si volvemos ahí... 335 00:41:17,280 --> 00:41:19,280 He borrado lo que tenía hasta ahora. 336 00:41:19,280 --> 00:41:21,280 Lo he comentado. 337 00:41:21,280 --> 00:41:25,280 Comento esto, que si no, no estamos viendo lo que quiero ver. 338 00:41:26,280 --> 00:41:29,280 Y si ahora le doy... Vamos a ver. 339 00:41:32,280 --> 00:41:34,280 Pues nada, que no quiere. 340 00:41:34,280 --> 00:41:36,280 A ver, estamos en una prepa... 341 00:41:40,280 --> 00:41:41,280 Ah, vale. 342 00:41:41,280 --> 00:41:43,280 Vale, sí, sí, sí, sí lo ha hecho. 343 00:41:43,280 --> 00:41:46,280 Lo que pasa es que no estaba usando el Rotate. 344 00:41:47,280 --> 00:41:49,280 Porque ahora lo tengo configurado. 345 00:41:49,280 --> 00:41:52,280 Estaba dando izquierda-derecha, pero ahora el Rotate se hace con R y T, 346 00:41:52,280 --> 00:41:54,280 que es lo que tengo, hasta que no le he dado a eso. 347 00:41:54,280 --> 00:41:56,280 Vale, ya lo está empezando a hacer. 348 00:41:56,280 --> 00:41:58,280 Ya decía yo que algo pasaba. 349 00:41:58,280 --> 00:42:02,280 Ahora lo que habría que decir es que cuando hagamos esto, 350 00:42:02,280 --> 00:42:05,280 Transform, Rotate, 351 00:42:06,280 --> 00:42:09,280 si es menor que 45, pues que me deje rotar. 352 00:42:09,280 --> 00:42:13,280 Y si no, pues... 353 00:42:16,280 --> 00:42:19,280 Si no, pues le decimos que... 354 00:42:21,280 --> 00:42:25,280 Le decimos que el valor del Transform, 355 00:42:25,280 --> 00:42:28,280 igual que has hecho aquí, digamos que se ancle en un valor, 356 00:42:28,280 --> 00:42:32,280 que es igual a 45. 357 00:42:34,280 --> 00:42:36,280 Transform... 358 00:42:37,280 --> 00:42:39,280 Ahora hay que decirle que si no, 359 00:42:39,280 --> 00:42:44,280 que el Transform Z sea de 45. 360 00:42:45,280 --> 00:42:48,280 ¿Y por qué ahora me está dando este fallo? 361 00:42:49,280 --> 00:42:52,280 Cuando tengáis un problema de un error, 362 00:42:52,280 --> 00:42:56,280 si le dais doble clic, debería enseñarlo. 363 00:42:56,280 --> 00:43:00,280 Ah, vale, lo tengo en otro panel. 364 00:43:02,280 --> 00:43:04,280 Ah, vale, sí. 365 00:43:05,280 --> 00:43:07,280 Pero nada, que es que aquí tengo... 366 00:43:07,280 --> 00:43:09,280 Digamos que esto es una ventana del Visual Studio, 367 00:43:09,280 --> 00:43:11,280 pero cuando le dais a esto de los errores, 368 00:43:11,280 --> 00:43:13,280 hay una ventana que se llama Lista de Errores, 369 00:43:13,280 --> 00:43:15,280 que te enseña el error. 370 00:43:15,280 --> 00:43:17,280 Y te está diciendo, básicamente, 371 00:43:17,280 --> 00:43:20,280 lo que me está diciendo, que probablemente la base del error es 372 00:43:20,280 --> 00:43:22,280 no se puede modificar el valor devuelto, 373 00:43:22,280 --> 00:43:25,280 Transform, Element Angles, porque no es una variable. 374 00:43:26,280 --> 00:43:28,280 Entonces, cuando queramos apelar 375 00:43:28,280 --> 00:43:30,280 o cambiar directamente uno de estos ejes, 376 00:43:30,280 --> 00:43:32,280 nos está pidiendo que sea una variable. 377 00:43:32,280 --> 00:43:34,280 Entonces, lo que habrá que decirle, 378 00:43:34,280 --> 00:43:37,280 aunque no debería ocurrir esto, 379 00:43:37,280 --> 00:43:40,280 porque si le estamos diciendo que 380 00:43:40,280 --> 00:43:44,280 este valor se convierta en 45, 381 00:43:45,280 --> 00:43:47,280 habrá que decirle, si no, 382 00:43:47,280 --> 00:43:50,280 si no se cumple esto, 383 00:43:50,280 --> 00:43:52,280 los... 384 00:43:52,280 --> 00:43:56,280 Valor debe valer 45. 385 00:43:56,280 --> 00:43:58,280 Vale. 386 00:43:58,280 --> 00:44:00,280 A ver... 387 00:44:00,280 --> 00:44:02,280 Un segundito... 388 00:44:02,280 --> 00:44:04,280 Vale, no se puede cambiar directamente 389 00:44:05,280 --> 00:44:09,280 uno de los ejes del vector, claro. 390 00:44:09,280 --> 00:44:11,280 Entonces, habrá que hacer, 391 00:44:11,280 --> 00:44:13,280 igual que ha hecho aquí el compañero, 392 00:44:13,280 --> 00:44:16,280 que el ángulo de esta nave, 393 00:44:16,280 --> 00:44:18,280 cuando es menor de 45, 394 00:44:18,280 --> 00:44:20,280 es decir, cuando sobrepasa 395 00:44:20,280 --> 00:44:23,280 o estamos intentando sobrepasar un ángulo, 396 00:44:23,280 --> 00:44:25,280 pues habrá que decirle, 397 00:44:25,280 --> 00:44:28,280 el vector de esta nave, 398 00:44:28,280 --> 00:44:30,280 cómo se declara un vector, 399 00:44:30,280 --> 00:44:32,280 que siempre hay que poner este new, 400 00:44:32,280 --> 00:44:34,280 porque estamos generando una nueva coordenada, 401 00:44:34,280 --> 00:44:37,280 con los vectores siempre hay que poner esto de new normalmente, 402 00:44:37,280 --> 00:44:39,280 aunque se esté refrescando todo el rato 403 00:44:39,280 --> 00:44:43,280 el valor de la misma variable, 404 00:44:43,280 --> 00:44:45,280 se está refrescando en cada momento, 405 00:44:45,280 --> 00:44:47,280 por eso hay que poner la palabra clave new. 406 00:44:47,280 --> 00:44:49,280 Entonces habrá que decir, 407 00:44:49,280 --> 00:44:53,280 que el transform.EbullierAngles, 408 00:44:53,280 --> 00:44:55,280 a ver... 409 00:44:55,280 --> 00:44:59,280 EbullierAngles en X sea el que tiene, 410 00:44:59,280 --> 00:45:03,280 en Y va a ser también el que tenga ya, 411 00:45:03,280 --> 00:45:05,280 para que no se varíe el que tiene por defecto, 412 00:45:05,280 --> 00:45:07,280 aunque en este momento podríamos poner 0, 413 00:45:07,280 --> 00:45:09,280 porque se va a mantener en 0, 414 00:45:09,280 --> 00:45:12,280 y este va a ser de 45. 415 00:45:12,280 --> 00:45:14,280 Ahí lo tenemos. 416 00:45:14,280 --> 00:45:16,280 Veis que a veces es ver por qué está fallando algo, 417 00:45:16,280 --> 00:45:19,280 e intentar reubicarlo de otra forma. 418 00:45:19,280 --> 00:45:24,280 Ahora, si el ángulo es menor de 45, 419 00:45:24,280 --> 00:45:29,280 pues valdrá 45, porque no va a dejar. 420 00:45:29,280 --> 00:45:32,280 El problema es que si es menor de 45 hace esto, 421 00:45:32,280 --> 00:45:35,280 pero como aquí estamos diciéndole que sea 45, 422 00:45:35,280 --> 00:45:38,280 habrá que decirle que sea menor o igual a 45, 423 00:45:38,280 --> 00:45:41,280 porque si no, esta condición puede entrar en conflicto. 424 00:45:41,280 --> 00:45:43,280 Entonces, vamos allá. 425 00:45:43,280 --> 00:45:45,280 A ver cómo va la rotación ahora. 426 00:45:48,280 --> 00:45:51,280 Empezamos, se mueve a derecha e izquierda, 427 00:45:51,280 --> 00:45:54,280 y ahora la rotación, si le doy a R, placa. 428 00:45:54,280 --> 00:45:56,280 Le estoy dando, 429 00:45:56,280 --> 00:46:00,280 y llega a este punto y ya no prosigue. 430 00:46:00,280 --> 00:46:03,280 ¿Qué pasa? Que cuando yo le intento dar a T, 431 00:46:03,280 --> 00:46:08,280 también debería hacer la rotación a la inversa, 432 00:46:08,280 --> 00:46:13,280 porque al final aquí lo que estoy haciendo es meter un valor 433 00:46:13,280 --> 00:46:16,280 que puede ser por 1, 434 00:46:16,280 --> 00:46:19,280 y entonces el vector debería ir a la derecha. 435 00:46:19,280 --> 00:46:25,280 La cosa es que si yo tengo este valor aquí igual a 45, 436 00:46:25,280 --> 00:46:27,280 me debería permitir hacerlo. 437 00:46:27,280 --> 00:46:29,280 A ver qué es lo que está ocurriendo. 438 00:46:29,280 --> 00:46:31,280 A ver, un segundo. 439 00:46:31,280 --> 00:46:34,280 Y si le doy la rotación en el otro sentido... 440 00:46:35,280 --> 00:46:37,280 ¿Qué es lo que ocurre? 441 00:46:37,280 --> 00:46:40,280 Que si es menor o igual a 45, pasa esto, 442 00:46:40,280 --> 00:46:43,280 pero también habrá que definir el rango en positivo. 443 00:46:43,280 --> 00:46:49,280 Es decir, si el Transfer Euler Angles es menor o igual a 45, 444 00:46:49,280 --> 00:46:52,280 y también... 445 00:46:53,280 --> 00:46:56,280 Claro, aquí va a ocurrir otro problema. 446 00:46:57,280 --> 00:47:02,280 El Transfer Euler Angles es menor o igual a 45, 447 00:47:02,280 --> 00:47:05,280 y también es... 448 00:47:05,280 --> 00:47:09,280 Esto el otro día dijimos que podríamos poner más de una condición, 449 00:47:09,280 --> 00:47:14,280 y esto también es un Transfer Euler Angles 450 00:47:16,280 --> 00:47:23,280 que sea mayor o igual a menos 45, que es lo inverso, 451 00:47:23,280 --> 00:47:26,280 te deja hacer esta condición. 452 00:47:26,280 --> 00:47:27,280 ¿Vale? 453 00:47:27,280 --> 00:47:30,280 Entonces, ¿qué es lo que ocurre? 454 00:47:30,280 --> 00:47:33,280 Que ahora el problema es que aunque ahora me debería dejar 455 00:47:33,280 --> 00:47:36,280 moverme en las dos direcciones, y ahí se queda estancado, 456 00:47:36,280 --> 00:47:39,280 y bueno, va a haber más problemas. 457 00:47:39,280 --> 00:47:41,280 Pero ahora se ha puesto en 45, 458 00:47:41,280 --> 00:47:44,280 porque en cuanto me paso de uno de estos valores me dice 45. 459 00:47:44,280 --> 00:47:47,280 Por tanto, la solución no puede ser esta. 460 00:47:47,280 --> 00:47:48,280 A ver, cuidado. 461 00:47:48,280 --> 00:47:51,280 Porque en cuanto me pase me lo pone en menos 45, 462 00:47:51,280 --> 00:47:53,280 y ya puede generar problemas. 463 00:47:53,280 --> 00:47:56,280 También aparte, en rotación, 464 00:47:57,280 --> 00:47:59,280 le dije un valor de 100. 465 00:47:59,280 --> 00:48:02,280 Le voy a poner 1 para que se vea un poco 466 00:48:02,280 --> 00:48:06,280 el proceso de llegar a ese momento en el que todo se estropea. 467 00:48:06,280 --> 00:48:08,280 A ver... 468 00:48:09,280 --> 00:48:11,280 Un segundo. 469 00:48:11,280 --> 00:48:13,280 Porque esto es un Rotate, 470 00:48:13,280 --> 00:48:16,280 y debería ir sumando por rotación por Rotate Data. 471 00:48:18,280 --> 00:48:19,280 A ver... 472 00:48:21,280 --> 00:48:23,280 Rotate Data Time. 473 00:48:24,280 --> 00:48:26,280 Un segundillo. 474 00:48:31,280 --> 00:48:34,280 ¿Y por qué lo hace instantáneo? 475 00:48:38,280 --> 00:48:39,280 Vale. 476 00:48:40,280 --> 00:48:44,280 Ya está empezando a detectar ciertos valores. 477 00:48:45,280 --> 00:48:49,280 Menos 45 y mayor que menos 45. 478 00:48:50,280 --> 00:48:53,280 Y hay una cosa que también hay que tener en cuenta. 479 00:48:53,280 --> 00:48:55,280 A ver... 480 00:48:59,280 --> 00:49:01,280 Que es lo que estamos usando, 481 00:49:01,280 --> 00:49:04,280 y esto también es algo a tener en cuenta. 482 00:49:06,280 --> 00:49:07,280 Rotación... 483 00:49:07,280 --> 00:49:11,280 El Time Delta Time no debería tener tanta influencia aquí. 484 00:49:12,280 --> 00:49:13,280 Porque... 485 00:49:14,280 --> 00:49:16,280 En realidad sí que está bien puesto. 486 00:49:16,280 --> 00:49:18,280 Tengo que ponerle un valor más alto. 487 00:49:20,280 --> 00:49:21,280 Ajá. 488 00:49:25,280 --> 00:49:28,280 Y ahora me lo está cogiendo directamente como 45. 489 00:49:28,280 --> 00:49:29,280 Vale. 490 00:49:29,280 --> 00:49:31,280 Aquí habría que darle más vueltas, 491 00:49:31,280 --> 00:49:34,280 porque también habría que decir, 492 00:49:34,280 --> 00:49:37,280 oye, claro, 493 00:49:38,280 --> 00:49:41,280 si estoy entre esta posición y esta posición, 494 00:49:41,280 --> 00:49:43,280 directamente habrá que detectar 495 00:49:43,280 --> 00:49:46,280 si el extremo que estoy llegando es uno o es otro. 496 00:49:46,280 --> 00:49:50,280 Por tanto, unir las dos condiciones en una es peligroso. 497 00:49:50,280 --> 00:49:53,280 Porque, básicamente, si llego al menos 45, 498 00:49:53,280 --> 00:49:55,280 no quiero que me lo ponga en 45. 499 00:49:55,280 --> 00:49:58,280 Entonces, lo que habría que hacer, básicamente, 500 00:49:58,280 --> 00:50:02,280 es dividir esto en dos condiciones 501 00:50:02,280 --> 00:50:08,280 que, entre ellas, puedan completar 502 00:50:08,280 --> 00:50:12,280 todo el rango de lo que está buscando. 503 00:50:12,280 --> 00:50:14,280 Entonces, a ver... 504 00:50:17,280 --> 00:50:19,280 Y sería un poco replicar esto. 505 00:50:19,280 --> 00:50:23,280 Si también se da la condición de que es mayor que menos 45... 506 00:50:25,280 --> 00:50:26,280 ¿Vale? 507 00:50:27,280 --> 00:50:29,280 Si es mayor que más 45... 508 00:50:30,280 --> 00:50:33,280 El problema es que estas dos condiciones se contradicen. 509 00:50:34,280 --> 00:50:36,280 Si es menor de 45, deja rotar. 510 00:50:36,280 --> 00:50:38,280 Y si es mayor de menos 45, déjame rotar. 511 00:50:38,280 --> 00:50:42,280 Por tanto, siempre se va a cumplir esta rotación. 512 00:50:42,280 --> 00:50:43,280 ¿Vale? 513 00:50:43,280 --> 00:50:45,280 Porque, aunque me la esté bloqueando, 514 00:50:45,280 --> 00:50:47,280 luego paso a esta y está ocurriendo. 515 00:50:47,280 --> 00:50:49,280 Entonces, ¿qué es lo que hay que hacer? 516 00:50:49,280 --> 00:50:51,280 Pues acudir a booleanos. 517 00:50:51,280 --> 00:50:57,280 Es decir, que cuando la condición se esté dando, 518 00:50:57,280 --> 00:50:59,280 si llega al punto en el que esto no se está dando 519 00:50:59,280 --> 00:51:01,280 y, por tanto, no puedo rotar, 520 00:51:01,280 --> 00:51:04,280 aparte de bloqueármelo en un punto, 521 00:51:04,280 --> 00:51:06,280 en el máximo que estemos poniendo, 522 00:51:06,280 --> 00:51:10,280 le voy a decir bloqueo rotación. 523 00:51:10,280 --> 00:51:13,280 Por ejemplo, una variable que aún no existe, 524 00:51:13,280 --> 00:51:15,280 pero que la voy a crear ahora mismo. 525 00:51:15,280 --> 00:51:16,280 True. 526 00:51:16,280 --> 00:51:18,280 Es decir, que cuando llegue a una situación 527 00:51:18,280 --> 00:51:20,280 en la que no debería moverse, 528 00:51:20,280 --> 00:51:22,280 yo bloqueo la rotación. 529 00:51:22,280 --> 00:51:26,280 Entonces, yo aquí voy a hacer una variable global 530 00:51:26,280 --> 00:51:29,280 que sea bool bloqueo rotación. 531 00:51:30,280 --> 00:51:32,280 Y por defecto... 532 00:51:32,280 --> 00:51:34,280 Bueno, me voy a poner por defecto. 533 00:51:34,280 --> 00:51:35,280 Y por defecto va a ser falsa, 534 00:51:35,280 --> 00:51:38,280 porque yo no quiero que esté bloqueado. 535 00:51:38,280 --> 00:51:40,280 Empieza desbloqueado esto, ¿no? 536 00:51:40,280 --> 00:51:42,280 Falsa, no quiero que haya bloqueo. 537 00:51:42,280 --> 00:51:45,280 Entonces, cuando se incumpla esta condición, 538 00:51:45,280 --> 00:51:47,280 digo, no, no, esto se bloquea. 539 00:51:47,280 --> 00:51:49,280 Eso sí, mientras sí se puede hacer, 540 00:51:49,280 --> 00:51:53,280 el bloqueo de rotación está en falso, 541 00:51:53,280 --> 00:51:55,280 no está bloqueado. 542 00:51:55,280 --> 00:51:57,280 Y cuando llegamos a la segunda, 543 00:51:57,280 --> 00:51:58,280 lo que habrá que decirle es 544 00:51:58,280 --> 00:52:10,280 si bloqueo rotación es diferente a verdadero, 545 00:52:11,280 --> 00:52:13,280 o mejor aún, decimos que es igual a falso, 546 00:52:13,280 --> 00:52:15,280 es decir, que no está bloqueado, 547 00:52:15,280 --> 00:52:17,280 es igual a falso. 548 00:52:17,280 --> 00:52:23,280 Entonces, sí que permite hacer la rotación. 549 00:52:23,280 --> 00:52:25,280 Si no, como en este momento 550 00:52:25,280 --> 00:52:27,280 no se está guardando como true, 551 00:52:27,280 --> 00:52:31,280 pues no sucederá esto. 552 00:52:31,280 --> 00:52:34,280 Si esto no se cumple además, 553 00:52:34,280 --> 00:52:36,280 pues vamos a hacer otro else 554 00:52:36,280 --> 00:52:39,280 en el que lo que haga es decir 555 00:52:39,280 --> 00:52:41,280 que el ángulo que le da es menos 45, 556 00:52:41,280 --> 00:52:43,280 que es en el que Cremge lo bloquee, 557 00:52:43,280 --> 00:52:47,280 y el bloqueo de rotación sí que se estanca ahí 558 00:52:47,280 --> 00:52:51,280 hasta que nuevamente se vuelva a cumplir la condición. 559 00:52:51,280 --> 00:52:53,280 Entonces, aquí bloqueo de rotación, 560 00:52:53,280 --> 00:52:55,280 nuevamente habría que hacer un false. 561 00:52:55,280 --> 00:52:57,280 Esta es una solución que estoy llegando ahora 562 00:52:57,280 --> 00:52:59,280 y hay que ver si funciona. 563 00:52:59,280 --> 00:53:00,280 Pero lo que más me interesa 564 00:53:00,280 --> 00:53:02,280 es que vayáis viendo un poco la lógica 565 00:53:02,280 --> 00:53:04,280 que voy siguiendo para que se cumpla. 566 00:53:04,280 --> 00:53:05,280 Probablemente, ya os digo, 567 00:53:05,280 --> 00:53:07,280 con la rotación es más complicado 568 00:53:08,280 --> 00:53:14,280 pero aquí me está poniendo menos 45 por defecto. 569 00:53:14,280 --> 00:53:16,280 Y esto no debería ser así 570 00:53:16,280 --> 00:53:20,280 porque por defecto lo voy a poner en cero, 571 00:53:20,280 --> 00:53:22,280 que en algún momento he cambiado la variable 572 00:53:22,280 --> 00:53:24,280 según arrancaba. 573 00:53:24,280 --> 00:53:29,280 Y aquí esto mayor o igual a menos 45, 574 00:53:29,280 --> 00:53:31,280 que es que había una condición 575 00:53:31,280 --> 00:53:34,280 que no estaba bien escrita y daba error. 576 00:53:34,280 --> 00:53:36,280 Ahora debería empezar en cero 577 00:53:36,280 --> 00:53:38,280 hasta que yo no rote un poco. 578 00:53:38,280 --> 00:53:42,280 No me deja variar. 579 00:53:42,280 --> 00:53:45,280 Ahora lo bueno es que ya me deja rotar 580 00:53:45,280 --> 00:53:48,280 pero hay un momento aquí, si os fijáis, 581 00:53:48,280 --> 00:53:51,280 que se le va un poco la pinza 582 00:53:51,280 --> 00:53:55,280 y va a menos 45 y rota directamente. 583 00:53:55,280 --> 00:53:57,280 ¿Qué problema hay con las rotaciones? 584 00:53:57,280 --> 00:53:59,280 ¿Qué es lo que está dando este problema? 585 00:53:59,280 --> 00:54:01,280 A ver... 586 00:54:01,280 --> 00:54:02,280 ¿Qué? 587 00:54:02,280 --> 00:54:04,280 Y esto también es para que lo tengáis en cuenta. 588 00:54:04,280 --> 00:54:06,280 Que los valores negativos 589 00:54:06,280 --> 00:54:09,280 realmente tienen 360 grados, 590 00:54:09,280 --> 00:54:12,280 las rotaciones en cada uno de los ejes. 591 00:54:12,280 --> 00:54:15,280 Y aunque pongamos aquí menos 45, 592 00:54:15,280 --> 00:54:17,280 en realidad, 593 00:54:17,280 --> 00:54:20,280 aunque aquí veamos menos 45, 594 00:54:20,280 --> 00:54:24,280 esto es menos 45, vais a ver, 595 00:54:24,280 --> 00:54:31,280 que es equivalente a poner 360 menos 45. 596 00:54:32,280 --> 00:54:34,280 Que cuando yo doy es 315. 597 00:54:34,280 --> 00:54:36,280 Internamente, estos ejes, 598 00:54:36,280 --> 00:54:40,280 cuando pasan de 360, aunque se vayan sumando, 599 00:54:40,280 --> 00:54:43,280 se van realizando en ejes de 360. 600 00:54:43,280 --> 00:54:45,280 Entonces, no habría que hacer 601 00:54:45,280 --> 00:54:49,280 en cuanto esto sea mayor a menos 45, 602 00:54:49,280 --> 00:54:51,280 sino cuando sea mayor a 300. 603 00:54:51,280 --> 00:54:53,280 Hemos dicho... 604 00:54:53,280 --> 00:54:55,280 A ver, espera... 605 00:54:55,280 --> 00:54:57,280 ¿315 era? Sí. 606 00:54:57,280 --> 00:54:59,280 Vale, 315. 607 00:55:00,280 --> 00:55:02,280 Si es mayor a 315... 608 00:55:04,280 --> 00:55:07,280 Yo esto lo fijo en menos 45. 609 00:55:07,280 --> 00:55:09,280 A ver cómo funciona ahora. 610 00:55:12,280 --> 00:55:14,280 La solución que os he dado antes 611 00:55:14,280 --> 00:55:16,280 era la más sencilla, en el sentido de que 612 00:55:16,280 --> 00:55:19,280 no tenemos que realmente lidiar mucho 613 00:55:19,280 --> 00:55:21,280 con los ángulos en sí. 614 00:55:21,280 --> 00:55:23,280 Porque simplemente lo que hacíamos era decirle 615 00:55:23,280 --> 00:55:26,280 remito a esas tres dimensiones 616 00:55:26,280 --> 00:55:28,280 de los ángulos, de los ejes, 617 00:55:28,280 --> 00:55:30,280 pero luego, básicamente, 618 00:55:30,280 --> 00:55:32,280 lo que estoy haciendo es cambiarlo 619 00:55:32,280 --> 00:55:36,280 por la rotación que estemos dando en el eje 620 00:55:36,280 --> 00:55:38,280 y con un límite que tenemos ahí. 621 00:55:38,280 --> 00:55:40,280 Entonces, yo ahora mismo... 622 00:55:40,280 --> 00:55:42,280 Vamos a ver... 623 00:55:42,280 --> 00:55:44,280 He vuelto a ponerse en un eje. 624 00:55:44,280 --> 00:55:46,280 Porque, nuevamente, 625 00:55:46,280 --> 00:55:49,280 al sumar, al decirle que es mayor 626 00:55:50,280 --> 00:55:52,280 de 315, 627 00:55:52,280 --> 00:55:55,280 se está cumpliendo una condición. 628 00:55:55,280 --> 00:55:58,280 Vale, que esto debería estar en 315. 629 00:56:00,280 --> 00:56:02,280 A ver... 630 00:56:03,280 --> 00:56:05,280 ¿Y por qué...? 631 00:56:05,280 --> 00:56:07,280 Ah, vale, porque había cambiado 632 00:56:07,280 --> 00:56:09,280 para hacer la prueba. 633 00:56:09,280 --> 00:56:11,280 Y aquí... 634 00:56:11,280 --> 00:56:14,280 Sí, así debería funcionar. 635 00:56:14,280 --> 00:56:16,280 Vale, ahí vamos a ello. 636 00:56:18,280 --> 00:56:20,280 Vale. 637 00:56:20,280 --> 00:56:22,280 ¿Y por qué se me pone en menos 45? 638 00:56:22,280 --> 00:56:24,280 Pues hay que ir depurando esto 639 00:56:24,280 --> 00:56:26,280 a ver cómo se consigue. 640 00:56:26,280 --> 00:56:28,280 Habría que darle unas vueltas. 641 00:56:28,280 --> 00:56:30,280 Pues ya os digo, el problema está 642 00:56:30,280 --> 00:56:33,280 sobre todo con cómo interpreta los ejes. 643 00:56:34,280 --> 00:56:36,280 Pero fijaos en que, 644 00:56:36,280 --> 00:56:38,280 aunque se le va un poco la cabeza, 645 00:56:38,280 --> 00:56:40,280 la importancia de los booleanos 646 00:56:40,280 --> 00:56:42,280 para ir en las condiciones. 647 00:56:42,280 --> 00:56:44,280 Cuando vamos encadenando varios ifs, 648 00:56:44,280 --> 00:56:46,280 por ejemplo, pues ir discriminando 649 00:56:46,280 --> 00:56:48,280 que algo funcione o no funcione. 650 00:56:49,280 --> 00:56:51,280 Vale. 651 00:56:51,280 --> 00:56:53,280 Más dudas, ya os digo, 652 00:56:53,280 --> 00:56:55,280 la solución que podría plantearse es esta, 653 00:56:55,280 --> 00:56:57,280 que os he comentado antes. 654 00:56:57,280 --> 00:56:59,280 Hay otra solución intermedia, 655 00:57:03,280 --> 00:57:05,280 que es en otra nave 656 00:57:05,280 --> 00:57:07,280 que yo tengo aquí preparada. 657 00:57:07,280 --> 00:57:09,280 Y, ojo, otra cosa importante 658 00:57:09,280 --> 00:57:11,280 que quería en relación 659 00:57:11,280 --> 00:57:13,280 a lo que ha compartido el compañero, 660 00:57:13,280 --> 00:57:15,280 es que si os fijáis a veces 661 00:57:15,280 --> 00:57:17,280 que estáis usando los mismos números 662 00:57:17,280 --> 00:57:19,280 en muchas ocasiones, 663 00:57:19,280 --> 00:57:21,280 y esto lo ha hecho el compañero, 664 00:57:21,280 --> 00:57:23,280 para poner unos límites 665 00:57:23,280 --> 00:57:25,280 y la nave no pueda subir 666 00:57:25,280 --> 00:57:27,280 más de una posición o menos de una posición, 667 00:57:27,280 --> 00:57:29,280 es, en vez de poner el número varias veces, 668 00:57:29,280 --> 00:57:31,280 que si lo cambiáramos una vez, 669 00:57:31,280 --> 00:57:33,280 pues igual que estamos haciendo aquí 670 00:57:33,280 --> 00:57:35,280 con los ángulos, vaya. 671 00:57:37,280 --> 00:57:39,280 Si, por ejemplo, 672 00:57:39,280 --> 00:57:41,280 cambiamos el límite inferior, 673 00:57:41,280 --> 00:57:43,280 pues aquí podemos decir, 674 00:57:43,280 --> 00:57:45,280 vamos a crear una variable, 675 00:57:45,280 --> 00:57:47,280 vamos a poner un float, 676 00:57:47,280 --> 00:57:49,280 y se llame límite superior, 677 00:57:51,280 --> 00:57:53,280 y que sea de, bueno, 678 00:57:53,280 --> 00:57:55,280 este sería inferior, pero vamos, 679 00:57:55,280 --> 00:57:57,280 de, bueno, y en X además, 680 00:57:57,280 --> 00:57:59,280 como es simétrico, no es superior, 681 00:57:59,280 --> 00:58:01,280 el límite lateral, 682 00:58:01,280 --> 00:58:03,280 pues que sea 23. 683 00:58:07,280 --> 00:58:09,280 ¿Vale? Ahora, 684 00:58:09,280 --> 00:58:11,280 a ver, que no lo estoy escribiendo nada bien, 685 00:58:11,280 --> 00:58:13,280 ahora aquí lo que podemos hacer 686 00:58:13,280 --> 00:58:15,280 es decir, vale, pues, 687 00:58:15,280 --> 00:58:17,280 de una forma muy rápida, siempre que 688 00:58:17,280 --> 00:58:19,280 quiera aludir a los límites laterales, 689 00:58:19,280 --> 00:58:21,280 y además, aquí lo ha hecho con mucho 690 00:58:21,280 --> 00:58:23,280 tino, es, como es simétrico, 691 00:58:23,280 --> 00:58:25,280 porque el juego empieza desde el cero, 692 00:58:25,280 --> 00:58:27,280 si lo hemos ubicado bien, los límites de la derecha 693 00:58:27,280 --> 00:58:29,280 y la izquierda, si queremos que sea simétrico, 694 00:58:29,280 --> 00:58:31,280 van a ser el mismo, solo va a cambiar el sentido 695 00:58:31,280 --> 00:58:33,280 de ese límite. Pues lo que 696 00:58:33,280 --> 00:58:35,280 podemos hacer aquí es 697 00:58:35,280 --> 00:58:37,280 cambiarlo 698 00:58:37,280 --> 00:58:39,280 todo con el límite lateral, y con el menos 699 00:58:39,280 --> 00:58:41,280 invertimos el sentido 700 00:58:41,280 --> 00:58:43,280 de ese límite. 701 00:58:43,280 --> 00:58:45,280 Pero aquí, si en cualquier momento dijéramos, en vez de 25 702 00:58:45,280 --> 00:58:47,280 son 28, ya se ha cambiado 703 00:58:47,280 --> 00:58:49,280 automáticamente en todo. 704 00:58:49,280 --> 00:58:51,280 Igual podría pasar con el límite superior 705 00:58:51,280 --> 00:58:53,280 con el inferior, ¿vale? Es verdad que el límite superior 706 00:58:53,280 --> 00:58:55,280 y el inferior quizá no sea tan simétrico, 707 00:58:55,280 --> 00:58:57,280 y el superior sean 708 00:58:57,280 --> 00:58:59,280 100 y el inferior menos 10. 709 00:58:59,280 --> 00:59:01,280 Bueno, pues lo que podemos hacer es hacer 710 00:59:01,280 --> 00:59:03,280 un límite superior 711 00:59:03,280 --> 00:59:05,280 y uno inferior, pero al menos, si cambiamos uno, 712 00:59:05,280 --> 00:59:07,280 el otro también se ve reflejado. 713 00:59:07,280 --> 00:59:09,280 Hay que intentar usar 714 00:59:09,280 --> 00:59:11,280 las variables y reciclarlas, reutilizarlas 715 00:59:11,280 --> 00:59:13,280 en base a 716 00:59:15,280 --> 00:59:17,280 variables, ¿no? 717 00:59:17,280 --> 00:59:19,280 Que nos simplifica un poco 718 00:59:19,280 --> 00:59:21,280 todo esto. Igual que 719 00:59:21,280 --> 00:59:23,280 en el update, para limpiarlo un poco, 720 00:59:23,280 --> 00:59:25,280 igual que podría 721 00:59:25,280 --> 00:59:27,280 hacer con la rotación, lo que 722 00:59:27,280 --> 00:59:29,280 podemos hacer es resumirlo en 723 00:59:29,280 --> 00:59:31,280 un método. Como vimos el otro día 724 00:59:31,280 --> 00:59:33,280 cuando estuvimos hablando de la creación 725 00:59:33,280 --> 00:59:35,280 de métodos 726 00:59:35,280 --> 00:59:37,280 en la última tutoría de la UT0, 727 00:59:37,280 --> 00:59:39,280 vimos que para agrupar 728 00:59:39,280 --> 00:59:41,280 y que se dieran en varias ocasiones 729 00:59:41,280 --> 00:59:43,280 el mismo código sin tener que escribirlo, 730 00:59:43,280 --> 00:59:45,280 o para que quede más limpio el update, 731 00:59:45,280 --> 00:59:47,280 que al final es una parte fundamental, luego a leer, 732 00:59:47,280 --> 00:59:49,280 lo que podemos hacer es crear 733 00:59:49,280 --> 00:59:51,280 métodos, 734 00:59:51,280 --> 00:59:53,280 en este caso un void, 735 00:59:53,280 --> 00:59:55,280 que sea chequear 736 00:59:55,280 --> 00:59:57,280 límites, ¿vale? 737 00:59:57,280 --> 00:59:59,280 Y lo que hacemos es que aquí 738 00:59:59,280 --> 01:00:01,280 a ver, perdonad que se me ha metido, 739 01:00:01,280 --> 01:00:03,280 aquí, ¿vale? 740 01:00:03,280 --> 01:00:05,280 Lo que vamos a hacer es copiar ese código 741 01:00:05,280 --> 01:00:07,280 que va a estar todo el rato ejecutando, no sé si apelamos 742 01:00:07,280 --> 01:00:09,280 a ese método, pero está independiente 743 01:00:09,280 --> 01:00:11,280 y podemos ir modularizando 744 01:00:11,280 --> 01:00:13,280 el código 745 01:00:13,280 --> 01:00:15,280 para que luego sea más fácil 746 01:00:15,280 --> 01:00:17,280 comprobarlo, ¿vale? Ahora mismo 747 01:00:17,280 --> 01:00:19,280 si aquí decimos que en el update cada fotograma 748 01:00:19,280 --> 01:00:21,280 haga un 749 01:00:21,280 --> 01:00:23,280 chequeo de los límites, 750 01:00:23,280 --> 01:00:25,280 pues es exactamente lo mismo que 751 01:00:25,280 --> 01:00:27,280 teníamos antes. En todo momento está viendo 752 01:00:27,280 --> 01:00:29,280 dentro de aquí, no hay ninguna condición 753 01:00:29,280 --> 01:00:31,280 más allá de esta que diga que 754 01:00:31,280 --> 01:00:33,280 no se ejecute chequear límites en cada 755 01:00:33,280 --> 01:00:35,280 fotograma, y de esta forma podemos 756 01:00:35,280 --> 01:00:37,280 ir a hacer un 757 01:00:37,280 --> 01:00:39,280 apartado de chequear límites, 758 01:00:39,280 --> 01:00:41,280 otro apartado de 759 01:00:41,280 --> 01:00:43,280 la rotación, ¿vale? 760 01:00:43,280 --> 01:00:45,280 Eso está bien para ir organizando 761 01:00:45,280 --> 01:00:47,280 también un poco el código, 762 01:00:47,280 --> 01:00:49,280 ¿vale? 763 01:00:49,280 --> 01:00:51,280 Lo que voy a 764 01:00:51,280 --> 01:00:53,280 hacer también... Bueno, ¿qué tal 765 01:00:53,280 --> 01:00:55,280 hasta aquí? Sé que 766 01:00:55,280 --> 01:00:57,280 igual está siendo un poco farragoso porque no me 767 01:00:57,280 --> 01:00:59,280 está saliendo lo de los ángulos, 768 01:00:59,280 --> 01:01:01,280 pero bueno, una solución 769 01:01:01,280 --> 01:01:03,280 que ya tenéis, y también una forma 770 01:01:03,280 --> 01:01:05,280 de usar los input managers 771 01:01:05,280 --> 01:01:07,280 de manera consciente 772 01:01:07,280 --> 01:01:09,280 de que hay un tiempo, un periodo, entre que 773 01:01:09,280 --> 01:01:11,280 se va de un punto a otro 774 01:01:11,280 --> 01:01:13,280 de lo que hagamos 775 01:01:13,280 --> 01:01:15,280 en los axis. 776 01:01:17,280 --> 01:01:19,280 ¿Alguien ha levantado la mano, si no me equivoco? 777 01:01:23,280 --> 01:01:25,280 Ah, vale, que la has dado sin querer. 778 01:01:25,280 --> 01:01:27,280 Vale, genial. 779 01:01:27,280 --> 01:01:29,280 Vale. 780 01:01:29,280 --> 01:01:31,280 Vale, pues si le puedes volver a dar la manita y así se me 781 01:01:31,280 --> 01:01:33,280 quita, por si lo quieres volver 782 01:01:33,280 --> 01:01:35,280 a pedir en la palabra. Vale, 783 01:01:35,280 --> 01:01:37,280 perfecto, ya está. 784 01:01:37,280 --> 01:01:39,280 ¿Alguna cosa concreta 785 01:01:39,280 --> 01:01:41,280 más? Aparte de... Ahora podemos ver 786 01:01:41,280 --> 01:01:43,280 alguna 787 01:01:43,280 --> 01:01:45,280 duda más que tengáis, etcétera. 788 01:01:47,280 --> 01:01:49,280 Francisco, Javier, ¿qué tal? 789 01:01:49,280 --> 01:01:51,280 Perdona que te llame así. Si 790 01:01:51,280 --> 01:01:53,280 quieres dime cómo me refiero a ti. 791 01:01:53,280 --> 01:01:55,280 Javier, Javier. 792 01:01:55,280 --> 01:01:57,280 Igual otro día se me olvide 793 01:01:57,280 --> 01:01:59,280 y te pregunto lo mismo, pero vale. Hoy, Javier. 794 01:01:59,280 --> 01:02:01,280 ¿Más o menos con esto 795 01:02:01,280 --> 01:02:03,280 ya sabrías continuar 796 01:02:03,280 --> 01:02:05,280 con lo que te he dicho, no? 797 01:02:05,280 --> 01:02:07,280 Sí, yo creo que sí. Más o menos lo podría 798 01:02:07,280 --> 01:02:09,280 solucionar. Un poco complicado, la verdad, porque esto a mí 799 01:02:09,280 --> 01:02:11,280 se me está haciendo eterno 800 01:02:11,280 --> 01:02:13,280 lo del tema 801 01:02:13,280 --> 01:02:15,280 de esto del videojuego, pero bueno. 802 01:02:15,280 --> 01:02:17,280 Yo creo que sí lo podría hacer. Gracias. 803 01:02:17,280 --> 01:02:19,280 Vale, ¿y lo que es el seguimiento de cámara, 804 01:02:19,280 --> 01:02:21,280 etcétera? 805 01:02:21,280 --> 01:02:23,280 Eso más o menos... 806 01:02:23,280 --> 01:02:25,280 Es que con el seguimiento de cámara he visto que hay... 807 01:02:25,280 --> 01:02:27,280 Perdón, a ver. 808 01:02:27,280 --> 01:02:29,280 Sí, te oigo, te oigo. 809 01:02:29,280 --> 01:02:31,280 Es que he visto 810 01:02:31,280 --> 01:02:33,280 en internet que hay 811 01:02:33,280 --> 01:02:35,280 varios métodos para el seguimiento de cámara. Uno 812 01:02:35,280 --> 01:02:37,280 con el LUCAT y he visto diferentes formas 813 01:02:37,280 --> 01:02:39,280 también para hacerlo. Vale. 814 01:02:39,280 --> 01:02:41,280 Perfecto. Os voy a 815 01:02:41,280 --> 01:02:43,280 decir una que sirve para explicar 816 01:02:43,280 --> 01:02:45,280 el smooth damp, que es 817 01:02:45,280 --> 01:02:47,280 algo que se podría usar también 818 01:02:47,280 --> 01:02:49,280 para el 819 01:02:49,280 --> 01:02:51,280 suavizado de la rotación de 820 01:02:51,280 --> 01:02:53,280 la nave. Entonces, 821 01:02:53,280 --> 01:02:55,280 al final del tema se 822 01:02:55,280 --> 01:02:57,280 habla de métodos de interpolación, 823 01:02:57,280 --> 01:02:59,280 como ese smooth damp. 824 01:02:59,280 --> 01:03:01,280 Si no tenéis otra duda, voy a pasar a 825 01:03:01,280 --> 01:03:03,280 explicar un poco sobre ello. 826 01:03:03,280 --> 01:03:05,280 Porque sí que es un método que sirve para 827 01:03:05,280 --> 01:03:07,280 suavizar valores 828 01:03:07,280 --> 01:03:09,280 entre sí y creo que es interesante. 829 01:03:09,280 --> 01:03:11,280 Entonces, 830 01:03:11,280 --> 01:03:13,280 voy a desactivar tu nave y voy a volver a 831 01:03:13,280 --> 01:03:15,280 una que tengo por aquí. 832 01:03:15,280 --> 01:03:17,280 Y bueno, lo primero, 833 01:03:17,280 --> 01:03:19,280 Javier, normal que se te haga 834 01:03:19,280 --> 01:03:21,280 largo. Es decir, son tareas que 835 01:03:21,280 --> 01:03:23,280 implican 836 01:03:23,280 --> 01:03:25,280 bastante trabajo. No sé si 837 01:03:25,280 --> 01:03:27,280 preferís que la retrase a lo mejor una 838 01:03:27,280 --> 01:03:29,280 semana, porque sinceramente, este 839 01:03:29,280 --> 01:03:31,280 domingo me entregáis los que lo hagáis, la de RMPA 840 01:03:31,280 --> 01:03:33,280 y coincide con la 841 01:03:33,280 --> 01:03:35,280 de DAME y la semana que viene tengo muchas cosas de 842 01:03:35,280 --> 01:03:37,280 proyectos y no creo que me dé tiempo a corregirlas. 843 01:03:37,280 --> 01:03:39,280 Si queréis la retrasa una semana, si 844 01:03:39,280 --> 01:03:41,280 le queréis dar más plazo, 845 01:03:41,280 --> 01:03:43,280 lo que pasa es que me interesa también 846 01:03:43,280 --> 01:03:45,280 que 847 01:03:45,280 --> 01:03:47,280 me interesa también 848 01:03:47,280 --> 01:03:49,280 que vayáis intentando 849 01:03:49,280 --> 01:03:51,280 también pasar a la de la unidad 3 850 01:03:51,280 --> 01:03:53,280 que digamos que implica cosas de esto 851 01:03:53,280 --> 01:03:55,280 pero también implica otras cosas. 852 01:03:55,280 --> 01:03:57,280 Entonces son diferentes 853 01:03:57,280 --> 01:03:59,280 abordajes 854 01:03:59,280 --> 01:04:01,280 del movimiento, 855 01:04:01,280 --> 01:04:03,280 etcétera. 856 01:04:05,280 --> 01:04:07,280 Sí, Daniel, es bastante 857 01:04:07,280 --> 01:04:09,280 denso. 858 01:04:09,280 --> 01:04:11,280 Sí, no te voy a engañar. 859 01:04:11,280 --> 01:04:13,280 Sí lo es. 860 01:04:13,280 --> 01:04:15,280 Tiene sus 861 01:04:15,280 --> 01:04:17,280 pegas y tiene sus 862 01:04:17,280 --> 01:04:19,280 explicaciones. Pero bueno, es 863 01:04:19,280 --> 01:04:21,280 que poco a poco vayamos comprendiendo cómo se van 864 01:04:21,280 --> 01:04:23,280 haciendo y las dudas, nuevamente, 865 01:04:23,280 --> 01:04:25,280 las vayáis planteando 866 01:04:25,280 --> 01:04:27,280 en el foro. 867 01:04:27,280 --> 01:04:29,280 Sobre el seguimiento de la cámara. 868 01:04:31,280 --> 01:04:33,280 Lo que ocurre, 869 01:04:33,280 --> 01:04:35,280 lo que se puede hacer, incluso sin 870 01:04:35,280 --> 01:04:37,280 meter mucho código, 871 01:04:37,280 --> 01:04:39,280 es decir... 872 01:04:39,280 --> 01:04:41,280 Voy a hacer una escena rápidamente. 873 01:04:43,280 --> 01:04:45,280 Voy a hacer una 874 01:04:45,280 --> 01:04:47,280 escena nueva, como otro juego, 875 01:04:47,280 --> 01:04:49,280 otro nivel. 876 01:04:51,280 --> 01:04:53,280 Para enseñar esto, escena 877 01:04:53,280 --> 01:04:55,280 prueba cámara, lo voy a llamar. 878 01:04:55,280 --> 01:04:57,280 Me sale un momento de esta escena, 879 01:04:57,280 --> 01:04:59,280 voy a otra, está vacía. 880 01:04:59,280 --> 01:05:01,280 Imaginaos que yo meto la nave, 881 01:05:05,280 --> 01:05:07,280 meto la nave, el prefab que tengo aquí, 882 01:05:07,280 --> 01:05:09,280 lo incorporo aquí. 883 01:05:09,280 --> 01:05:11,280 El otro día se quedó aquí con 884 01:05:11,280 --> 01:05:13,280 una cosa movida para explicaros 885 01:05:13,280 --> 01:05:15,280 y ahí se ha quedado. 886 01:05:19,280 --> 01:05:21,280 El problema es X. 887 01:05:21,280 --> 01:05:23,280 Lo guardo el prefab y así 888 01:05:23,280 --> 01:05:25,280 ya lo tenemos. 889 01:05:25,280 --> 01:05:27,280 Meto esta nave y yo tengo 890 01:05:27,280 --> 01:05:29,280 una cámara que 891 01:05:29,280 --> 01:05:31,280 cuando vemos el juego no se está viendo nada. 892 01:05:31,280 --> 01:05:33,280 ¿Qué significa eso? Que la cámara 893 01:05:33,280 --> 01:05:35,280 no está en las coordenadas 894 01:05:35,280 --> 01:05:37,280 que debe estar para que se vea 895 01:05:37,280 --> 01:05:39,280 algo relacionado 896 01:05:39,280 --> 01:05:41,280 con el juego. 897 01:05:41,280 --> 01:05:43,280 Cuando arrastramos un elemento al prefab, cuidado, 898 01:05:43,280 --> 01:05:45,280 porque puede tener 899 01:05:45,280 --> 01:05:47,280 coordenadas ya preestablecidas. 900 01:05:47,280 --> 01:05:49,280 Esto es lo que os expliqué el otro día. 901 01:05:49,280 --> 01:05:51,280 Pueden estar movidas de situación. 902 01:05:51,280 --> 01:05:53,280 La cámara se va a ver 903 01:05:53,280 --> 01:05:55,280 en relación a sus coordenadas 904 01:05:55,280 --> 01:05:57,280 y se puede operar con ella 905 01:05:57,280 --> 01:05:59,280 igual que se hace con cualquier 906 01:05:59,280 --> 01:06:01,280 GameObject. 907 01:06:01,280 --> 01:06:03,280 ¿Qué pasa si yo empiezo a mover 908 01:06:03,280 --> 01:06:05,280 durante el juego? 909 01:06:05,280 --> 01:06:07,280 Con código, como estáis 910 01:06:07,280 --> 01:06:09,280 elaborando, si yo empiezo 911 01:06:09,280 --> 01:06:11,280 a mover 912 01:06:11,280 --> 01:06:13,280 el objeto, 913 01:06:13,280 --> 01:06:15,280 la cámara se queda en su sitio, en ningún momento 914 01:06:15,280 --> 01:06:17,280 se está moviendo. 915 01:06:17,280 --> 01:06:19,280 Voy a poner un suelo 916 01:06:19,280 --> 01:06:21,280 o algo que dé una referencia 917 01:06:21,280 --> 01:06:23,280 del espacio, porque ahora mismo, como no hay 918 01:06:23,280 --> 01:06:25,280 nada, no sabemos si está subiendo o bajando 919 01:06:25,280 --> 01:06:27,280 más allá de que se está 920 01:06:27,280 --> 01:06:29,280 alejando de la cámara. Voy a poner aquí un plano 921 01:06:29,280 --> 01:06:31,280 que sirve si le damos 922 01:06:31,280 --> 01:06:33,280 unas... lo voy a poner en 0, 0, 0 923 01:06:33,280 --> 01:06:35,280 por ejemplo. 924 01:06:35,280 --> 01:06:37,280 Es así como podríais crear el suelo de este nivel. 925 01:06:37,280 --> 01:06:39,280 Y le damos una escala 926 01:06:39,280 --> 01:06:41,280 de 100 por 100. 927 01:06:41,280 --> 01:06:43,280 Ahí tenemos un suelo. 928 01:06:43,280 --> 01:06:45,280 Ahora mismo, si yo 929 01:06:45,280 --> 01:06:47,280 arranco el juego 930 01:06:47,280 --> 01:06:49,280 y desde la escena 931 01:06:49,280 --> 01:06:51,280 yo puedo simular que estoy moviendo el juego 932 01:06:51,280 --> 01:06:53,280 veis que se está viendo en todo 933 01:06:53,280 --> 01:06:55,280 momento moverse la 934 01:06:55,280 --> 01:06:57,280 nave 935 01:06:57,280 --> 01:06:59,280 pero la cámara no la está siguiendo. 936 01:06:59,280 --> 01:07:01,280 Es un poco lo que se pide. 937 01:07:01,280 --> 01:07:03,280 Hay una solución muy rápida 938 01:07:03,280 --> 01:07:05,280 que es hacer 939 01:07:05,280 --> 01:07:07,280 a la cámara hija de la nave. 940 01:07:07,280 --> 01:07:09,280 ¿Eso qué significa? 941 01:07:09,280 --> 01:07:11,280 La hacemos hija. Está dentro 942 01:07:11,280 --> 01:07:13,280 en la jerarquía. 943 01:07:13,280 --> 01:07:15,280 ¿Qué significa? Que cuando yo mueva 944 01:07:15,280 --> 01:07:17,280 está... 945 01:07:17,280 --> 01:07:19,280 a ver... 946 01:07:19,280 --> 01:07:21,280 Está la cámara 947 01:07:21,280 --> 01:07:23,280 y tiene que ser hija de él. 948 01:07:23,280 --> 01:07:25,280 Ah, vale. 949 01:07:25,280 --> 01:07:27,280 Es que la ha metido en el prefab. 950 01:07:27,280 --> 01:07:29,280 Un segundín. 951 01:07:29,280 --> 01:07:31,280 Tengo aquí prefab. Si la hago hija del prefab 952 01:07:31,280 --> 01:07:33,280 ahora sí que debería 953 01:07:33,280 --> 01:07:35,280 moverse con el prefab. 954 01:07:35,280 --> 01:07:37,280 Si muevo el prefab 955 01:07:37,280 --> 01:07:39,280 veréis que lo que se está 956 01:07:39,280 --> 01:07:41,280 moviendo es la cámara también y por eso parece 957 01:07:41,280 --> 01:07:43,280 que se aleja del suelo. 958 01:07:43,280 --> 01:07:45,280 El problema de esto es 959 01:07:45,280 --> 01:07:47,280 que no lo estamos controlando por código 960 01:07:47,280 --> 01:07:49,280 y en cualquier momento que queramos que se aleje 961 01:07:49,280 --> 01:07:51,280 o se acerque 962 01:07:51,280 --> 01:07:53,280 se está heredando las coordenadas 963 01:07:53,280 --> 01:07:55,280 del padre del prefab 964 01:07:55,280 --> 01:07:57,280 pero no estamos teniendo un control. 965 01:07:57,280 --> 01:07:59,280 Y además una de las cosas que se 966 01:07:59,280 --> 01:08:01,280 pide en el enunciado 967 01:08:01,280 --> 01:08:03,280 es 968 01:08:03,280 --> 01:08:05,280 que metamos una interpolación 969 01:08:07,280 --> 01:08:09,280 de la posición de la cámara. 970 01:08:09,280 --> 01:08:11,280 Para que se vea mejor esto 971 01:08:11,280 --> 01:08:13,280 también os voy a 972 01:08:13,280 --> 01:08:15,280 introducir ya una cosa aquí 973 01:08:15,280 --> 01:08:17,280 que lo explico muy rápido que es 974 01:08:17,280 --> 01:08:19,280 cómo generar un material con un color 975 01:08:19,280 --> 01:08:21,280 para que no sea este blanco porque ahora mismo 976 01:08:21,280 --> 01:08:23,280 este suelo, por ejemplo, 977 01:08:23,280 --> 01:08:25,280 no me interesa mucho que sea blanco porque 978 01:08:25,280 --> 01:08:27,280 no se ve claramente dónde estamos. 979 01:08:27,280 --> 01:08:29,280 Podemos generar 980 01:08:29,280 --> 01:08:31,280 por ejemplo, con clic derecho 981 01:08:31,280 --> 01:08:33,280 en crear, igual que hacemos 982 01:08:33,280 --> 01:08:35,280 los scripts o hacemos 983 01:08:35,280 --> 01:08:37,280 muchas otras cuestiones, 984 01:08:37,280 --> 01:08:39,280 por decir que se cree un material 985 01:08:39,280 --> 01:08:41,280 que voy a llamar 986 01:08:41,280 --> 01:08:43,280 superficie 987 01:08:43,280 --> 01:08:45,280 porque tengo otro suelo por ahí, 988 01:08:45,280 --> 01:08:47,280 otro material ya creado, superficie. 989 01:08:47,280 --> 01:08:49,280 Y en las opciones del inspector 990 01:08:49,280 --> 01:08:51,280 esto también si habéis ya usado software 991 01:08:51,280 --> 01:08:53,280 de 3D 992 01:08:53,280 --> 01:08:55,280 es como generar un material 993 01:08:55,280 --> 01:08:57,280 en Maya o en otros 994 01:08:57,280 --> 01:08:59,280 Así por defecto en este momento solo me voy a centrar 995 01:08:59,280 --> 01:09:01,280 en una cosa que es que 996 01:09:01,280 --> 01:09:03,280 puedo cambiar aquí el color del material 997 01:09:03,280 --> 01:09:05,280 y por ejemplo lo voy a poner este en rojo 998 01:09:05,280 --> 01:09:07,280 apagado, 999 01:09:07,280 --> 01:09:09,280 casi negro, y aquí pues 1000 01:09:09,280 --> 01:09:11,280 el material tiene ese valor. ¿Cómo se aplica 1001 01:09:11,280 --> 01:09:13,280 un material? Pues arrastrando 1002 01:09:13,280 --> 01:09:15,280 de aquí, lo suyo sería hacer una carpeta 1003 01:09:15,280 --> 01:09:17,280 de materiales que aquí la tengo, pues arrastrarlo 1004 01:09:17,280 --> 01:09:19,280 para tenerlo organizado, pues 1005 01:09:19,280 --> 01:09:21,280 arrastro al elemento que 1006 01:09:21,280 --> 01:09:23,280 quiero que sea de ese color. 1007 01:09:23,280 --> 01:09:25,280 Y quiero que os fijéis en que 1008 01:09:25,280 --> 01:09:27,280 si yo tengo ese 1009 01:09:27,280 --> 01:09:29,280 cualquier elemento 1010 01:09:29,280 --> 01:09:31,280 pues tendrá un mesh renderer 1011 01:09:31,280 --> 01:09:33,280 que es lo que hace que 1012 01:09:33,280 --> 01:09:35,280 se visualice, si no, no se está 1013 01:09:35,280 --> 01:09:37,280 visualizando, es el componente que 1014 01:09:37,280 --> 01:09:39,280 permite que algo se vea. 1015 01:09:39,280 --> 01:09:41,280 Si yo voy a los materiales, por defecto se pone 1016 01:09:41,280 --> 01:09:43,280 este material default, que es 1017 01:09:43,280 --> 01:09:45,280 este blanco que se aplica a todo. 1018 01:09:45,280 --> 01:09:47,280 Si yo arrastro 1019 01:09:47,280 --> 01:09:49,280 aquí o aquí también 1020 01:09:49,280 --> 01:09:51,280 lo que estoy haciendo es que el material, lo hago 1021 01:09:51,280 --> 01:09:53,280 directamente en el viewer, 1022 01:09:53,280 --> 01:09:55,280 cogiendo ese material. Con eso ya podéis ir 1023 01:09:55,280 --> 01:09:57,280 asignando a cada 1024 01:09:57,280 --> 01:09:59,280 uno de los elementos que 1025 01:09:59,280 --> 01:10:01,280 tenga mesh renderer, un material. Evidentemente 1026 01:10:01,280 --> 01:10:03,280 luego los materiales, ya lo veremos 1027 01:10:03,280 --> 01:10:05,280 más adelante, tienen 1028 01:10:05,280 --> 01:10:07,280 bastante 1029 01:10:11,280 --> 01:10:13,280 bastante canal, 1030 01:10:13,280 --> 01:10:15,280 bastante parámetro que se puede modificar 1031 01:10:15,280 --> 01:10:17,280 para que sea más metálico, para que 1032 01:10:17,280 --> 01:10:19,280 tenga rugosidades, etc. Pero esto 1033 01:10:19,280 --> 01:10:21,280 ya lo veremos en 1034 01:10:21,280 --> 01:10:23,280 otro momento. Ahora mismo 1035 01:10:23,280 --> 01:10:25,280 si yo la cámara la 1036 01:10:25,280 --> 01:10:27,280 hago hija de 1037 01:10:27,280 --> 01:10:29,280 este prefab, 1038 01:10:29,280 --> 01:10:31,280 cuando yo mueva el 1039 01:10:31,280 --> 01:10:33,280 prefab, la cámara se está moviendo 1040 01:10:33,280 --> 01:10:35,280 porque hereda la posición 1041 01:10:35,280 --> 01:10:37,280 del prefab. Se va moviendo el 1042 01:10:37,280 --> 01:10:39,280 suelo también. No es que se mueva 1043 01:10:39,280 --> 01:10:41,280 el suelo, sino que se está moviendo la cámara. 1044 01:10:41,280 --> 01:10:43,280 Esta no es la manera 1045 01:10:43,280 --> 01:10:45,280 óptima porque nos puede interesar 1046 01:10:45,280 --> 01:10:47,280 que la cámara 1047 01:10:47,280 --> 01:10:49,280 pulsando una tecla 1048 01:10:49,280 --> 01:10:51,280 se coloque en otra posición y se aleje. 1049 01:10:51,280 --> 01:10:53,280 Como en algunos videojuegos que 1050 01:10:53,280 --> 01:10:55,280 van dando a la V 1051 01:10:55,280 --> 01:10:57,280 y puede ir 1052 01:10:57,280 --> 01:10:59,280 moviéndose a distintos puntos del 1053 01:10:59,280 --> 01:11:01,280 juego. Luego veremos 1054 01:11:01,280 --> 01:11:03,280 también que hay un paquete 1055 01:11:03,280 --> 01:11:05,280 que se llama Cinemachine, lo veremos más adelante, 1056 01:11:05,280 --> 01:11:07,280 que sirve para la gestión de cámaras 1057 01:11:07,280 --> 01:11:09,280 pero en este caso me sirve también para 1058 01:11:09,280 --> 01:11:11,280 explicar el smooth-time y que lo hagáis 1059 01:11:11,280 --> 01:11:13,280 un poco de la manera tradicional. 1060 01:11:13,280 --> 01:11:15,280 Lo que vamos a hacer 1061 01:11:15,280 --> 01:11:17,280 es que la cámara 1062 01:11:17,280 --> 01:11:19,280 va a tener un script que va a ir diciendo en todo momento 1063 01:11:19,280 --> 01:11:21,280 cuánto 1064 01:11:21,280 --> 01:11:23,280 offset, es decir, cuánto decalaje 1065 01:11:23,280 --> 01:11:25,280 cuánta... 1066 01:11:25,280 --> 01:11:27,280 no sé cómo decir esta palabra, decalaje 1067 01:11:27,280 --> 01:11:29,280 cuánta 1068 01:11:29,280 --> 01:11:31,280 distancia relativa va a tener 1069 01:11:31,280 --> 01:11:33,280 con respecto al objeto que está siguiendo en este caso 1070 01:11:33,280 --> 01:11:35,280 que va a ser la nave, para que se mueva con la nave. 1071 01:11:35,280 --> 01:11:37,280 Lo primero 1072 01:11:37,280 --> 01:11:39,280 que vamos a hacer, me voy a hacer aquí un script 1073 01:11:39,280 --> 01:11:41,280 nuevo para las coordenadas 1074 01:11:41,280 --> 01:11:43,280 de la cámara que se vayan calculando 1075 01:11:43,280 --> 01:11:45,280 en relación a 1076 01:11:45,280 --> 01:11:47,280 la posición. 1077 01:11:47,280 --> 01:11:49,280 Que se vayan calculando en relación a lo que nosotros le digamos. 1078 01:11:49,280 --> 01:11:51,280 ¡Ojo! 1079 01:11:51,280 --> 01:11:53,280 ¿Recordáis cómo se declaraba un script? 1080 01:11:53,280 --> 01:11:55,280 Y que como la cámara 1081 01:11:55,280 --> 01:11:57,280 y la posición de la cámara va a ser la que se va a ir 1082 01:11:57,280 --> 01:11:59,280 actualizando para que siga 1083 01:11:59,280 --> 01:12:01,280 a la nave, pues hay 1084 01:12:01,280 --> 01:12:03,280 que incorporarla como componente. 1085 01:12:03,280 --> 01:12:05,280 ¿Vale? Importante. 1086 01:12:05,280 --> 01:12:07,280 Entonces, una vez estamos aquí, voy a 1087 01:12:07,280 --> 01:12:09,280 abrir... 1088 01:12:09,280 --> 01:12:11,280 No me está abriendo 1089 01:12:11,280 --> 01:12:13,280 esto una cosa... 1090 01:12:15,280 --> 01:12:17,280 Aquí tengo una cosita... 1091 01:12:17,280 --> 01:12:19,280 Vale. 1092 01:12:19,280 --> 01:12:21,280 Voy a este código 1093 01:12:21,280 --> 01:12:23,280 y lo dejo aquí. Tengo aquí el script 1094 01:12:23,280 --> 01:12:25,280 que como antes hemos habido cosas 1095 01:12:25,280 --> 01:12:27,280 lo dejo por aquí. 1096 01:12:27,280 --> 01:12:29,280 Vale, ya está. 1097 01:12:33,280 --> 01:12:35,280 Estoy colocándome... 1098 01:12:35,280 --> 01:12:37,280 Tengo otra pantalla por aquí. 1099 01:12:37,280 --> 01:12:39,280 Vale. 1100 01:12:39,280 --> 01:12:41,280 Vale. 1101 01:12:41,280 --> 01:12:43,280 Entonces, tenemos aquí este script 1102 01:12:43,280 --> 01:12:45,280 de Camera Position preparado 1103 01:12:45,280 --> 01:12:47,280 para decirle cómo tiene que actuar 1104 01:12:47,280 --> 01:12:49,280 la cámara. ¿Vale? 1105 01:12:49,280 --> 01:12:51,280 Y lo que vamos a hacer es 1106 01:12:51,280 --> 01:12:53,280 que la posición de la cámara 1107 01:12:53,280 --> 01:12:55,280 coja la de 1108 01:12:55,280 --> 01:12:57,280 otro elemento de la escena. 1109 01:12:57,280 --> 01:12:59,280 Entonces, igual que hacíamos con la instancia, 1110 01:12:59,280 --> 01:13:01,280 lo que vamos a decirle es 1111 01:13:01,280 --> 01:13:03,280 ¡Ojo! Yo quiero 1112 01:13:03,280 --> 01:13:05,280 que la posición de la cámara 1113 01:13:05,280 --> 01:13:07,280 la coja de otro elemento. 1114 01:13:07,280 --> 01:13:09,280 ¿Cómo hacíamos 1115 01:13:09,280 --> 01:13:11,280 en la primera práctica 1116 01:13:11,280 --> 01:13:13,280 que otro elemento nos diera sus propiedades? 1117 01:13:13,280 --> 01:13:15,280 Pues lo que hacíamos, por ejemplo, 1118 01:13:15,280 --> 01:13:17,280 en este momento del curso, era decirle 1119 01:13:17,280 --> 01:13:19,280 que 1120 01:13:19,280 --> 01:13:21,280 en una variable de tipo Transform 1121 01:13:21,280 --> 01:13:23,280 o en una variable de tipo GameObject, 1122 01:13:23,280 --> 01:13:25,280 ahora mismo como lo que quiero son las coordenadas de otro objeto, 1123 01:13:25,280 --> 01:13:27,280 voy a ponerle Transform 1124 01:13:27,280 --> 01:13:29,280 para que coja lo relativo a su componente Transform. 1125 01:13:29,280 --> 01:13:31,280 Voy a poner que coja... 1126 01:13:31,280 --> 01:13:33,280 Bueno, que tenga un Target 1127 01:13:33,280 --> 01:13:35,280 que va a ser la nave a la que va a seguir. 1128 01:13:35,280 --> 01:13:37,280 ¿Vale? 1129 01:13:37,280 --> 01:13:39,280 Entonces, recordad que yo cuando pongo el Serialize Fill 1130 01:13:39,280 --> 01:13:41,280 ahora vais a ver que en esta cámara 1131 01:13:41,280 --> 01:13:43,280 hay un objeto 1132 01:13:43,280 --> 01:13:45,280 que está esperando un objeto 1133 01:13:45,280 --> 01:13:47,280 que le pasemos algo para que coja 1134 01:13:47,280 --> 01:13:49,280 las coordenadas. Aquí es donde 1135 01:13:49,280 --> 01:13:51,280 el otro día en la práctica 1 1136 01:13:51,280 --> 01:13:53,280 os dije que 1137 01:13:53,280 --> 01:13:55,280 el padre de todo el prefab 1138 01:13:55,280 --> 01:13:57,280 fuera coordenadas puras, 0, 0, 1139 01:13:57,280 --> 01:13:59,280 porque así va a ser bastante más fácil 1140 01:13:59,280 --> 01:14:01,280 estar en todo momento identificando 1141 01:14:01,280 --> 01:14:03,280 los puntos de referencia 1142 01:14:03,280 --> 01:14:05,280 desde los que tiene que 1143 01:14:05,280 --> 01:14:07,280 gestionarse todo, por ejemplo, 1144 01:14:07,280 --> 01:14:09,280 este seguimiento de cámara. 1145 01:14:09,280 --> 01:14:11,280 Como lo que va a seguir es a esta nave, 1146 01:14:11,280 --> 01:14:13,280 la arrastro aquí. 1147 01:14:13,280 --> 01:14:15,280 Ahora hemos guardado en una variable llamada 1148 01:14:15,280 --> 01:14:17,280 Target 1149 01:14:17,280 --> 01:14:19,280 las coordenadas 1150 01:14:19,280 --> 01:14:21,280 del objeto. 1151 01:14:21,280 --> 01:14:23,280 Entonces, 1152 01:14:25,280 --> 01:14:27,280 si yo tengo, y voy a decir 1153 01:14:27,280 --> 01:14:29,280 que este prefab, por ejemplo, 1154 01:14:29,280 --> 01:14:31,280 tenga... 1155 01:14:31,280 --> 01:14:33,280 Voy a hacer 1156 01:14:33,280 --> 01:14:35,280 básicamente... 1157 01:14:35,280 --> 01:14:37,280 Si hago todo de cero, 1158 01:14:37,280 --> 01:14:39,280 tardo mucho. Voy a ver cómo lo puedo simplificar. 1159 01:14:39,280 --> 01:14:41,280 En esta cámara 1160 01:14:41,280 --> 01:14:43,280 lo que vamos a decirle es que 1161 01:14:43,280 --> 01:14:45,280 por defecto coja 1162 01:14:45,280 --> 01:14:47,280 que la posición de la cámara, 1163 01:14:47,280 --> 01:14:49,280 es decir, su Transform Position 1164 01:14:51,280 --> 01:14:53,280 sea igual al 1165 01:14:53,280 --> 01:14:55,280 Target 1166 01:14:55,280 --> 01:14:57,280 punto Position. 1167 01:14:57,280 --> 01:14:59,280 Es decir, 1168 01:15:01,280 --> 01:15:03,280 que de este Target coja su posición. 1169 01:15:03,280 --> 01:15:05,280 ¿Esto qué significa? 1170 01:15:05,280 --> 01:15:07,280 Guardo que cuando yo 1171 01:15:07,280 --> 01:15:09,280 arranque el juego, porque lo he puesto 1172 01:15:09,280 --> 01:15:11,280 en el Start básicamente, 1173 01:15:11,280 --> 01:15:13,280 cuando se inicialice 1174 01:15:13,280 --> 01:15:15,280 este script que está 1175 01:15:15,280 --> 01:15:17,280 incorporando a la cámara, aunque aquí ponga 1176 01:15:17,280 --> 01:15:19,280 "-17 en la cámara", 1177 01:15:19,280 --> 01:15:21,280 vais a ver que al arrancar el juego 1178 01:15:21,280 --> 01:15:23,280 lo que hace es ponerse... De hecho, se ve este 1179 01:15:23,280 --> 01:15:25,280 círculo que es justo el morro de la cámara. 1180 01:15:25,280 --> 01:15:27,280 Se ha puesto en el 0,0 la cámara. 1181 01:15:27,280 --> 01:15:29,280 Ha cogido las propiedades 1182 01:15:29,280 --> 01:15:31,280 de la posición 1183 01:15:31,280 --> 01:15:33,280 de esa nave. 1184 01:15:33,280 --> 01:15:35,280 ¿Esto qué significa? 1185 01:15:35,280 --> 01:15:37,280 Y aquí estaba haciendo algo que no 1186 01:15:37,280 --> 01:15:39,280 estaba funcionando, pero no sé muy bien por qué. 1187 01:15:39,280 --> 01:15:41,280 ¿Qué significa? Que si esto 1188 01:15:41,280 --> 01:15:43,280 lo ponemos en el Update, que en cada momento 1189 01:15:43,280 --> 01:15:45,280 está refrescando 1190 01:15:45,280 --> 01:15:47,280 la posición 1191 01:15:47,280 --> 01:15:49,280 en relación a la del Target, 1192 01:15:49,280 --> 01:15:51,280 la posición del propio objeto 1193 01:15:51,280 --> 01:15:53,280 que lo tiene, que en este caso es la cámara, 1194 01:15:53,280 --> 01:15:55,280 estará en todo momento, cada fotograma 1195 01:15:55,280 --> 01:15:57,280 mirando dónde está la posición 1196 01:15:57,280 --> 01:15:59,280 del Target. 1197 01:15:59,280 --> 01:16:01,280 Esto es un primer paso para entender 1198 01:16:01,280 --> 01:16:03,280 que si yo 1199 01:16:03,280 --> 01:16:05,280 tengo aquí la nave, 1200 01:16:05,280 --> 01:16:07,280 ahora lo que pasa es que, como lo he creado en una escena nueva, 1201 01:16:07,280 --> 01:16:09,280 no tengo las interacciones de los inputs. 1202 01:16:09,280 --> 01:16:11,280 Pero si yo empiezo a subir 1203 01:16:11,280 --> 01:16:13,280 la nave, 1204 01:16:13,280 --> 01:16:15,280 a ver, perdonad que no estoy 1205 01:16:15,280 --> 01:16:17,280 moviendo el prefab, cuando yo vaya moviendo 1206 01:16:17,280 --> 01:16:19,280 esa nave, 1207 01:16:19,280 --> 01:16:21,280 como la cámara está actualizando 1208 01:16:21,280 --> 01:16:23,280 en todo momento, 1209 01:16:23,280 --> 01:16:25,280 no hay muchos puntos de referencia, pero como está actualizando 1210 01:16:25,280 --> 01:16:27,280 la posición, 1211 01:16:27,280 --> 01:16:29,280 la cámara va con ello. 1212 01:16:29,280 --> 01:16:31,280 Ahora la altura es de 18. 1213 01:16:31,280 --> 01:16:33,280 ¿Por qué? Porque es la que tiene 1214 01:16:33,280 --> 01:16:35,280 esta nave prefab. Cuando yo subo 1215 01:16:35,280 --> 01:16:37,280 27,3, la nave ha heredado 1216 01:16:37,280 --> 01:16:39,280 este 27,3. 1217 01:16:39,280 --> 01:16:41,280 Hemos hecho por código ahora mismo 1218 01:16:41,280 --> 01:16:43,280 lo mismo que habíamos hecho antes de emparentar 1219 01:16:43,280 --> 01:16:45,280 en jerarquía, de hacer hijo 1220 01:16:45,280 --> 01:16:47,280 un elemento de otro. 1221 01:16:47,280 --> 01:16:49,280 Básicamente estamos diciendo que la posición 1222 01:16:49,280 --> 01:16:51,280 de este objeto esté todo el rato 1223 01:16:51,280 --> 01:16:53,280 igualándose a la posición del Target. 1224 01:16:53,280 --> 01:16:55,280 El problema es que, 1225 01:16:55,280 --> 01:16:57,280 claro, se está metiendo 1226 01:16:57,280 --> 01:16:59,280 en el 0,0 1227 01:16:59,280 --> 01:17:01,280 de la cámara, que es este eje, 1228 01:17:01,280 --> 01:17:03,280 es este punto que hay aquí, 1229 01:17:03,280 --> 01:17:05,280 donde coincide el gizmo. 1230 01:17:07,280 --> 01:17:09,280 Y claro, estamos dentro de la cámara. 1231 01:17:09,280 --> 01:17:11,280 Lo que vamos a querer es 1232 01:17:11,280 --> 01:17:13,280 que esta posición, 1233 01:17:13,280 --> 01:17:15,280 y recordamos que 1234 01:17:15,280 --> 01:17:17,280 las posiciones son un vector 3, 1235 01:17:17,280 --> 01:17:19,280 es decir, tiene tres ejes, 1236 01:17:19,280 --> 01:17:21,280 realmente lo que está 1237 01:17:21,280 --> 01:17:23,280 haciendo es 1238 01:17:23,280 --> 01:17:25,280 tener 1239 01:17:25,280 --> 01:17:27,280 un vector 1240 01:17:27,280 --> 01:17:29,280 que va a tener una desviación 1241 01:17:29,280 --> 01:17:31,280 en alguno de los 1242 01:17:31,280 --> 01:17:33,280 ejes. 1243 01:17:33,280 --> 01:17:35,280 ¿Esto qué significa? 1244 01:17:35,280 --> 01:17:37,280 Como hemos dicho antes, esto es un vector 3 1245 01:17:37,280 --> 01:17:39,280 que está refiriéndose 1246 01:17:39,280 --> 01:17:41,280 a otro vector 3 de tres dimensiones. 1247 01:17:41,280 --> 01:17:43,280 Si lo que queremos es 1248 01:17:43,280 --> 01:17:45,280 que la posición del objeto 1249 01:17:45,280 --> 01:17:47,280 se esté recalculando 1250 01:17:47,280 --> 01:17:49,280 en referencia 1251 01:17:49,280 --> 01:17:51,280 a la del Target, 1252 01:17:51,280 --> 01:17:53,280 también podemos decir que 1253 01:17:53,280 --> 01:17:55,280 en todo momento esté recalculando 1254 01:17:55,280 --> 01:17:57,280 ese vector 3 que tiene, 1255 01:17:57,280 --> 01:17:59,280 como 1256 01:17:59,280 --> 01:18:01,280 se explica en la lección, tres ejes. 1257 01:18:01,280 --> 01:18:03,280 Pueden incluso usarse para dos, 1258 01:18:03,280 --> 01:18:05,280 la tercera dimensión no es obligatoria. 1259 01:18:05,280 --> 01:18:07,280 Pero tiene tres ejes, que son la X, 1260 01:18:07,280 --> 01:18:09,280 la Y y la Z. Entonces, si decimos 1261 01:18:09,280 --> 01:18:11,280 que coja el eje X 1262 01:18:11,280 --> 01:18:13,280 de esta posición, vamos diciéndole 1263 01:18:13,280 --> 01:18:15,280 cuáles son 1264 01:18:15,280 --> 01:18:17,280 cada uno de los ejes del 1265 01:18:17,280 --> 01:18:19,280 vector 3 en relación a los del Target, 1266 01:18:19,280 --> 01:18:21,280 si hacemos esto, 1267 01:18:21,280 --> 01:18:23,280 que es muy enrevesado, 1268 01:18:23,280 --> 01:18:25,280 pero ahora veremos el porqué, 1269 01:18:25,280 --> 01:18:27,280 y es también lo que ha planteado vuestro compañero, 1270 01:18:27,280 --> 01:18:29,280 la solución. Si ponemos esto, 1271 01:18:29,280 --> 01:18:31,280 es exactamente lo mismo, equivalente 1272 01:18:31,280 --> 01:18:33,280 a lo que habíamos hecho antes. ¿Por qué? 1273 01:18:33,280 --> 01:18:35,280 Lo copio. 1274 01:18:35,280 --> 01:18:37,280 Lo que hemos hecho 1275 01:18:37,280 --> 01:18:39,280 aquí es descomponer 1276 01:18:39,280 --> 01:18:41,280 el Transform Position 1277 01:18:41,280 --> 01:18:43,280 del Target en sus tres dimensiones. 1278 01:18:43,280 --> 01:18:45,280 Ahora mismo, 1279 01:18:45,280 --> 01:18:47,280 esto y esto es lo mismo. 1280 01:18:47,280 --> 01:18:49,280 Solo que estamos diciendo que haya un vector 3 1281 01:18:49,280 --> 01:18:51,280 que rellene cada uno 1282 01:18:51,280 --> 01:18:53,280 de las tres posiciones en relación 1283 01:18:53,280 --> 01:18:55,280 a las tres posiciones que tiene este Position 1284 01:18:55,280 --> 01:18:57,280 en su Transform. 1285 01:18:57,280 --> 01:18:59,280 Esto lo que nos permite 1286 01:18:59,280 --> 01:19:01,280 es que en cada uno de los ejes 1287 01:19:01,280 --> 01:19:03,280 podamos decirle menos 10, 1288 01:19:03,280 --> 01:19:05,280 o más 45, 1289 01:19:05,280 --> 01:19:07,280 ahora lo estoy haciendo al azar, 1290 01:19:07,280 --> 01:19:09,280 o más 80, 1291 01:19:09,280 --> 01:19:11,280 yo qué sé. 1292 01:19:11,280 --> 01:19:13,280 Ahora, en todo momento, va a estar 1293 01:19:13,280 --> 01:19:15,280 recalculando la posición, 1294 01:19:15,280 --> 01:19:17,280 pero luego nosotros le estamos 1295 01:19:17,280 --> 01:19:19,280 diciendo que aparte haya un poco 1296 01:19:19,280 --> 01:19:21,280 de decalaje o se esté orientando 1297 01:19:21,280 --> 01:19:23,280 hacia otro punto. Es decir, 1298 01:19:23,280 --> 01:19:25,280 que si en X 1299 01:19:25,280 --> 01:19:27,280 la nave está en 10, 1300 01:19:27,280 --> 01:19:29,280 la cámara se va a poner 1301 01:19:29,280 --> 01:19:31,280 en 0 en el eje X. 1302 01:19:31,280 --> 01:19:33,280 O si está en 20, se va a poner en 10. 1303 01:19:33,280 --> 01:19:35,280 Hay un cierto decalaje. 1304 01:19:35,280 --> 01:19:37,280 Cuando le demos al Play, vais a ver 1305 01:19:37,280 --> 01:19:39,280 que ya no se ve que está dentro 1306 01:19:39,280 --> 01:19:41,280 del objeto, sino que la cámara 1307 01:19:41,280 --> 01:19:43,280 se ha puesto por delante 1308 01:19:43,280 --> 01:19:45,280 porque en Z le hemos dado 1309 01:19:45,280 --> 01:19:47,280 un valor positivo y además bastante amplio. 1310 01:19:47,280 --> 01:19:49,280 Esto lo que nos 1311 01:19:49,280 --> 01:19:51,280 permite es 1312 01:19:51,280 --> 01:19:53,280 que un poco 1313 01:19:53,280 --> 01:19:55,280 de manera consciente 1314 01:19:55,280 --> 01:19:57,280 podamos dar 1315 01:19:57,280 --> 01:19:59,280 este offset, esta distancia 1316 01:19:59,280 --> 01:20:01,280 que hay entre 1317 01:20:01,280 --> 01:20:03,280 el objeto que estamos 1318 01:20:03,280 --> 01:20:05,280 siguiendo con la cámara y la posición 1319 01:20:05,280 --> 01:20:07,280 de la cámara. ¿Cómo podemos 1320 01:20:07,280 --> 01:20:09,280 variar 1321 01:20:09,280 --> 01:20:11,280 esto? Por ejemplo, lo que podemos 1322 01:20:11,280 --> 01:20:13,280 hacer es traducir estos 1323 01:20:13,280 --> 01:20:15,280 decalajes que hemos metido aquí a mano. Igual 1324 01:20:15,280 --> 01:20:17,280 que os he dicho antes, 1325 01:20:17,280 --> 01:20:19,280 en vez de poner un número concreto 1326 01:20:19,280 --> 01:20:21,280 podemos poner un límite que así siempre podemos 1327 01:20:21,280 --> 01:20:23,280 estar aludiendo 1328 01:20:23,280 --> 01:20:25,280 a ese objeto en su variable. 1329 01:20:25,280 --> 01:20:27,280 Y además también nos permite incluso 1330 01:20:27,280 --> 01:20:29,280 serializarlo, que ahora vamos a ver 1331 01:20:29,280 --> 01:20:31,280 por qué. Entonces, podemos 1332 01:20:31,280 --> 01:20:33,280 generar floats 1333 01:20:33,280 --> 01:20:35,280 que sustituyan a estos 1334 01:20:35,280 --> 01:20:37,280 valores que tenemos aquí. Y va a haber, por ejemplo, 1335 01:20:37,280 --> 01:20:39,280 el offset 1336 01:20:39,280 --> 01:20:41,280 en X. 1337 01:20:41,280 --> 01:20:43,280 Pues ahí se queda. Luego vamos a hacer 1338 01:20:43,280 --> 01:20:45,280 otro que sea el offset 1339 01:20:45,280 --> 01:20:47,280 en Y. 1340 01:20:47,280 --> 01:20:49,280 Y luego el offset 1341 01:20:49,280 --> 01:20:51,280 en Z. 1342 01:20:51,280 --> 01:20:53,280 Float offset 1343 01:20:53,280 --> 01:20:55,280 en Z. 1344 01:20:55,280 --> 01:20:57,280 Y esto lo que podemos hacer es sustituirlo aquí 1345 01:20:57,280 --> 01:20:59,280 por cada uno de los offsets. 1346 01:20:59,280 --> 01:21:01,280 Es verdad que en este 1347 01:21:01,280 --> 01:21:03,280 caso en concreto, 1348 01:21:03,280 --> 01:21:05,280 lo voy a poner en positivo, 1349 01:21:05,280 --> 01:21:07,280 porque si no lo que haremos es poner en negativo 1350 01:21:07,280 --> 01:21:09,280 el valor de la variable, 1351 01:21:09,280 --> 01:21:11,280 vamos a ir poniendo 1352 01:21:11,280 --> 01:21:13,280 cada uno de los 1353 01:21:15,280 --> 01:21:17,280 de los decalajes. 1354 01:21:17,280 --> 01:21:19,280 Ahora mismo, 1355 01:21:19,280 --> 01:21:21,280 como ya os he comentado en otros momentos, 1356 01:21:21,280 --> 01:21:23,280 como no hemos dado ningún valor, 1357 01:21:23,280 --> 01:21:25,280 todo vale en cero. Por tanto, ahora mismo 1358 01:21:25,280 --> 01:21:27,280 está todo en su posición. 1359 01:21:27,280 --> 01:21:29,280 No hay ningún 1360 01:21:29,280 --> 01:21:31,280 tipo de decalaje. Pero aquí sí que 1361 01:21:31,280 --> 01:21:33,280 podemos decir, ojo, yo quiero 1362 01:21:33,280 --> 01:21:35,280 que 1363 01:21:35,280 --> 01:21:37,280 la cámara esté 1364 01:21:39,280 --> 01:21:41,280 40 1365 01:21:41,280 --> 01:21:43,280 unidades 1366 01:21:43,280 --> 01:21:45,280 por delante. 1367 01:21:45,280 --> 01:21:47,280 Porque al darle positivo, vamos a ver que cuando 1368 01:21:47,280 --> 01:21:49,280 yo le dé al play, la cámara 1369 01:21:49,280 --> 01:21:51,280 si la selecciono, está por 1370 01:21:51,280 --> 01:21:53,280 delante. Por eso no se ve la nave. 1371 01:21:59,280 --> 01:22:01,280 O que esté 1372 01:22:01,280 --> 01:22:03,280 40 por detrás, que esto es lo que nos puede 1373 01:22:03,280 --> 01:22:05,280 interesar, que pase lo que pase en el juego, 1374 01:22:05,280 --> 01:22:07,280 la cámara siempre esté por detrás, 1375 01:22:07,280 --> 01:22:09,280 apuntando hacia esa nave. 1376 01:22:09,280 --> 01:22:11,280 Y ahora vais a ver que la nave se ve ahí, 1377 01:22:11,280 --> 01:22:13,280 40 por detrás. 1378 01:22:13,280 --> 01:22:15,280 Nos puede interesar, y por eso 1379 01:22:15,280 --> 01:22:17,280 sucede esto, que aquí empecemos 1380 01:22:17,280 --> 01:22:19,280 a trastear mientras está en reproducción, 1381 01:22:19,280 --> 01:22:21,280 que es lo que comenté de tintar de rojo la pantalla 1382 01:22:21,280 --> 01:22:23,280 para saber cuándo ocurre esto, 1383 01:22:23,280 --> 01:22:25,280 que podemos ir variando 1384 01:22:25,280 --> 01:22:27,280 las posiciones 1385 01:22:27,280 --> 01:22:29,280 de los 1386 01:22:29,280 --> 01:22:31,280 elementos. 1387 01:22:31,280 --> 01:22:33,280 Aquí, aunque arrastra a los lados, 1388 01:22:33,280 --> 01:22:35,280 no me deja cambiarlo, porque el script, aunque yo 1389 01:22:35,280 --> 01:22:37,280 lo cambie, constantemente en el 1390 01:22:37,280 --> 01:22:39,280 update está 1391 01:22:39,280 --> 01:22:41,280 recalculando la posición. 1392 01:22:41,280 --> 01:22:43,280 Entonces no me está dejando 1393 01:22:43,280 --> 01:22:45,280 cambiar este valor. Pero lo que sí 1394 01:22:45,280 --> 01:22:47,280 que podemos hacer es 1395 01:22:47,280 --> 01:22:49,280 que este valor lo hagamos 1396 01:22:49,280 --> 01:22:51,280 serializado o público, 1397 01:22:51,280 --> 01:22:53,280 el de Z que es ahora mismo el que más nos interesa. 1398 01:22:53,280 --> 01:22:55,280 Y en vez 1399 01:22:55,280 --> 01:22:57,280 de meter aquí el valor 1400 01:22:57,280 --> 01:22:59,280 por defecto, lo hagamos 1401 01:22:59,280 --> 01:23:01,280 desde 1402 01:23:03,280 --> 01:23:05,280 este 1403 01:23:05,280 --> 01:23:07,280 este 1404 01:23:07,280 --> 01:23:09,280 campo editable. 1405 01:23:09,280 --> 01:23:11,280 ¿Eso qué significa? Que mientras 1406 01:23:11,280 --> 01:23:13,280 yo estoy en play, puedo ir testeando 1407 01:23:13,280 --> 01:23:15,280 a qué altura podemos 1408 01:23:15,280 --> 01:23:17,280 dejar la cámara en vivo. 1409 01:23:17,280 --> 01:23:19,280 Y cuando le decimos 1410 01:23:19,280 --> 01:23:21,280 "-9", cuando dejemos de dar al 1411 01:23:21,280 --> 01:23:23,280 play, se ha movido. Pero aquí ya 1412 01:23:23,280 --> 01:23:25,280 sabemos que es "-9", porque lo hemos memorizado. 1413 01:23:25,280 --> 01:23:27,280 Podemos hacer lo mismo 1414 01:23:27,280 --> 01:23:29,280 por ejemplo en Y. 1415 01:23:29,280 --> 01:23:31,280 Yo quiero que este Y esté serializado. 1416 01:23:31,280 --> 01:23:33,280 Porque la X 1417 01:23:33,280 --> 01:23:35,280 es verdad que no queremos que se vaya hacia los lados. 1418 01:23:35,280 --> 01:23:37,280 De hecho, se podría 1419 01:23:37,280 --> 01:23:39,280 hasta borrar, porque no nos interesa 1420 01:23:39,280 --> 01:23:41,280 que haya decalaje en X. 1421 01:23:41,280 --> 01:23:43,280 Queremos que esté un poquito por detrás 1422 01:23:43,280 --> 01:23:45,280 y quizá un poquito por arriba 1423 01:23:45,280 --> 01:23:47,280 para angular la cámara. 1424 01:23:47,280 --> 01:23:49,280 Entonces, si ahora 1425 01:23:49,280 --> 01:23:51,280 le decimos que el offset sea de 1426 01:23:53,280 --> 01:23:55,280 vamos a dar al play 1427 01:23:55,280 --> 01:23:57,280 y decimos el offset 1428 01:23:57,280 --> 01:23:59,280 queremos que sea de 1429 01:23:59,280 --> 01:24:01,280 esto esté a "-12", 1430 01:24:01,280 --> 01:24:03,280 y el Y 1431 01:24:03,280 --> 01:24:05,280 esté a 3. 1432 01:24:05,280 --> 01:24:07,280 Bueno, o a 1433 01:24:07,280 --> 01:24:09,280 1,5. 1434 01:24:09,280 --> 01:24:11,280 Pues nada, lo ponemos aquí. 1435 01:24:11,280 --> 01:24:13,280 1,5 1436 01:24:13,280 --> 01:24:15,280 y "-12", creo que hemos dicho. 1437 01:24:15,280 --> 01:24:17,280 Ahora ya, según arranca el juego, 1438 01:24:17,280 --> 01:24:19,280 se pone en esa ubicación. 1439 01:24:19,280 --> 01:24:21,280 Por ejemplo, también podemos rotar la cámara 1440 01:24:21,280 --> 01:24:23,280 para que tenga un poquito de angulación. 1441 01:24:23,280 --> 01:24:25,280 La rotación 1442 01:24:25,280 --> 01:24:27,280 podríamos hacer un poco lo mismo 1443 01:24:27,280 --> 01:24:29,280 de la cámara con respecto, 1444 01:24:29,280 --> 01:24:31,280 pero en realidad lo que podemos hacer en cualquier momento 1445 01:24:31,280 --> 01:24:33,280 como tenemos este decalaje, 1446 01:24:33,280 --> 01:24:35,280 la nave cuando se vaya moviendo 1447 01:24:35,280 --> 01:24:37,280 se mueve 1448 01:24:37,280 --> 01:24:39,280 con ese 1449 01:24:39,280 --> 01:24:41,280 offset 1450 01:24:41,280 --> 01:24:43,280 y va a estar siempre por detrás 1451 01:24:43,280 --> 01:24:45,280 moviéndose con ese offset. 1452 01:24:45,280 --> 01:24:47,280 Podemos ir ajustando aquí con las variables. 1453 01:24:47,280 --> 01:24:49,280 ¿Qué es lo que sucede? 1454 01:24:49,280 --> 01:24:51,280 Que ahora, y voy a 1455 01:24:51,280 --> 01:24:53,280 poner muy rápidamente... 1456 01:24:53,280 --> 01:24:55,280 Voy a reciclar el script 1457 01:24:55,280 --> 01:24:57,280 que nos pasó 1458 01:24:57,280 --> 01:24:59,280 Francisco Javier, 1459 01:24:59,280 --> 01:25:01,280 que ya lo habíamos... Bueno, no sé en qué estado ha quedado. 1460 01:25:01,280 --> 01:25:03,280 A ver, me meto un 1461 01:25:03,280 --> 01:25:05,280 segundo, porque con todo esto de la rotación 1462 01:25:05,280 --> 01:25:07,280 no sé si ha quedado 1463 01:25:07,280 --> 01:25:09,280 del todo correcto. 1464 01:25:09,280 --> 01:25:11,280 A ver... 1465 01:25:11,280 --> 01:25:13,280 Bueno, esto lo dejo así. 1466 01:25:13,280 --> 01:25:15,280 Y aquí, bueno, voy a poner... 1467 01:25:15,280 --> 01:25:17,280 Voy a borrar todo lo que 1468 01:25:17,280 --> 01:25:19,280 no conseguí hacer del todo correctamente. 1469 01:25:19,280 --> 01:25:21,280 Ni del todo, ni ninguna, 1470 01:25:21,280 --> 01:25:23,280 porque se ha quedado a medio escribir. 1471 01:25:23,280 --> 01:25:25,280 Y pongo 1472 01:25:25,280 --> 01:25:27,280 el método 1473 01:25:27,280 --> 01:25:29,280 que habíamos visto de los 1474 01:25:29,280 --> 01:25:31,280 inputs. 1475 01:25:31,280 --> 01:25:33,280 Si esto lo aplico ahora a la nave 1476 01:25:33,280 --> 01:25:35,280 que acabo de meter, Francisco Javier, 1477 01:25:35,280 --> 01:25:37,280 lo meto en la nave prefab, 1478 01:25:37,280 --> 01:25:39,280 ya volveré a tener 1479 01:25:39,280 --> 01:25:41,280 una nave con la que 1480 01:25:41,280 --> 01:25:43,280 puedo moverme. 1481 01:25:43,280 --> 01:25:45,280 Falta algo, que es 1482 01:25:45,280 --> 01:25:47,280 que hay que darle una velocidad, porque así 1483 01:25:47,280 --> 01:25:49,280 lo tiene configurado, y una rotación. 1484 01:25:49,280 --> 01:25:51,280 Porque tiene dos variables 1485 01:25:51,280 --> 01:25:53,280 serializadas para eso. 1486 01:25:53,280 --> 01:25:55,280 Ya debería ir... Vale. 1487 01:25:55,280 --> 01:25:57,280 Ya si os fijáis, cuando paso 1488 01:25:57,280 --> 01:25:59,280 por abajo sobre todo, porque no hay límites 1489 01:25:59,280 --> 01:26:01,280 que corten el movimiento, 1490 01:26:01,280 --> 01:26:03,280 que es otra de las cosas que hay que hacer. 1491 01:26:03,280 --> 01:26:05,280 Tengo la nave que se va moviendo. 1492 01:26:05,280 --> 01:26:07,280 Ya lo tengo 1493 01:26:07,280 --> 01:26:09,280 configurado con dos controles independientes. 1494 01:26:09,280 --> 01:26:11,280 Faltaría ir generando 1495 01:26:11,280 --> 01:26:13,280 los obstáculos, que es lo que va a dar la perspectiva 1496 01:26:13,280 --> 01:26:15,280 de que cuando se van acercando 1497 01:26:15,280 --> 01:26:17,280 los pivotes, parece que 1498 01:26:17,280 --> 01:26:19,280 la nave está avanzando, 1499 01:26:19,280 --> 01:26:21,280 pero en realidad es un trampantojo. 1500 01:26:21,280 --> 01:26:23,280 Hacemos que los obstáculos 1501 01:26:23,280 --> 01:26:25,280 sean los que se van acercando. 1502 01:26:25,280 --> 01:26:27,280 Vale. Entonces... 1503 01:26:27,280 --> 01:26:29,280 Rotación... 1504 01:26:29,280 --> 01:26:31,280 Lo voy a poner en 100. 1505 01:26:31,280 --> 01:26:33,280 Mientras estamos aquí, podemos ir probando 1506 01:26:33,280 --> 01:26:35,280 este offset y ir dando valores 1507 01:26:35,280 --> 01:26:37,280 para que se ponga en el 1508 01:26:37,280 --> 01:26:39,280 punto que 1509 01:26:39,280 --> 01:26:41,280 nos interese. Lo mismo. 1510 01:26:41,280 --> 01:26:43,280 Mientras estamos en reproducción, lo malo es 1511 01:26:43,280 --> 01:26:45,280 que luego habrá que apuntarse los números, aunque sea 1512 01:26:45,280 --> 01:26:47,280 en la cabeza, para saber 1513 01:26:47,280 --> 01:26:49,280 dónde está. A ver... 1514 01:26:49,280 --> 01:26:51,280 En X y lo angulo. 1515 01:26:51,280 --> 01:26:53,280 Con esto vamos definiendo 1516 01:26:53,280 --> 01:26:55,280 ese offset de manera automática. 1517 01:26:55,280 --> 01:26:57,280 Y ya la nave, cuando la muevo, 1518 01:26:57,280 --> 01:26:59,280 se va 1519 01:26:59,280 --> 01:27:01,280 a ir moviendo en base a eso. 1520 01:27:01,280 --> 01:27:03,280 ¿Sí? Hasta aquí 1521 01:27:03,280 --> 01:27:05,280 me vais siguiendo más o menos. 1522 01:27:05,280 --> 01:27:07,280 Hace mucho que no os leo. 1523 01:27:07,280 --> 01:27:09,280 Vale. 1524 01:27:09,280 --> 01:27:11,280 Sí. Vale. 1525 01:27:11,280 --> 01:27:13,280 ¿Qué es lo que ocurre? 1526 01:27:13,280 --> 01:27:15,280 Y lo que pedía un poco 1527 01:27:15,280 --> 01:27:17,280 en el enunciado. 1528 01:27:17,280 --> 01:27:19,280 Que es 1529 01:27:19,280 --> 01:27:21,280 que a ver si conseguíamos 1530 01:27:21,280 --> 01:27:23,280 que este movimiento de la cámara 1531 01:27:23,280 --> 01:27:25,280 estuviera suavizado. Es decir, 1532 01:27:25,280 --> 01:27:27,280 cuando jugáis a un juego, muchas veces 1533 01:27:27,280 --> 01:27:29,280 lo que sucede es que se va moviendo el personaje, 1534 01:27:29,280 --> 01:27:31,280 la nave en este caso, 1535 01:27:31,280 --> 01:27:33,280 y la cámara no va exactamente 1536 01:27:33,280 --> 01:27:35,280 con el movimiento 1537 01:27:35,280 --> 01:27:37,280 de ese personaje. 1538 01:27:37,280 --> 01:27:39,280 Sino que tarda un poco en reaccionar 1539 01:27:39,280 --> 01:27:41,280 para que el movimiento sea un poco más suave. 1540 01:27:41,280 --> 01:27:43,280 O si tiembla un poco, pues que 1541 01:27:43,280 --> 01:27:45,280 dé tiempo a corregirlo. 1542 01:27:45,280 --> 01:27:47,280 Y para ese tipo de funciones 1543 01:27:47,280 --> 01:27:49,280 se puede usar el 1544 01:27:49,280 --> 01:27:51,280 Smooth Damp, que es 1545 01:27:51,280 --> 01:27:53,280 lo que se ve al final del tema 2. 1546 01:27:53,280 --> 01:27:55,280 Sobre todo me sirve para 1547 01:27:55,280 --> 01:27:57,280 que veamos una forma 1548 01:27:57,280 --> 01:27:59,280 de pensar diferentes las variables 1549 01:27:59,280 --> 01:28:01,280 y el uso de la Smooth Damp. 1550 01:28:01,280 --> 01:28:03,280 Porque esto es verdad que de primeras es 1551 01:28:03,280 --> 01:28:05,280 un poco complejo. 1552 01:28:05,280 --> 01:28:07,280 Luego no lo es tanto 1553 01:28:07,280 --> 01:28:09,280 cuando se entiende, pero sí que es verdad que cada vez 1554 01:28:09,280 --> 01:28:11,280 que lo quieres hacer, tienes que refrescar cómo se hace. 1555 01:28:11,280 --> 01:28:13,280 Entonces, aunque en el tema 1556 01:28:13,280 --> 01:28:15,280 se pone algún ejemplo de cómo se 1557 01:28:15,280 --> 01:28:17,280 emplea, 1558 01:28:17,280 --> 01:28:19,280 para que sepáis de qué hablo 1559 01:28:19,280 --> 01:28:21,280 por si acaso no lo tenéis muy ubicado, 1560 01:28:21,280 --> 01:28:23,280 me refiero a esto último 1561 01:28:23,280 --> 01:28:25,280 de lo que se habla en el tema 2. 1562 01:28:25,280 --> 01:28:27,280 En contenido, 1563 01:28:27,280 --> 01:28:29,280 en movimiento suavizado, 1564 01:28:29,280 --> 01:28:31,280 aquí por ejemplo se habla del Lerp, 1565 01:28:31,280 --> 01:28:33,280 y en este caso del Smooth Damp. 1566 01:28:33,280 --> 01:28:35,280 Aquí un poco ya se ve 1567 01:28:35,280 --> 01:28:37,280 cómo se aplicaría un ejemplo. 1568 01:28:37,280 --> 01:28:39,280 Pero vamos a hacerlo 1569 01:28:39,280 --> 01:28:41,280 en base a este ejemplo. 1570 01:28:43,280 --> 01:28:45,280 Estos son los scripts 1571 01:28:45,280 --> 01:28:47,280 y tenemos el de la 1572 01:28:47,280 --> 01:28:49,280 cámara que había generado durante la 1573 01:28:49,280 --> 01:28:51,280 tutoría. Aquí está. Lo vuelvo a poner. 1574 01:28:55,280 --> 01:28:57,280 Ahora mismo, la cámara 1575 01:28:57,280 --> 01:28:59,280 en todo momento está yendo 1576 01:28:59,280 --> 01:29:01,280 a donde esté el objeto que sigue 1577 01:29:01,280 --> 01:29:03,280 con este offset que estamos indicando aquí. 1578 01:29:05,280 --> 01:29:07,280 ¿Más o menos me seguís? 1579 01:29:07,280 --> 01:29:09,280 ¿Qué es lo que he declarado aquí? ¿Este vector 3? 1580 01:29:11,280 --> 01:29:13,280 Una cosa que se 1581 01:29:13,280 --> 01:29:15,280 habla en el tema es que, por si acaso, 1582 01:29:15,280 --> 01:29:17,280 un vector 3 1583 01:29:17,280 --> 01:29:19,280 cuando se declara... 1584 01:29:19,280 --> 01:29:21,280 Lo estoy declarando mal y esto va a dar fallo. 1585 01:29:21,280 --> 01:29:23,280 Pero cuando tenemos un vector 3 1586 01:29:23,280 --> 01:29:25,280 que se descompone las tres dimensiones... 1587 01:29:25,280 --> 01:29:27,280 Bueno, aquí me ha escrito lo que quería. 1588 01:29:27,280 --> 01:29:29,280 X, Y y Z. 1589 01:29:29,280 --> 01:29:31,280 Estos deberían ser valores. 1590 01:29:31,280 --> 01:29:33,280 Tú tienes un valor 1591 01:29:33,280 --> 01:29:35,280 de cada uno de esos 1592 01:29:35,280 --> 01:29:37,280 vectores que puede ser una variable. 1593 01:29:37,280 --> 01:29:39,280 Como en este caso es cada uno de los ejes 1594 01:29:39,280 --> 01:29:41,280 que está cogiendo el valor. 1595 01:29:41,280 --> 01:29:43,280 Y luego aquí podemos operar. 1596 01:29:43,280 --> 01:29:45,280 Podemos hacer que ese primer valor sea por 2. 1597 01:29:45,280 --> 01:29:47,280 Y este entre 1598 01:29:47,280 --> 01:29:49,280 2 también. 1599 01:29:49,280 --> 01:29:51,280 Y esto más 7. 1600 01:29:51,280 --> 01:29:53,280 Podemos hacer operaciones con cada uno de los ejes. 1601 01:29:53,280 --> 01:29:55,280 Incluso se pueden sumar dos 1602 01:29:55,280 --> 01:29:57,280 vectores. 1603 01:29:57,280 --> 01:29:59,280 Esto es importante. 1604 01:30:03,280 --> 01:30:05,280 Y el vector 3 1605 01:30:05,280 --> 01:30:07,280 es un tipo de variable que podemos tener. 1606 01:30:07,280 --> 01:30:09,280 Si tenemos un vector 3 1607 01:30:09,280 --> 01:30:11,280 que se llama... 1608 01:30:11,280 --> 01:30:13,280 Igual que hacíamos con las sumas 1609 01:30:13,280 --> 01:30:15,280 en las primeras clases 1610 01:30:15,280 --> 01:30:17,280 que hacía una variable 1611 01:30:17,280 --> 01:30:19,280 que era número 1 y número 2 1612 01:30:19,280 --> 01:30:21,280 y luego lo sumaba y daba un resultado 1613 01:30:21,280 --> 01:30:23,280 que se podía hacer 1614 01:30:23,280 --> 01:30:25,280 cuentas 1615 01:30:25,280 --> 01:30:27,280 con esos datos. 1616 01:30:27,280 --> 01:30:29,280 También se pueden hacer 1617 01:30:29,280 --> 01:30:31,280 cuentas y multiplicaciones con los vectores. 1618 01:30:31,280 --> 01:30:33,280 Si yo hago un vector 3 1619 01:30:33,280 --> 01:30:35,280 que lo primero es vector 1 1620 01:30:35,280 --> 01:30:37,280 y luego 1621 01:30:37,280 --> 01:30:39,280 un vector 3 1622 01:30:39,280 --> 01:30:41,280 que es vector B 1623 01:30:41,280 --> 01:30:43,280 lo voy a poner B y A 1624 01:30:43,280 --> 01:30:45,280 porque así no lo confundimos 1625 01:30:45,280 --> 01:30:47,280 con otros números. 1626 01:30:47,280 --> 01:30:49,280 Luego en el start 1627 01:30:49,280 --> 01:30:51,280 lo que tendremos que decirle 1628 01:30:51,280 --> 01:30:53,280 es cuánto vale cada uno 1629 01:30:53,280 --> 01:30:55,280 porque ahora este valdrá 0, 0, 0 1630 01:30:55,280 --> 01:30:57,280 y este 0, 0, 0. 1631 01:30:57,280 --> 01:30:59,280 Si vector A 1632 01:30:59,280 --> 01:31:01,280 le decimos que es igual a 1633 01:31:01,280 --> 01:31:03,280 y ojo, cada vez 1634 01:31:03,280 --> 01:31:05,280 que vayamos a introducir 1635 01:31:05,280 --> 01:31:07,280 valores de un vector 1636 01:31:07,280 --> 01:31:09,280 hay que poner esto de new vector 1637 01:31:09,280 --> 01:31:11,280 y le decimos que este vale 2 1638 01:31:13,280 --> 01:31:15,280 en su dimensión 1639 01:31:15,280 --> 01:31:17,280 primera o en su eje X. 1640 01:31:17,280 --> 01:31:19,280 Este 4 me lo estoy inventando 1641 01:31:19,280 --> 01:31:21,280 y esto 6. 1642 01:31:21,280 --> 01:31:23,280 Luego tenemos un vector B 1643 01:31:25,280 --> 01:31:27,280 que es igual a 1644 01:31:27,280 --> 01:31:29,280 new vector 3 1645 01:31:33,280 --> 01:31:35,280 7, 8 1646 01:31:35,280 --> 01:31:37,280 y 0. 1647 01:31:37,280 --> 01:31:39,280 Lo que se podrá hacer 1648 01:31:39,280 --> 01:31:41,280 será 1649 01:31:41,280 --> 01:31:43,280 otra variable 1650 01:31:43,280 --> 01:31:45,280 o mostrar en algún punto 1651 01:31:45,280 --> 01:31:47,280 el valor de 1652 01:31:47,280 --> 01:31:49,280 una suma o una resta. 1653 01:31:49,280 --> 01:31:51,280 Voy a hacer 1654 01:31:51,280 --> 01:31:53,280 de modo global otro vector 3 1655 01:31:53,280 --> 01:31:55,280 que es resultado 1656 01:31:55,280 --> 01:31:57,280 operación vectores 1657 01:31:57,280 --> 01:31:59,280 y aquí es donde 1658 01:31:59,280 --> 01:32:01,280 vamos a ir diciendo 1659 01:32:01,280 --> 01:32:03,280 qué queremos que ocurra con los datos 1660 01:32:03,280 --> 01:32:05,280 de esos vectores. Esto me sirve 1661 01:32:05,280 --> 01:32:07,280 para que veáis qué estoy haciendo aquí 1662 01:32:07,280 --> 01:32:09,280 en cada uno de los ejes, 1663 01:32:09,280 --> 01:32:11,280 qué se puede hacer de operaciones 1664 01:32:11,280 --> 01:32:13,280 cuando usamos vectores. 1665 01:32:13,280 --> 01:32:15,280 Si tenemos 1666 01:32:15,280 --> 01:32:17,280 esta variable y le decimos 1667 01:32:17,280 --> 01:32:19,280 que sea igual a 1668 01:32:19,280 --> 01:32:21,280 vector A 1669 01:32:21,280 --> 01:32:23,280 más 1670 01:32:23,280 --> 01:32:25,280 vector B 1671 01:32:25,280 --> 01:32:27,280 lo que está haciendo es 1672 01:32:27,280 --> 01:32:29,280 operar con matrices. 1673 01:32:29,280 --> 01:32:31,280 ¿Eso qué significa? 1674 01:32:31,280 --> 01:32:33,280 Que la dimensión 1 1675 01:32:33,280 --> 01:32:35,280 se suma con la dimensión 1, 1676 01:32:35,280 --> 01:32:37,280 con el primer índice de cada uno. 1677 01:32:37,280 --> 01:32:39,280 Esta se sumará con la segunda 1678 01:32:39,280 --> 01:32:41,280 y esta con su correspondiente. 1679 01:32:41,280 --> 01:32:43,280 Es decir, se hacen operaciones 1680 01:32:43,280 --> 01:32:45,280 digamos cruzadas 1681 01:32:45,280 --> 01:32:47,280 por cada una de las posiciones. 1682 01:32:47,280 --> 01:32:49,280 ¿Eso qué significa? Que si yo en un debug log 1683 01:32:49,280 --> 01:32:51,280 ahora mismo 1684 01:32:51,280 --> 01:32:53,280 le digo que me enseñe 1685 01:32:53,280 --> 01:32:55,280 el resultado 1686 01:32:55,280 --> 01:32:57,280 de la operación 1687 01:32:57,280 --> 01:32:59,280 creo que no tengo 1688 01:32:59,280 --> 01:33:01,280 otros debug logs, aunque 1689 01:33:01,280 --> 01:33:03,280 en el... A ver, un segundo, 1690 01:33:03,280 --> 01:33:05,280 perdonad, porque en el 1691 01:33:05,280 --> 01:33:07,280 de Francisco Javier había un debug log 1692 01:33:07,280 --> 01:33:09,280 que si no, no nos va a dejar ver bien 1693 01:33:09,280 --> 01:33:11,280 qué pasa. 1694 01:33:11,280 --> 01:33:13,280 ¿Dónde está? ¿Por qué no se me abre? 1695 01:33:13,280 --> 01:33:15,280 ¿Estará por aquí abierto? 1696 01:33:15,280 --> 01:33:17,280 Vale, en Francisco Javier, 1697 01:33:17,280 --> 01:33:19,280 en el otro. Tenía aquí un debug log 1698 01:33:19,280 --> 01:33:21,280 que enseñaba en todo momento 1699 01:33:21,280 --> 01:33:23,280 el desplazamiento de X, que ya no da igual. 1700 01:33:23,280 --> 01:33:25,280 Vuelvo aquí. Si hago un debug log 1701 01:33:25,280 --> 01:33:27,280 del resultado de operación vectores, 1702 01:33:27,280 --> 01:33:29,280 cuando yo le dé al play, 1703 01:33:31,280 --> 01:33:33,280 vais a ver que lo que me está devolviendo es 1704 01:33:33,280 --> 01:33:35,280 tres dimensiones, 1705 01:33:35,280 --> 01:33:37,280 un vector 3, 1706 01:33:37,280 --> 01:33:39,280 que vale 9, 12 y 6. 1707 01:33:39,280 --> 01:33:41,280 Y si os fijáis, vale 9, 12 y 6 1708 01:33:41,280 --> 01:33:43,280 porque lo que ha hecho 1709 01:33:43,280 --> 01:33:45,280 es sumar 2 más 7, 9, 1710 01:33:45,280 --> 01:33:47,280 4 más 8, 12, 1711 01:33:47,280 --> 01:33:49,280 y 6 más 0, 6. 1712 01:33:49,280 --> 01:33:51,280 ¿Veis que entre vectores 1713 01:33:51,280 --> 01:33:53,280 se puede ir operando? 1714 01:33:53,280 --> 01:33:55,280 Se pueden ir haciendo estas operaciones, o incluso 1715 01:33:55,280 --> 01:33:57,280 digo, no, esto es una resta. 1716 01:33:57,280 --> 01:33:59,280 El resultado ahora va a ser 1717 01:33:59,280 --> 01:34:01,280 menos 5, menos 4 1718 01:34:01,280 --> 01:34:03,280 y menos 0, 6. 1719 01:34:03,280 --> 01:34:05,280 Menos 5, menos 4, 6. 1720 01:34:05,280 --> 01:34:07,280 He guardado, 1721 01:34:07,280 --> 01:34:09,280 cuando le dé aquí al play, 1722 01:34:09,280 --> 01:34:11,280 menos 5, menos 4, 6. 1723 01:34:11,280 --> 01:34:13,280 Cuando vayamos usando 1724 01:34:13,280 --> 01:34:15,280 coordenadas, 1725 01:34:15,280 --> 01:34:17,280 o por ejemplo aquí que hemos cogido el 1726 01:34:17,280 --> 01:34:19,280 transporte de la nave, 1727 01:34:19,280 --> 01:34:21,280 lo que estamos haciendo es usar tres valores 1728 01:34:21,280 --> 01:34:23,280 guardados, empaquetados en uno, 1729 01:34:23,280 --> 01:34:25,280 y lo vamos 1730 01:34:25,280 --> 01:34:27,280 empleando. Por eso, a diferencia 1731 01:34:27,280 --> 01:34:29,280 de lo que pasa con un float, que es 1732 01:34:29,280 --> 01:34:31,280 solo un número, 1733 01:34:31,280 --> 01:34:33,280 además te lo pone de un color azul diferente 1734 01:34:33,280 --> 01:34:35,280 al de vector 3, que es otro tipo de variable, 1735 01:34:35,280 --> 01:34:37,280 si nos ponemos encima los vectores 1736 01:34:37,280 --> 01:34:39,280 3, al guardar en sí mismo 1737 01:34:39,280 --> 01:34:41,280 varios valores diferentes, 1738 01:34:41,280 --> 01:34:43,280 es una variable 1739 01:34:43,280 --> 01:34:45,280 multivalor, y por eso veréis que 1740 01:34:45,280 --> 01:34:47,280 se llama strut, es una estructura de diferentes 1741 01:34:47,280 --> 01:34:49,280 valores. Eso es lo que 1742 01:34:49,280 --> 01:34:51,280 implica que cada vez que queramos 1743 01:34:51,280 --> 01:34:53,280 definir los valores 1744 01:34:53,280 --> 01:34:55,280 de un vector 3, 1745 01:34:55,280 --> 01:34:57,280 hay que declarar una nueva estructura. 1746 01:34:57,280 --> 01:34:59,280 Es como una explicación, 1747 01:34:59,280 --> 01:35:01,280 quizá un informático me diga que no es 1748 01:35:01,280 --> 01:35:03,280 la ortodoxa, pero 1749 01:35:03,280 --> 01:35:05,280 la realidad es esa, que cuando queremos 1750 01:35:05,280 --> 01:35:07,280 asignar nuevos valores, 1751 01:35:07,280 --> 01:35:09,280 tenemos que hacer una nueva 1752 01:35:09,280 --> 01:35:11,280 instancia, 1753 01:35:11,280 --> 01:35:13,280 un nuevo vector 3 1754 01:35:13,280 --> 01:35:15,280 para que pueda 1755 01:35:15,280 --> 01:35:17,280 guardar varios valores 1756 01:35:17,280 --> 01:35:19,280 en sí mismo. 1757 01:35:19,280 --> 01:35:21,280 Entonces, lo que no se puede 1758 01:35:21,280 --> 01:35:23,280 hacer directamente, hay que usar otros 1759 01:35:23,280 --> 01:35:25,280 métodos, es hacer multiplicaciones 1760 01:35:25,280 --> 01:35:27,280 entre los valores de los vectores. 1761 01:35:27,280 --> 01:35:29,280 ¿Veis que da fallo? Igual pasa 1762 01:35:29,280 --> 01:35:31,280 con las divisiones. 1763 01:35:31,280 --> 01:35:33,280 ¿Vale? Entre dos valores 1764 01:35:33,280 --> 01:35:35,280 independientes, 4 entre 6, con dos 1765 01:35:35,280 --> 01:35:37,280 floats sí se podía. Esto ya lo 1766 01:35:37,280 --> 01:35:39,280 vimos, si no me equivoco. 1767 01:35:39,280 --> 01:35:41,280 Pero con vectores solo se pueden hacer 1768 01:35:41,280 --> 01:35:43,280 operaciones de suma o resta. 1769 01:35:43,280 --> 01:35:45,280 Lo que sí se puede hacer, para saber 1770 01:35:45,280 --> 01:35:47,280 qué limitaciones tiene, 1771 01:35:47,280 --> 01:35:49,280 es multiplicar todos los valores 1772 01:35:49,280 --> 01:35:51,280 de un 1773 01:35:51,280 --> 01:35:53,280 vector por 1774 01:35:53,280 --> 01:35:55,280 un número. En este caso, 1775 01:35:55,280 --> 01:35:57,280 vector A, es decir, estos tres valores 1776 01:35:57,280 --> 01:35:59,280 se multiplicarán por 2. 1777 01:35:59,280 --> 01:36:01,280 Si ahora vemos el resultado, 1778 01:36:01,280 --> 01:36:03,280 lo que va a valer es 4, 1779 01:36:03,280 --> 01:36:05,280 8 y 12. 1780 01:36:05,280 --> 01:36:07,280 Se puede hacer multiplicaciones 1781 01:36:07,280 --> 01:36:09,280 de vectores, por ejemplo aquí, por 2. 1782 01:36:09,280 --> 01:36:11,280 Y no hay ningún problema, 1783 01:36:11,280 --> 01:36:13,280 cogerá cada una de las tres dimensiones y lo multiplica 1784 01:36:13,280 --> 01:36:15,280 por 2. O incluso dividirlo 1785 01:36:15,280 --> 01:36:17,280 entre 2. Eso tampoco debería 1786 01:36:17,280 --> 01:36:19,280 dar problema. Lo que nos va a dejar es 1787 01:36:19,280 --> 01:36:21,280 multiplicar vectores 1788 01:36:21,280 --> 01:36:23,280 por sí mismo. Por ejemplo, aquí nos va 1789 01:36:23,280 --> 01:36:25,280 a dejar que hagamos esta multiplicación 1790 01:36:25,280 --> 01:36:27,280 entre este strut 1791 01:36:27,280 --> 01:36:29,280 que tenemos aquí y el strut de este vector 1792 01:36:29,280 --> 01:36:31,280 guardado en esta variable. 1793 01:36:31,280 --> 01:36:33,280 ¿Vale? Para que 1794 01:36:33,280 --> 01:36:35,280 sepáis, limitaciones. 1795 01:36:35,280 --> 01:36:37,280 Sí que es verdad que se pueden hacer multiplicaciones 1796 01:36:37,280 --> 01:36:39,280 entre vectores. Bueno, 1797 01:36:39,280 --> 01:36:41,280 os enseño que va a dar 4, 8, 12. 1798 01:36:41,280 --> 01:36:43,280 Le doy al play 1799 01:36:43,280 --> 01:36:45,280 y vais a ver qué es. 4, 8, 12. 1800 01:36:45,280 --> 01:36:47,280 ¿Vale? 1801 01:36:49,280 --> 01:36:51,280 Eso, que a veces 1802 01:36:51,280 --> 01:36:53,280 si queremos que todos los valores de un 1803 01:36:53,280 --> 01:36:55,280 vector se multipliquen 1804 01:36:55,280 --> 01:36:57,280 por algo o se dividan por algo, eso sí está permitido. 1805 01:36:57,280 --> 01:36:59,280 Lo que no se puede hacer de manera 1806 01:36:59,280 --> 01:37:01,280 directa es 1807 01:37:03,280 --> 01:37:05,280 hacer operaciones cruzadas 1808 01:37:05,280 --> 01:37:07,280 de multiplicación. Ahora 1809 01:37:07,280 --> 01:37:09,280 cedo la palabra, pero 1810 01:37:09,280 --> 01:37:11,280 sí que hay. A ver... 1811 01:37:11,280 --> 01:37:13,280 En vectores 1812 01:37:13,280 --> 01:37:15,280 hay un punto 1813 01:37:15,280 --> 01:37:17,280 que será en posicionar. 1814 01:37:17,280 --> 01:37:19,280 Estas cosas más o menos se... 1815 01:37:19,280 --> 01:37:21,280 A ver, espera... 1816 01:37:21,280 --> 01:37:23,280 A ver... 1817 01:37:23,280 --> 01:37:25,280 No me acuerdo exactamente en dónde era. 1818 01:37:25,280 --> 01:37:27,280 Vale, aquí. En el punto 1819 01:37:27,280 --> 01:37:29,280 2.3.1 habla de 1820 01:37:29,280 --> 01:37:31,280 métodos relacionados 1821 01:37:31,280 --> 01:37:33,280 o que operan con vectores. Y por ejemplo 1822 01:37:33,280 --> 01:37:35,280 hay uno que se llama escalar vectores. 1823 01:37:35,280 --> 01:37:37,280 Entonces pone, además de multiplicar 1824 01:37:37,280 --> 01:37:39,280 un vector por una cantidad, que es lo que acabamos de hacer, 1825 01:37:39,280 --> 01:37:41,280 lo que aumenta su longitud sin variar 1826 01:37:41,280 --> 01:37:43,280 su dirección. Es decir, si un vector 1827 01:37:43,280 --> 01:37:45,280 está orientándose hacia una 1828 01:37:45,280 --> 01:37:47,280 dirección, cuando lo multiplicamos 1829 01:37:47,280 --> 01:37:49,280 puede cambiar cuánto vale toda la dirección, 1830 01:37:49,280 --> 01:37:51,280 el vector en sí, 1831 01:37:51,280 --> 01:37:53,280 pero no cambia la dirección 1832 01:37:53,280 --> 01:37:55,280 relativa, porque como siempre va a ser 1833 01:37:55,280 --> 01:37:57,280 todos los números por 1834 01:37:57,280 --> 01:37:59,280 igual en una proporción, 1835 01:37:59,280 --> 01:38:01,280 no cambia esa dirección. 1836 01:38:01,280 --> 01:38:03,280 Pero se puede usar este método 1837 01:38:03,280 --> 01:38:05,280 para hacer multiplicación de vectores 1838 01:38:05,280 --> 01:38:07,280 usando este scale. 1839 01:38:07,280 --> 01:38:09,280 Que si nos metemos, pues 1840 01:38:09,280 --> 01:38:11,280 explica un poco qué. Si hacemos un... 1841 01:38:11,280 --> 01:38:13,280 Vamos, muy... 1842 01:38:13,280 --> 01:38:15,280 Lo hago aquí rápidamente. 1843 01:38:15,280 --> 01:38:17,280 Si yo pongo la operación scale... 1844 01:38:17,280 --> 01:38:19,280 A ver... 1845 01:38:19,280 --> 01:38:21,280 Un segundín... 1846 01:38:21,280 --> 01:38:23,280 Ah, vale, sí. 1847 01:38:23,280 --> 01:38:25,280 Hay que decir que es una operación de 1848 01:38:25,280 --> 01:38:27,280 la clase Vector3. 1849 01:38:27,280 --> 01:38:29,280 Yo digo que sea scale. 1850 01:38:29,280 --> 01:38:31,280 Es un poco más enrevesado. Y aquí sí 1851 01:38:31,280 --> 01:38:33,280 que meto los dos vectores 1852 01:38:33,280 --> 01:38:35,280 que quiero 1853 01:38:35,280 --> 01:38:37,280 que se multipliquen, ahora no va a dar 1854 01:38:37,280 --> 01:38:39,280 fallo y vais a ver que va a valer 1855 01:38:39,280 --> 01:38:41,280 14, 1856 01:38:41,280 --> 01:38:43,280 32 1857 01:38:43,280 --> 01:38:45,280 y 0. 1858 01:38:45,280 --> 01:38:47,280 14, 32 y 0. 1859 01:38:47,280 --> 01:38:49,280 Si guardo y muestro 1860 01:38:49,280 --> 01:38:51,280 el editor... 1861 01:38:51,280 --> 01:38:53,280 14, 1862 01:38:53,280 --> 01:38:55,280 32 y 0, exactamente. 1863 01:38:55,280 --> 01:38:57,280 Esto lo explico porque cuando 1864 01:38:57,280 --> 01:38:59,280 vayáis intentando ir 1865 01:39:01,280 --> 01:39:03,280 sacando resultados 1866 01:39:03,280 --> 01:39:05,280 y en algún momento lo que queréis es 1867 01:39:05,280 --> 01:39:07,280 sumar o restar valores 1868 01:39:07,280 --> 01:39:09,280 como hemos hecho aquí, que sepáis 1869 01:39:09,280 --> 01:39:11,280 qué limitaciones tienen los vectores. 1870 01:39:11,280 --> 01:39:13,280 Por eso lo cuento un poco. 1871 01:39:13,280 --> 01:39:15,280 ¿Alguien quería hablar? 1872 01:39:15,280 --> 01:39:17,280 Sí, una pregunta. 1873 01:39:17,280 --> 01:39:19,280 ¿Multiplicar un vector por un 1874 01:39:19,280 --> 01:39:21,280 número, si lo haces con 1875 01:39:21,280 --> 01:39:23,280 una variable entre un rango, por ejemplo, 1876 01:39:23,280 --> 01:39:25,280 en el caso de un videojuego, lo puedes poner 1877 01:39:25,280 --> 01:39:27,280 para que en el update 1878 01:39:27,280 --> 01:39:29,280 los enemigos se te posicionen en cualquier 1879 01:39:29,280 --> 01:39:31,280 posición diferente y te vaya cambiando? 1880 01:39:31,280 --> 01:39:33,280 Sí, claro. 1881 01:39:33,280 --> 01:39:35,280 Por ejemplo, una cosa 1882 01:39:35,280 --> 01:39:37,280 que no sé si ya has hecho 1883 01:39:37,280 --> 01:39:39,280 es que en el enunciado 1884 01:39:39,280 --> 01:39:41,280 se habla de que para ir 1885 01:39:41,280 --> 01:39:43,280 aleatorizando la posición en X 1886 01:39:43,280 --> 01:39:45,280 en la que salen los pivotes se usa 1887 01:39:45,280 --> 01:39:47,280 una aleatoria, un random 1888 01:39:47,280 --> 01:39:49,280 range. Tú si 1889 01:39:49,280 --> 01:39:51,280 básicamente 1890 01:39:51,280 --> 01:39:53,280 digamos, a ver... 1891 01:39:53,280 --> 01:39:55,280 Tienes aquí 1892 01:39:57,280 --> 01:39:59,280 cada uno de estos valores 1893 01:39:59,280 --> 01:40:01,280 y lo multiplicas por un valor que has 1894 01:40:01,280 --> 01:40:03,280 calculado previamente con un random range, 1895 01:40:03,280 --> 01:40:05,280 tú al multiplicarlo por ese valor se va a ir 1896 01:40:05,280 --> 01:40:07,280 ubicando en distintos sitios. 1897 01:40:07,280 --> 01:40:09,280 No sé si me estoy explicando. 1898 01:40:09,280 --> 01:40:11,280 Sí, eso me refería. 1899 01:40:11,280 --> 01:40:13,280 Entonces, es básicamente 1900 01:40:13,280 --> 01:40:15,280 lo que deberíais hacer en la tarea 1901 01:40:15,280 --> 01:40:17,280 con los pivotes. 1902 01:40:17,280 --> 01:40:19,280 Porque... 1903 01:40:19,280 --> 01:40:21,280 Mira, muy fácil. 1904 01:40:21,280 --> 01:40:23,280 Si yo declaro 1905 01:40:23,280 --> 01:40:25,280 una variable que es... 1906 01:40:25,280 --> 01:40:27,280 A ver... 1907 01:40:29,280 --> 01:40:31,280 Lo que pasa 1908 01:40:31,280 --> 01:40:33,280 es lo de multiplicarlo por un número, 1909 01:40:33,280 --> 01:40:35,280 ahora te digo cómo lo haría yo, 1910 01:40:35,280 --> 01:40:37,280 multiplicarlo por un número es lo que he dicho, 1911 01:40:37,280 --> 01:40:39,280 que te lo podrá poner más o menos lejos, 1912 01:40:39,280 --> 01:40:41,280 pero siempre va a ser en la misma 1913 01:40:41,280 --> 01:40:43,280 línea. No sé si me explico, porque si 1914 01:40:43,280 --> 01:40:45,280 todo lo multiplicas por dos, 1915 01:40:45,280 --> 01:40:47,280 al ser 1916 01:40:47,280 --> 01:40:49,280 siempre proporcionales 1917 01:40:49,280 --> 01:40:51,280 cada una de las multiplicaciones en cada uno de sus ejes, 1918 01:40:51,280 --> 01:40:53,280 al final, 1919 01:40:53,280 --> 01:40:55,280 tú lo que consigues es que a lo mejor 1920 01:40:55,280 --> 01:40:57,280 en vez de... Imagínate 1921 01:40:57,280 --> 01:40:59,280 que el punto de referencia es donde está la nave, el 00, 1922 01:40:59,280 --> 01:41:01,280 y hemos puesto aquí el punto, 1923 01:41:01,280 --> 01:41:03,280 el primer punto. Si esto lo multiplicamos 1924 01:41:03,280 --> 01:41:05,280 por dos, se va a este punto, 1925 01:41:05,280 --> 01:41:07,280 pero no va a cambiar aquí. 1926 01:41:07,280 --> 01:41:09,280 Se va a ir moviendo 1927 01:41:09,280 --> 01:41:11,280 en esta línea. 1928 01:41:11,280 --> 01:41:13,280 Daniel, perdona, es que me tengo que ir 1929 01:41:13,280 --> 01:41:15,280 porque estaba con el móvil 1930 01:41:15,280 --> 01:41:17,280 y es que se me está acabando la batería ya. 1931 01:41:17,280 --> 01:41:19,280 Pues nada, bueno, 1932 01:41:19,280 --> 01:41:21,280 acabo ya porque eres el último que queda, 1933 01:41:21,280 --> 01:41:23,280 pero 1934 01:41:23,280 --> 01:41:25,280 eso, sí que se podrían hacer ese tipo de 1935 01:41:25,280 --> 01:41:27,280 operaciones. 1936 01:41:27,280 --> 01:41:29,280 Bueno, muchas gracias. 1937 01:41:29,280 --> 01:41:31,280 Voy a explicar y lo dejo grabado lo del smooth 1938 01:41:31,280 --> 01:41:33,280 program y ya estaría. 1939 01:41:33,280 --> 01:41:35,280 Muchas gracias. 1940 01:41:37,280 --> 01:41:39,280 Bueno, continúo. 1941 01:41:39,280 --> 01:41:41,280 Una vez 1942 01:41:41,280 --> 01:41:43,280 hemos hablado de las operaciones que permiten 1943 01:41:43,280 --> 01:41:45,280 estos vectores, que esto ha sido un poco 1944 01:41:45,280 --> 01:41:47,280 por funciones 1945 01:41:47,280 --> 01:41:49,280 explicativas, 1946 01:41:49,280 --> 01:41:51,280 un poco para que sepáis 1947 01:41:51,280 --> 01:41:53,280 qué operaciones permiten estos 1948 01:41:53,280 --> 01:41:55,280 vectores, 1949 01:41:55,280 --> 01:41:57,280 los struts, etc. 1950 01:41:57,280 --> 01:41:59,280 Para conseguir que 1951 01:41:59,280 --> 01:42:01,280 la cámara o un objeto 1952 01:42:01,280 --> 01:42:03,280 se mueva con cierta 1953 01:42:03,280 --> 01:42:05,280 suavidad o que 1954 01:42:05,280 --> 01:42:07,280 haya un momento 1955 01:42:07,280 --> 01:42:09,280 en el que no es un movimiento directo 1956 01:42:09,280 --> 01:42:11,280 sino que hay cierto decalaje, 1957 01:42:11,280 --> 01:42:13,280 podemos usar lo que he comentado antes del 1958 01:42:13,280 --> 01:42:15,280 smooth damp. Para eso 1959 01:42:15,280 --> 01:42:17,280 lo que vamos a hacer 1960 01:42:17,280 --> 01:42:19,280 es, 1961 01:42:19,280 --> 01:42:21,280 ya que lo hemos hecho, 1962 01:42:21,280 --> 01:42:23,280 definir una variable 1963 01:42:23,280 --> 01:42:25,280 vector3, que por ejemplo 1964 01:42:25,280 --> 01:42:27,280 sea la posición del 1965 01:42:27,280 --> 01:42:29,280 target, donde está ubicado el target 1966 01:42:29,280 --> 01:42:31,280 en todo momento. 1967 01:42:31,280 --> 01:42:33,280 Cuando 1968 01:42:33,280 --> 01:42:35,280 arranquemos el 1969 01:42:35,280 --> 01:42:37,280 juego, pues estamos 1970 01:42:37,280 --> 01:42:39,280 cogiendo una posición del target, pero 1971 01:42:39,280 --> 01:42:41,280 con esta variable lo que vamos a decir 1972 01:42:41,280 --> 01:42:43,280 es dónde se está 1973 01:42:43,280 --> 01:42:45,280 moviendo en cada momento ese target. 1974 01:42:45,280 --> 01:42:47,280 Es decir, si 1975 01:42:47,280 --> 01:42:49,280 decimos 1976 01:42:49,280 --> 01:42:51,280 que donde queremos estar 1977 01:42:51,280 --> 01:42:53,280 es 1978 01:42:53,280 --> 01:42:55,280 donde 1979 01:42:55,280 --> 01:42:57,280 queremos ir yendo en cada momento 1980 01:42:57,280 --> 01:42:59,280 es esta X, 1981 01:42:59,280 --> 01:43:01,280 un poco lo que ya tenemos aquí. 1982 01:43:01,280 --> 01:43:03,280 Estos decalajes que tenemos aquí 1983 01:43:03,280 --> 01:43:05,280 ya asignados. 1984 01:43:05,280 --> 01:43:07,280 La posición que vamos a 1985 01:43:07,280 --> 01:43:09,280 querer ir al final, después 1986 01:43:09,280 --> 01:43:11,280 del movimiento, es esta posición que tenemos aquí. 1987 01:43:11,280 --> 01:43:13,280 Esta es la posición en la que queremos 1988 01:43:13,280 --> 01:43:15,280 acabar después de cada movimiento. 1989 01:43:15,280 --> 01:43:17,280 Es decir, que si la nave sube, 1990 01:43:17,280 --> 01:43:19,280 aquí se está calculando con el 1991 01:43:19,280 --> 01:43:21,280 decalaje y al final lo que queremos es que la cámara 1992 01:43:21,280 --> 01:43:23,280 termine estando aquí. Pero en ningún 1993 01:43:23,280 --> 01:43:25,280 momento le estamos diciendo que su posición 1994 01:43:25,280 --> 01:43:27,280 pasa a ser aquí. Simplemente estamos 1995 01:43:27,280 --> 01:43:29,280 guardando la posición de la nave 1996 01:43:29,280 --> 01:43:31,280 con el decalaje en esta variable. 1997 01:43:31,280 --> 01:43:33,280 Lo que vamos a hacer es 1998 01:43:33,280 --> 01:43:35,280 que posteriormente vamos a decir 1999 01:43:35,280 --> 01:43:37,280 que la posición de la cámara, que es la 2000 01:43:37,280 --> 01:43:39,280 que tiene este script, 2001 01:43:39,280 --> 01:43:41,280 sea 2002 01:43:41,280 --> 01:43:43,280 esta. 2003 01:43:43,280 --> 01:43:45,280 Si hiciéramos esto, lo que estamos haciendo 2004 01:43:45,280 --> 01:43:47,280 es exactamente lo mismo de antes, de decir 2005 01:43:47,280 --> 01:43:49,280 transform position es igual a esto. 2006 01:43:49,280 --> 01:43:51,280 Porque básicamente lo estamos 2007 01:43:51,280 --> 01:43:53,280 moviendo aquí. Lo que vamos a decir es 2008 01:43:53,280 --> 01:43:55,280 que esta posición 2009 01:43:55,280 --> 01:43:57,280 se haga 2010 01:43:57,280 --> 01:43:59,280 igual que hemos hecho antes con el 2011 01:43:59,280 --> 01:44:01,280 Vector3Scale, que lo 2012 01:44:01,280 --> 01:44:03,280 haga con un suavizado, con este 2013 01:44:03,280 --> 01:44:05,280 SmoothDamp. ¿Y cómo funciona el SmoothDamp? 2014 01:44:05,280 --> 01:44:07,280 Que lo podemos ver 2015 01:44:07,280 --> 01:44:09,280 como siempre 2016 01:44:09,280 --> 01:44:11,280 en el API, en los manuales 2017 01:44:11,280 --> 01:44:13,280 que tenemos. Si aquí ponemos 2018 01:44:13,280 --> 01:44:15,280 SmoothDamp, 2019 01:44:15,280 --> 01:44:17,280 nos va a dar información muy útil de cómo 2020 01:44:17,280 --> 01:44:19,280 se declara. Y esto es referido a una 2021 01:44:19,280 --> 01:44:21,280 posición, pero también puede ser a 2022 01:44:21,280 --> 01:44:23,280 números, que para eso habría que usar el matemático. 2023 01:44:23,280 --> 01:44:25,280 Un poco 2024 01:44:25,280 --> 01:44:27,280 la lógica de cada uno es el mismo. 2025 01:44:27,280 --> 01:44:29,280 Y si os fijáis, lo complicado que 2026 01:44:29,280 --> 01:44:31,280 tiene, que ahora lo 2027 01:44:31,280 --> 01:44:33,280 hacemos de una forma más amigable, 2028 01:44:33,280 --> 01:44:35,280 es que tiene bastantes argumentos. 2029 01:44:35,280 --> 01:44:37,280 Tiene un Vector3, 2030 01:44:37,280 --> 01:44:39,280 que es donde está 2031 01:44:39,280 --> 01:44:41,280 actualmente 2032 01:44:41,280 --> 01:44:43,280 el objeto, 2033 01:44:43,280 --> 01:44:45,280 y 2034 01:44:45,280 --> 01:44:47,280 un segundo Vector3, 2035 01:44:47,280 --> 01:44:49,280 que es hacia dónde debe 2036 01:44:49,280 --> 01:44:51,280 ir el objeto. 2037 01:44:51,280 --> 01:44:53,280 Aquí estamos diciendo que vaya de un sitio, 2038 01:44:53,280 --> 01:44:55,280 que es donde está ahora, a otro, que es el que tiene que ir. 2039 01:44:55,280 --> 01:44:57,280 Esos son los dos primeros 2040 01:44:57,280 --> 01:44:59,280 argumentos. Si yo 2041 01:44:59,280 --> 01:45:01,280 hablo paréntesis, 2042 01:45:01,280 --> 01:45:03,280 como suele pasar, y cuando estoy 2043 01:45:03,280 --> 01:45:05,280 declarando esto, 2044 01:45:05,280 --> 01:45:07,280 nos salen las sobrecargas, 2045 01:45:07,280 --> 01:45:09,280 vamos a recurrir al primero, que es el 2046 01:45:09,280 --> 01:45:11,280 que menos argumentos tiene. Nuevamente 2047 01:45:11,280 --> 01:45:13,280 tenemos un Vector3 de la posición 2048 01:45:13,280 --> 01:45:15,280 actual, 2049 01:45:15,280 --> 01:45:17,280 y un Vector3 de 2050 01:45:17,280 --> 01:45:19,280 a dónde quiero ir. Ahora seguimos con 2051 01:45:19,280 --> 01:45:21,280 estos dos, que son un poco más complejos. 2052 01:45:21,280 --> 01:45:23,280 Si aquí 2053 01:45:23,280 --> 01:45:25,280 lo que le decimos es que 2054 01:45:25,280 --> 01:45:27,280 coja el Transform Position, 2055 01:45:27,280 --> 01:45:29,280 es decir, cuando ponemos Transform 2056 01:45:29,280 --> 01:45:31,280 sin poner nada más, estamos 2057 01:45:31,280 --> 01:45:33,280 hablando del Transform del objeto que tiene. 2058 01:45:33,280 --> 01:45:35,280 Es decir, el Transform de la cámara. 2059 01:45:35,280 --> 01:45:37,280 Donde partes, 2060 01:45:37,280 --> 01:45:39,280 donde en cada momento esté 2061 01:45:39,280 --> 01:45:41,280 la cámara. 2062 01:45:41,280 --> 01:45:43,280 Incluso, yo que sé, 2063 01:45:43,280 --> 01:45:45,280 si lo queremos dejar aún más 2064 01:45:45,280 --> 01:45:47,280 claro, igual que tenemos aquí 2065 01:45:47,280 --> 01:45:49,280 un Vector3, que es la posición hacia la 2066 01:45:49,280 --> 01:45:51,280 que tiene que ir, esa posición 2067 01:45:51,280 --> 01:45:53,280 de destino, vamos a decir 2068 01:45:53,280 --> 01:45:55,280 otra que sea 2069 01:45:55,280 --> 01:45:57,280 la posición actual, CurrentPost, 2070 01:45:57,280 --> 01:45:59,280 por ejemplo. 2071 01:45:59,280 --> 01:46:01,280 Y vamos a decir, según empiece el juego, para que 2072 01:46:01,280 --> 01:46:03,280 no haya ningún problema, 2073 01:46:03,280 --> 01:46:05,280 que al 2074 01:46:05,280 --> 01:46:07,280 empezar el juego, 2075 01:46:07,280 --> 01:46:09,280 esta CurrentPost 2076 01:46:09,280 --> 01:46:11,280 sea igual a 2077 01:46:11,280 --> 01:46:13,280 TransformPosition. Es lo mismo 2078 01:46:13,280 --> 01:46:15,280 que antes. 2079 01:46:15,280 --> 01:46:17,280 En realidad, ahora, cuando empleemos 2080 01:46:17,280 --> 01:46:19,280 aquí 2081 01:46:19,280 --> 01:46:21,280 CurrentPost, 2082 01:46:21,280 --> 01:46:23,280 lo que estamos haciendo 2083 01:46:23,280 --> 01:46:25,280 es que estamos 2084 01:46:25,280 --> 01:46:27,280 remitiendo a la posición 2085 01:46:27,280 --> 01:46:29,280 en la que esté en ese momento la cámara. 2086 01:46:29,280 --> 01:46:31,280 Entonces, queremos 2087 01:46:31,280 --> 01:46:33,280 que de ese punto en el que empieza, 2088 01:46:33,280 --> 01:46:35,280 o en cada fotograma, cuando se vaya refrescando, 2089 01:46:35,280 --> 01:46:37,280 en el punto en el que va a ir guardándose 2090 01:46:37,280 --> 01:46:39,280 ese CurrentPost, que, ojo, 2091 01:46:39,280 --> 01:46:41,280 en algún momento tendremos que decir 2092 01:46:41,280 --> 01:46:43,280 cuándo se actualiza por la posición 2093 01:46:43,280 --> 01:46:45,280 de cada fotograma, porque si no, siempre va a estar 2094 01:46:45,280 --> 01:46:47,280 cogiendo la posición del comienzo, 2095 01:46:47,280 --> 01:46:49,280 del Start, en este caso. 2096 01:46:49,280 --> 01:46:51,280 Tenemos esa posición 2097 01:46:51,280 --> 01:46:53,280 en la que va estando en cada fotograma, 2098 01:46:53,280 --> 01:46:55,280 y luego 2099 01:46:55,280 --> 01:46:57,280 vamos a decirle que 2100 01:46:57,280 --> 01:46:59,280 tiene que ir a ese destino 2101 01:46:59,280 --> 01:47:01,280 que era el TargetPost. 2102 01:47:01,280 --> 01:47:03,280 Ahora mismo este 2103 01:47:03,280 --> 01:47:05,280 SmoothDAM sabe de dónde 2104 01:47:05,280 --> 01:47:07,280 está y a dónde tiene que ir. 2105 01:47:07,280 --> 01:47:09,280 Si 2106 01:47:09,280 --> 01:47:11,280 volvemos a los 2107 01:47:11,280 --> 01:47:13,280 cuatro, bueno, aquí me está 2108 01:47:13,280 --> 01:47:15,280 poniendo 2109 01:47:15,280 --> 01:47:17,280 los argumentos 2110 01:47:17,280 --> 01:47:19,280 del más largo, si usáramos todos, 2111 01:47:19,280 --> 01:47:21,280 pero si empezamos, tenemos 2112 01:47:21,280 --> 01:47:23,280 el actual, el Target, luego la velocidad 2113 01:47:23,280 --> 01:47:25,280 actual, es decir, 2114 01:47:25,280 --> 01:47:27,280 se puede hacer que ya haya una inercia 2115 01:47:27,280 --> 01:47:29,280 en ese 2116 01:47:29,280 --> 01:47:31,280 suavizado de movimiento. 2117 01:47:31,280 --> 01:47:33,280 Esto es más complejo 2118 01:47:33,280 --> 01:47:35,280 y tiene que ver además con 2119 01:47:35,280 --> 01:47:37,280 las físicas y con movimientos heredados. 2120 01:47:37,280 --> 01:47:39,280 Si os fijáis, tiene como una 2121 01:47:39,280 --> 01:47:41,280 referencia. Cuando pone aquí una palabra 2122 01:47:41,280 --> 01:47:43,280 delante del tipo de variable como referencia, 2123 01:47:43,280 --> 01:47:45,280 esto lo veremos también en los 2124 01:47:45,280 --> 01:47:47,280 Raycast, más adelante, 2125 01:47:47,280 --> 01:47:49,280 significa que hay que escribir esta palabra. 2126 01:47:49,280 --> 01:47:51,280 Si vamos al ejemplo, por ejemplo, 2127 01:47:51,280 --> 01:47:53,280 vais a ver que hay una posición de partida, 2128 01:47:53,280 --> 01:47:55,280 una posición de destino, 2129 01:47:55,280 --> 01:47:57,280 este es otro ejemplo de SmoothDAM, 2130 01:47:57,280 --> 01:47:59,280 y aquí hay una referencia de la 2131 01:47:59,280 --> 01:48:01,280 Velocity, que además es un vector cero. 2132 01:48:01,280 --> 01:48:03,280 Normalmente no vamos a querer que haya una 2133 01:48:03,280 --> 01:48:05,280 inercia ya en el movimiento porque si no, 2134 01:48:05,280 --> 01:48:07,280 la cámara en este caso estaría todo el rato 2135 01:48:07,280 --> 01:48:09,280 dando tirones intentando ir hacia un lado. 2136 01:48:09,280 --> 01:48:11,280 Por eso, aquí lo han igualado 2137 01:48:11,280 --> 01:48:13,280 a cero, un vector 3-0 que es 0-0-0 2138 01:48:13,280 --> 01:48:15,280 y no añade ningún tipo de velocidad. 2139 01:48:15,280 --> 01:48:17,280 Sé que no aporta mucho 2140 01:48:17,280 --> 01:48:19,280 esto, que parece que no aporta mucho, pero es 2141 01:48:19,280 --> 01:48:21,280 obligatorio para este método. Entonces, siempre 2142 01:48:21,280 --> 01:48:23,280 hay que contar con que hay que poner un ref 2143 01:48:23,280 --> 01:48:25,280 como tercer argumento, 2144 01:48:25,280 --> 01:48:27,280 y aquí meter, podríamos incluso 2145 01:48:27,280 --> 01:48:29,280 hacer directamente que sea un newVector3 2146 01:48:31,280 --> 01:48:35,280 0-0-0. 2147 01:48:35,280 --> 01:48:37,280 O lo que es 2148 01:48:37,280 --> 01:48:39,280 lo mismo, 2149 01:48:39,280 --> 01:48:41,280 aquí no lo está cogiendo bien, 2150 01:48:41,280 --> 01:48:43,280 newVector3, 2151 01:48:43,280 --> 01:48:45,280 porque la referencia no permite que sea 2152 01:48:45,280 --> 01:48:47,280 una que no se pase. 2153 01:48:49,280 --> 01:48:51,280 Y aquí este fallo 2154 01:48:51,280 --> 01:48:53,280 es porque, y vuelvo al 2155 01:48:53,280 --> 01:48:55,280 lector de fallos, 2156 01:48:55,280 --> 01:48:57,280 da fallo porque todavía no hemos terminado 2157 01:48:57,280 --> 01:48:59,280 de escribir esto. Un segundo, 2158 01:48:59,280 --> 01:49:01,280 que voy a terminar de... 2159 01:49:01,280 --> 01:49:03,280 Si pongo 5 aquí 2160 01:49:03,280 --> 01:49:05,280 y cierro, 2161 01:49:05,280 --> 01:49:07,280 da fallo. 2162 01:49:07,280 --> 01:49:09,280 La velocidad, 2163 01:49:09,280 --> 01:49:11,280 la referencia, 2164 01:49:11,280 --> 01:49:13,280 vector 3-0-0-0, 2165 01:49:13,280 --> 01:49:15,280 vector 3-0. 2166 01:49:15,280 --> 01:49:17,280 Un segundillo... 2167 01:49:17,280 --> 01:49:19,280 Da fallo también. 2168 01:49:19,280 --> 01:49:21,280 En la referencia, como bien dice, 2169 01:49:21,280 --> 01:49:23,280 pensaba que sí se podía, pero cosas que... 2170 01:49:23,280 --> 01:49:25,280 La referencia, 2171 01:49:25,280 --> 01:49:27,280 al final, necesita 2172 01:49:27,280 --> 01:49:29,280 referencia a una variable, entonces hay que 2173 01:49:29,280 --> 01:49:31,280 introducirla como una variable. 2174 01:49:31,280 --> 01:49:33,280 Lo que vamos a hacer es 2175 01:49:33,280 --> 01:49:35,280 que... 2176 01:49:35,280 --> 01:49:37,280 Un segundo... 2177 01:49:37,280 --> 01:49:39,280 Vamos a crear otro vector 2178 01:49:39,280 --> 01:49:41,280 3, 2179 01:49:41,280 --> 01:49:43,280 que nos va a servir para esa velocidad, 2180 01:49:43,280 --> 01:49:45,280 o esa velocity, 2181 01:49:45,280 --> 01:49:47,280 de referencia 2182 01:49:47,280 --> 01:49:49,280 de la inercia. 2183 01:49:49,280 --> 01:49:51,280 Y aquí es donde vamos a decir 2184 01:49:51,280 --> 01:49:53,280 que este velocity, ahora cuando lo 2185 01:49:53,280 --> 01:49:55,280 escriba no debería dar 2186 01:49:55,280 --> 01:49:57,280 conflicto. Como por defecto es 2187 01:49:57,280 --> 01:49:59,280 un vector 0-0-0, no va a 2188 01:49:59,280 --> 01:50:01,280 tener inercia heredada. Aquí sí que se 2189 01:50:01,280 --> 01:50:03,280 podría declarar en algún momento que 2190 01:50:03,280 --> 01:50:05,280 hubiera un new vector 2191 01:50:05,280 --> 01:50:07,280 3. ¿Veis que a veces donde colocamos 2192 01:50:07,280 --> 01:50:09,280 las cosas nos da 2193 01:50:09,280 --> 01:50:11,280 bastantes problemas? 2194 01:50:11,280 --> 01:50:13,280 Y aquí sí que, en principio, debería 2195 01:50:13,280 --> 01:50:15,280 funcionar sin problema. 2196 01:50:15,280 --> 01:50:17,280 Y ojo, esto es lo mismo 2197 01:50:17,280 --> 01:50:19,280 sin el new, cuando lo hacemos de este 2198 01:50:19,280 --> 01:50:21,280 modo. Esto es lo mismo que 2199 01:50:21,280 --> 01:50:23,280 escribir las formas simplificadas 2200 01:50:23,280 --> 01:50:25,280 que hay de... 2201 01:50:25,280 --> 01:50:27,280 como el vector 3 forward, etc. 2202 01:50:27,280 --> 01:50:29,280 Como ya está construido ese vector, no 2203 01:50:29,280 --> 01:50:31,280 hace falta hacer un new delante. 2204 01:50:31,280 --> 01:50:33,280 Ya son un 2205 01:50:33,280 --> 01:50:35,280 tipo de vector. 2206 01:50:35,280 --> 01:50:37,280 Y aquí pone, bueno, atajo para escribir vector 2207 01:50:37,280 --> 01:50:39,280 3-0-0-0. 2208 01:50:39,280 --> 01:50:41,280 Normalmente, a menos que 2209 01:50:41,280 --> 01:50:43,280 sepamos por qué queremos darle una 2210 01:50:43,280 --> 01:50:45,280 inercia, en esta referencia habrá que meter 2211 01:50:45,280 --> 01:50:47,280 una variable que valga 2212 01:50:47,280 --> 01:50:49,280 0-0-0. 2213 01:50:49,280 --> 01:50:51,280 Y luego el último valor 2214 01:50:51,280 --> 01:50:53,280 del smooth damp, 2215 01:50:53,280 --> 01:50:55,280 si volvemos aquí, 2216 01:50:55,280 --> 01:50:57,280 tenemos la current velocity de referencia, 2217 01:50:57,280 --> 01:50:59,280 la inercia, 2218 01:50:59,280 --> 01:51:01,280 el tiempo de suavizado. Y esto 2219 01:51:01,280 --> 01:51:03,280 es el momento clave 2220 01:51:03,280 --> 01:51:05,280 para definir 2221 01:51:05,280 --> 01:51:07,280 lo que estamos buscando en todo momento, que es 2222 01:51:07,280 --> 01:51:09,280 entre esta posición y esta, 2223 01:51:09,280 --> 01:51:11,280 este valor, pues es la inercia que estamos 2224 01:51:11,280 --> 01:51:13,280 obviando, cuánto tiempo tiene que 2225 01:51:13,280 --> 01:51:15,280 tardar. Aquí es donde le podemos decir 2226 01:51:15,280 --> 01:51:17,280 el tiempo que tarda entre ir 2227 01:51:17,280 --> 01:51:19,280 de la primera a la segunda posición. 2228 01:51:19,280 --> 01:51:21,280 Entonces, 2229 01:51:21,280 --> 01:51:23,280 como siempre, vamos a intentar ser 2230 01:51:23,280 --> 01:51:25,280 más elegantes y vamos a decir 2231 01:51:25,280 --> 01:51:27,280 que ese tiempo lo guardamos 2232 01:51:27,280 --> 01:51:29,280 en 2233 01:51:29,280 --> 01:51:31,280 una variable llamada tiempo suavizado 2234 01:51:31,280 --> 01:51:33,280 o smooth time, si lo sigo 2235 01:51:33,280 --> 01:51:35,280 escribiendo en inglés. 2236 01:51:35,280 --> 01:51:37,280 Y le digo, pues esto yo que sé que 2237 01:51:37,280 --> 01:51:39,280 sea un 0,3. Ahora vemos 2238 01:51:39,280 --> 01:51:41,280 qué valor. Lo podríamos serializar 2239 01:51:41,280 --> 01:51:43,280 para ir comprobando, como hemos hecho antes. 2240 01:51:43,280 --> 01:51:45,280 Pero si aquí yo pongo tiempo 2241 01:51:45,280 --> 01:51:47,280 suavizado, que remite a ese valor que 2242 01:51:47,280 --> 01:51:49,280 acabamos de hacer, ya estamos diciéndole 2243 01:51:49,280 --> 01:51:51,280 entre este valor y este cuánto tiempo 2244 01:51:51,280 --> 01:51:53,280 debería tardar. 2245 01:51:53,280 --> 01:51:55,280 Esto es ir probando valores y tendrá 2246 01:51:55,280 --> 01:51:57,280 un suavizado o menos. 2247 01:51:57,280 --> 01:51:59,280 Ahora vamos a ver. 2248 01:51:59,280 --> 01:52:01,280 ¿Qué falta en este momento? 2249 01:52:01,280 --> 01:52:03,280 Pues que 2250 01:52:03,280 --> 01:52:05,280 el targetPos en cada 2251 01:52:05,280 --> 01:52:07,280 fotograma se está recalculando en base 2252 01:52:07,280 --> 01:52:09,280 a las posiciones. 2253 01:52:09,280 --> 01:52:11,280 Cuando llega aquí, el targetPosition 2254 01:52:11,280 --> 01:52:13,280 está cogiendo la posición 2255 01:52:13,280 --> 01:52:15,280 de este transform y lo está recalculando. 2256 01:52:15,280 --> 01:52:17,280 Pero si os fijáis, en ningún momento 2257 01:52:17,280 --> 01:52:19,280 se está actualizando 2258 01:52:19,280 --> 01:52:21,280 este currenPos, que al principio 2259 01:52:21,280 --> 01:52:23,280 en el primer fotograma coge la posición 2260 01:52:23,280 --> 01:52:25,280 donde esté la cámara, pero 2261 01:52:25,280 --> 01:52:27,280 aquí, claro, si siempre decimos 2262 01:52:27,280 --> 01:52:29,280 que hay que ir de esta posición de la cámara 2263 01:52:29,280 --> 01:52:31,280 a donde esté 2264 01:52:31,280 --> 01:52:33,280 el objeto que sigue, 2265 01:52:33,280 --> 01:52:35,280 pues siempre va a estar intentando partir 2266 01:52:35,280 --> 01:52:37,280 del mismo sitio. No, lo que hay que 2267 01:52:37,280 --> 01:52:39,280 hacer es decir 2268 01:52:39,280 --> 01:52:41,280 en cada fotograma también 2269 01:52:41,280 --> 01:52:43,280 que esta 2270 01:52:43,280 --> 01:52:45,280 posición actual, este 2271 01:52:45,280 --> 01:52:47,280 punto de partida, en cada cálculo 2272 01:52:47,280 --> 01:52:49,280 del Smooth Dam, 2273 01:52:49,280 --> 01:52:51,280 lo haga en relación a 2274 01:52:51,280 --> 01:52:53,280 en la posición que esté en cada 2275 01:52:53,280 --> 01:52:55,280 fotograma el objeto. Es decir, 2276 01:52:55,280 --> 01:52:57,280 que aquí hemos calculado 2277 01:52:57,280 --> 01:52:59,280 con el decalaje hacia dónde 2278 01:52:59,280 --> 01:53:01,280 tenemos que ir, en referencia al otro objeto 2279 01:53:01,280 --> 01:53:03,280 que estamos metiendo 2280 01:53:03,280 --> 01:53:05,280 por el editor, en este caso la nave, 2281 01:53:05,280 --> 01:53:07,280 y aquí 2282 01:53:07,280 --> 01:53:09,280 la posición del objeto va a ser la 2283 01:53:09,280 --> 01:53:11,280 que devuelva este Smooth Dam que está 2284 01:53:11,280 --> 01:53:13,280 circulando entre dónde está 2285 01:53:13,280 --> 01:53:15,280 el objeto originalmente y esta posición. 2286 01:53:15,280 --> 01:53:17,280 Pero claro, para que se vaya 2287 01:53:17,280 --> 01:53:19,280 variando esta posición, como ya he dicho, 2288 01:53:19,280 --> 01:53:21,280 en cada fotograma también habrá que decir 2289 01:53:21,280 --> 01:53:23,280 yo voy a partir 2290 01:53:23,280 --> 01:53:25,280 siempre de la posición en que esté en cada fotograma. 2291 01:53:25,280 --> 01:53:27,280 Por tanto, hay que 2292 01:53:27,280 --> 01:53:29,280 trasladar esta posición 2293 01:53:29,280 --> 01:53:31,280 actual y guardarla en la variable 2294 01:53:31,280 --> 01:53:33,280 para que cuando vuelva a hacer otra vez el bucle del 2295 01:53:33,280 --> 01:53:35,280 Update, al meterse aquí, 2296 01:53:35,280 --> 01:53:37,280 el Transform Position coja 2297 01:53:37,280 --> 01:53:39,280 desde el punto de partida. 2298 01:53:39,280 --> 01:53:41,280 Por eso era 2299 01:53:41,280 --> 01:53:43,280 relevante 2300 01:53:43,280 --> 01:53:45,280 distinguir este Transform Position 2301 01:53:45,280 --> 01:53:47,280 aquí con el de 2302 01:53:47,280 --> 01:53:49,280 aquí. Realmente 2303 01:53:49,280 --> 01:53:51,280 se podría ir haciendo 2304 01:53:51,280 --> 01:53:53,280 y se podría ir refrescando si el Transform Position 2305 01:53:53,280 --> 01:53:55,280 en todo momento 2306 01:53:55,280 --> 01:53:57,280 se va actualizando. 2307 01:53:57,280 --> 01:53:59,280 Pero puede 2308 01:53:59,280 --> 01:54:01,280 generar conflictos si hacemos esto. 2309 01:54:01,280 --> 01:54:03,280 Como está cogiendo su propia posición 2310 01:54:03,280 --> 01:54:05,280 y la está guardando dentro de la variable, 2311 01:54:05,280 --> 01:54:07,280 se va realimentando y 2312 01:54:07,280 --> 01:54:09,280 funcionaría. Pero 2313 01:54:09,280 --> 01:54:11,280 en ciertos momentos nos puede dar conflictos 2314 01:54:11,280 --> 01:54:13,280 el que no esté 2315 01:54:13,280 --> 01:54:15,280 diferenciado 2316 01:54:15,280 --> 01:54:17,280 ambos conceptos. ¿Qué hemos 2317 01:54:17,280 --> 01:54:19,280 conseguido con esto? Que ahora cuando 2318 01:54:19,280 --> 01:54:21,280 vayamos al juego, si yo le doy al Play, 2319 01:54:21,280 --> 01:54:23,280 ¿vale? Veis 2320 01:54:23,280 --> 01:54:25,280 que hasta que se ubica donde está 2321 01:54:25,280 --> 01:54:27,280 la cámara, da 2322 01:54:27,280 --> 01:54:29,280 este ligero bote. Vamos, que no es bote, 2323 01:54:29,280 --> 01:54:31,280 es que está suavizado. ¿Cuánto 2324 01:54:31,280 --> 01:54:33,280 tarda en ir de una posición a otra? 2325 01:54:33,280 --> 01:54:35,280 Dependerá de 2326 01:54:35,280 --> 01:54:37,280 el Smooth, del tiempo 2327 01:54:37,280 --> 01:54:39,280 suavizado que le pongamos. Si 2328 01:54:39,280 --> 01:54:41,280 por ejemplo ponemos 5 segundos, 2329 01:54:41,280 --> 01:54:43,280 vais a ver que 2330 01:54:43,280 --> 01:54:45,280 esta variación 2331 01:54:45,280 --> 01:54:47,280 tarda bastante más. 2332 01:54:47,280 --> 01:54:49,280 Dejo de mover y ahora 2333 01:54:49,280 --> 01:54:51,280 va otra vez ahí hasta que llegue 2334 01:54:51,280 --> 01:54:53,280 a la posición destino 2335 01:54:53,280 --> 01:54:55,280 con decalaje que tiene que llegar y ahí para. 2336 01:54:55,280 --> 01:54:57,280 No estoy moviendo nada. Ahora subo, subo 2337 01:54:57,280 --> 01:54:59,280 y dejo de pulsar. 2338 01:54:59,280 --> 01:55:01,280 El decalaje, el tiempo de suavizado 2339 01:55:01,280 --> 01:55:03,280 tarda. A veces es demasiado, 2340 01:55:03,280 --> 01:55:05,280 es excesivo, por eso 2341 01:55:05,280 --> 01:55:07,280 a lo mejor un valor de 0.5 2342 01:55:07,280 --> 01:55:09,280 por ejemplo, nos permite 2343 01:55:09,280 --> 01:55:11,280 hacer estos suavizados. Que ya os digo 2344 01:55:11,280 --> 01:55:13,280 que en la rotación también podríamos 2345 01:55:13,280 --> 01:55:15,280 trabajar con Smooth Dumps, 2346 01:55:15,280 --> 01:55:17,280 matemáticos, 2347 01:55:17,280 --> 01:55:19,280 porque serían 2348 01:55:19,280 --> 01:55:21,280 en uno de los ejes, aunque ya hemos visto que 2349 01:55:21,280 --> 01:55:23,280 puede dar problemas 2350 01:55:23,280 --> 01:55:25,280 trabajar con los ángulos Euler 2351 01:55:25,280 --> 01:55:27,280 para ciertas cosas, ¿vale? Y lo que 2352 01:55:27,280 --> 01:55:29,280 conseguimos es eso. Mira, paso el suelo y hasta que 2353 01:55:29,280 --> 01:55:31,280 lo traspasa no es instantáneo. 2354 01:55:31,280 --> 01:55:33,280 Es una suavización, 2355 01:55:33,280 --> 01:55:35,280 no sé si se diría así, 2356 01:55:35,280 --> 01:55:37,280 un proceso de suavizado 2357 01:55:37,280 --> 01:55:39,280 del movimiento. 2358 01:55:39,280 --> 01:55:41,280 Con esto se explica el Smooth Dump que como 2359 01:55:41,280 --> 01:55:43,280 os he visto antes, 2360 01:55:43,280 --> 01:55:45,280 esto sirve 2361 01:55:45,280 --> 01:55:47,280 para variables, 2362 01:55:47,280 --> 01:55:49,280 para struct de vector3, 2363 01:55:49,280 --> 01:55:51,280 pero hay otro que es 2364 01:55:51,280 --> 01:55:53,280 para hacer exactamente lo mismo 2365 01:55:53,280 --> 01:55:55,280 pero con valores float, 2366 01:55:55,280 --> 01:55:57,280 con un 2367 01:55:57,280 --> 01:55:59,280 solo 2368 01:55:59,280 --> 01:56:01,280 valor. 2369 01:56:01,280 --> 01:56:03,280 Y si veis el ejemplo que hay aquí, por ejemplo, 2370 01:56:03,280 --> 01:56:05,280 dice float new position y hace 2371 01:56:05,280 --> 01:56:07,280 Smooth Dump de valor 2372 01:56:07,280 --> 01:56:09,280 del eje Y y el eje Y. 2373 01:56:09,280 --> 01:56:11,280 Y luego cuando vamos al vector3 solo 2374 01:56:11,280 --> 01:56:13,280 está usando el Smooth Dump 2375 01:56:13,280 --> 01:56:15,280 en esa 2376 01:56:15,280 --> 01:56:17,280 posición, en ese índice 2377 01:56:17,280 --> 01:56:19,280 del vector. 2378 01:56:19,280 --> 01:56:21,280 La rotación, por ejemplo, si el suavizado 2379 01:56:21,280 --> 01:56:23,280 solo lo quisiéramos en el eje 2380 01:56:23,280 --> 01:56:25,280 Z como estábamos buscando antes, 2381 01:56:25,280 --> 01:56:27,280 para el suavizado, se podrían 2382 01:56:27,280 --> 01:56:29,280 usar también Smooth Dumps. 2383 01:56:29,280 --> 01:56:31,280 Habría que dar alguna vuelta 2384 01:56:31,280 --> 01:56:33,280 pero el funcionamiento es un poco 2385 01:56:33,280 --> 01:56:35,280 similar. 2386 01:56:35,280 --> 01:56:37,280 Y nada más. 2387 01:56:37,280 --> 01:56:39,280 A ver, creo que ya no estáis ninguno, 2388 01:56:39,280 --> 01:56:41,280 que os habéis marchado, etc. 2389 01:56:41,280 --> 01:56:43,280 Sí, vale. 2390 01:56:43,280 --> 01:56:45,280 Lo dejo aquí grabado y muchas gracias. 2391 01:56:45,280 --> 01:56:47,280 Es un poco enrevesado todo, 2392 01:56:47,280 --> 01:56:49,280 lo importante es que os vayáis poniendo con la 2393 01:56:49,280 --> 01:56:51,280 tarea e ir haciendo poco a poco 2394 01:56:51,280 --> 01:56:53,280 los distintos hitos que se van pidiendo. 2395 01:56:53,280 --> 01:56:55,280 Las tareas son largas 2396 01:56:55,280 --> 01:56:57,280 para que 2397 01:56:57,280 --> 01:56:59,280 vayáis 2398 01:56:59,280 --> 01:57:01,280 practicando cada una de las cosas, 2399 01:57:01,280 --> 01:57:03,280 que son muchas. 2400 01:57:03,280 --> 01:57:05,280 A veces si os bloqueáis en una, 2401 01:57:05,280 --> 01:57:07,280 seguramente otras las podáis 2402 01:57:07,280 --> 01:57:09,280 ir avanzando en lo que os bloqueéis. 2403 01:57:09,280 --> 01:57:11,280 Me podéis escribir en el foro, etc. 2404 01:57:13,280 --> 01:57:15,280 Voy a retrasar la entrega de esta práctica 2405 01:57:15,280 --> 01:57:17,280 una semana, yo creo. 2406 01:57:17,280 --> 01:57:19,280 Los que ya la tengáis me la podéis 2407 01:57:19,280 --> 01:57:21,280 entregar y poneros con la siguiente. 2408 01:57:21,280 --> 01:57:23,280 Pero bueno, 2409 01:57:23,280 --> 01:57:25,280 si alguno le ayuda a tener un poquito más 2410 01:57:25,280 --> 01:57:27,280 de margen, dado que la semana que viene no voy a poder 2411 01:57:27,280 --> 01:57:29,280 dedicarlo mucho a correcciones, 2412 01:57:29,280 --> 01:57:31,280 pues 2413 01:57:31,280 --> 01:57:33,280 nada, doy ese margen. 2414 01:57:33,280 --> 01:57:35,280 Nada, muchas gracias 2415 01:57:35,280 --> 01:57:37,280 y 2416 01:57:37,280 --> 01:57:39,280 un saludo.