1 00:00:17,010 --> 00:00:22,750 Hay muchas formas de mover un objeto. Vamos a ver hoy la más sencilla porque me permite introducir otros conceptos como el de vectores 2 00:00:22,750 --> 00:00:29,969 o el del componente transform. Pero insisto, a lo largo del curso veremos muchísimas formas en las que podemos 3 00:00:29,969 --> 00:00:34,530 desplazar un objeto que al fin y al cabo es una parte fundamental en la creación de videojuegos. 4 00:00:35,149 --> 00:00:43,109 Para ello, me voy a ir a mi Unity. Tengo aquí una escena vacía. Voy a crear un objeto 3D. 5 00:00:43,109 --> 00:00:49,710 Pues vamos a desplazarlo, pero antes de desplazarlo quiero que nos fijemos que aquí en la ventana del inspector 6 00:00:49,710 --> 00:00:55,990 tenemos un componente que es el de Transform. Este componente es peculiar primero porque todos los objetos lo tendrán 7 00:00:55,990 --> 00:01:01,670 y no lo podemos quitar ni siquiera desactivar porque es el que ubica este objeto, este GameObject en el espacio tridimensional 8 00:01:01,670 --> 00:01:09,569 y tiene otra peculiaridad que ahora mismo no entenderemos muy bien pero que más adelante veremos lo útil que es 9 00:01:09,569 --> 00:01:16,769 que es que está integrada por defecto ya en el objeto, es decir, en la clase, cuando creemos un script que crea una clase sobre este GameObject, 10 00:01:17,109 --> 00:01:23,829 veremos que la propiedad o el método transform está integrado, es decir, que no lo tenemos que llamar de ninguna forma. 11 00:01:24,069 --> 00:01:29,390 Lo tenemos ya disponible y lo vamos a comprobar ahora mismo. De hecho, voy a crear un script para este GameObject. 12 00:01:29,829 --> 00:01:35,730 Os recuerdo siempre que tengáis muy ordenado todos vuestros assets. En este caso voy a crear aquí un script. 13 00:01:35,730 --> 00:01:38,290 Pero además lo voy a hacer de una forma diferente a como lo he hecho hasta ahora. 14 00:01:38,390 --> 00:01:43,269 Lo que voy a hacer es, directamente sobre la carpeta sobre la que quiero crear el script, 15 00:01:43,769 --> 00:01:47,829 le damos a crear, create, y veremos que la primera de las opciones que nos aparece, 16 00:01:48,090 --> 00:01:51,609 aparte de la carpeta nueva, es un script en C Sharp. 17 00:01:51,709 --> 00:01:54,230 Es decir, que lo tenemos ahí y le damos un nombre, por supuesto. 18 00:01:54,790 --> 00:01:57,370 Os recuerdo que va a crear una clase con el nombre del archivo. 19 00:01:57,370 --> 00:02:02,409 Es decir, que si hacemos caso de las convencionalidades que tenemos en programación, 20 00:02:02,569 --> 00:02:04,370 pues debería ser con la primera letra en mayúscula. 21 00:02:04,370 --> 00:02:11,330 Le voy a llamar cubo, para identificarlo bien y que sepamos que es el script que está vinculado a este cubo. 22 00:02:11,729 --> 00:02:19,449 De momento no está vinculado, siempre tenemos que recordar que los scripts tienen que estar vinculados a un GameObject o si no, no se ejecutarán. 23 00:02:19,849 --> 00:02:30,189 Así que voy a seleccionar mi cubo y lo voy a arrastrar, el script, a donde pone Add Component, a ese apartadito. 24 00:02:30,189 --> 00:02:37,189 Vale, ahí lo tengo. Ya se me ha añadido como un componente más que de hecho puedo activar o desactivar. 25 00:02:38,750 --> 00:02:42,530 Lo gente lo quiero activo. Vale, voy a ejecutar, voy a editar este script. 26 00:02:42,949 --> 00:02:47,229 Antes de continuar voy a explicar un concepto, que es el de vectores. 27 00:02:47,490 --> 00:02:51,090 No nos preocupemos demasiado porque dedicaremos un capítulo exclusivamente a vectores. 28 00:02:51,310 --> 00:02:55,509 Y hablaremos de cómo son, de qué nos permiten, de qué operaciones podemos hacer con ellos. 29 00:02:55,729 --> 00:02:59,849 En fin, es algo bastante más complejo como para hablar de ello en este vídeo. 30 00:02:59,849 --> 00:03:04,810 Pero no está de más que sepamos ya lo que es. No es más que una ubicación en el espacio. 31 00:03:05,270 --> 00:03:13,569 Es decir, esto que tenemos aquí en nuestro cubo, que dice posición, tengo una posición en x, lo voy a cambiar por 0, 32 00:03:13,710 --> 00:03:20,849 una posición en y y otra posición en z. Eso es una ubicación en el espacio cogiendo los tres parámetros tridimensionales, 33 00:03:21,650 --> 00:03:25,449 los tres ejes y sus valores, por supuesto. Entonces eso es un vector. 34 00:03:26,389 --> 00:03:28,770 Es algo más complejo que eso, pero quedémonos con eso. 35 00:03:28,990 --> 00:03:32,949 Esos tres parámetros son un vector, concretamente un vector de tres dimensiones, es decir, un vector tres. 36 00:03:33,490 --> 00:03:35,449 También existen los vectores de dos dimensiones. 37 00:03:36,330 --> 00:03:37,409 Voy a poner un ejemplo. 38 00:03:38,849 --> 00:03:46,969 Como bien sabemos, y si no lo recordamos, por el mero hecho de utilizar una clase, la que he creado, 39 00:03:46,969 --> 00:03:54,610 que hereda de otra clase que nos incluye Unity, pues automáticamente tengo a mi disposición muchas otras clases 40 00:03:54,610 --> 00:03:59,289 que yo no he creado pero que existen ahí. Aprovecho para recordaros que tenemos el 41 00:03:59,289 --> 00:04:04,310 scripting reference de Unity donde podemos buscar la información sobre cualquier elemento 42 00:04:04,310 --> 00:04:09,050 de nuestros scripts. Si tenemos dudas podemos buscar, por ejemplo, le digo, oye, ¿qué 43 00:04:09,050 --> 00:04:14,689 sabemos de los vectores 3? Entonces Unity nos hará una búsqueda y nos dirá todo lo 44 00:04:14,689 --> 00:04:18,610 que tenemos que saber de los vectores 3, que es lo que vamos a usar ahora, desde qué son 45 00:04:18,610 --> 00:04:21,370 hasta sus métodos, esto recordad que son métodos 46 00:04:21,370 --> 00:04:24,850 y sus atributos, en fin, como podéis ver 47 00:04:24,850 --> 00:04:27,410 tenemos muchas cosas relacionadas con los vectores 3 48 00:04:27,410 --> 00:04:29,529 muchas más de las que vamos a ver ahora 49 00:04:29,529 --> 00:04:33,810 al haber heredado las clases de MonoBehaviour 50 00:04:33,810 --> 00:04:38,870 significa que yo puedo crear una clase 51 00:04:38,870 --> 00:04:43,689 de tipo, voy a ponerla de momento privada 52 00:04:43,689 --> 00:04:47,040 ¿qué tipo de clase? 53 00:04:47,199 --> 00:04:49,800 pues esta no es ni cadena de texto 54 00:04:49,800 --> 00:04:53,360 ni booleana es tipo vector3 55 00:04:53,360 --> 00:04:56,939 es decir, ahora mismo he creado una variable de tipo vector3 56 00:04:56,939 --> 00:05:00,060 ahora le voy a dar un nombre a mi variable, por ejemplo 57 00:05:00,060 --> 00:05:07,569 initPost, por ejemplo, le voy a llamar, es decir, la posición inicial en la que estoy 58 00:05:07,569 --> 00:05:11,269 y ahora 59 00:05:11,269 --> 00:05:15,629 recuerdo que esto es una clase, es una clase heredada y como se declaraban las clases 60 00:05:15,629 --> 00:05:19,509 en programación orientada a objetos, es decir, como se instanciaban 61 00:05:19,509 --> 00:05:21,029 con el comando new 62 00:05:21,029 --> 00:05:23,829 y ahí me va a aparecer, como podéis ver 63 00:05:23,829 --> 00:05:25,769 me sugiere, lógicamente, que sea 64 00:05:25,769 --> 00:05:27,790 un vector 3. Y ahora le añadimos 65 00:05:27,790 --> 00:05:29,889 los paréntesis, pero fijaros, esto es muy interesante 66 00:05:29,889 --> 00:05:31,610 porque los vectores 67 00:05:31,610 --> 00:05:33,990 que son tridimensionales, para declararlos 68 00:05:33,990 --> 00:05:35,769 nos piden tres parámetros 69 00:05:35,769 --> 00:05:37,850 de hecho, ahí sale la ayuda de nuestro 70 00:05:37,850 --> 00:05:39,209 entorno de desarrollo, diciéndonos 71 00:05:39,209 --> 00:05:40,410 que está pidiendo 72 00:05:40,410 --> 00:05:43,750 parámetros. Nos pide 73 00:05:43,750 --> 00:05:45,250 tres parámetros. Como es un vector 74 00:05:45,250 --> 00:05:47,050 de tres dimensiones, nos pide 75 00:05:47,050 --> 00:05:51,430 como podéis ver, un número float, es decir, un número con decimales 76 00:05:51,430 --> 00:05:54,490 que represente la posición en X, en el eje X 77 00:05:54,490 --> 00:05:59,930 otro decimal que representa la posición en Y y otro decimal que represente la posición en Z 78 00:05:59,930 --> 00:06:02,370 pues voy a dárselos, le voy a decir que por ejemplo 79 00:06:02,370 --> 00:06:06,050 mi objeto esté en la posición X 80 00:06:06,050 --> 00:06:10,610 0, Y 0 y Z 0 81 00:06:10,610 --> 00:06:15,850 ahora mismo acabo de declarar una variable llamada initPos 82 00:06:15,850 --> 00:06:18,949 que es una variable de tipo vector3 83 00:06:18,949 --> 00:06:23,149 y lo que ha hecho es crear una nueva instancia de esa clase 84 00:06:23,149 --> 00:06:25,350 de la clase vector3 con estos parámetros 85 00:06:25,350 --> 00:06:28,189 x0 y 0, z0 86 00:06:28,189 --> 00:06:31,949 ahora ya puedo hacer con ella lo que quiera 87 00:06:31,949 --> 00:06:33,490 es decir, usarla, por ejemplo 88 00:06:33,490 --> 00:06:35,410 un uso muy habitual 89 00:06:35,410 --> 00:06:37,709 posicionar mi objeto en el escenario 90 00:06:37,709 --> 00:06:38,970 voy a comprobarlo 91 00:06:38,970 --> 00:06:43,089 ya sabemos que el método start lo que hace es ejecutarse cuando lanzo el juego 92 00:06:43,089 --> 00:06:45,670 y yo le puedo decir, y aquí viene lo interesante 93 00:06:45,670 --> 00:06:50,129 ya os he dicho antes que el método, el componente transform 94 00:06:50,129 --> 00:06:53,589 de Unity que tenemos aquí 95 00:06:53,589 --> 00:06:57,490 ya viene incluido directamente en nuestra clase 96 00:06:57,490 --> 00:07:01,569 no otros, si quiero acceder a estos componentes 97 00:07:01,569 --> 00:07:06,009 veréis que no puedo acceder a ellos de forma fácil, tengo que incorporarlos 98 00:07:06,009 --> 00:07:09,230 ya veremos cómo, pero la de transform ya está incluido 99 00:07:09,230 --> 00:07:13,129 ¿qué significa? que si yo empiezo a escribir transform 100 00:07:13,129 --> 00:07:16,649 veis que me autocompleta, recordad que esto lo tengo que hacer en un método 101 00:07:16,649 --> 00:07:20,250 no lo puedo hacer en cualquier sitio, en este caso en el método start 102 00:07:20,250 --> 00:07:24,689 transform, y si le pincháis veréis que me reconoce 103 00:07:24,689 --> 00:07:29,189 todos los atributos y los métodos disponibles en esta clase 104 00:07:29,189 --> 00:07:31,470 que ya está declarada, no hace falta que yo la declare 105 00:07:31,470 --> 00:07:36,750 y entonces pues ahí tenemos, por ejemplo, y no hace falta si queremos 106 00:07:36,750 --> 00:07:40,410 una chuleta, fijaros, quiero cambiar su posición 107 00:07:40,410 --> 00:07:52,829 Entonces, si busco entre los atributos de esta clase transform, está el position. 108 00:07:53,790 --> 00:08:06,769 Y si nos fijamos, y además aquí te podemos tirar del ayudante de nuevo, nos dice, este parámetro es un parámetro de tipo vector3, es decir, no es una cadena de texto, no es un integrir, es un vector3, como el que hemos creado. 109 00:08:07,610 --> 00:08:14,290 Entonces yo le digo transform position, es decir, la posición en la que está aquí el GameObject al que está asociado este script. 110 00:08:14,290 --> 00:08:26,800 Y si le digo que es igual a, por ejemplo, al que yo he creado aquí, ¿qué ocurrirá? 111 00:08:27,500 --> 00:08:37,899 Pues que mi GameObject al que está asociado, es decir, mi cubo, en cuanto lance el script se posicionará en las coordenadas 0, 0, 0. 112 00:08:37,899 --> 00:08:53,559 Lo voy a comprobar. ¿Cómo? Moviendo mi cubo en las tres coordenadas veo que ahora estos son los parámetros, pero si todo va bien, en cuanto la hace el script se moverá a la posición 0, 0, 0, como podéis ver. 113 00:08:54,299 --> 00:08:55,039 Vayamos poco a poco. 114 00:08:55,240 --> 00:09:01,720 Ya sabemos que los vectores 3 es un tipo de clase que pide tres parámetros, x, y y z. 115 00:09:01,860 --> 00:09:05,620 Lógicamente los vectores 2 piden solo dos porque son bidimensionales. 116 00:09:06,340 --> 00:09:13,039 Una vez que los tenemos declarados y a nuestra disposición, podemos asignárselos a la posición de un objeto. 117 00:09:13,500 --> 00:09:19,620 En principio del que tenemos asociado, pero ahora veremos que también lo podemos asociar a otros GameObjects que tenemos en la escena. 118 00:09:20,259 --> 00:09:22,919 Antes de hacer eso, vamos a mover este objeto. 119 00:09:22,919 --> 00:09:24,179 ¿Cómo se mueve un objeto? 120 00:09:24,799 --> 00:09:26,200 Insisto, hay muchas formas 121 00:09:26,200 --> 00:09:28,200 Una de ellas es por ejemplo aplicando fuerzas 122 00:09:28,200 --> 00:09:31,980 Y cuando tengamos gravedad, por ejemplo, en nuestra escena 123 00:09:31,980 --> 00:09:35,899 Si le tiramos una fuerza a alguien, también con un vector 124 00:09:35,899 --> 00:09:39,879 Porque los vectores también pueden determinar vectores de movimiento o de fuerza 125 00:09:39,879 --> 00:09:41,940 Pues lo desplazaremos 126 00:09:41,940 --> 00:09:43,679 Pero aquí lo vamos a hacer un poco a las bravas 127 00:09:43,679 --> 00:09:46,820 Entre otras cosas también para entender el concepto 128 00:09:46,820 --> 00:09:52,799 Por ejemplo, ¿y si yo le digo que en cada fotograma se desplace en una dirección? 129 00:09:52,919 --> 00:09:54,940 a lo largo de un eje. 130 00:09:54,940 --> 00:09:58,100 Pues bien, para eso tenemos que entender otra cosa y es que los vectores se pueden 131 00:09:58,100 --> 00:09:58,860 sumar. 132 00:09:58,860 --> 00:10:03,299 Es decir, yo puedo coger un vector, el que he creado, por ejemplo, 0, 0, 0 133 00:10:03,299 --> 00:10:08,679 y poner otro vector en otra posición y sumar los dos. ¿Qué obtendré? Pues para 134 00:10:08,679 --> 00:10:09,980 verlo 135 00:10:09,980 --> 00:10:11,700 vamos a ver algo 136 00:10:11,700 --> 00:10:13,080 muy interesante 137 00:10:13,080 --> 00:10:15,419 es que os he comentado que 138 00:10:15,419 --> 00:10:17,940 yo en todo momento puedo 139 00:10:17,940 --> 00:10:20,639 actuar sobre la posición de mi objeto 140 00:10:20,639 --> 00:10:23,320 Pero no solo eso, sino que también puedo obtenerla. 141 00:10:24,139 --> 00:10:24,500 Ejemplo. 142 00:10:29,360 --> 00:10:37,460 Voy a declarar una variable de tipo vector3 que se llama initPos. 143 00:10:37,659 --> 00:10:39,240 Y no le he dado ningún valor, lógicamente. 144 00:10:40,440 --> 00:10:41,279 Pero se lo voy a dar ahora. 145 00:10:41,639 --> 00:10:45,259 Y se lo voy a dar, cuidado, esto lo tengo que hacer dentro del método start o de cualquier otro método. 146 00:10:45,379 --> 00:10:47,500 Le voy a dar cuál, la que tengo yo ahora mismo. 147 00:10:48,639 --> 00:10:48,799 ¿Vale? 148 00:10:48,799 --> 00:10:57,659 Entonces le voy a decir que la variable que acabo de crear, su valor es igual a, y le tengo que dar un valor de vector3. 149 00:10:57,659 --> 00:11:05,840 Veréis que si le doy un valor, por ejemplo, de un número entero, me lo dirá, me dice, no, no, esto lo que me está pidiendo es una variable de vector3. 150 00:11:05,840 --> 00:11:26,100 Pero sabemos que mi posición, esto, hace referencia a mi posición inicial, que antes he redeclarado, pero yo en cualquier momento puedo ir a ella y preguntarle, digo, oye, ¿cuál es mi posición? Pues mi posición en la que estoy ahora mismo, asígnaselo a ese vector 3 que he creado. 151 00:11:26,100 --> 00:11:28,960 y lo voy a mandar a la pantalla para ver si efectivamente 152 00:11:28,960 --> 00:11:30,899 todo funciona 153 00:11:30,899 --> 00:11:34,840 ves que ahora no lo estoy moviendo al iniciar el juego 154 00:11:34,840 --> 00:11:36,919 sencillamente le estoy diciendo que me diga cuál es mi posición 155 00:11:36,919 --> 00:11:39,720 voy a lanzar el script 156 00:11:39,720 --> 00:11:43,320 y la gente me dirá que mi posición es 157 00:11:43,320 --> 00:11:46,220 esta, vamos a comprobarlo 158 00:11:46,220 --> 00:11:49,440 correcto, voy un paso más allá 159 00:11:49,440 --> 00:11:50,779 y si le digo 160 00:11:50,779 --> 00:11:58,009 que esta posición me la diga en el método update 161 00:11:58,009 --> 00:12:01,549 recordad que el método update lo que hace es ejecutarse en cada fotograma 162 00:12:01,549 --> 00:12:05,909 24, 48, 30 fotogramas por segundo al que se ejecute el juego 163 00:12:05,909 --> 00:12:07,190 si yo le digo 164 00:12:07,190 --> 00:12:11,309 la variable de posición, la de initPos 165 00:12:11,309 --> 00:12:13,649 es en la posición en la que estoy en este momento 166 00:12:13,649 --> 00:12:17,590 dámela, escríbemela en la consola 167 00:12:17,590 --> 00:12:21,409 ¿qué ocurre? que si yo modifico o muevo ese elemento 168 00:12:21,409 --> 00:12:23,730 me lo estará diciendo constantemente cuál es su posición 169 00:12:23,730 --> 00:12:25,070 vamos a comprobarlo 170 00:12:25,070 --> 00:12:27,049 esto va a ser un poco loco porque 171 00:12:27,049 --> 00:12:29,250 lógicamente me lanzará un montón de 172 00:12:29,250 --> 00:12:31,830 imágenes de datos a consola 173 00:12:31,830 --> 00:12:33,929 en principio empezará 174 00:12:33,929 --> 00:12:35,549 por la posición inicial, por esa 175 00:12:35,549 --> 00:12:37,909 pero 176 00:12:37,909 --> 00:12:39,990 en cuanto yo empiece a mover 177 00:12:39,990 --> 00:12:40,450 el objeto 178 00:12:40,450 --> 00:12:43,889 vemos, esto no varía, está en la misma 179 00:12:43,889 --> 00:12:46,049 posición, pero si yo desplazo el objeto 180 00:12:46,049 --> 00:12:47,929 en cualquier eje 181 00:12:47,929 --> 00:12:49,429 si nos fijamos 182 00:12:49,429 --> 00:12:51,470 los datos aquí van cambiando 183 00:12:51,470 --> 00:12:53,929 en función de donde lo 184 00:12:53,929 --> 00:12:56,210 desplace yo. Bien, acabamos de descubrir 185 00:12:56,210 --> 00:12:58,049 por qué es muy importante o es 186 00:12:58,049 --> 00:13:00,029 muy útil poder hacer modificaciones en nuestros 187 00:13:00,029 --> 00:13:01,769 objetos mientras se está ejecutando el juego 188 00:13:01,769 --> 00:13:03,529 porque así vemos cómo afecta 189 00:13:03,529 --> 00:13:06,009 a nuestros scripts directamente 190 00:13:06,009 --> 00:13:08,169 y también por qué es importante que cuando termina 191 00:13:08,169 --> 00:13:09,970 esa ejecución vuelve a la posición 192 00:13:09,970 --> 00:13:11,950 en la que estaba antes para que digamos 193 00:13:11,950 --> 00:13:14,090 todo lo que haya hecho no haya tomado 194 00:13:14,090 --> 00:13:15,710 valor sino que solo ha sido como una prueba 195 00:13:15,710 --> 00:13:18,070 pues hagamos una cosa, antes de hacerla voy a 196 00:13:18,070 --> 00:13:18,429 hacer un 197 00:13:18,429 --> 00:13:22,269 pequeño truco de magia que es sumar un vector 198 00:13:26,080 --> 00:13:35,299 De hecho, voy a hacer una cosa también para que sepamos que un vector, el que he creado antes, es privado. 199 00:13:35,700 --> 00:13:39,320 Yo no tengo acceso a él, pero yo puedo crear uno que sea no público, 200 00:13:39,320 --> 00:13:42,039 pero sí que puedo acceder a él a través de la interfaz de Unity, como ya vimos. 201 00:13:44,179 --> 00:13:52,740 Una variable serializada de tipo vector3, que le voy a llamar destinationPosition, es decir, hacia dónde se dirigirá. 202 00:13:53,879 --> 00:13:56,379 Y ya está. Y no le doy nada más, no le doy ningún valor. ¿Por qué? 203 00:13:56,379 --> 00:14:06,480 Y esto es lo bueno de las variables serializadas, igual que de las variables públicas, ya lo tenemos que saber, es que me permite dar los valores directamente en el inspector. 204 00:14:06,759 --> 00:14:12,899 Vemos que aquí nos aparece esa variable creada y como es de tipo vector3 nos aparece con sus tres parámetros. Maravilloso. 205 00:14:14,019 --> 00:14:19,500 ¿Eso qué significa? Que yo le voy a decir, por ejemplo, desplázate 1 en x, 0 en y y 0 en z. 206 00:14:20,340 --> 00:14:30,240 Esto que en realidad se correspondería con posición 1, 0, 0, si yo lo sumo, de hecho voy a poner mi cubo en la posición 0, 0, 0. 207 00:14:30,919 --> 00:14:39,500 Si yo cojo el vector en el que estoy ahora mismo y le sumo este otro vector, ¿qué me dará? Pues vamos a comprobarlo. 208 00:14:40,559 --> 00:14:45,559 Y así comprobamos que efectivamente podemos sumar vectores. 209 00:14:45,559 --> 00:14:59,759 De hecho, voy a crear otro vector, este también lo voy a crear privado, no lo necesito, que es finalPosition, por ejemplo, de tipo vector3, se va a llamar finalPosition. 210 00:15:03,620 --> 00:15:10,879 Entonces, aquí tengo la posición inicial, es el vector3 en el que estoy cuando arranco. 211 00:15:10,879 --> 00:15:15,179 pues la posición final, que es otro vector 3 212 00:15:15,179 --> 00:15:20,889 va a ser la suma de la posición inicial 213 00:15:20,889 --> 00:15:26,850 más el... lo he puesto con minúscula 214 00:15:26,850 --> 00:15:34,039 lo voy a corregir ahora mismo. Es decir, tengo la posición 215 00:15:34,039 --> 00:15:37,840 inicial, que va a ser en la que empieza el objeto. Tengo la 216 00:15:37,840 --> 00:15:41,840 de destino, que esa la voy a añadir a través de la interfaz de Unity 217 00:15:41,840 --> 00:15:46,379 que es la que se va a sumar. Y tengo 218 00:15:46,379 --> 00:15:49,440 la posición final 219 00:15:49,440 --> 00:15:52,399 que va a ser la suma de una y otra 220 00:15:52,399 --> 00:15:54,080 ¿y cuál va a ser esta? 221 00:15:54,200 --> 00:15:55,179 pues lo vamos a comprobar ahora mismo 222 00:15:55,179 --> 00:15:56,240 porque lo voy a mandar a pantalla 223 00:15:56,240 --> 00:15:59,600 voy a limpiar la consola 224 00:15:59,600 --> 00:16:00,960 si lo lanzo 225 00:16:00,960 --> 00:16:04,519 recordamos, nuestro cubo está en posición 0, 0, 0 226 00:16:04,519 --> 00:16:07,120 la de destino será 227 00:16:07,120 --> 00:16:08,360 1, 0, 0 228 00:16:08,360 --> 00:16:09,639 1, 0, 0 229 00:16:09,639 --> 00:16:12,700 ¿y cuál es la posición final? 230 00:16:13,059 --> 00:16:14,019 pues ahí me lo dice 231 00:16:14,019 --> 00:16:15,539 1, 0, 0 232 00:16:15,539 --> 00:16:34,820 Es la suma entre uno y otro. De hecho, si yo, por ejemplo, le digo que el vector que voy a sumar va a ser de 10, 5, 2 y la posición inicial es de 2, 1, 0, pues si lanzo, ¿cuál es mi vector final? 233 00:16:36,500 --> 00:16:45,039 Ahí lo tenemos. 12, 6, 2. ¿Por qué? Porque es la suma de 2 más 10, de 1 más 5, de 0 a 2.