1 00:00:02,669 --> 00:00:24,609 Bueno, en la anterior tutoría inicial ya se habló de cómo instalar Unity, el Unity Hub, el Unity Editor, un poco los paneles, esa parte la voy a dar un poco por supuesta y voy a proceder un poco a ir resolviendo dudas de la tarea 1, especialmente a partir de cuando entramos en el código que es al instanciar, ¿vale? 2 00:00:24,609 --> 00:00:47,950 Voy a compartir pantalla. Entiendo que veis el Unity Editor, ¿verdad? Vale, en esta práctica hay una parte que a no ser que tengáis problemas claros, no me voy a meter mucho, que es la creación del prefab, porque creo que está suficientemente bien explicada dentro de las dudas que os puedan surgir. 3 00:00:47,950 --> 00:00:55,509 que por favor si tenéis alguna me vais diciendo, sí que hay un concepto que es el de prefab, que yo tengo aquí por ejemplo preparada mi nave, 4 00:00:56,350 --> 00:01:04,790 que quizá cuando vais siguiendo un poco las instrucciones o pasáis por alto, porque también es normal, o que puede generar dudas. 5 00:01:04,790 --> 00:01:15,769 Al final un prefab no deja de ser un objeto, como se explica, que está guardado para poder ser reutilizado en distintas partes de proyecto o instanciado. 6 00:01:15,769 --> 00:01:19,650 Instanciado es generar copias de un mismo objeto 7 00:01:19,650 --> 00:01:22,629 Y lo voy a usar de referencia en varios momentos 8 00:01:22,629 --> 00:01:24,689 Por ejemplo, si en un videojuego 9 00:01:24,689 --> 00:01:27,090 Y perdonad que remita a videojuegos violentos 10 00:01:27,090 --> 00:01:28,870 Pero es que suelen abundar mucho 11 00:01:28,870 --> 00:01:31,969 Cuando disparamos una bala con la metralleta 12 00:01:31,969 --> 00:01:34,129 Imaginaos que cada bala es un objeto 13 00:01:34,129 --> 00:01:36,829 Que ese proyectil va volando por el aire 14 00:01:36,829 --> 00:01:39,329 Bueno, pues tenemos ya un prefab de esa bala 15 00:01:39,329 --> 00:01:42,189 Y lo que vamos haciendo es lanzar copias de esa bala 16 00:01:42,189 --> 00:01:43,250 De una única bala 17 00:01:43,250 --> 00:01:48,010 A lo mejor tenemos prefabs de bala de escopeta, bala de metralleta, yo qué sé. 18 00:01:48,230 --> 00:01:54,209 Pero al final, a menos que lo hagamos con otra finalidad, va a ser ese prefab que se va duplicando. 19 00:01:55,069 --> 00:01:59,629 Como hemos visto los prefabs, y tengo aquí uno preparado en el panel de proyecto, 20 00:01:59,890 --> 00:02:03,989 y lo puedo importar, meterlo en el proyecto, incluso meterlo dentro de la jerarquía, 21 00:02:04,530 --> 00:02:09,349 vais a ver que viene marcado con este texto azul, con la cajita azul. 22 00:02:09,349 --> 00:02:11,830 en el panel proyecto vais a ver 23 00:02:11,830 --> 00:02:13,949 normalmente ya la geometría del prefab 24 00:02:13,949 --> 00:02:15,090 por ejemplo aquí veis la nave 25 00:02:15,090 --> 00:02:17,710 y atención porque aquí podemos hacer zoom 26 00:02:17,710 --> 00:02:19,849 y hay una forma que no es que haya 27 00:02:19,849 --> 00:02:21,610 un menú de ver en modo lista 28 00:02:21,610 --> 00:02:23,629 ni en modo visualización, que es que si quitamos todo el zoom 29 00:02:23,629 --> 00:02:25,250 vamos viendo los elementos 30 00:02:25,250 --> 00:02:28,389 con iconitos y enlistado 31 00:02:28,389 --> 00:02:30,129 que a veces es más interesante para saber 32 00:02:30,129 --> 00:02:31,789 de qué se trata cada elemento 33 00:02:31,789 --> 00:02:34,409 al ver esta caja azul sabemos que es un prefab 34 00:02:34,409 --> 00:02:36,449 y lo tenemos ahí preparando 35 00:02:36,449 --> 00:02:38,289 y habéis visto que yo puedo 36 00:02:38,289 --> 00:02:40,270 empezar a meter aquí el prefab 37 00:02:40,270 --> 00:02:42,629 85 millones de veces 38 00:02:42,629 --> 00:02:44,569 ¿vale? lo podemos tener aquí 39 00:02:44,569 --> 00:02:46,490 para hacer un escuadrón, no sé si ahora habéis visto 40 00:02:46,490 --> 00:02:48,550 el típico juego que hay de 41 00:02:48,550 --> 00:02:50,509 alguien 42 00:02:50,509 --> 00:02:52,509 que va corriendo y va pasando por un 43 00:02:52,509 --> 00:02:54,870 más 10, por 2 y se va multiplicando 44 00:02:54,870 --> 00:02:55,770 no, eso al final son 45 00:02:55,770 --> 00:02:58,509 que se van instanciando más o menos prefabs a medida que 46 00:02:58,509 --> 00:03:00,349 se van cumpliendo ciertas condiciones ¿vale? 47 00:03:00,830 --> 00:03:02,210 bueno, una vez dicho esto 48 00:03:02,210 --> 00:03:04,789 algo importante y me vuelvo a referir 49 00:03:04,789 --> 00:03:06,409 a la bala de 50 00:03:06,409 --> 00:03:27,810 La escopeta, ¿no? Imaginaos que ahora en vez de la nave es una escopeta. El prefab cuando lo generáis, ¿vale? Que lo podéis ir generando, como ya habréis estado haciendo los que comenzaste la tarea, a generar aquí los elementos, ¿no? Con las geometrías, etcétera, con las distintas primitivas que se pueden poner en Unity, ¿vale? Y lo que hacemos es arrastrar, pues imaginaos, ¿vale? Que este cubo es lo que queremos convertir en prefab. 51 00:03:27,810 --> 00:03:42,990 Para convertir en prefab, cogéis de la jerarquía los elementos, podéis seleccionar varios, y lo arrastráis al panel de proyecto, ¿vale? Y se genera un prefab. En este caso es un cubo. Bueno, pues es un prefab bastante básico. Si fuera una esfera, pues podría ser la bala, ¿vale? 52 00:03:42,990 --> 00:03:59,930 Si queréis editar este prefab, bueno, y ved que he borrado el prefab que había generado y aunque esté en la escena, ¿vale? Es verdad que se pone en rojo como avisando de, oye, el prefab de origen no está. Te dejo el objeto aquí, pero esto ya no es un prefab, ¿vale? Si visual esta indicación roja, significa eso. 53 00:03:59,930 --> 00:04:02,409 Imaginaos que tenemos ya la nave 54 00:04:02,409 --> 00:04:05,449 Y ya la hemos preparado 55 00:04:05,449 --> 00:04:06,509 Y está ahí como un prefab 56 00:04:06,509 --> 00:04:08,550 ¿Cómo se edita un prefab? 57 00:04:08,629 --> 00:04:10,889 Porque esto al final es como cuando 58 00:04:10,889 --> 00:04:13,009 En cualquier software se mete en una carpeta 59 00:04:13,009 --> 00:04:13,990 En un folder, en un bin 60 00:04:13,990 --> 00:04:16,470 Varias objetos de la jerarquía 61 00:04:16,470 --> 00:04:19,149 Que se van aquí poniendo una dentro de otra 62 00:04:19,149 --> 00:04:20,870 Como habréis visto también en la tarea 63 00:04:20,870 --> 00:04:23,089 Cuando vayamos teniendo 64 00:04:23,089 --> 00:04:25,230 Estos elementos y los convertimos en prefab 65 00:04:25,230 --> 00:04:27,089 Pues igual lo tengo aquí como prefab 66 00:04:27,089 --> 00:04:28,029 Lo borro todo 67 00:04:28,029 --> 00:04:34,930 y digo, vale, pues tengo aquí el prefab, que lo puedo duplicar, pero ¿y esto cómo se edita luego? 68 00:04:35,449 --> 00:04:43,490 Para editar un prefab es fácil, o le dais doble clic al elemento o al propio elemento también de la jerarquía, 69 00:04:43,589 --> 00:04:47,930 se puede de cualquiera de los dos puntos, en este caso el cubo, voy a abrir la nave, mi nave, 70 00:04:47,930 --> 00:04:52,689 cuando hagáis el prefab, pues para reeditarlo y recolocar elementos, doble clic, 71 00:04:52,850 --> 00:04:57,230 y se os abre este área como azul, un poco tron, ahí esperando a que hagamos cosas. 72 00:04:58,029 --> 00:05:04,870 Esto se identifica, para que sea fácil, con dos pistas visuales. 73 00:05:04,870 --> 00:05:13,990 Una, aquí vais a ver en el panel de escena que hay unas migas de pan para ir viendo que este prefab está metido dentro de escenas, 74 00:05:14,129 --> 00:05:18,990 porque lo hemos abierto desde donde está aquí incorporado, ¿vale? 75 00:05:19,069 --> 00:05:21,970 En una de las escenas está este prefab aplicado, ¿vale? 76 00:05:21,970 --> 00:05:42,329 Y aquí podemos ir variando todos los elementos que componen ese prefab, que al final veis que es como una especie de empaquetado de geometrías que tenemos ahí con una jerarquía, ¿no? Esperando a que se instancie. Si en algún momento queremos cambiar el prefab, pues nos metemos dentro del prefab y aquí podemos ir modificando cada elemento como en la jerarquía de la escena habitualmente. 77 00:05:42,329 --> 00:05:48,750 vale sí que es verdad que importante aquí hay una opción que se llama auto safe que por defecto a 78 00:05:48,750 --> 00:05:54,709 mí me aparece marcada debería aparecer marcada que nos puede interesar o no porque esto significa que 79 00:05:54,709 --> 00:05:58,949 todo el cambio que vayamos haciendo de los elementos se irán guardando en el prefab 80 00:05:58,949 --> 00:06:05,189 automáticamente si lo desmarcamos veréis que yo pues si por ejemplo el alero el alerón lo muevo 81 00:06:05,189 --> 00:06:10,589 un poco pues si yo saliera no se está guardando habría que dar a este 6 que ha aparecido aquí vale 82 00:06:10,589 --> 00:06:30,069 Que a veces cuando intentáis salir del prefab os dice, oye, ¿pero guardas o no? Eso dependerá de cómo lo estéis gestionando, ¿vale? Si queréis volver, dice, ya he terminado y lo voy a dejar mal, ¿vale? Esta pieza la he dejado un poco, que es el alerón trasero vertical este que he puesto, lo dejo así, ¿vale? Movido de sitio, si os fijáis. 83 00:06:30,790 --> 00:06:40,810 Si yo guardo y salgo, para volver a la jerarquía o al escenario, aquí está esta flechita que nos sirve para volver al proyecto, para ir para atrás. 84 00:06:40,930 --> 00:06:43,829 O también podemos incluso dar a esa miga de pan que tenemos. 85 00:06:44,829 --> 00:06:50,509 ¿Qué pasa? Que ahora, incluso si lo veis en la miniatura, ese alerón se ha movido y se ha guardado como movido. 86 00:06:50,610 --> 00:06:54,449 Si yo ahora lo duplico, va a tener el alerón ahí flotando. Lo ha instanciado todo. 87 00:06:54,449 --> 00:07:16,089 Y esto es lo que me sirve para la primera cosa que suele haber de problema en vuestras entregas de esta tarea, que es tener en cuenta, imaginaos que cuando hagamos las instancias del objeto, vuelvo a remitir a la bala, nosotros luego vamos a dar un punto de referencia donde se va instanciando esa bala, desde donde se emite ese proyectil. 88 00:07:16,089 --> 00:07:45,550 En el caso de una bala, lo suyo será poner la boquilla de la pistola o del arma que sea, ¿no? Para que a partir de ahí vaya para adelante en profundidad. Si ese elemento que estamos instanciando está movido del 0,0 de ese origen, imaginaos que hago esto, si yo me muevo de aquí, cuando yo instancie esa bala, si no lo corrijo de algún modo, va a identificar que desde donde se lanza, imaginaos que aquí está la boquilla de la pistola, 89 00:07:46,089 --> 00:07:48,470 va a estar ya movido desde ese punto. 90 00:07:49,129 --> 00:07:52,449 Por tanto, ojo, si queréis instanciar algo en un punto concreto, 91 00:07:53,129 --> 00:07:57,689 aseguraos de que todo esté en el 0,0 de origen, ¿vale? 92 00:07:57,829 --> 00:07:58,949 Es decir, ahora mismo lo está. 93 00:07:59,550 --> 00:08:02,389 Y veis que aquí hay un elemento padre, que es el nave prefab, 94 00:08:02,430 --> 00:08:04,850 que está con todo intacto, ¿vale? 95 00:08:04,850 --> 00:08:08,769 Y luego he ido haciendo hijos a los distintos elementos de la jerarquía. 96 00:08:09,189 --> 00:08:11,689 ¿Por qué pongo otro padre, vale? 97 00:08:11,689 --> 00:08:24,129 Esto es fácil, está el elemento empty, que es como un nulo, ¿vale? Como un nul en otro software de 3D, etcétera, que cuando lo creáis está vacío, pero sirve para colocar elementos dentro de otros elementos y dar coordenadas. 98 00:08:24,129 --> 00:08:27,410 El elemento padre-padre de un prefab 99 00:08:27,410 --> 00:08:28,689 Cuando estamos dentro del prefab 100 00:08:28,689 --> 00:08:31,310 Digamos que no puedes 101 00:08:31,310 --> 00:08:33,309 Poner nada por encima 102 00:08:33,309 --> 00:08:34,629 De la jerarquía de ese elemento 103 00:08:34,629 --> 00:08:36,309 Por tanto diría que este elemento 104 00:08:36,309 --> 00:08:38,190 Por defecto en los prefabs 105 00:08:38,190 --> 00:08:40,330 Debería estar siempre configurado 106 00:08:40,330 --> 00:08:41,929 Para que estén las coordenadas de origen 107 00:08:41,929 --> 00:08:44,710 Que son los ceros de posición, los ceros de rotación 108 00:08:44,710 --> 00:08:46,110 Y a uno de escala, ojo 109 00:08:46,110 --> 00:08:48,090 La escala por defecto es uno 110 00:08:48,090 --> 00:08:50,289 En las tres dimensiones 111 00:08:50,289 --> 00:08:51,669 Y luego dentro de eso 112 00:08:51,669 --> 00:08:53,649 Nos aseguramos a modo visual 113 00:08:53,649 --> 00:08:56,090 que esté todo donde queremos que esté, ¿vale? 114 00:08:56,090 --> 00:09:00,970 Así cuando instanciemos nos aseguramos que este padre es el origen del prefab, ¿vale? 115 00:09:01,009 --> 00:09:04,610 Y luego ya iremos distribuyendo los elementos. 116 00:09:05,629 --> 00:09:09,690 Luego hay otra cosa a considerar que os pone, 117 00:09:09,809 --> 00:09:14,529 que es que la nave tiene que estar mirando hacia la Z en profundidad, ¿vale? 118 00:09:14,590 --> 00:09:17,570 Si os fijáis en este guismo del mundo, ¿vale? 119 00:09:18,409 --> 00:09:21,610 Dado el juego que vamos a hacer luego, que va a ser un endless runner, ¿vale? 120 00:09:21,610 --> 00:09:28,629 Que va a la nave en profundidad y van apareciendo obstáculos, un poco como el Subway Surfer, no sé si lo conocéis. 121 00:09:28,750 --> 00:09:32,970 Yo os voy a enseñar para que tengáis en cabeza hacia dónde se dirige esto, lo enseño muy rápido. 122 00:09:33,429 --> 00:09:35,549 Esto será de la tarea 2, ¿vale? Es el siguiente paso. 123 00:09:36,149 --> 00:09:43,470 Pero lo que vamos a buscar, ahí lo tenemos, es un juego como de estas características, todavía feote, etc. 124 00:09:44,409 --> 00:09:48,389 Pero que va a ir esquivando los pivotetes estos que van apareciendo, ¿vale? 125 00:09:48,990 --> 00:09:51,669 ¿Qué pasa? Que lo que vamos a hacer es que esta nave va en profundidad. 126 00:09:52,009 --> 00:09:56,309 Si el prefab lo incorporamos angulado hacia otra dirección, 127 00:09:56,490 --> 00:09:58,669 luego habrá que hacer otra operación para reenderezarlo. 128 00:09:59,149 --> 00:10:02,549 Por tanto, igual que con lo de la bala, ¿vale? Pues lo mismo. 129 00:10:02,909 --> 00:10:07,549 Si queremos que esté en el punto de origen y orientado correctamente, 130 00:10:08,129 --> 00:10:11,590 pues hay que tener en cuenta que el mundo está mirando en Z en profundidad. 131 00:10:12,190 --> 00:10:13,490 ¿Vale? Hasta aquí, ¿qué tal? 132 00:10:13,769 --> 00:10:17,470 Los que habéis estado probando, ¿cómo lo veis? 133 00:10:18,389 --> 00:10:23,690 Esto es ponerse y probar. Creo que no tiene más complicación que saber meterte en un prefab, etc. 134 00:10:25,389 --> 00:10:32,929 Luego hay otra cosa para que lo vayáis teniendo en cuenta, que es que cuando vamos instanciando o metiendo en la jerarquía distintos prefabs, 135 00:10:32,929 --> 00:10:48,129 de pronto puede haber una de estas instancias, por ejemplo esta nave, que yo le quiero poner un material o darle otro componente, 136 00:10:48,389 --> 00:10:50,330 meterle un componente como por ejemplo 137 00:10:50,330 --> 00:10:52,409 un RigidBody, que esto 138 00:10:52,409 --> 00:10:54,210 en siguientes temas lo vamos a ver 139 00:10:54,210 --> 00:10:56,269 pues metemos un componente, recordar 140 00:10:56,269 --> 00:10:58,269 esto lo dije el otro día, que los 141 00:10:58,269 --> 00:11:00,049 distintos elementos que van 142 00:11:00,049 --> 00:11:02,210 sumándose a cada 143 00:11:02,210 --> 00:11:04,210 objeto se llaman componentes 144 00:11:04,210 --> 00:11:06,110 que son digamos lo que van metiendo 145 00:11:06,110 --> 00:11:08,190 o pues digamos 146 00:11:08,190 --> 00:11:10,230 las propiedades que tiene ese objeto 147 00:11:10,230 --> 00:11:12,210 un RigidBody, si le doy 148 00:11:12,210 --> 00:11:14,090 a play vais a ver que es un objeto 149 00:11:14,090 --> 00:11:16,090 que así grosso modo lo que hace 150 00:11:16,090 --> 00:11:17,289 es meter gravedad al objeto 151 00:11:17,289 --> 00:11:39,129 ¿Vale? ¿Qué ha pasado? Esto me sirve no para hablar del RigidBody en este momento, todavía no es el momento, sino para que veáis que tengo un prefab de todos los que ya he metido que es diferente al resto. ¿Vale? Que tiene un RigidBody. Por defecto este de origen no tiene el RigidBody, pero a lo mejor estamos trabajando en una de estas instancias y hemos metido un elemento nuevo. 152 00:11:39,129 --> 00:11:43,809 Esto lo vais a ver a nivel visual 153 00:11:43,809 --> 00:11:46,210 Porque vais a ver que donde está el iconito del componente 154 00:11:46,210 --> 00:11:47,490 Os añade un más 155 00:11:47,490 --> 00:11:54,169 Está añadido a una instancia del prefab 156 00:11:54,169 --> 00:11:57,690 Podemos seguir obviando que esto es un añadido 157 00:11:57,690 --> 00:12:00,009 Y seguir trabajando porque esta nave va a ser diferente al resto 158 00:12:00,009 --> 00:12:01,809 O hay una opción aquí 159 00:12:01,809 --> 00:12:04,330 Cuando metáis un prefab va a aparecer esta línea 160 00:12:04,330 --> 00:12:06,029 Para abrir el prefab como hemos hecho 161 00:12:06,029 --> 00:12:07,889 Para seleccionarlo en la jerarquía 162 00:12:07,889 --> 00:12:24,269 Y otro que son los overrides. Los overrides sirven para, diciendo lo que tiene de diferencial, marcado con este más, esa diferencia que hay con el prefab, decir, no, no, yo lo que quiero es que todos los prefabs que deriven de este, pues oye, he pensado que tenga este RigidBody. 163 00:12:24,269 --> 00:12:39,210 Entonces, si le damos a aplicar, vais a ver que se aplica ahora, va a tardar un segundete, a todas las instancias que tenga este prefab. Por tanto, es otra forma de modificar también una instancia. 164 00:12:40,210 --> 00:12:46,649 Incluso aquí podemos ir abriendo la nave y decir, no, es que la nave no quiero que tenga alerones. 165 00:12:46,769 --> 00:12:51,750 Veis que estoy trabajando no dentro del área de prefab, sino dentro de la jerarquía, en una instancia. 166 00:12:51,750 --> 00:12:57,350 Si yo borro esos alerones, en los alerones justo me va a decir, oye, esto es un hijo de un prefab, 167 00:12:57,429 --> 00:12:59,529 si borras esto, pues te está variando el prefab. 168 00:12:59,950 --> 00:13:02,190 Lo tendrías que hacer del prefab o tendrías que hacer una variante. 169 00:13:02,389 --> 00:13:06,210 Y aquí es donde se podría borrar y luego guardar. 170 00:13:06,210 --> 00:13:21,129 Vamos a empezar a hablar de programación. Yo no sé de vosotros si alguno ya ha programado alguna vez en otro lenguaje o tiene nociones. Entiendo que muchos no, lo cual es lógico. 171 00:13:21,129 --> 00:13:40,750 El otro día dije que se podían añadir código, todas las funcionalidades que vamos a ir añadiendo va a ser a través de estos componentes que os he indicado o añadiendo nosotros código que vayamos programando que a fin de cuentas también se añadirá como un componente. 172 00:13:40,750 --> 00:13:54,929 Para eso se generan los que se llaman scripts. Y estos scripts ya vimos, voy rápido porque esto lo expliqué el otro día, que se generan con clic derecho, crear y aquí tenemos una opción de generar un script de César, que es el lenguaje de programación en el que trabajamos. 173 00:13:54,929 --> 00:14:08,250 Ya os comenté, y lo ponen los apuntes, que cuidado con el nombre que demos al script por defecto, porque luego se va a ver reflejado dentro del código. 174 00:14:08,629 --> 00:14:20,230 Y si no coincide este nombre con el nombre de la clase del código, la clase es el patrón que se va a usar en el código para ir organizando los distintos códigos, 175 00:14:20,230 --> 00:14:31,509 Pues si no coincide, dará problemas. Entonces he generado este script y si quiero que se vean los resultados de algún modo, habrá que meterlo como componente en algún elemento. 176 00:14:31,870 --> 00:14:39,470 Ahora vamos a hacer operaciones matemáticas y al final del todo un instant sheet para ver cómo se hace un poco lo de la tarea. 177 00:14:39,470 --> 00:14:58,950 Pero para que se aplique este código a algo, ahora mismo simplemente está aquí preparado y si le doy doble clic, se abrirá vuestro Visual Studio que tendréis aquí. Veis esta bonita pantalla de hacker que se nos ha quedado con un poco ese código abierto preparado para trabajar. 178 00:14:58,950 --> 00:15:21,070 Aquí vais a ver que este nombre y este coinciden y tienen que coincidir. Ya lo expliqué el otro día, por eso, si no tenéis dudas, no lo voy a repasar más. Pero aquí tenemos, digamos, la conexión entre el archivo que está trabajando, operando dentro de Unity y lo que va a responder a nuestro código. Por tanto, si cambiamos alguna letra aquí o algo, habrá que cambiarlo en ambos puntos. 179 00:15:21,070 --> 00:15:26,350 importante, aquí ya de hecho tengo algunas carpetas 180 00:15:26,350 --> 00:15:28,169 habéis visto la de prefabs, donde tenía los prefabs 181 00:15:28,169 --> 00:15:30,990 para generar carpetas, clic derecho crear 182 00:15:30,990 --> 00:15:34,529 aquí es prácticamente donde se crea todo lo que podemos tener para el proyecto 183 00:15:34,529 --> 00:15:38,230 hay uno de folder, os recomiendo que vayáis organizando 184 00:15:38,230 --> 00:15:39,769 esto lo ponen los apuntes también 185 00:15:39,769 --> 00:15:42,129 por tipología de elemento 186 00:15:42,129 --> 00:15:45,629 yo por ejemplo, tengo aquí algunos que he estado yo trabajando 187 00:15:45,629 --> 00:15:48,789 los quiero tener ahí preparados, pero este que va a ser durante la tutoría 188 00:15:48,789 --> 00:15:54,629 lo meto en la carpeta durante, para tenerlo ahí, para saber cuáles son los de durante y los que tenía de antes. 189 00:15:55,230 --> 00:15:59,809 Lo dicho, tenemos aquí el script abierto esperando para operar. 190 00:16:00,350 --> 00:16:04,929 Y por mucho que yo escriba aquí, hasta, bueno, no por mucho, hay otros que no hará igual falta, 191 00:16:05,409 --> 00:16:08,950 esto ya es más avanzado, pero si queremos que lo que yo vaya aplicando a este código 192 00:16:08,950 --> 00:16:14,049 se vea reflejado en algún momento en el programa, habrá que meterlo como componente en algún elemento. 193 00:16:14,049 --> 00:16:25,730 Ahora mismo vamos a hacer, porque va a ser a nivel teórico, vamos a generar un vacío, no va a afectar a un objeto visual, visible, y va a servir para cálculos, por ejemplo. 194 00:16:26,470 --> 00:16:37,970 Va a ser un objeto vacío al que yo vinculo y mirad que para vincular un script puedo arrastrar desde aquí al inspector y se incorpora como otro de los componentes. 195 00:16:37,970 --> 00:17:02,529 Si lo quiero eliminar, las opciones de eliminar, de copiar, etc. están en estos tres puntos. Lo voy a eliminar porque también se puede añadir, igual que se puede hacer con los componentes, con los efectos, por decirlo de una forma rápida e inteligible, todos los que ya vienen configurados también se puede buscar por aquí para añadirlo. 196 00:17:02,529 --> 00:17:23,349 Hay uno de cálculos, que es el otro que tenía, y cálculos tut. Fijaos, de hecho, cuando leáis sobre el Pascal case y el Camel case, cómo se deberían escribir las palabras en programación, aunque aquí haya puesto cálculos tut todo seguido, fijaos que el propio programa, yo ya cuando lo meto en el archivo, sabe separar estos nombres. 197 00:17:23,349 --> 00:17:37,069 Para que veáis que ya está pensado esto y hay que ir siguiendo estas nomenclaturas que iremos viendo y que ya en el tema cero se habla de varias. Ahora ya está en un objeto dentro de Unity esperando a operar con él. 198 00:17:37,069 --> 00:17:43,210 Pues estamos aquí con CalculusTut y vamos a hacer nuestra primera operación matemática. 199 00:17:43,990 --> 00:17:57,109 Y os voy a decir algo que es que casi todo lo que vais a hacer consiste en operaciones matemáticas y en lógica de que se cumplan condiciones o no. 200 00:17:57,670 --> 00:18:01,170 Es decir, todo por detrás son esos números o interpretaciones de números. 201 00:18:01,170 --> 00:18:12,569 Entonces, aunque ahora una suma parezca una tontería, al final casi todo lo vamos a ir controlando con números. Entonces es importante saber operar con las opciones que nos da. 202 00:18:13,490 --> 00:18:29,009 Para empezar a programar, y esto quien haya programado en cualquier lenguaje, hay un concepto que es el primario, digamos que es la variable. La variable es un elemento en el que se van guardando espacios en la memoria con una información. 203 00:18:29,009 --> 00:18:44,289 Por ejemplo, quiero que haya un número al que puedo referenciar con otra palabra. Voy a hacer primero una operación matemática y luego vamos a ver qué son las variables. 204 00:18:45,009 --> 00:18:48,750 Aquí hay una línea que veis que se llama igual que el archivo. 205 00:18:49,470 --> 00:18:51,970 Ya veremos un poco más qué es esto de clase, etc. 206 00:18:53,069 --> 00:18:57,089 Pero a partir de estas llaves, y vais a ver que cuando marco una llave, 207 00:18:58,130 --> 00:19:00,910 se marca otra llave, una de apertura y una de cierre, 208 00:19:01,470 --> 00:19:05,029 porque este lenguaje, como los que si habéis visto el tema cero, 209 00:19:05,029 --> 00:19:08,650 los que se suele trabajar en lo que se llama programación orientada a objetos, 210 00:19:09,529 --> 00:19:11,750 esto es más avanzado, ya le iréis dando vueltas, 211 00:19:11,750 --> 00:19:15,829 se van estipulando en bloques, ¿vale? 212 00:19:15,970 --> 00:19:19,650 Y estos bloques significa que hay una llave de apertura 213 00:19:19,650 --> 00:19:22,730 y una llave de cierre que delimita un área, ¿no? 214 00:19:22,730 --> 00:19:24,769 Ahora mismo, de aquí a aquí, pues hay un área, 215 00:19:25,349 --> 00:19:27,230 y dentro de ese área, de ese bloque, 216 00:19:27,390 --> 00:19:29,630 es donde vamos a ir añadiendo las instrucciones 217 00:19:29,630 --> 00:19:32,450 que se van a ejecutar, por ejemplo, en este caso, 218 00:19:32,529 --> 00:19:34,029 dentro de esta clase, ¿vale? 219 00:19:34,430 --> 00:19:37,769 Si veis esta llave, comprende todo lo que hay aquí dentro. 220 00:19:38,230 --> 00:19:39,930 Y luego vais a ver otras llaves, por ejemplo, aquí. 221 00:19:39,930 --> 00:19:43,950 Y esta llave, cuando marco esta, veis que tiene su correspondiente llave de cierre. 222 00:19:44,549 --> 00:19:50,069 Y aquí es donde se irá ejecutando, por ejemplo, lo de este start o este update, este método update. 223 00:19:50,329 --> 00:19:51,769 Esto ya veremos ahora qué es. 224 00:19:52,269 --> 00:19:58,730 También tiene un área de influencia, donde yo iré escribiendo código y se ejecutará lo relacionado con update. 225 00:20:00,309 --> 00:20:07,029 Entonces, aquí es muy importante que lo que se abre se cierra a nivel de llaves y a nivel de paréntesis. 226 00:20:07,029 --> 00:20:21,829 También veis que se suelen abrir y cerrar, aunque estén vacíos y parezca un sinsentido, ahí están esperando. Dentro de este bloque iremos haciendo operaciones, pero veis que este bloque ya tiene, digamos, dos bloques aquí también, esperando que hagamos cosas. 227 00:20:21,829 --> 00:20:42,950 Esto es porque Unity ya, a través de la herencia de otra clase, como de otra carpeta de posibilidades que alguien ha prehecho antes, los que han desarrollado C-SARP para trabajar en Unity, pues ya ha generado ciertas funciones como este start y este update para poder ejecutar en ciertos momentos. 228 00:20:42,950 --> 00:21:00,670 C-SARP se usa también para programar de otro tipo, etc. Incluso si veis tutoriales en internet de C-SARP, de Aprende C-SARP, si no está aplicada Unity, vais a aprender C-SARP, el lenguaje, pero veréis que por definición va a haber una cosa llamada Main, pues otro método que está pensado para otros usos. 229 00:21:00,670 --> 00:21:09,849 Aquí digamos que está adaptado, igual que un lenguaje luego tiene dialectos, por decirlo así, pues este ya está adaptado para lo que se hace en Unity, que es desarrollo de aplicaciones, videojuegos, etc. 230 00:21:10,009 --> 00:21:24,210 Entonces, si pensamos fríamente, cuando estamos jugando en un videojuego lo que vamos a tener es unas interactividades, unas interacciones que vamos a ir haciendo y el programa en todo momento tiene que ir captando lo que hacemos o no hacemos. 231 00:21:24,210 --> 00:21:30,849 para, pues si en el mando damos a la X, pues que salte, si es lo que hemos configurado, ¿no? 232 00:21:31,470 --> 00:21:38,390 ¿Vale? También va a haber momentos, va a haber operaciones que queremos que se ejecuten 233 00:21:38,390 --> 00:21:41,950 según se lanza el juego. Pues, por ejemplo, que se configure el nivel, se cargue, 234 00:21:42,529 --> 00:21:49,609 que se ponga que la vida está al 100%, etc. Y ese es otro momento del juego, que es al iniciar. 235 00:21:49,609 --> 00:22:05,630 Entonces, estos dos métodos que tenemos aquí sirven, uno, para meter instrucciones que se ejecutan según se abre o se aplica dentro del juego este código, ¿vale? Al arrancar este código, en el estar lo que yo diga, se va a ejecutar, ¿vale? 236 00:22:05,630 --> 00:22:21,849 Y luego va a haber aquí otro bloque, en base a otro método, que es este update. A ver, la traducción que ahora no me sale, como de actualización, de actualizar, que constantemente fotograma a fotograma va a ir mirando qué hay aquí dentro para fotograma a fotograma irlo ejecutando. 237 00:22:21,849 --> 00:22:29,569 Entonces, lo primero, lo que metamos aquí, dicho rápido, se ejecutará al iniciar el juego 238 00:22:29,569 --> 00:22:35,029 A no ser que este código se ejecute posteriormente y será cuando empiece a ejecutarse ese código 239 00:22:35,029 --> 00:22:38,710 Y este update se irá ejecutando fotograma a fotograma 240 00:22:38,710 --> 00:22:40,890 Esto lo vamos a entender en poco 241 00:22:40,890 --> 00:22:47,509 Vamos a escribir, lo ha dicho el compañero, nuestro primer hola mundo 242 00:22:47,509 --> 00:23:04,589 Que es una frase que se usa en programación para comprobar que la consola de programación del programa, la consola es, digamos, una especie de ordenadorcito que va a ir reflejando qué operaciones se están desarrollando en cada momento. 243 00:23:04,750 --> 00:23:08,670 Aquí está más simplificado que en otros usos, ¿vale? 244 00:23:09,390 --> 00:23:14,329 Pero vamos a lanzar a consola, ahora veis lo que es eso, nuestra primera frase, que va a ser ese hola mundo, ¿vale? 245 00:23:14,549 --> 00:23:15,970 Y vamos a ver nuestra primera operación. 246 00:23:15,970 --> 00:23:34,930 Va a haber un montón de palabras reservadas, de palabras clave, de propiedades, etcétera, que tenemos que ir aprendiendo e ir manejando, ¿no? Entonces, la primera que vamos a hacer es cómo hacer que nuestro programa lance una frase, ¿vale? Entonces, vamos a conseguir que a través de Unity ver la frase que nosotros le digamos, ¿vale? 247 00:23:34,930 --> 00:23:56,009 Para eso hay que escribir debug y veis algo importante que cuando empezáis a escribir algo os empieza a salir aquí como ayudas. Esto es un sistema en Visual Studio que se llama IntelliSense, que lo que va haciendo es detectar lo que vamos escribiendo para darnos sugerencias de que esto puede completarse con estas opciones. 248 00:23:56,009 --> 00:24:04,730 Que en todas veis que hay un tran, ¿no? Pues si sigo ir afinando, pero esto viene muy bien para ir sabiendo qué opciones hay que podamos ir seleccionando, ¿vale? 249 00:24:06,809 --> 00:24:22,869 Entonces, la primera instrucción es este debug, ¿vale? Y dentro de cada instrucción, digamos que luego, dentro de cada clase en este caso, luego va a haber como propiedades hijas de esta operación, ¿no? 250 00:24:22,869 --> 00:24:41,630 Por ejemplo, debug, si le damos al punto, de pronto van a salir muchas opciones, no hemos escrito más. Pues debug a ser debug log, que es la que nos interesa. Entonces, quiero que en programación interpretéis los puntos como separadores en jerarquías inferiores, me explico, como unas migas de pan que hemos visto antes. 251 00:24:41,630 --> 00:24:55,150 ¿Qué significa esto? Supongo que todos habéis rellenado la típica ficha que os preguntan, ¿cuál es vuestro país? Y luego, ¿cuál es vuestra ciudad? Y luego, ¿cuál es vuestra calle? Y luego, ¿cuál es vuestro número? 252 00:24:55,150 --> 00:25:13,769 Y cada opción consecuente va a ser dependiente del padre. Es decir, si ponéis que sois de Estados Unidos, pues luego saldrá aquí la opción de poder elegir entre los estados. Pero si elegís España, pues lo que van a salir son las comunidades autónomas. Cada caso irá desbloqueando nuevas opciones. 253 00:25:13,769 --> 00:25:40,809 Entonces, siempre se va a ir de lo general a cada vez lo más concreto. Debug, que sirve sobre todo para depurar código, para encontrar errores. Si damos al punto, tiene dentro muchas operaciones relacionadas. La mayoría de ellas no las vamos a necesitar, pero hay una muy importante que debéis aprender, que es esta que se llama debug.log. 254 00:25:40,809 --> 00:25:56,670 Damos doble clic y ahí está. Cuando estamos ejecutando una acción con código, vais a ver que siempre, o prácticamente siempre, vais a tener que abrir y cerrar unos paréntesis. 255 00:25:56,670 --> 00:26:19,809 Y esto alude otra vez a estos paréntesis, por ejemplo, que tenemos aquí, sin rellenar, porque ahora mismo esto nos interesa que esté vacío. Pero hasta que no ponemos estos paréntesis, digamos que el software, el Visual Studio, no sabe que estamos lanzando una instrucción de hacer algo, que es lo que se llama lanzar un método o lanzar una función. 256 00:26:19,809 --> 00:26:28,069 De backlog, como funciona, por ver el primer uso, sirve para aquí, entre comillas, ahora os digo por qué 257 00:26:28,069 --> 00:26:33,589 Podéis poner la frase que queráis lanzar, desde el hola mundo, que es la que vamos a lanzar ahora 258 00:26:33,589 --> 00:26:36,170 Pero bueno, lo voy a hacer más personal, hola mundo, Daniel 259 00:26:36,170 --> 00:26:42,190 Y vais a ver que aquí nos sigue marcando un fallo, está aquí sobre allá con un fallo 260 00:26:42,190 --> 00:26:47,190 Os dije el otro día que para que se vea reflejado algo que hagamos en código 261 00:26:47,190 --> 00:26:49,150 ¿vale? atención que aquí arriba 262 00:26:49,150 --> 00:26:50,769 tenéis el nombre del archivo y va apareciendo 263 00:26:50,769 --> 00:26:52,950 un asterijillo que indica que es que no está guardado 264 00:26:52,950 --> 00:26:54,930 ¿vale? hasta que yo no haga control S 265 00:26:54,930 --> 00:26:56,710 yo no estoy guardando el código 266 00:26:56,710 --> 00:26:58,589 y hasta que yo no guardo el código, por tanto 267 00:26:58,589 --> 00:27:00,930 siempre hay que estar dando control S cuando queramos hacer algo 268 00:27:00,930 --> 00:27:02,589 aunque yo vaya a Unity 269 00:27:02,589 --> 00:27:03,950 y haga lo que tenga que hacer 270 00:27:03,950 --> 00:27:07,150 no se va a ver reflejado 271 00:27:07,150 --> 00:27:08,170 tenemos que ir guardando 272 00:27:08,170 --> 00:27:09,950 y ojo, mirad que aquí 273 00:27:09,950 --> 00:27:12,849 y aquí también tenéis asterijillos 274 00:27:12,849 --> 00:27:14,470 ¿vale? son dos software diferentes 275 00:27:14,470 --> 00:27:16,170 Visual Studio y Unity 276 00:27:16,170 --> 00:27:27,329 En uno estamos trabajando el código, que habrá que ir guardando también, y en otro iremos trabajando en lo que son las, pues todo lo que nos ofrece esta interfaz destinada a desarrollo de videojuegos a nivel gráfico. 277 00:27:28,650 --> 00:27:31,309 Entonces, aquí también puedo hacer control S e ir guardando. 278 00:27:31,910 --> 00:27:33,049 Veis que ahora se ha ido el asterisco. 279 00:27:33,430 --> 00:27:41,230 Aquí se ha guardado todo lo relacionado a nivel visual, pero si yo cambio algo en Unity en código, son independientes cada uno de ellos. 280 00:27:41,230 --> 00:27:43,869 Entonces atención de si algo no funciona 281 00:27:43,869 --> 00:27:45,230 Que aquí no esté el asterisco 282 00:27:45,230 --> 00:27:46,769 Porque entonces igual todo lo que habéis cambiado 283 00:27:46,769 --> 00:27:48,369 No se está viendo reflejado 284 00:27:48,369 --> 00:27:51,309 Y veis que aquí está este error 285 00:27:51,309 --> 00:27:53,690 Y ya os digo, si aquí hay algo subrayado rojo 286 00:27:53,690 --> 00:27:55,869 Vuestro programa no va a funcionar 287 00:27:55,869 --> 00:27:57,049 Va a dar fallo, va a dar error 288 00:27:57,049 --> 00:27:58,589 Porque no está sabiendo ejecutarlo 289 00:27:58,589 --> 00:28:01,349 Y esto lo veis, si vais a Unity 290 00:28:01,349 --> 00:28:03,089 Y os metéis 291 00:28:03,089 --> 00:28:05,890 Aquí abajo ya sale una exclamación roja 292 00:28:05,890 --> 00:28:07,569 Que algo nos dice 293 00:28:07,569 --> 00:28:08,710 Que no está yendo bien 294 00:28:08,710 --> 00:28:11,069 Y de hecho yo intento ejecutar el juego, aunque ahora no tenga nada 295 00:28:11,069 --> 00:28:17,349 Le doy y dice, todos los errores de compilación tienen que ser arreglados antes de poder proceder al modo de juego. 296 00:28:18,230 --> 00:28:24,069 Por tanto, veis que a mí no me deja hacer nada en el área de game porque está habiendo un error. 297 00:28:25,809 --> 00:28:32,349 Esta línea roja que hay aquí realmente es una especie de resumen de lo que podéis ver en el menú consola. 298 00:28:32,890 --> 00:28:37,650 Que os he dicho antes, si dais a consola, aquí sale aún más grande la exclamación y es el mismo error. 299 00:28:37,650 --> 00:28:46,609 Es verdad que aquí pueden salir muchas más líneas, muchos más errores, se os puede llenar, pero aquí digamos que os va poniendo como la última o la principal que tenéis que ver. 300 00:28:47,170 --> 00:28:49,970 Son las mismas, si leéis la línea es exactamente lo mismo. 301 00:28:50,809 --> 00:29:01,549 Y esto, más adelante os va a venir bien, si queréis acceder a lo que está dando este fallo, si le dais doble clic, lo debería abrir, a mí me lo ha abierto en otro lado porque tengo otra ventana, 302 00:29:01,549 --> 00:29:12,730 Pero lleva a la línea de ese error. Me está aquí marcando dónde está el error. Es una buena forma de, cuando hay error, saber de dónde viene. Le dais doble clic y decís, oye, ¿qué pasa? ¿Por qué esto está yendo mal? 303 00:29:13,410 --> 00:29:24,069 Aparte aquí os pone también tanto, veis, el nombre del script del que está surgiendo el error, la línea, ¿vale? 11, 40, la línea y la columna que está dando el error. 304 00:29:24,069 --> 00:29:32,170 Si nos metemos en el código, vemos que es la línea 11, por eso no lo va numerando, y la columna que no está detallada, pues es la 40, ¿vale? 305 00:29:32,170 --> 00:29:40,450 Aquí podéis ir viendo, pues digamos, todos los problemas que podéis ir yendo de una forma también descrita. 306 00:29:40,450 --> 00:30:02,349 Aquí también pone el error, ¿vale? Que aquí suele poner el motivo, ¿no? Y es que espera un punto y coma, ¿vale? A nivel de sintaxis de trabajo de este código, de CISAR, ¿vale? De este lenguaje, toda instrucción que vayamos dando, toda línea, debe acabar en punto y coma para ir separando las distintas órdenes que vamos ejecutando, ¿sí? 307 00:30:02,349 --> 00:30:28,920 Entonces, hasta que no ponga punto y línea, pues esta orden, digamos que no se sabe hasta dónde llega, entonces hay que delimitarla en algún momento, ¿vale? Vemos que no da error, ¿vale? Y voy a ir a cesar para ejecutar esto, ¿vale? Y dice, aquí sigue poniendo el error, ¿por qué creéis que es? ¿Por qué? Si aquí no me sale nada rojo. 308 00:30:30,660 --> 00:30:31,920 Venga, primera pregunta interactiva. 309 00:30:31,920 --> 00:30:34,559 interactiva. Porque no se ha guardado 310 00:30:34,559 --> 00:30:36,359 el 311 00:30:36,359 --> 00:30:38,160 proyecto en el 312 00:30:38,160 --> 00:30:40,140 Visual Studio. Perfecto. Veis que 313 00:30:40,140 --> 00:30:42,039 está el asterijillo. Importante, porque 314 00:30:42,039 --> 00:30:44,180 esto ahora es muy obvio, pero luego pasa. 315 00:30:44,579 --> 00:30:46,299 Control-S, se ha guardado, vuelvo 316 00:30:46,299 --> 00:30:46,900 y ya 317 00:30:46,900 --> 00:30:50,440 cuando me permita 318 00:30:50,440 --> 00:30:52,180 a veces tiene que recargar. Según el 319 00:30:52,180 --> 00:30:53,859 ordenador, mejor o peor, tardará más. 320 00:30:54,500 --> 00:30:56,059 Ahora hay otros problemas, 321 00:30:56,400 --> 00:30:56,539 pero 322 00:30:56,539 --> 00:31:00,220 ya no es el rojo. Cuando salen 323 00:31:00,220 --> 00:31:02,160 errores amarillos, significa 324 00:31:02,160 --> 00:31:03,759 con este warning 325 00:31:03,759 --> 00:31:06,200 amarillo, significa que hay errores 326 00:31:06,200 --> 00:31:07,319 pero no son 327 00:31:07,319 --> 00:31:10,500 fatales, es decir, no van a detener la ejecución 328 00:31:10,500 --> 00:31:12,299 pero bueno, convendría echarle un ojo 329 00:31:12,299 --> 00:31:13,940 lo mismo, si le damos doble clic 330 00:31:13,940 --> 00:31:16,160 nos abriría, esto es de otros scripts que tengo preparados 331 00:31:16,160 --> 00:31:18,380 antes, nos abriría donde está en el código 332 00:31:18,380 --> 00:31:19,299 ese error 333 00:31:19,299 --> 00:31:22,000 ahora, cuando lancemos la aplicación 334 00:31:22,000 --> 00:31:24,720 cuando le da play, vais a ver que se ejecuta 335 00:31:24,720 --> 00:31:25,579 os he dicho 336 00:31:25,579 --> 00:31:27,720 cuando lancéis, ahora se va a ver 337 00:31:27,720 --> 00:31:30,160 en el juego, la frase, cual hemos dicho 338 00:31:30,160 --> 00:31:32,460 hola mundo Daniel, y os vais a llevar 339 00:31:32,460 --> 00:31:34,279 la primera desilusión, porque 340 00:31:34,279 --> 00:31:36,420 no se ve nada en el juego, no hay nada 341 00:31:36,420 --> 00:31:38,059 ahí que se vea 342 00:31:38,059 --> 00:31:39,779 pero si os fijáis en la consola 343 00:31:39,779 --> 00:31:41,720 sí que aquí pone hola mundo Daniel 344 00:31:41,720 --> 00:31:44,160 os he dicho que 345 00:31:44,160 --> 00:31:46,299 estas operaciones 346 00:31:46,299 --> 00:31:47,720 se hacen 347 00:31:47,720 --> 00:31:50,160 para depurar errores de código 348 00:31:50,160 --> 00:31:52,180 es decir, no es algo digamos que se va a ver en el juego 349 00:31:52,180 --> 00:31:54,279 son instrucciones que la consola 350 00:31:54,279 --> 00:31:56,480 va a ir mostrando para ir viendo si se está ejecutando 351 00:31:56,480 --> 00:31:58,180 algo bien o no, es de vital importancia 352 00:31:58,180 --> 00:32:00,259 este debug log, ya iréis viendo que es con lo que 353 00:32:00,259 --> 00:32:01,980 vamos a ir comprobando que todo funcione 354 00:32:01,980 --> 00:32:04,000 entonces, ahora mismo he puesto 355 00:32:04,000 --> 00:32:06,059 hola mundo Daniel, aquí podría poner 356 00:32:06,059 --> 00:32:07,740 hola 357 00:32:07,740 --> 00:32:09,720 a ver, uno de vosotros 358 00:32:09,720 --> 00:32:11,779 Elisa, que la estoy viendo ahora mismo 359 00:32:11,779 --> 00:32:14,500 pues, hola Elisa, ¿no? yo si vuelvo a guardar 360 00:32:14,500 --> 00:32:16,339 y voy, cuando ejecute el juego 361 00:32:16,339 --> 00:32:18,359 ojo, cuando me meto 362 00:32:18,359 --> 00:32:20,420 otra vez, si está el juego en ejecución 363 00:32:20,420 --> 00:32:22,480 necesito volver a lanzarlo 364 00:32:22,480 --> 00:32:23,460 ¿vale? 365 00:32:23,920 --> 00:32:25,700 y ahora pone lo que le he dicho 366 00:32:25,700 --> 00:32:28,140 ¿vale? ya vamos viendo que algo 367 00:32:28,140 --> 00:32:30,200 Se ve que hay cierta interacción 368 00:32:30,200 --> 00:32:32,319 Vale, entonces, ya para entender 369 00:32:32,319 --> 00:32:34,460 Que lo que hemos hecho en el Star 370 00:32:34,460 --> 00:32:36,200 Significa que cuando empiece a ejecutarse 371 00:32:36,200 --> 00:32:37,640 El juego 372 00:32:37,640 --> 00:32:39,079 Se ve este hola Elisa 373 00:32:39,079 --> 00:32:42,019 ¿No te sale la consola Elisa? 374 00:32:42,859 --> 00:32:44,420 No, ahora ya me escuchas 375 00:32:44,420 --> 00:32:46,140 Que no me sale la consola 376 00:32:46,140 --> 00:32:48,220 Lo estoy poniendo en el código y cuando me voy a Unity 377 00:32:48,220 --> 00:32:48,759 No me sale 378 00:32:48,759 --> 00:32:51,099 ¿Quieres compartirme pantalla y lo vemos? 379 00:32:51,319 --> 00:32:53,039 Ah, no puedo 380 00:32:53,039 --> 00:32:55,700 Porque estoy con la cámara en un ordenador 381 00:32:55,700 --> 00:32:56,779 Y con el Unity en otro 382 00:32:56,779 --> 00:32:58,839 bueno, pues compárteme con el 383 00:32:58,839 --> 00:33:00,980 en el ordenador de Unity no estás 384 00:33:00,980 --> 00:33:02,779 con, no estás metida en las dos 385 00:33:02,779 --> 00:33:04,039 no, vale 386 00:33:04,039 --> 00:33:06,799 vale, pues nada, sigo trasteando 387 00:33:06,799 --> 00:33:08,480 y si no te escribo y lo vemos 388 00:33:08,480 --> 00:33:10,539 tú has escrito el código dentro, no hombre 389 00:33:10,539 --> 00:33:12,240 pero me interesa que vayamos viéndolo 390 00:33:12,240 --> 00:33:14,460 estoy poniendo como anotaciones de las cosas que vas 391 00:33:14,460 --> 00:33:16,599 explicando para tener como hay una mini chuleta 392 00:33:16,599 --> 00:33:18,619 pero he puesto debug.log 393 00:33:18,619 --> 00:33:19,839 hola Eli 394 00:33:19,839 --> 00:33:22,440 y no me sale, o sea, me sale bien 395 00:33:22,440 --> 00:33:24,000 el código, no me sale ningún error 396 00:33:24,000 --> 00:33:26,640 está pues con los mismos colores que tú 397 00:33:26,640 --> 00:33:29,339 Pero en Unity no me sale en consola. 398 00:33:30,079 --> 00:33:30,920 De hecho, me sale un error. 399 00:33:31,000 --> 00:33:32,980 ¿Y le estás dando al reproducir? 400 00:33:33,279 --> 00:33:34,799 Es decir, lo guardas... 401 00:33:34,799 --> 00:33:37,660 Lo guardo, lo reproduzco y me sale un error. 402 00:33:38,319 --> 00:33:38,680 A ver. 403 00:33:40,690 --> 00:33:41,410 ¿Y qué error pone? 404 00:33:42,609 --> 00:33:48,369 Collapse service is desplaced and has been replaced with Plastic SCM. 405 00:33:49,490 --> 00:33:50,829 Uh, ese es avanzado. 406 00:33:50,910 --> 00:33:51,609 ¿Pero es rojo el error? 407 00:33:51,750 --> 00:33:52,109 No creo. 408 00:33:52,190 --> 00:33:52,930 Sí, es rojo. 409 00:33:54,430 --> 00:33:56,849 ¿Puedes hacer algo para compartirme la pantalla, porfa? 410 00:33:56,849 --> 00:33:59,369 A ver si te va a dar sí 411 00:33:59,369 --> 00:34:01,490 Espera, esto es una locura 412 00:34:01,490 --> 00:34:02,750 Vale 413 00:34:02,750 --> 00:34:05,029 Collab services deprecated 414 00:34:05,029 --> 00:34:07,990 Claro, pero eso no tiene nada que ver 415 00:34:07,990 --> 00:34:09,809 Con 416 00:34:09,809 --> 00:34:14,909 Sí, está bien 417 00:34:14,909 --> 00:34:16,769 Clase 418 00:34:16,769 --> 00:34:17,590 A ver 419 00:34:17,590 --> 00:34:19,750 Vuelvete al editor 420 00:34:19,750 --> 00:34:24,079 Dale doble clic al error 421 00:34:24,079 --> 00:34:24,639 ¿Qué te hace? 422 00:34:29,880 --> 00:34:30,480 Vale 423 00:34:30,480 --> 00:34:32,860 Y esto lo ha generado de cero 424 00:34:32,860 --> 00:34:34,260 Y nada 425 00:34:34,260 --> 00:34:55,610 Y ese más que te sale... Es que tienes activado algo de compartir en la nube. Puede ser. A ver, cuando lo hayas creado en Unity Hub, ¿puedes ir al Unity Hub un segundo? El Unity Hub es el otro, el blanco. Ahí. Conectado. Vale. 426 00:34:55,610 --> 00:35:24,210 Han metido nuevas opciones que están dando fallos y de las que yo, la verdad, tampoco controlo mucho. En el último Unity Hub han metido opciones del cloud, de la nube, ¿vale? Y en tu caso aparece como conectado. Desconectalo porque creo que es lo que está dando problema entonces para desconectarlo. No, no, no te salgas. Dale donde pone connected. Ahí, a ver qué te pone. Dale, no te deja cambiar, ¿no? La opción, vale. 427 00:35:25,610 --> 00:35:28,730 A ver, Disconnect from Unity Cloud, pero no te deja. 428 00:35:30,230 --> 00:35:33,989 Y a ver, y en el proyecto de abajo, que es otro, que no está en uso ahora mismo, 429 00:35:34,090 --> 00:35:38,769 si vas a los tres punticos de la derecha, Disconnect from Unity Cloud, vale. 430 00:35:40,070 --> 00:35:41,869 Vale, te sugiero que lo desconectes. 431 00:35:45,050 --> 00:35:46,289 Sí, desconectalo, sin problema. 432 00:35:46,869 --> 00:35:50,309 Y va a seguir dando el error porque este archivo sigue estando conectado. 433 00:35:50,309 --> 00:35:53,510 Tienes que cerrarlo, vale, ciérralo. 434 00:35:53,510 --> 00:35:55,929 Ciérralo de... Ah, eso es, sí 435 00:35:55,929 --> 00:35:58,469 Y vuelve a hacer lo de la opción de desconectar 436 00:35:58,469 --> 00:36:00,570 De desconectar 437 00:36:00,570 --> 00:36:02,150 Este error 438 00:36:02,150 --> 00:36:02,969 La verdad es que no 439 00:36:02,969 --> 00:36:05,630 No sé muy bien cómo gestionarlo 440 00:36:05,630 --> 00:36:07,130 Porque es algo que acaban de poner nuevo 441 00:36:07,130 --> 00:36:09,150 A ver si con esto ya 442 00:36:09,150 --> 00:36:11,329 Perfecto, a ver, dale al play 443 00:36:11,329 --> 00:36:24,690 Pero no te sale el... Hola Elisa 444 00:36:24,690 --> 00:36:26,389 Ah, bueno, claro 445 00:36:26,389 --> 00:36:28,210 A ver, importante 446 00:36:28,210 --> 00:36:29,550 Bueno, ya hemos solucionado el error 447 00:36:29,550 --> 00:36:32,409 Pero, como he dicho antes 448 00:36:32,409 --> 00:36:34,269 para que se vea reflejado en el Unity, 449 00:36:34,570 --> 00:36:36,489 ¿lo has aplicado como componente a algún objeto? 450 00:36:39,059 --> 00:36:40,599 ¿Lo has arrastrado a algún elemento? 451 00:36:41,820 --> 00:36:43,059 Ahí, por ejemplo, a la luz, da igual. 452 00:36:43,559 --> 00:36:45,320 La luz, cuando tiene sentido. 453 00:36:45,519 --> 00:36:46,900 Ahora, cuando lo lances, 454 00:36:47,980 --> 00:36:49,519 igual te lanza, tarda un poquillo, 455 00:36:50,659 --> 00:36:51,300 ¿vale? Dale al play. 456 00:36:54,329 --> 00:36:54,889 Ahí lo tienes. 457 00:36:55,590 --> 00:36:55,769 ¿Vale? 458 00:36:56,289 --> 00:36:57,989 Hasta que no lo aplicáis a algún objeto 459 00:36:57,989 --> 00:36:58,929 que está dentro de la escena, 460 00:36:59,050 --> 00:37:00,110 pues el código está ahí preparado, 461 00:37:00,190 --> 00:37:01,250 pero no sabe a qué aplicarse. 462 00:37:01,570 --> 00:37:01,750 ¿Vale? 463 00:37:03,329 --> 00:37:04,429 Bueno, no te escucho, 464 00:37:04,429 --> 00:37:11,210 pero espero que que más o menos resuelto vale vuelvo a tomar yo el control vale 465 00:37:11,210 --> 00:37:16,190 vale entiendo que veis mi unity sigo entonces importante ya veis que las 466 00:37:16,190 --> 00:37:20,849 sutilezas son importantes estaba preparado todo bien pero pero bueno no 467 00:37:20,849 --> 00:37:24,889 se estaba reflejando y como he visto que estaba haciendo en el código lisa cuando 468 00:37:24,889 --> 00:37:28,550 ponemos dos líneas de este tipo podemos escribir lo que queramos para darnos 469 00:37:28,550 --> 00:37:36,670 indicaciones. Por ejemplo, esto sirve para mostrar mensaje en consola. Y esto no se ejecuta. 470 00:37:36,769 --> 00:37:39,610 Esta línea, esto verde, no se ejecuta. Es simplemente comentarios que vamos metiendo 471 00:37:39,610 --> 00:37:44,389 en el código para recordarnos nosotros e ir marcando a otro programador que también 472 00:37:44,389 --> 00:37:50,269 se meta en el código, pues lo que queramos, indicaciones. Importante, para que no ocurra 473 00:37:50,269 --> 00:37:53,869 lo de Lisa, que tampoco era el problema por lo que hemos visto. Pero bueno, esa indicación 474 00:37:53,869 --> 00:37:56,150 roja que salía no era muy aconsejable 475 00:37:56,150 --> 00:37:57,789 añadido, a lo mejor 476 00:37:57,789 --> 00:38:00,030 alguno, si el Unity Hub lo incorporaste 477 00:38:00,030 --> 00:38:01,510 y según empezó el curso no salga 478 00:38:01,510 --> 00:38:03,969 porque es algo nuevo del Unity Hub que acaban de incorporar 479 00:38:03,969 --> 00:38:05,210 que es poder trabajar en la nube 480 00:38:05,210 --> 00:38:07,250 para que esto no 481 00:38:07,250 --> 00:38:09,570 aparezca por defecto y no haya que 482 00:38:09,570 --> 00:38:11,510 desconectarlo después como acaba de hacer 483 00:38:11,510 --> 00:38:13,829 la compañera, cuando creéis 484 00:38:13,829 --> 00:38:15,309 un nuevo proyecto, de momento 485 00:38:15,309 --> 00:38:17,730 a no ser que sepamos lo que hagamos, el otro día 486 00:38:17,730 --> 00:38:19,429 lo vimos y de hecho el otro día no estaba 487 00:38:19,429 --> 00:38:21,210 estas opciones para que veáis lo reciente que es 488 00:38:21,210 --> 00:38:23,969 Os sugiero que a no ser que sepáis lo que hacéis 489 00:38:23,969 --> 00:38:25,789 Desconectéis los dos 490 00:38:25,789 --> 00:38:27,650 Tics nuevos que han puesto de usar 491 00:38:27,650 --> 00:38:29,869 En la nube, ¿vale? Lo de la versión de controles 492 00:38:29,869 --> 00:38:31,909 Y el connect, y de esta forma ya aparece 493 00:38:31,909 --> 00:38:33,829 Desconectado, ¿vale? Para que no de ese 494 00:38:33,829 --> 00:38:34,210 Error 495 00:38:34,210 --> 00:38:37,489 Que no era fatal, aunque salía en rojo, yo creo 496 00:38:37,489 --> 00:38:38,650 Que hubiera funcionado, pero 497 00:38:38,650 --> 00:38:41,510 Bueno, pues de momento 498 00:38:41,510 --> 00:38:42,789 No nos liamos con más cosas, ¿vale? 499 00:38:43,750 --> 00:38:43,969 Vale 500 00:38:43,969 --> 00:38:46,289 Hasta aquí bien 501 00:38:46,289 --> 00:38:49,909 Como alguna duda de alguien 502 00:38:49,909 --> 00:38:53,369 lo que he hecho 503 00:38:53,369 --> 00:38:54,809 si os acordáis lo último que he hecho 504 00:38:54,809 --> 00:38:56,630 mientras Elisa hacía el cambio 505 00:38:56,630 --> 00:38:58,369 ha sido 506 00:38:58,369 --> 00:39:01,429 copiar ese debug log de start 507 00:39:01,429 --> 00:39:02,250 a update 508 00:39:02,250 --> 00:39:04,530 si yo ahora mismo ejecuto el juego 509 00:39:04,530 --> 00:39:07,070 me meto aquí y le doy a play 510 00:39:07,070 --> 00:39:09,010 cuando arranca el juego 511 00:39:09,010 --> 00:39:11,269 vais a ver que hola Elisa sale 512 00:39:11,269 --> 00:39:13,449 muchísimas veces y aquí se van contando 513 00:39:13,449 --> 00:39:15,469 y me dice ya más de 1000 y ya no te hace 514 00:39:15,469 --> 00:39:17,289 la cuenta, cuando yo pare el juego 515 00:39:17,289 --> 00:39:19,610 veréis que aquí hay un trillón 516 00:39:19,610 --> 00:39:21,449 de hola Elisas. ¿Por qué? 517 00:39:21,949 --> 00:39:23,469 Porque esta instrucción que le he dado 518 00:39:23,469 --> 00:39:25,730 aquí de escríbeme en consola 519 00:39:25,730 --> 00:39:27,510 hola Elisa, pues se ha ido 520 00:39:27,510 --> 00:39:29,349 ejecutando cada fotograma de juego. 521 00:39:30,090 --> 00:39:31,090 ¿Vale? Fotograma 522 00:39:31,090 --> 00:39:33,269 dependiendo del ordenador, 523 00:39:33,489 --> 00:39:35,829 esto lo veréis en la próxima 524 00:39:35,829 --> 00:39:37,070 lección que abra, 525 00:39:37,789 --> 00:39:39,489 al final cada ordenador va a 526 00:39:39,489 --> 00:39:41,489 tener una capacidad de computación 527 00:39:41,489 --> 00:39:43,710 según si el procesador es mejor o peor, 528 00:39:43,710 --> 00:39:45,710 pues eso, si es mejor 529 00:39:45,710 --> 00:39:47,730 o peor el ordenador, pues va a poder 530 00:39:47,730 --> 00:39:49,369 procesar más fotogramas por segundo 531 00:39:49,369 --> 00:39:51,610 que otros, ¿vale? Entonces dependiendo del 532 00:39:51,610 --> 00:39:53,590 ordenador ya veremos que esto puede suponer un problema 533 00:39:53,590 --> 00:39:55,130 ¿vale? Porque 534 00:39:55,130 --> 00:39:57,550 unos ordenadores van a ser más 535 00:39:57,550 --> 00:39:59,829 rápidos a la hora de ir calculando más fotogramas 536 00:39:59,829 --> 00:40:01,329 que otros, ¿vale? Pero 537 00:40:01,329 --> 00:40:03,670 por defecto ya vemos que sea el ordenador 538 00:40:03,670 --> 00:40:05,389 que sea, esta instrucción de hola Elisa 539 00:40:05,389 --> 00:40:07,590 cada fotograma que puede ir refrescando 540 00:40:07,590 --> 00:40:09,809 pues lanza la instrucción indiscriminadamente 541 00:40:09,809 --> 00:40:11,110 cada fotograma cuando se meta 542 00:40:11,110 --> 00:40:13,409 dice uno hola Elisa, uno hola Elisa, uno hola Elisa 543 00:40:13,409 --> 00:40:15,369 ¿vale? Ya veis que hay dos momentos 544 00:40:15,369 --> 00:40:17,409 que vienen ya por defecto hechos en los códigos 545 00:40:17,409 --> 00:40:24,289 que son este start para cuando arranca el script y otro para según en el momento que esté este script, pues se vaya ejecutando, ¿vale? 546 00:40:24,730 --> 00:40:32,010 Digo siempre lo de en el start cuando arranca el script porque si yo vuelvo a poner en el start el debug log, ¿vale? 547 00:40:32,050 --> 00:40:40,289 Y yo tengo aquí el juego, lo tengo dentro, el componente está dentro de este empty object que es cálculos, ¿no? 548 00:40:40,769 --> 00:40:45,929 Vale, yo, hay una opción aquí que sirve para activar y desactivar, que esto si lo probáis, pues por ejemplo con la nave, 549 00:40:45,929 --> 00:40:48,150 Pues sirve para que se vea o no 550 00:40:48,150 --> 00:40:50,309 Está ahí en la jerarquía pero no está funcionando 551 00:40:50,309 --> 00:40:51,210 Si yo lanzo el juego 552 00:40:51,210 --> 00:40:54,449 ¿Vale? Veis que no se ejecuta 553 00:40:54,449 --> 00:40:55,409 A diferencia de antes 554 00:40:55,409 --> 00:40:58,949 Está el start pero es que como no se ha ejecutado 555 00:40:58,949 --> 00:40:59,630 El componente 556 00:40:59,630 --> 00:41:02,409 Dado que el objeto que lo contiene no existe 557 00:41:02,409 --> 00:41:04,190 Cuando yo le dé a 558 00:41:04,190 --> 00:41:05,989 De alguna forma que ya veremos 559 00:41:05,989 --> 00:41:07,849 A que se ejecute este objeto 560 00:41:07,849 --> 00:41:10,349 Pues ahí sí según se ejecuta 561 00:41:10,349 --> 00:41:12,070 ¿Vale? Por eso digo que el start no es 562 00:41:12,070 --> 00:41:13,730 El primer fotograma del juego 563 00:41:13,730 --> 00:41:15,690 Porque hasta que no se lance 564 00:41:15,690 --> 00:41:22,989 digamos el script pues no funciona vale importante entonces ya tenemos voy a dejar que sí que esté 565 00:41:22,989 --> 00:41:28,170 activo vale importante que a veces no es que no funcione es que no está vinculado a nada no está 566 00:41:28,170 --> 00:41:34,510 funcionando ese objeto no vamos otra vez aquí al código vale os he dicho este de backlog o la elisa 567 00:41:34,510 --> 00:41:39,150 yo ahora en vez de decirle una frase literal por eso hay que poner las comillas cuando sean textos 568 00:41:39,150 --> 00:41:45,070 o strings esto lo vamos viendo hay que ponerlo entre comillas yo voy a decirle no yo quiero que 569 00:41:45,070 --> 00:41:51,909 lo que muestre en consola, porque soy así de temerario, es el resultado de 5 más 4. 570 00:41:52,690 --> 00:42:00,389 Una operación aritmética muy básica. Yo cuando lance este juego, guardo y lance este 571 00:42:00,389 --> 00:42:05,289 juego, al arrancar, lo que me va a mostrar la consola, dado que es lo que está dentro 572 00:42:05,289 --> 00:42:15,579 de estos paréntesis, va a ser un 9. Lo veis aquí, que es el resultado de la suma. Esto 573 00:42:15,579 --> 00:42:23,079 cuando vayamos teniendo que una bala si te impacta te quita 100 de vida y lo resta de las 500 pues ya 574 00:42:23,079 --> 00:42:28,539 tendremos que ir haciendo operaciones entonces esta operación tan básica es el origen de todo 575 00:42:28,539 --> 00:42:35,260 lo que vamos a ir haciendo con los juegos aunque aquí haya puesto los números rápidamente como 576 00:42:35,260 --> 00:42:41,300 números sueltos vale hay que entender un poco cómo gestiona la información el propio unity me 577 00:42:41,300 --> 00:42:47,500 Me refiero con cómo gestiona la operación, con que aunque aquí pongamos un 5 y un 4, ¿vale? 578 00:42:47,539 --> 00:42:53,840 Hay distintos tipos de variables, ya me meto a ello que he introducido, según qué vamos a meter en esa variable, ¿vale? 579 00:42:54,739 --> 00:42:59,179 Voy a hacer primero una cosa para que lo veáis sin entenderlo y luego lo explico, ¿no? 580 00:42:59,179 --> 00:43:07,840 Yo, por ejemplo, voy a generar un número de tipo entero, con número de tipo entero me refiero a un número que no tiene decimales, ¿vale? 581 00:43:07,840 --> 00:43:12,199 un número entero, que se va a llamar 5, ¿vale? Contesto. 582 00:43:12,860 --> 00:43:15,440 Y a esto le digo que es igual a 5. Ahora os digo qué es. 583 00:43:15,440 --> 00:43:21,880 Y luego voy a hacer otra variable llamada 4, que va a valer 4, ¿vale? 584 00:43:22,280 --> 00:43:31,000 Y aquí lo que voy a hacer es, en vez de decir 5 con número, voy a apelar a este 5 que he puesto aquí 585 00:43:31,000 --> 00:43:37,460 y a este 4 que tengo aquí. Y vais a ver que yo cuando lo lance, lo he escrito con texto, ¿vale? 586 00:43:37,460 --> 00:43:59,820 Cuando lo lance, va a dar otra vez ese 9 que teníamos. Ahí está el 9, ¿vale? Pero esto no es porque el programa sepa que si escribe 5 contextos es un 5 como un número, ¿vale? Esto es porque anteriormente hemos declarado, y de hecho si yo borrara estas líneas, ¿vale? Daría error, ¿vale? 587 00:43:59,820 --> 00:44:13,760 Porque hemos creado lo que se llaman variables. Las variables son referencias de ciertos tipos, como cajas, digamos, que vamos a ir usando para ir construyendo un Lego, que pueden ser de distintas formas. 588 00:44:13,760 --> 00:44:32,260 Entonces, vamos a ir construyendo estas cajas de distintos tipos. En este caso estamos operando con números que son enteros, pero por ejemplo hay otro tipo de caja, otro tipo de variable, que son los que permiten operar con números decimales, que son estos de tipo float. 589 00:44:32,260 --> 00:44:55,519 Por ejemplo, esto se va a llamar 5 con 5. Vais viendo que cuando escribo el nombre de esta variable, lo primero que hacemos es decir qué tipo de caja o qué tipo de información va a guardar, porque yo, aunque aquí me ponga bruto, si le pongo 5 con 5, no lo sabe entender porque esta caja solo permite guardar números enteros. 590 00:44:55,519 --> 00:45:04,920 Pero si yo pongo 5,5 y pongo aquí 5,5 y hay que poner una f, esto también lo veremos, aquí no da fallo, aunque sea decir mal. 591 00:45:05,000 --> 00:45:08,920 Aquí, aunque pusiera lo mismo, 5,5, f, pues nada hay. 592 00:45:09,639 --> 00:45:18,039 Entonces, ved que hay cajas variables de distintos tipos y cada una va a permitir guardar información de distintas características. 593 00:45:18,039 --> 00:45:20,760 la estructura 594 00:45:20,760 --> 00:45:22,699 de declarar una variable, es decir 595 00:45:22,699 --> 00:45:24,079 de crear una caja 596 00:45:24,079 --> 00:45:26,739 o una pieza del ego 597 00:45:26,739 --> 00:45:28,559 con la que vamos a seguir trabajando en el código 598 00:45:28,559 --> 00:45:30,199 es siempre la misma 599 00:45:30,199 --> 00:45:32,500 primero hay que poner de qué tipo es esa caja 600 00:45:32,500 --> 00:45:34,400 en este caso pues vamos a hacer 601 00:45:34,400 --> 00:45:36,739 como sé que voy a trabajar con un número entero 602 00:45:36,739 --> 00:45:38,400 pues pongo este int 603 00:45:38,400 --> 00:45:39,980 de integer, de entero 604 00:45:39,980 --> 00:45:41,880 y luego esa caja 605 00:45:41,880 --> 00:45:44,440 por hacer como una caja de mudanza el simil 606 00:45:44,440 --> 00:45:46,360 la voy a etiquetar para 607 00:45:46,360 --> 00:45:52,179 yo saber qué hay dentro y yo sé que aquí pues va a ser un 5 vale esta es el 608 00:45:52,179 --> 00:45:55,599 nombre que nosotros queramos es el nombre que damos a esa pieza del ego con 609 00:45:55,599 --> 00:46:00,599 la que vamos a ir trabajando entonces yo en vez de 5 puede ser el número primero 610 00:46:00,599 --> 00:46:05,920 que vamos a usar vale y ese número primero esa caja dentro va a tener lo 611 00:46:05,920 --> 00:46:11,679 que le asignamos después de este igual que es un 5 vale aquí por ejemplo creó 612 00:46:11,679 --> 00:46:17,840 caja otra pieza que se va a llamar número que suma el nombre que queramos 613 00:46:17,840 --> 00:46:24,219 aquí es lo que queramos también de tipo entero y un método ahora un 3 vale y 614 00:46:24,219 --> 00:46:28,119 cuando vaya generando estos números veis que me da fallo porque las cajas que 615 00:46:28,119 --> 00:46:32,579 antes se llamaban 5 y 4 ya no existen ahora habrá que trabajar con las cajas 616 00:46:32,579 --> 00:46:36,340 digamos que yo he creado estas piezas y quiero que la suma lo va a hacerlo a 617 00:46:36,340 --> 00:46:40,539 partir de esas variables ahora tendré que poner vale pues el número primero de 618 00:46:40,539 --> 00:47:04,800 La operación. Y veis que cuando yo voy escribiendo el IntelliSense me va mostrando lo que coincida. Si yo he creado esta variable, y fijaos que incluso el iconito tiene forma de caja, ¿vale? Que es bastante representativo, ¿vale? Yo si escribo ese número primero, ahora mismo lo que yo ponga aquí con este nombre y este identificador, ¿vale? Lo que le he asignado, ¿vale? Ahora mismo aquí esto es sinónimo de 5 en este momento. 619 00:47:04,800 --> 00:47:09,960 Esta caja luego podremos ir cambiándola de contenido a lo largo del código. 620 00:47:10,659 --> 00:47:18,019 Por ejemplo, habrá algún momento que, para adelantar, que sea vida personaje y empiece valiendo 100. 621 00:47:18,840 --> 00:47:25,199 Lo que pasa es que nosotros a lo largo del juego a esta caja vida personaje le iremos quitando o añadiendo vida, 622 00:47:25,380 --> 00:47:30,860 según reciba balas o vaya cogiendo power-ups de corazón, de vida. 623 00:47:30,860 --> 00:47:45,880 Entonces, esta sigue dando fallo porque ahora mismo esta caja no existe, no hay ninguna caja llamada así. Por ejemplo, número que suma. Número primero, si lo volviera a meter, sería otro 5. No, yo quiero número que suma. A ver, le clico y ahí está. 624 00:47:45,880 --> 00:47:48,699 Ahora mismo, si leemos esto, estamos diciendo 625 00:47:48,699 --> 00:47:50,780 Por favor, muéstrame en consola 626 00:47:50,780 --> 00:47:52,659 Número primero 627 00:47:52,659 --> 00:47:54,000 Más número que suma 628 00:47:54,000 --> 00:47:55,739 ¿Cuánto crees que va a dar de resultado? 629 00:47:58,550 --> 00:47:59,809 Venga, mientras voy 630 00:47:59,809 --> 00:48:04,809 8, ¿no? A ver, le doy al play 631 00:48:04,809 --> 00:48:06,869 Le doy al play 632 00:48:06,869 --> 00:48:08,010 Y 8, perfecto 633 00:48:08,010 --> 00:48:10,489 Y si ahora, en vez de número que suma 634 00:48:10,489 --> 00:48:12,210 Aquí pongo 635 00:48:12,210 --> 00:48:14,030 Vida persona 636 00:48:14,030 --> 00:48:16,349 Que es otra caja que tengo 637 00:48:16,349 --> 00:48:17,050 ¿Cuánto valdría? 638 00:48:22,429 --> 00:48:24,670 105, ¿sí, no? ¿Estamos todos de acuerdo? 639 00:48:24,809 --> 00:48:42,590 A ver si lo que dice... 105, perfecto. Entonces vemos que al final, y esto si no le veis la utilidad se la iréis viendo rápidamente, iremos generando variables o palabras, digamos que van englobando datos dentro. 640 00:48:42,590 --> 00:49:10,309 ¿Vale? Que ya os digo, que se irán actualizando a lo largo del juego cuando vayan ocurriendo ciertos eventos. ¿Vale? Veis también que cuando uso una de estas palabras, ¿vale? Cuando marco en un sitio, se me marcará en el resto de sitios que está apelando a un mismo, a un mismo, a la variable en ciertos puntos. ¿Vale? Esto sirve para ir viendo fácilmente dónde se ha declarado, es decir, dónde se ha generado la caja y dónde estamos, pues, usándola. 641 00:49:10,309 --> 00:49:15,050 veis que hay un número hay variables que están marcadas de gris que eso significa que sí que 642 00:49:15,050 --> 00:49:20,309 esa caja existe pero no se usa en ningún momento si nunca se va a usar lo suyo sería borrarla vale 643 00:49:20,309 --> 00:49:26,130 de hecho si voy a algunos de los errores en este momento que hay aquí vale cuando detengo la a ver 644 00:49:26,130 --> 00:49:31,789 cuando detengo la ejecución me puede sugerir a veces ahora no me lo está haciendo porque tengo 645 00:49:31,789 --> 00:49:34,510 que cambiar algo 646 00:49:35,409 --> 00:49:41,170 a poner 105 vale cuando ahora vuelva a refrescar vais a ver que por defecto en 647 00:49:41,170 --> 00:49:46,070 la consola a veces tarda un poco 648 00:49:46,849 --> 00:49:53,630 vale entre los errores es en cálculos 5 la variable 5.5 está sin 649 00:49:53,630 --> 00:49:58,690 nada pero su valor nunca se usa vale pues eso significa que 5.5 está aquí 650 00:49:58,690 --> 00:50:02,869 pero nunca se usa veis que es un error que va a funcionar el juego pero dice 651 00:50:02,869 --> 00:50:07,090 oye borra esta línea si no la vas a usar para que vas a llenar tu habitación de 652 00:50:07,090 --> 00:50:11,349 cajas si no lo vas a usar aparte de números enteros y decimales vale y los 653 00:50:11,349 --> 00:50:15,849 decimales se escriben con un punto en vez de con una coma vale y hay que poner 654 00:50:15,849 --> 00:50:19,730 una f de flow at vale porque si no no sabes si se está refiriendo a un número 655 00:50:19,730 --> 00:50:25,269 decimal o otras cosas vale si no ponéis la f aunque permita tener 55 yo le doy 656 00:50:25,269 --> 00:50:27,329 a la F y no funciona. 657 00:50:28,070 --> 00:50:29,429 Y ojo, si yo pongo 658 00:50:29,429 --> 00:50:31,429 número 659 00:50:31,429 --> 00:50:33,369 primero y 5 con 5, 660 00:50:34,349 --> 00:50:35,489 ¿vale? Ahora estoy juntando 661 00:50:35,489 --> 00:50:36,949 cajas de distinto tipo. 662 00:50:37,769 --> 00:50:39,190 ¿Qué debería la lógica 663 00:50:39,190 --> 00:50:41,030 decir que nos da como resultado? 664 00:50:48,079 --> 00:50:49,699 Vamos a verlo. 10 con 5 665 00:50:49,699 --> 00:50:50,300 dicen por ahí. 666 00:50:52,280 --> 00:50:53,539 Por cierto, cuando tenemos 667 00:50:53,539 --> 00:50:55,539 todos los errores estos que nos pueden salir, 668 00:50:55,659 --> 00:50:57,500 si damos a Clear, lo limpiamos, 669 00:50:57,659 --> 00:50:59,480 ya sabemos lo que queremos, para al volver 670 00:50:59,480 --> 00:51:01,400 a ejecutar, pues que se generen los que tienen que ser. 671 00:51:01,579 --> 00:51:16,940 10,5, perfecto, ¿vale? Entonces los decimales los va cogiendo, pero cuando vayáis introduciendo un dato decimal siempre con punto y con F detrás, ¿vale? Si no, no lo lee, si no da fallo, ¿vale? Simplemente eso. 672 00:51:16,940 --> 00:51:29,219 Hay más tipos de cajas. Otra muy importante que es el string. Las cajas, las variables de tipo string. La variable de tipo string lo que contiene son textos, ¿vale? No son números con los que operar, son textos. 673 00:51:29,219 --> 00:51:32,739 la f tiene algún motivo lógico 674 00:51:32,739 --> 00:51:34,679 simplemente es 675 00:51:34,679 --> 00:51:36,800 float, es la miniatura 676 00:51:36,800 --> 00:51:37,320 de float 677 00:51:37,320 --> 00:51:40,260 que como vemos aquí es el 678 00:51:40,260 --> 00:51:42,840 tipo de variable que 679 00:51:42,840 --> 00:51:44,579 guarda 680 00:51:44,579 --> 00:51:46,579 estos valores, el string 681 00:51:46,579 --> 00:51:48,639 igual, la lógica de 682 00:51:48,639 --> 00:51:50,840 declarar una variable es siempre el tipo de variable 683 00:51:50,840 --> 00:51:52,800 en este caso vamos a decir, el dato que voy a guardar 684 00:51:52,800 --> 00:51:54,179 aquí es una 685 00:51:54,179 --> 00:51:55,880 cadena de texto, es un texto 686 00:51:55,880 --> 00:51:58,239 y lo voy a llamar pues cadena de texto 687 00:51:58,239 --> 00:52:01,000 o yo qué sé, mi nombre, ¿vale? 688 00:52:01,480 --> 00:52:03,820 Y entonces, al darle igual, ¿vale? 689 00:52:03,860 --> 00:52:05,820 Y quiero que vayáis interpretando estos iguales 690 00:52:05,820 --> 00:52:08,800 no como un igual en matemáticas de 2 más 2 igual a 4. 691 00:52:09,179 --> 00:52:12,659 Esto significa que se está asignando un valor, ¿vale? 692 00:52:13,480 --> 00:52:16,260 O lo que se llama, el término más correcto sería inicializar, 693 00:52:16,320 --> 00:52:19,619 en este caso, el valor, que es que una caja que está vacía 694 00:52:19,619 --> 00:52:21,579 está aquí, de pronto la vamos a poner un algo. 695 00:52:21,579 --> 00:52:25,719 No estás comparando nada, ni es equivalente una cosa a otra. 696 00:52:25,719 --> 00:52:29,440 Ahora, sí lo es, pero es que esto que está aquí a la izquierda 697 00:52:29,440 --> 00:52:30,699 pasa a tener este valor, ¿no? 698 00:52:31,119 --> 00:52:33,340 Y aquí, si yo pusiera un número, ¿vale? 699 00:52:33,539 --> 00:52:35,519 Y mirad que yo todas las operaciones las acabo 700 00:52:35,519 --> 00:52:37,179 cuando acaba la instrucción con un punto y coma, 701 00:52:37,280 --> 00:52:38,179 como os he dicho antes, ¿vale? 702 00:52:38,400 --> 00:52:40,900 Importante, porque si no se empiezan a juntar conceptos 703 00:52:40,900 --> 00:52:42,880 y empieza a dar problema, ¿no? 704 00:52:43,400 --> 00:52:45,619 Entonces, veis que yo aquí pongo un 5 y dice error, 705 00:52:45,840 --> 00:52:48,139 porque esta caja no está pensada para números, ¿vale? 706 00:52:48,599 --> 00:52:51,179 Para meter texto, cuando algo queremos que sea un texto literal, 707 00:52:51,179 --> 00:52:52,719 como hemos hecho antes con el holamundo, 708 00:52:53,119 --> 00:52:54,699 hay que abrir comillas, ¿vale? 709 00:52:54,699 --> 00:52:58,800 Las comillas típicas de entrecomillar, ¿no? 710 00:52:58,920 --> 00:53:02,460 Y aquí se puede poner, vale, pues en mi caso, Daniel, ¿vale? 711 00:53:02,679 --> 00:53:03,860 Y ahí se ha guardado un texto. 712 00:53:05,079 --> 00:53:13,230 Si yo pongo ahora mismo, a ver, por ejemplo, 713 00:53:14,489 --> 00:53:19,190 voy a hacer una frase, digamos, compuesta de varias variables 714 00:53:19,190 --> 00:53:21,230 para que veáis que se puede ir modulando todo, 715 00:53:21,570 --> 00:53:22,710 modularizando, mejor dicho. 716 00:53:22,710 --> 00:53:44,690 Voy a generar un string que guarda mi nombre, ¿vale? Otra caja que guarda la frase que construye o el predicado que va a ser tiene de edad, ¿vale? 717 00:53:44,690 --> 00:53:53,389 Y luego al final voy a poner otra variable, que en este caso es un número, porque va a ser mi edad, que son 34. 718 00:53:54,030 --> 00:53:58,409 Entonces yo puedo ir combinando estas cajas para que vaya componiendo texto. 719 00:53:58,550 --> 00:54:06,110 Si yo, por ejemplo, aquí dijera, enseña en el debug log solo mi nombre, lo que va a enseñar la consola es mi nombre, que es Daniel. 720 00:54:06,630 --> 00:54:12,969 En vez de haber escrito literalmente aquí, está referenciando a una variable para enseñarnos lo que hay en el interior de esa variable. 721 00:54:12,969 --> 00:54:19,170 Yo si ahora voy a la consola y le doy a iniciar, pues pone Daniel. 722 00:54:20,630 --> 00:54:28,309 Así que lo que podemos ver es que podemos ir concatenando distintas variables para hacer elementos más grandes. 723 00:54:28,730 --> 00:54:35,070 Igual que antes hemos sumado dos variables que contenían dentro un número, también podemos ir concatenando textos. 724 00:54:35,610 --> 00:54:41,250 Por ejemplo, puedo poner mi nombre, más, y este más no es que estemos sumando números. 725 00:54:41,250 --> 00:55:11,960 Cuando se usa el más al usar textos, lo que estamos haciendo es que un texto va detrás de otro, ¿vale? Entonces yo puedo poner mi nombre, luego el predicado, ¿vale? Y ahora lo que va a enseñar, ¿qué creéis que va a ser? A ver si alguien puede adivinar. Voy cambiando a... ¿alguien quiere apostar? 726 00:55:11,960 --> 00:55:32,389 Ahora, lo que va a mostrar es lo que hay, exacto, Daniel, ¿no? Y a continuación tiene edad. Este más no es para sumar números, es para unir, ¿no? Entonces vais a ver que lo que pone es Daniel tiene edad. 727 00:55:32,389 --> 00:55:47,170 Y fijaos que no deja ningún espacio en medio entre Daniel y tiene. ¿Por qué? Pues porque básicamente no sabe que hay un espacio entre esta cadena de caracteres y esta, ¿vale? Si la queremos, como es literal, meto un espacio y ahora sí, ahora sí que va a haber ese espacio. 728 00:55:47,170 --> 00:55:51,809 que ved que lo que hay entre comillas es literalmente lo que vamos escribiendo dentro, ¿vale? 729 00:55:52,570 --> 00:55:59,070 Entonces ahora sí que vais a ver que, le damos aquí y pone Daniel tiene edad, ¿vale? 730 00:55:59,690 --> 00:56:03,369 Y ahora puedo decir, ¿vale? Y aparte de Daniel tiene edad, ¿vale? 731 00:56:03,369 --> 00:56:06,769 Que son bloques que yo puedo en cualquier momento ir cambiando, ¿vale? 732 00:56:06,809 --> 00:56:09,170 Ahora lo que va a guardar esta variable es tiene de años, 733 00:56:09,530 --> 00:56:12,070 perdón que la frase sea un poco extraña, pero es para construirlo más fácil, 734 00:56:12,489 --> 00:56:15,110 tiene de años y aquí voy a poner edad, que es esta variable, 735 00:56:15,110 --> 00:56:18,730 Que veis que ahora es una variable de tipo número 736 00:56:18,730 --> 00:56:20,809 Y además es de tipo número float 737 00:56:20,809 --> 00:56:23,130 Lo cual no es muy correcto si no voy a meter decimales 738 00:56:23,130 --> 00:56:26,070 Y normalmente la edad no se mete con decimales 739 00:56:26,070 --> 00:56:28,909 Tienes 34 años o 35, no tienes 34 y medio 740 00:56:28,909 --> 00:56:30,050 O no se suele guardar así 741 00:56:30,050 --> 00:56:33,429 Por tanto, al hacer esta caja, si la edad siempre va a ser número entero 742 00:56:33,429 --> 00:56:35,570 Pues lo ponemos aquí de tipo entero, ¿vale? 743 00:56:35,889 --> 00:56:36,550 Sin ningún problema 744 00:56:36,550 --> 00:56:41,269 Pero hay ciertas limitaciones si no vamos usando los tipos de variables que hay que usar 745 00:56:41,269 --> 00:56:44,789 Ahora mismo lo que va a hacer es poner Daniel, ¿vale? 746 00:56:45,110 --> 00:56:49,750 espacio, por este espacio que he puesto aquí, no porque haya aquí en medio, ¿vale? 747 00:56:49,869 --> 00:56:51,909 Esto es lo mismo que escribirlo así. 748 00:56:52,090 --> 00:56:56,889 Los espacios en programación son solo visuales, ¿vale? 749 00:56:56,889 --> 00:56:59,789 Al final lo que importa son los valores que vamos dando dentro. 750 00:57:00,150 --> 00:57:04,130 Entonces, esto va a decir, Daniel tiene de años 34. 751 00:57:05,010 --> 00:57:09,369 Aquí, aunque no sea de tipo texto, como entiende que un número, 752 00:57:09,369 --> 00:57:12,610 si se está concatenando, porque está aquí unido a textos, 753 00:57:12,610 --> 00:57:29,550 Lo que vas a querer ver es el texto también, ¿no? Y entonces al final lo que voy a hacer es, aparte sin meterlo en variable, poner años y punto, ¿vale? Es decir, va a poner Daniel tiene de años 34 y valga la redundancia años punto. 754 00:57:29,550 --> 00:57:48,250 Y ojo, aquí habrá que poner un espacio para que se pare de la anterior palabra y en años también habrá que poner uno para que se pare de la edad, ¿vale? Para que se vea con espacio, bien construido, ¿no? Guardamos y a ver si es verdad que está poniendo lo que yo digo, ¿qué va a poner? 755 00:57:48,250 --> 00:57:51,349 Daniel tiene de edad 756 00:57:51,349 --> 00:57:53,250 de años, bueno, he cambiado de edad 757 00:57:53,250 --> 00:57:55,489 habéis visto que he cambiado el interior de la variable antes 758 00:57:55,489 --> 00:57:56,989 a mano, 34 años 759 00:57:56,989 --> 00:57:59,329 ¿vale? de esta forma podemos ir 760 00:57:59,329 --> 00:58:01,150 uniendo distintos elementos 761 00:58:01,150 --> 00:58:03,010 de distintos tipos 762 00:58:03,010 --> 00:58:05,369 entonces, importante, al declarar 763 00:58:05,369 --> 00:58:06,909 una variable, el tipo de variable 764 00:58:06,909 --> 00:58:09,389 el nombre de la variable que nosotros queramos 765 00:58:09,389 --> 00:58:11,429 darle y luego asignamos 766 00:58:11,429 --> 00:58:13,150 el valor que tiene esa caja 767 00:58:13,150 --> 00:58:15,449 ¿vale? lo que pasa es que muchas veces 768 00:58:15,449 --> 00:58:17,329 cuando vamos creando 769 00:58:17,329 --> 00:58:24,070 estas variables, ¿vale? Y voy quitando aquí. Lo dejo solo en esto, en su mínima expresión. 770 00:58:24,469 --> 00:58:29,030 Has creado la caja, pero no la has llenado de nada, ¿vale? Cuando no llenas la caja 771 00:58:29,030 --> 00:58:34,010 de nada, interpreta en los números que es un cero, ¿vale? Que está vacía, pero a nivel 772 00:58:34,010 --> 00:58:40,389 práctico es un cero, ¿vale? Y en los textos, pues no tiene texto también. Lo interpreta 773 00:58:40,389 --> 00:58:44,570 como un cero. Y en los de tipo float también es un cero, ¿vale? Podemos ir creando las 774 00:58:44,570 --> 00:59:01,690 cajas, ¿vale? Y posteriormente, en algún momento de la ejecución, que a lo mejor no es al principio, cambiar su valor. Por ejemplo, ¿no? Hemos dicho, y fijaos que esto está dentro de la clase, que es lo que os he dicho, que es el patrón que va conteniendo todos los comportamientos que vayamos haciendo, ¿vale? 775 00:59:01,690 --> 00:59:18,590 Pero luego hasta que no hay un momento concreto al comienzo o al actualizar, estos son como datos, como variables que estamos creando a nivel genérico. Pero hasta que no sea en el momento del comienzo o que esté dentro del update, realmente no se está ejecutando nunca, ¿vale? 776 00:59:18,590 --> 00:59:21,349 más rápido, si yo cogiera este debug log 777 00:59:21,349 --> 00:59:23,670 y lo pusiera aquí, va a dar fallo 778 00:59:23,670 --> 00:59:25,289 pues dice, sí, muy bien, depura 779 00:59:25,289 --> 00:59:27,230 pero ¿cuándo? ¿cuándo depuro? esta instrucción 780 00:59:27,230 --> 00:59:29,150 no es crear una caja para luego usarla 781 00:59:29,150 --> 00:59:31,269 es algo concreto, que es lo que os he 782 00:59:31,269 --> 00:59:32,670 dicho que son los métodos cuando se usa 783 00:59:32,670 --> 00:59:35,250 estos paréntesis, una acción, algo concreto 784 00:59:35,250 --> 00:59:37,289 se hace cuando apelamos a algo que tiene 785 00:59:37,289 --> 00:59:39,110 estos paréntesis, aquí dice, vale, yo 786 00:59:39,110 --> 00:59:41,329 hago lo que tú me digas, pero ¿en qué momento? 787 00:59:41,409 --> 00:59:43,190 no me estás definiendo ningún momento 788 00:59:43,190 --> 00:59:45,150 por eso tiene que ir dentro de algún bloque 789 00:59:45,150 --> 00:59:46,730 de momento de ejecución 790 00:59:46,730 --> 01:00:02,110 Y también lo que podemos hacer es decirle, al iniciar el juego, el script, quiero que número primero, esta variable que he generado aquí, valga 7. 791 01:00:03,849 --> 01:00:14,909 Y aquí ¿qué ha pasado? Y voy a volver a decirle que lo que quiero que me enseñe es número primero. Y veis que la misma palabra yo cuando la marco en un sitio, como es la misma caja nombrada igual, aparece en varios sitios. 792 01:00:14,909 --> 01:00:17,510 esto que estoy haciendo, aquí he declarado 793 01:00:17,510 --> 01:00:20,010 he creado la caja, he declarado la variable 794 01:00:20,010 --> 01:00:23,469 al principio está vacía, vale 0 795 01:00:23,469 --> 01:00:25,610 pero al empezar el juego yo le he dicho 796 01:00:25,610 --> 01:00:27,309 yo quiero que esta caja valga 7 797 01:00:27,309 --> 01:00:29,210 y imprime aquí 798 01:00:29,210 --> 01:00:33,309 lo que hay dentro del número primero, la consola 799 01:00:33,309 --> 01:00:35,869 por tanto, lo que vamos a tener ahora es 800 01:00:35,869 --> 01:00:39,059 pues si lo adivináis 801 01:00:39,059 --> 01:00:41,519 un 7 802 01:00:41,519 --> 01:00:46,179 ¿qué pasa? que esto a lo largo del juego 803 01:00:46,179 --> 01:00:48,760 vamos a irlo cambiando, ¿no? Fijaos que 804 01:00:48,760 --> 01:00:50,820 cuando yo ya he declarado la variable y he dicho 805 01:00:50,820 --> 01:00:52,780 de qué tipo es esa caja, ¿vale? 806 01:00:53,119 --> 01:00:54,800 Ya cada vez que hablemos de esa caja 807 01:00:54,800 --> 01:00:56,780 ya no hace falta poner de qué tipo es, ya 808 01:00:56,780 --> 01:00:58,679 lo hemos generado aquí al principio, ¿vale? 809 01:00:59,000 --> 01:01:00,679 Veis que por eso ya nunca más 810 01:01:00,679 --> 01:01:02,639 vuelve a poner el tipo de variable, solo se 811 01:01:02,639 --> 01:01:04,599 habla de la variable y se puede asignar 812 01:01:04,599 --> 01:01:06,559 a continuación o usarla 813 01:01:06,559 --> 01:01:08,539 pero no hay que volver a declararla, eso se hace 814 01:01:08,539 --> 01:01:10,639 una vez. Declarar de hecho 815 01:01:10,639 --> 01:01:12,639 es crear esa caja 816 01:01:12,639 --> 01:01:14,639 la primera vez, luego ya es emplear 817 01:01:14,639 --> 01:01:21,579 la variable. Entonces, ahora mismo enseña 7, pero algo importante es que, por defecto, 818 01:01:21,639 --> 01:01:27,300 en estos momentos que estamos de programación, el código se va a ir ejecutando de manera 819 01:01:27,300 --> 01:01:30,900 lineal, es decir, de arriba a abajo, igual que leemos nosotros, de arriba a abajo y de 820 01:01:30,900 --> 01:01:36,260 izquierda a derecha. Entonces, cuando vamos bajando, hemos declarado esta variable de 821 01:01:36,260 --> 01:01:41,639 tipo entero, vamos bajando, va bajando y dice, ah, vale, al empezar la ejecución, enséñame 822 01:01:41,639 --> 01:01:43,980 lo que haya en número primero. Y luego aparte 823 01:01:43,980 --> 01:01:45,940 pues decimos, vale, número primero vale 824 01:01:45,940 --> 01:01:48,059 7. Antes 825 01:01:48,059 --> 01:01:49,840 ponía que era 7. Ahora, ¿qué va a poner? 826 01:01:50,000 --> 01:01:51,940 ¿Qué va a enseñar en consola? 827 01:01:52,019 --> 01:01:53,940 ¿Qué número? ¿Ha cambiado 828 01:01:53,940 --> 01:01:54,460 algo o no? 829 01:01:55,679 --> 01:01:57,059 ¿Creéis que ha pasado algo? 830 01:01:57,559 --> 01:01:59,579 Nada. No va a poner nada porque está 831 01:01:59,579 --> 01:02:01,480 debajo, ¿no? Eso es. 832 01:02:01,800 --> 01:02:04,039 Hasta este momento, ¿vale? La variable 833 01:02:04,039 --> 01:02:05,940 vale 0. Nadie ha cambiado 834 01:02:05,940 --> 01:02:07,539 que valga 0, que es el valor por defecto. 835 01:02:07,840 --> 01:02:09,559 Y luego ya más adelante, pues pondrá 7. 836 01:02:09,559 --> 01:02:15,139 Entonces, si vamos aquí, ahora mismo yo ejecuto, pues pone el 0 como una casa. 837 01:02:15,460 --> 01:02:19,679 ¿Veis que si es solo una línea, además, también nos la enseña aquí, que a veces también puede servir de ayuda. 838 01:02:21,340 --> 01:02:23,559 Esto sirve para ver el orden de ejecución. 839 01:02:24,320 --> 01:02:30,920 Y que aquí podemos empezar a inicializar y decir, número primero vale 2. 840 01:02:32,039 --> 01:02:37,760 Pero después de valer 2, número primero vale 4. 841 01:02:37,760 --> 01:02:39,480 Se ejecuta esto. 842 01:02:39,559 --> 01:02:42,239 Y cuidado, que si no acabamos la instrucción con punto y coma. 843 01:02:42,760 --> 01:02:44,059 Luego, número primero vale 7. 844 01:02:44,360 --> 01:02:52,920 Y luego voy a hacer un debug log de vida persona. 845 01:02:55,039 --> 01:02:58,710 Ahora mismo, ¿qué va a mostrar? 846 01:02:59,989 --> 01:03:01,929 ¿Qué pensáis que va a salir en la consola? 847 01:03:11,409 --> 01:03:12,130 El 4. 848 01:03:13,630 --> 01:03:14,070 Sí. 849 01:03:15,829 --> 01:03:18,690 Pero he puesto otro debug log, otro enséame en la consola, ¿no? 850 01:03:18,690 --> 01:03:20,429 pues lo suma 851 01:03:20,429 --> 01:03:23,090 no, es decir, eso es 852 01:03:23,090 --> 01:03:24,929 lo que ha puesto Roberto, primero 853 01:03:24,929 --> 01:03:26,710 hace esta instrucción y me enseña 854 01:03:26,710 --> 01:03:29,010 va bajando, va bajando, aquí es lo último que le hemos 855 01:03:29,010 --> 01:03:29,769 dicho que vale este 856 01:03:29,769 --> 01:03:32,670 número primero, vale, pues aquí enseñará un 4 857 01:03:32,670 --> 01:03:34,969 seguimos bajando, vale, si a partir de aquí 858 01:03:34,969 --> 01:03:36,650 volvemos a usar el número primero, valdrá 7 859 01:03:36,650 --> 01:03:38,889 pero bueno, aquí va a enseñar 4, aquí hemos dicho 860 01:03:38,889 --> 01:03:40,469 enseña 4, sigue bajando, bla, bla 861 01:03:40,469 --> 01:03:43,090 y dice, y aquí voy a enseñar vida persona 862 01:03:43,090 --> 01:03:45,190 que además, ahora mismo, vale 0 863 01:03:45,190 --> 01:03:46,349 entonces 864 01:03:46,349 --> 01:04:04,469 Entonces, Roberto, te has equivocado en esto segundo porque el 7 lo enseñaría si aquí pusiera número primero, pero es que estoy pidiéndole que me enseñe vida persona, que está vacía, ¿vale? Lo enseño. Es decir, el juego no va a consistir solo en que enseñe una cosa, va a enseñar o va a realizar muchas operaciones. 865 01:04:04,469 --> 01:04:20,010 Entonces, bueno, os lo enseño y vais a ver que primero sale ese 4 y luego ese 0, ¿vale? Y una se ejecuta primero y luego la siguiente. Os he dicho antes que las operaciones, lo haz algo, son normalmente palabras con paréntesis. 866 01:04:20,010 --> 01:04:43,150 Y entre paréntesis puede haber cosas o no. Vale, pues aquí al empezar el juego, ¿vale? Le hemos dicho, enséñame lo que valga número primero, que vale 4, y aquí lo que valga vida persona, que está aquí vacía. Si yo vida persona, ¿vale? Vida persona, aquí vale 85, ¿vale? ¿Qué va a poner ahora en consola? 867 01:04:46,369 --> 01:04:48,309 Nada, porque está por debajo 0. 868 01:04:48,309 --> 01:05:01,070 Es decir, la consola va a mostrar primero 4, ¿no? Y luego 0. Vale. Esto es para ver que pilláis la lógica, vamos, que sé que son preguntas simples. Ahora, ¿qué pondría? 869 01:05:03,289 --> 01:05:03,769 85. 870 01:05:04,570 --> 01:05:06,630 En la segunda línea, primero 4 y luego 85. 871 01:05:06,630 --> 01:05:07,250 4 y luego 85. 872 01:05:07,250 --> 01:05:20,630 Vale, lo vais entendiendo, ¿no? Básicamente, que puede haber varias operaciones y aquí se están ejecutando dos, ¿vale? Entonces el orden de ejecución está en relación a las líneas que se van leyendo, ¿vale? 873 01:05:20,630 --> 01:05:29,269 hasta aquí bien recordad que luego se nos puede ir un poco la pinza con vale vida persona vale 85 874 01:05:29,269 --> 01:05:37,889 pero aquí quiero que me lo enseñe más número primero vale y aquí ahora mismo ya última que 875 01:05:37,889 --> 01:05:41,869 hago de esto perdonad que pondría aquí en la segunda línea la segunda instrucción que le 876 01:05:41,869 --> 01:05:55,400 al arrancar 89 4 y 89 no no no 92 efectivamente porque aunque aquí ponga número primero en este 877 01:05:55,400 --> 01:06:00,019 punto que estamos ya ha superado esto y ha cambiado de valor lo que hay dentro de la caja 878 01:06:00,019 --> 01:06:05,119 no vale esto es lo que va a ir permitiendo luego tener en cuenta que hay operaciones que se van a 879 01:06:05,119 --> 01:06:09,659 ir haciendo fotogramas fotogramas que vayamos actualizando subiendo bajando cifras que al 880 01:06:09,659 --> 01:06:16,719 Al final son la vida, el tiempo de carga, el nombre del jugador que hemos metido en un campo, ¿vale? 881 01:06:16,739 --> 01:06:21,000 Se va a ir actualizando a medida que vayamos haciendo ciertas operaciones, ¿vale? 882 01:06:21,559 --> 01:06:24,300 Esto es un poco la base de todo. 883 01:06:25,079 --> 01:06:25,380 Vale. 884 01:06:26,079 --> 01:06:27,099 Una duda, Daniel. 885 01:06:27,500 --> 01:06:34,320 Para el ejercicio de la unidad cero, entonces, ¿sería mejor declarar las vidas sin asignarle un valor 886 01:06:34,320 --> 01:06:39,099 y luego tú irle asignando los valores dependiendo de si le afecta la bala, no le afecta? 887 01:06:39,099 --> 01:06:41,420 es mucho más como eso que poniendo 888 01:06:41,420 --> 01:06:42,539 que restas o que sumas 889 01:06:42,539 --> 01:06:45,119 claro, tú declaras esa bala 890 01:06:45,119 --> 01:06:47,320 y luego tendrás que ir sumando o restando daño 891 01:06:47,320 --> 01:06:48,840 y daño puede ser un número 892 01:06:48,840 --> 01:06:51,199 ya establecido o 893 01:06:51,199 --> 01:06:53,619 uno aleatorio, que también se pueden hacer números aleatorios 894 01:06:53,619 --> 01:06:54,599 vale 895 01:06:54,599 --> 01:06:55,900 hablar de la tarea cero, ¿no? 896 01:06:55,900 --> 01:06:58,179 sí, sí, la tarea cero 897 01:06:58,179 --> 01:07:00,760 vale, esa tarea 898 01:07:00,760 --> 01:07:02,039 ya os digo que 899 01:07:02,039 --> 01:07:03,539 no va a salir de momento 900 01:07:03,539 --> 01:07:05,139 ni de broma, si nunca habéis estado 901 01:07:05,139 --> 01:07:07,760 pero si lo que quiero es que vayáis intentando resolverla 902 01:07:07,760 --> 01:07:12,860 para con lo que vayamos viendo tal vale que hay cosas que no se ha explicado ni 903 01:07:12,860 --> 01:07:15,800 se ha abierto el tema ni está todavía en el tema vale pero que es para que os 904 01:07:15,800 --> 01:07:21,360 pongáis con ellos vale entonces variables el concepto variable ya vais viendo que 905 01:07:21,360 --> 01:07:26,539 es referenciar valores para moverlos por el código en distintos momentos en 906 01:07:26,539 --> 01:07:32,179 esencia es eso esto se va complicando por supuesto vamos a la tarea 1 vale 907 01:07:32,179 --> 01:07:36,920 después de hacer ese prefab de la nave que en principio no había mayor problema 908 01:07:36,920 --> 01:08:05,300 fallar, quien lo haya intentado pues le da alguna pista de algo que puede fallar, pero en principio es tener esa nave. Lo segundo que pide es instanciar la nave, ¿vale? Instanciar más allá, que evidentemente si vamos a usar variables, por eso lo has explicado, lo que vamos a hacer es una operación, que es, ya esto lo pone en el tema, que es hacer una operación que es instanciar el objeto por código, ¿no? Para eso se usa, al arrancar el juego, se puede poner aquí la operación instantiate, ¿vale? De todas las que hay. 909 01:08:05,300 --> 01:08:24,539 Vais a ver que IntelliSense también nos va dando distintos iconitos, ya iré explicando mejor qué es cada cosa, ¿vale? Pero en este caso, por ejemplo, es de un método y una función. Método y función, si lo iréis escuchando mucho, son sinónimos. A veces diré métodos y a veces diré función, ¿vale? 910 01:08:24,539 --> 01:08:44,479 Y cuando me pongo encima, vais a ver que IntelliSense, cuando me voy poniendo con la selección de la palabra, nos da más ayudas aquí, nos da muchas ayudas siempre, ¿vale? Aquí ahora mismo nos dice Instant, ahí va, bueno, espera, Instant, cuando a veces no os salga, empezad a escribirlo otra vez porque si no se pierde. 911 01:08:44,479 --> 01:08:58,819 Os ponéis encima y pone Instantiate, pone como cosas que está heredando de estas librerías que os he dicho que había aquí arriba y llegamos hasta la palabra Instantiate y dentro de paréntesis pasan cosas y pone más cuatro sobrecargas. 912 01:08:58,819 --> 01:09:11,039 Ahora vemos qué es eso. Os he dicho, cuando hay algo que lleva una palabra y luego unos paréntesis, como aquí el start, es una acción. En este caso, start es al arrancar lo que tengas dentro del bloque. 913 01:09:11,520 --> 01:09:24,079 Ahora vamos a hacer una, que esto son cosas que tenemos que ir aprendiendo, es al arrancar, dentro voy a instanciar un objeto. De momento me da fallo porque es verdad que esta operación, a diferencia de la de start, 914 01:09:24,079 --> 01:09:27,680 hasta que, por ejemplo, no le dices qué objeto, no sabe qué hacer. 915 01:09:27,899 --> 01:09:30,920 Y cuando no sabe qué hacer, estos programas se vuelven muy locos 916 01:09:30,920 --> 01:09:33,579 y te dan error y dicen, mira, yo hasta que no me digas qué tengo que hacer, 917 01:09:33,680 --> 01:09:34,899 pues no me voy a ejecutar. 918 01:09:35,399 --> 01:09:39,840 Entonces, cuando abrimos llave, una vez ya hemos puesto por completo 919 01:09:39,840 --> 01:09:43,880 la instrucción en el debug log, vuelvo un segundo al debug, 920 01:09:43,880 --> 01:09:47,659 hemos dicho es la clase debug que dentro tiene la operación log. 921 01:09:47,659 --> 01:10:03,380 Al dar a log, yo sé que es una operación que debe tener unos paréntesis para, en este caso, en esta operación, definir qué tiene que mostrar el mensaje, ¿no? Y vais a ver que a veces salen aquí, en el desplegable, dos flechitas, ¿vale? 922 01:10:03,380 --> 01:10:13,060 Una misma operación, una misma palabra que esconde detrás operaciones, puede variar en el contenido de estos paréntesis. 923 01:10:13,600 --> 01:10:18,859 Debug log puede, como hemos hecho hasta ahora, solo mostrar un mensaje, lo que pongamos ahí como mensaje, 924 01:10:19,520 --> 01:10:26,840 y fijaos que como nos va enseñando lo que tiene que ir dentro, tiene la misma lógica que cuando hemos declarado la variable. 925 01:10:26,840 --> 01:10:39,859 Primero te dirá qué tipo de variable o de objeto tiene que tener dentro y luego cómo ha llamado el software, el código, a ese mensaje. 926 01:10:39,859 --> 01:10:50,939 Es decir, ahora mismo en el debug log que hemos hecho hasta ahora, está diciendo que dentro tiene que haber un elemento de tipo objeto, que dentro de Unity querría decir cualquier tipo de variable. 927 01:10:50,939 --> 01:10:57,500 Y aquí ha puesto un nombre, igual que hacíamos nosotros, genérico, que lo ha puesto el programador para que sepamos que lo que hay que meter es el mensaje. 928 01:10:57,680 --> 01:11:01,960 Esto no significa nada, simplemente que nos está dando la ayuda de que es un mensaje. 929 01:11:02,720 --> 01:11:11,819 Si le damos aquí a lo que se llama sobrecarga, nos dice hay otra opción que aparte de poder introducir el mensaje separado por una coma, podemos meter un contexto. 930 01:11:13,279 --> 01:11:16,220 Esto aquí no lo voy a hacer con esta operación, lo voy a hacer con la de instanciar. 931 01:11:16,220 --> 01:11:35,460 Cuando yo abro el paréntesis distanciar hay hasta 10 de lo que se llaman sobrecargas, que son a esta palabra, esta acción, puedes hacer uso de ella hasta de 10 formas diferentes. Y veis que cada una, entre el paréntesis, va poniendo distintas opciones, cada una con sus peculiaridades, que ahora vamos a ver. 932 01:11:35,460 --> 01:11:37,319 Si vamos a la primera 933 01:11:37,319 --> 01:11:40,159 Dice, pues tú aquí me puedes meter un objeto 934 01:11:40,159 --> 01:11:41,859 Que se llama original 935 01:11:41,859 --> 01:11:44,479 Y abajo incluso pone una descripción 936 01:11:44,479 --> 01:11:46,220 Pone, clona el objeto original 937 01:11:46,220 --> 01:11:48,659 Y devuelve un clon 938 01:11:48,659 --> 01:11:50,840 Es decir, que coge un objeto 939 01:11:50,840 --> 01:11:52,579 Y lo clona en la escena 940 01:11:52,579 --> 01:11:54,220 Bueno, pone 941 01:11:54,220 --> 01:11:56,439 El original es un objeto 942 01:11:56,439 --> 01:11:58,439 Que ya tengas, del que quieras hacer una copia 943 01:11:58,439 --> 01:12:00,380 Que en este caso va a ser el prefaz que tenemos de la nave 944 01:12:00,380 --> 01:12:02,579 Entonces, simplemente 945 01:12:02,579 --> 01:12:04,340 Para que sepáis, vais a ir viendo 946 01:12:04,340 --> 01:12:09,060 que hay distintas formas de operar con estos métodos, ¿vale? 947 01:12:09,359 --> 01:12:13,039 Y lo que hagamos normalmente va a variar dependiendo de lo que pongamos aquí. 948 01:12:14,399 --> 01:12:20,159 Aquí, de la forma rápida, vamos a decir que lo que vamos a poner dentro de este paréntesis 949 01:12:20,159 --> 01:12:22,680 es el prefab que va a instanciar. 950 01:12:23,319 --> 01:12:29,399 Es decir, ahora mismo este código se va a ejecutar donde esté este objeto entity, 951 01:12:29,399 --> 01:12:30,880 que hemos creado antes 952 01:12:30,880 --> 01:12:32,920 y ahí vamos a generar un clon 953 01:12:32,920 --> 01:12:35,279 del prefab 954 01:12:35,279 --> 01:12:36,319 que tenemos aquí preparado 955 01:12:36,319 --> 01:12:38,960 de esta navecica que tenemos aquí preparada 956 01:12:38,960 --> 01:12:41,260 y claro, aquí es donde empieza 957 01:12:41,260 --> 01:12:43,479 ya la cabeza a dar vueltas y decirle 958 01:12:43,479 --> 01:12:45,439 vale, hasta ahora hemos hecho variables que he creado 959 01:12:45,439 --> 01:12:46,920 aquí, le he dicho que es un 5, una palabra 960 01:12:46,920 --> 01:12:48,739 pero como meto yo aquí dentro 961 01:12:48,739 --> 01:12:51,680 pues que es un prefab 962 01:12:51,680 --> 01:12:52,319 ¿no? 963 01:12:52,800 --> 01:12:54,399 como meto aquí la nave, ¿no? 964 01:12:54,399 --> 01:12:56,039 vale, cuando 965 01:12:56,039 --> 01:12:58,399 vayamos avanzando en el 966 01:12:58,399 --> 01:13:18,119 En el temario vamos a ver que aparte de números enteros, de strings, de cadena de texto o de floats, por ejemplo, hay más, pero bueno, esos son como los más usados a nivel de primitivas de variable, hay otras que apelan a conceptos que están dentro del juego. 967 01:13:18,119 --> 01:13:33,880 Uno, por ejemplo, es, y con mayúscula, ¿vale? Esto ya veréis que se puede escribir con y sin mayúscula, un transform, ¿vale? Un transform, veis que nos lo marca y dice, es una clase, bueno, y guarda la posición, rotación y escala de un objeto. 968 01:13:33,880 --> 01:13:48,180 Cuando generamos una variable de tipo transform, por ejemplo, ¿vale? La lógica es igual que la que hemos hecho anteriormente. Hemos dicho, primero hay que decir el tipo de variable que estamos creando y luego le damos un nombre nosotros que queramos. 969 01:13:48,180 --> 01:14:03,239 Pues posición referencia, ¿vale? Punto y coma. Ahora mismo vale cero porque no hay nada, ¿vale? Pero tenemos aquí una posición de referencia de donde queremos que se instancie la nave. 970 01:14:03,239 --> 01:14:19,680 Y voy a hacer otra cosa, ahora lo explico, que es que también se puede crear una variable de tipo GameObject, que lo que va a hacer es que en su interior se va a poder guardar un objeto, en este caso un prefab, y va a ser mi prefab, por ejemplo. 971 01:14:19,680 --> 01:14:40,880 Ahora mismo lo que tenemos es, aunque no sepamos muy bien qué quiere decir esto, una variable que por el tipo que es esta caja lo que va a guardar son GameObjects que tenemos en la escena. Está configurado con estas librerías que tenemos aquí. Va a permitir, y de hecho fijaos que cuando leemos esto pone UnityEngine.GameObject. 972 01:14:40,880 --> 01:14:59,880 Yo os he dicho, siempre va de lo general a lo concreto, ¿no? Unity Engine, si os fijáis, está aquí abierto, por eso no hay que volver a abrirlo. Y gracias a esta librería, pues aquí tenemos este GameObject. Y cuando metamos algo en esta caja, vamos a referirnos a esta caja con mi prefab, ¿vale? 973 01:14:59,880 --> 01:15:04,880 ¿Qué tal? Ahora vemos cómo seguimos, pero más o menos me vais siguiendo. 974 01:15:07,199 --> 01:15:07,920 Sí, más o menos. 975 01:15:08,180 --> 01:15:09,239 Más o menos, vale. 976 01:15:10,119 --> 01:15:16,479 Aquí hemos generado una caja, que ahora veremos cómo va a guardar el objeto para poder usarlo bajo el nombre Mi Prefab, ¿vale? 977 01:15:16,840 --> 01:15:26,199 Y luego, como vamos a querer que esta instancia se ubique donde nosotros le digamos, pues hemos generado otra variable de tipo transform. 978 01:15:26,199 --> 01:15:34,960 Y con transform es que podemos guardar los valores de posición, rotación y escala de un objeto. 979 01:15:35,420 --> 01:15:45,500 De hecho, no es extraño que dentro de los componentes haya uno que se llama transform que justo se ocupa de esos tres conceptos. 980 01:15:45,739 --> 01:15:52,140 Si nosotros conseguimos que en una variable se guarde el transform, guardará todo lo que hay adentro. 981 01:15:52,140 --> 01:16:00,920 Entonces ya podremos decirle a través de código, oye, lo que me generes por donde esté este transform. Y nosotros hemos guardado la posición de, en este caso, esto, pero puede estar variado. 982 01:16:02,140 --> 01:16:13,720 Entonces, para coger ciertos... A ver, voy a guardar. Y de hecho, así me sirve para adelantarlo, normalmente va a haber variables de todos los tipos de componentes. 983 01:16:13,720 --> 01:16:16,859 Por ejemplo, esto también ya veremos qué es 984 01:16:16,859 --> 01:16:19,840 Meto un box collider, voy metiendo aquí distintos componentes 985 01:16:19,840 --> 01:16:22,300 Y veis que he generado un nuevo tipo de transporte 986 01:16:22,300 --> 01:16:24,880 Transform, que podré guardar la información de transform 987 01:16:24,880 --> 01:16:27,840 Pero también va a existir, por ejemplo, el de rigidbody 988 01:16:27,840 --> 01:16:29,539 Que es el que antes os he enseñado que da gravedad 989 01:16:29,539 --> 01:16:33,000 Que hace actuar al motor de físicas 990 01:16:33,000 --> 01:16:34,500 Y si yo empiezo a escribir aquí 991 01:16:34,500 --> 01:16:37,439 No es casualidad que haya un objeto, un tipo de variable 992 01:16:37,439 --> 01:16:38,680 Que se puede llamar rigidbody 993 01:16:38,680 --> 01:16:41,979 Y esto lo llamo mi gravedad 994 01:16:41,979 --> 01:16:42,920 El nombre que queramos 995 01:16:42,920 --> 01:17:00,600 Este último es gravedad. Yo voy a poder dirigirme a los distintos componentes guardándolos en su propia caja. Hay que hacer alguna operación más, pero dentro de esta variable de esta caja voy a poder meter cualquier cosa que esté dentro de RigidBody. 996 01:17:00,600 --> 01:17:14,779 Luego podré acceder a todas estas propiedades. O BoxCollider, pues también voy a poder hacer cajas que se refieran a lo que haya dentro de BoxCollider. Y aquí, pues, B, C de BoxCollider. ¿Vale? Entonces, que os vaya sonando que estos son componentes. 997 01:17:14,779 --> 01:17:32,319 Cuando aparecen además con este colorcito verde, que es el mismo de la clase, al final, fijaos la lógica que CalculusTut, si nos fijamos, no deja de ser otro componente. Es un nombre de componente. Esto es lo que se llama una clase en programación. 998 01:17:32,319 --> 01:17:55,520 Y las clases en programación se pueden usar para incorporarlo como componentes. Entonces, todo componente al final lo que es, es una clase que podemos referenciar aquí. Es decir, que si yo me meto, esto simplemente para que espero que os ayude a ir comprendiendo, si damos con la tecla control sobre algunas palabras, os deja meteros dentro. 999 01:17:55,520 --> 01:18:08,899 ¿Veis que cambia el cursor y me puedo meter dentro? Y aquí hay un montón de cosas que ya ha programado alguien y por eso están las librerías preparando el componente, en este caso, GameObject. 1000 01:18:09,500 --> 01:18:13,539 Pues ya hace muchas cosas, pero que ya están hechas por el programador. 1001 01:18:14,359 --> 01:18:18,300 Entonces, a ver, que vaya al padre, ahora aquí. 1002 01:18:18,899 --> 01:18:23,119 Y Transport también tendrá sus historias ya preconfiguradas, etc. 1003 01:18:23,119 --> 01:18:35,739 Entonces, estas clases, aunque aquí veamos estos componentes con muchas opciones, claro, esto es porque ya hay un código que dice, pues quiero que enseñes, bueno, no sé cuál lo había metido, pero mira, por ejemplo, cámara. 1004 01:18:35,840 --> 01:18:39,279 Todo esto alguien ha hecho un código para que vaya enseñando cada uno de los elementos. 1005 01:18:39,279 --> 01:19:00,140 Al final, ahí, y veréis que no me lo estoy inventando, cuando aquí ponga cámara, ¿vale? Y puedo llamarle mi cámara, ponerle un nombre, y aquí me meto, y cuando me meto, pues habrá opciones como, a ver si alguna, es que hay tantas que no voy a poder verlo, pero por ejemplo, fill of view, ¿vale? Y hay ya opciones preconfiguradas. 1006 01:19:00,140 --> 01:19:27,680 Pues si nos fijamos aquí, va a haber alguna que es fill of view, ¿vale? Bueno, pues todo esto se está viendo porque lo hemos programado antes, alguien lo ha programado antes para que ya estén constituidas y tengan ciertos comportamientos, ¿vale? Esto evidentemente, simplemente para que vaya viendo qué clase y componente son sinónimos, en cierto modo, y aparte se pueda hacer cajas variables con estos, con estas, digamos, con los valores que ya tienen estas clases, ¿vale? 1007 01:19:27,680 --> 01:19:42,500 Entonces ahora mismo lo que me interesa es la clase que me permite guardar GameObjects, que son objetos, y también voy a decir una posición, voy a querer una posición y por tanto voy a usar que la caja transform también lo puedo usar, el componente transform de otro objeto. 1008 01:19:43,100 --> 01:19:56,560 Entonces, claro, aquí a diferencia de antes no podemos hacer un igual y 5 o nave prefab, no se puede. Se puede hacer con código más adelante, pero bastante más complejo que hacer una asignación por el igual. 1009 01:19:56,560 --> 01:20:03,819 Entonces, aquí hay que empezar a hablar de lo que, y esto está en el tema cero también, lo que se llaman los ámbitos de las variables. 1010 01:20:05,560 --> 01:20:15,960 Vais a ir viendo, si cogéis otro código, empezáis a ver que muchas veces leeréis palabras como privado, private o público, que aquí ya viene uno, por ejemplo, 1011 01:20:16,739 --> 01:20:22,520 porque al final estos códigos llegarán momentos que querremos que se comuniquen entre sí. 1012 01:20:22,520 --> 01:20:32,260 Es decir, imaginaos que yo he puesto a cálculos un componente y luego el personaje tiene su propio script con su vida de 100. 1013 01:20:32,819 --> 01:20:40,359 Y es cálculo la que se ocupa de coger de otro componente la vida del personaje y en otro objeto, en otro script, hacer operaciones. 1014 01:20:40,560 --> 01:20:47,359 Entonces, digamos que cuando se vaya complicando el tema, habrá que ir intercomunicando los distintos scripts y los códigos. 1015 01:20:47,359 --> 01:21:03,359 Pero no siempre nos va a interesar que todo se comunique con todo, porque a lo mejor va a haber personajes con sus scripts, va a haber enemigos con sus scripts, va a haber una pared que podemos romper con sus scripts y todas tienen vida, digamos, cada una la suya respectiva. 1016 01:21:03,359 --> 01:21:15,800 Si al final empezamos a poner variables como vida, ¿vale? Pues no nos acordábamos, si todos los scripts diferentes tienen vida, al final nos podemos equivocar, podemos poner vida y referirnos a la vida de otro personaje. 1017 01:21:15,800 --> 01:21:28,720 Entonces, para limitar, esto es como una explicación así un poco chusca, pero bueno, a veces no nos interesa que los distintos elementos se puedan meter unos dentro de otros, ¿no? 1018 01:21:28,720 --> 01:21:49,180 Entonces, para eso existen lo que se llaman los ámbitos de acceso. ¿Eso qué significa? Que cuando vamos generando tanto clases como variables, incluso como métodos, acciones, podemos decirle que algo se pueda ver desde fuera de este script o no. 1019 01:21:49,180 --> 01:22:16,739 Y esto básicamente significa que cuando generamos cualquier variable, igual que os he dicho que una variable sin valor vale a cero, normalmente cuando declaramos una variable es privada, es decir, que solo se va a ver dentro de esta clase, ¿vale? No lo va a poder ver otro código, ¿vale? Aquí también, aunque no lo ponga, también hay un private, veis que no da error, aunque lo escriba, ¿vale? Porque se supone que por defecto lo pone como privado, para que sea restrictivo, ¿no? 1020 01:22:16,739 --> 01:22:25,460 Sin embargo, en ciertos momentos nos puede interesar que una variable sea pública y lo puedan ver otros objetos. 1021 01:22:25,800 --> 01:22:28,119 Y en Unity no es solo que lo puedan ver otros scripts. 1022 01:22:28,279 --> 01:22:32,560 En Unity es que también sea público desde el inspector de Unity. 1023 01:22:33,640 --> 01:22:36,399 Voy a hacer una cosa. Voy a borrar, voy a comentar, ¿vale? 1024 01:22:36,399 --> 01:22:38,520 En vez de borrar, para tenerlo preparado, comento de un segundo. 1025 01:22:39,000 --> 01:22:41,039 Si luego quiero usar, digo, para que no dé error, ¿vale? 1026 01:22:41,359 --> 01:22:44,939 Si en cualquier momento quiero recuperar cualquier cosa, quito el código y lo tengo ahí. 1027 01:22:44,939 --> 01:23:03,140 Es una práctica muy común comentar para dejar de usar algo. Entonces, ahora mismo si me meto en el script CalculusTut, solo hay un campo aquí que es script, que viene por defecto, cuando metemos un script para definir qué script es el que estamos asociando. 1028 01:23:03,140 --> 01:23:29,149 Ya está, no permite hacer nada. Pero fijaos, y aquí ya va a empezar a abrirse un mundo de posibilidades, que si yo en vez de decir que algo es privado, lo pongo como público, es decir, que puedan acceder otros scripts a este elemento, si yo lo pongo público y guardo, vais a ver que ahora dentro de este script se ha abierto otro campo nuevo que se llama mi prefab, ¿vale? 1029 01:23:29,149 --> 01:23:46,130 Voy un segundo aquí, que es el nombre de la variable. Veis que él ya interpreta que aunque sea mayúsculas y minúsculas, lo separa bien con sus mayúsculas, bien escrito, ¿vale? Que está hecho todo a propósito. Y aquí deja un espacio que podemos rellenar con algo que sea un GameObject, ¿vale? 1030 01:23:46,130 --> 01:23:59,010 Entonces, haciendo públicas las variables es como, por ejemplo, en este componente, en este código, alguien hace que aquí se puedan meter tres variables llamadas posición, que luego además se referirá a ellas para hacer ciertas operaciones, ¿vale? 1031 01:23:59,010 --> 01:24:15,289 Si, por ejemplo, el transform digo que sea público también, ¿vale? Pues cuando lo hago público y guardo vais a ver que, esperad un segundo que está cargando, pues está la posición de referencia y está esperando algo que sea de tipo transform. 1032 01:24:15,289 --> 01:24:31,750 ¿Vale? Entonces, a ver un segundo que se esté grabando todo. Vale, genial. Vale, aquí estamos. ¿Vale? Entonces, con esto lo que vamos a poder hacer es, desde el propio inspector, arrastrar elementos. 1033 01:24:31,750 --> 01:24:34,829 veis que la main cámara la meto en las dos 1034 01:24:34,829 --> 01:24:35,710 ¿vale? 1035 01:24:36,550 --> 01:24:38,350 fijaos, importante antes de seguir 1036 01:24:38,350 --> 01:24:40,489 que aunque estoy arrastrando la misma cámara 1037 01:24:40,489 --> 01:24:41,890 en cada uno sale un iconito 1038 01:24:41,890 --> 01:24:44,329 ¿vale? porque en cada uno está guardando 1039 01:24:44,329 --> 01:24:46,409 un tipo de información, en uno está guardando 1040 01:24:46,409 --> 01:24:48,550 la caja del GameObject, porque es de tipo 1041 01:24:48,550 --> 01:24:50,109 GameObject, y en otra 1042 01:24:50,109 --> 01:24:52,210 ¿vale? recordad que el componente de transform 1043 01:24:52,210 --> 01:24:53,970 tiene este icono, está guardando 1044 01:24:53,970 --> 01:24:55,909 la información de transform de este objeto 1045 01:24:55,909 --> 01:24:58,029 aunque estemos arrastrando el mismo objeto 1046 01:24:58,029 --> 01:24:59,789 en cada una de las variables 1047 01:24:59,789 --> 01:25:01,609 dentro de esta caja, de esta pieza de Lego 1048 01:25:01,609 --> 01:25:03,890 está guardando una información distinta 1049 01:25:03,890 --> 01:25:05,949 que nosotros ya iremos usando a conveniencia 1050 01:25:05,949 --> 01:25:08,310 ¿vale? entonces esta es la forma más rápida 1051 01:25:08,310 --> 01:25:09,710 las hay más 1052 01:25:09,710 --> 01:25:11,350 y de hecho en ciertos momentos esto es 1053 01:25:11,350 --> 01:25:13,670 muy básico, digo que se tendrá que buscar 1054 01:25:13,670 --> 01:25:15,750 de otra forma, es la forma en la que tenemos 1055 01:25:15,750 --> 01:25:17,829 para llenar 1056 01:25:17,829 --> 01:25:18,770 estas cajas de 1057 01:25:18,770 --> 01:25:21,829 la información que nos importe 1058 01:25:21,829 --> 01:25:24,029 ¿no? entonces ahora mismo 1059 01:25:24,029 --> 01:25:25,449 si 1060 01:25:25,449 --> 01:25:27,369 tenemos aquí un instant shade 1061 01:25:27,369 --> 01:25:30,029 y vuelvo a escribir el paréntesis para que veamos 1062 01:25:30,029 --> 01:25:32,590 aquí hay el primer método 1063 01:25:32,590 --> 01:25:33,510 dice object 1064 01:25:33,510 --> 01:25:35,470 que es sinónimo de GameObject 1065 01:25:35,470 --> 01:25:38,149 aquí podemos meter el objeto que queremos que se instancie 1066 01:25:38,149 --> 01:25:40,010 y ahora lo bueno es que si ponemos aquí 1067 01:25:40,010 --> 01:25:40,649 mi prefab 1068 01:25:40,649 --> 01:25:43,550 esa variable que hemos llenado 1069 01:25:43,550 --> 01:25:45,989 con algo en este momento 1070 01:25:45,989 --> 01:25:47,210 a través del inspector 1071 01:25:47,210 --> 01:25:49,689 ahora se va a instanciar algo cuando arranque 1072 01:25:49,689 --> 01:25:51,829 es verdad que ahora mismo lo he hecho así 1073 01:25:51,829 --> 01:25:53,710 de la explicación pero mi prefab lo que instancia 1074 01:25:53,710 --> 01:25:55,310 es una cámara que no es lo que me interesa 1075 01:25:55,310 --> 01:25:57,949 yo lo que voy a querer instanciar es la nave prefab 1076 01:25:57,949 --> 01:25:59,750 voy a cálculos 1077 01:25:59,750 --> 01:26:02,850 y el prefab lo puedo arrastrar a main cámara. 1078 01:26:03,590 --> 01:26:06,130 Y veis que se ha guardado aquí el objeto de nave prefab. 1079 01:26:07,109 --> 01:26:08,029 ¿Esto qué significa? 1080 01:26:08,149 --> 01:26:09,930 Voy a guardar también aquí, voy al código 1081 01:26:09,930 --> 01:26:14,649 y aquí le estoy diciendo, en esta nave mi prefab, 1082 01:26:14,829 --> 01:26:17,350 a través de, al hacerlo público, a través del inspector, 1083 01:26:17,850 --> 01:26:20,689 he guardado ese prefab y cuando yo instancio, 1084 01:26:20,829 --> 01:26:23,149 ahora sí que sabe qué objeto es el que tiene que instanciar 1085 01:26:23,149 --> 01:26:24,989 porque se lo he atribuido ahí. 1086 01:26:25,569 --> 01:26:27,409 Cuando guarde, vais a ver que, 1087 01:26:27,409 --> 01:26:31,850 ¿vale? cuando guarde 1088 01:26:31,850 --> 01:26:32,789 al darle a play 1089 01:26:32,789 --> 01:26:35,909 no está en ningún lado pero me genera una copia 1090 01:26:35,909 --> 01:26:38,050 bueno, perdonad que como aquí le he metido 1091 01:26:38,050 --> 01:26:39,729 a la nave antes un rigidbody y tal 1092 01:26:39,729 --> 01:26:41,409 para explicaroslo, voy a quitar 1093 01:26:41,409 --> 01:26:44,470 dentro del prefab todo lo que le he añadido 1094 01:26:44,470 --> 01:26:46,189 de componentes 1095 01:26:46,189 --> 01:26:47,529 que ahora mismo no me interesa que tengan 1096 01:26:47,529 --> 01:26:49,130 como el boss collider y el rigidbody 1097 01:26:49,130 --> 01:26:51,069 ¿vale? se ha autoguardado, salgo 1098 01:26:51,069 --> 01:26:53,810 y vuelvo, a ver, detengo 1099 01:26:53,810 --> 01:26:56,069 y cuando arranca el juego porque está en el start 1100 01:26:56,069 --> 01:26:58,090 me genera esta nave aquí 1101 01:26:58,090 --> 01:26:59,029 ¿vale? 1102 01:26:59,810 --> 01:27:06,329 Así es como ha sabido el programa que es esta nave la que tiene que hacerse, una copia. 1103 01:27:06,550 --> 01:27:13,189 Si yo en vez de la nave pongo el prefaz cubo, pues sin hacer nada más, ya cuando le da al play lo que se va a instanciar es el cubo, no la nave. 1104 01:27:14,250 --> 01:27:21,529 Y para acabar, o de las últimas cosas que voy a decir, lo bueno que tiene esto es que como cada método tiene sus sobrecargas, 1105 01:27:22,130 --> 01:27:28,970 el primero te lo pone, te lo origina en el punto de origen de donde se está generando el script. 1106 01:27:28,970 --> 01:27:42,890 Es decir, yo me pongo aquí y le digo mi prefaz como estaba haciendo y yo no tengo control de dónde se instancia, ¿vale? Más allá de que se instanciará donde esté el objeto padre, que es el que instancia, ¿vale? Es decir, yo ahora me pongo en el 0, 0. 1107 01:27:42,890 --> 01:27:46,130 por cierto, cuando generéis un nuevo elemento 1108 01:27:46,130 --> 01:27:47,289 como un empty 1109 01:27:47,289 --> 01:27:50,229 cuidado que según donde tengáis 1110 01:27:50,229 --> 01:27:51,989 la navegación 1111 01:27:51,989 --> 01:27:54,350 no lo genera en el punto de origen 1112 01:27:54,350 --> 01:27:56,210 veis que yo he generado uno nuevo y me lo he puesto en el 20 1113 01:27:56,210 --> 01:27:57,350 menos 1, menos 6 1114 01:27:57,350 --> 01:28:00,189 si queréis empezar a hacer todo desde el 0 1115 01:28:00,189 --> 01:28:02,390 es muy buena práctica siempre crear el objeto 1116 01:28:02,390 --> 01:28:03,590 a menos que lo hagáis a posta, claro 1117 01:28:03,590 --> 01:28:06,130 y lo reseteáis para que esté en el 1118 01:28:06,130 --> 01:28:06,810 punto de origen 1119 01:28:06,810 --> 01:28:09,989 ahora mismo cálculos, que es el 1120 01:28:09,989 --> 01:28:12,090 objeto que tiene aquí, veis que tampoco 1121 01:28:12,090 --> 01:28:12,850 está en el origen 1122 01:28:12,850 --> 01:28:20,260 Y yo cuando arranco el juego, me lo está generando en una posición que tampoco es la que me interesa, que sería la del origen. 1123 01:28:20,779 --> 01:28:25,960 ¿Por qué? Porque si recordáis, cuando yo he hecho el cubo, estaba movido del 0,0. 1124 01:28:27,319 --> 01:28:31,279 Y cuando he instanciado, sin decirle un punto de referencia, que es lo que he hecho ahora en el código, 1125 01:28:31,739 --> 01:28:35,960 porque no le he dicho nada referente a posición, lo intentará hacer en el 0,0, 1126 01:28:36,279 --> 01:28:40,800 pero lo está moviendo en relación a lo desplazado que esté ya el prefab. 1127 01:28:40,800 --> 01:28:43,300 Lo que os he dicho antes de la boquilla y si lo movíamos, ¿no? 1128 01:28:43,300 --> 01:28:58,399 Entonces, si yo este prefab lo guardo y vuelvo aquí, ¿vale? Y lo vuelvo a lanzar el juego, me lo deja en el 0, 0, ¿vale? Ahora sí que está en el 0, 0, este cubo. 1129 01:28:58,399 --> 01:29:11,000 Si yo quisiera decir un punto del espacio donde se puede ubicar el objeto, por ejemplo, hago aquí un objeto que es la boquilla de la pistola. 1130 01:29:11,159 --> 01:29:16,180 De hecho, voy a hacer algo visual para que sea más fácil de detectar. 1131 01:29:16,619 --> 01:29:21,840 Hago este cilindro, que es la pistola que se va a ir moviendo durante el juego. 1132 01:29:21,840 --> 01:29:42,420 Y en un momento X voy a querer que en este punto, cuando le dé a la barra espaciadora, por ejemplo, se instancie la bala. Este objeto está en unas coordenadas que no son el 0,0. Si yo ahora mismo le digo que se instancie la bala en algún punto, pues lo mismo, se va a instanciar en el 0,0. 1133 01:29:42,420 --> 01:30:02,680 Pero si yo vuelvo otra vez a cálculos y le digo la posición de referencia quiero que sea la del cilindro, que la voy a llamar boquilla-pistola-boquilla. Cuando voy a cálculos, yo si arrastro boquilla a la posición, yo quiero que instancie el cubo, va a instanciar en la posición de la boquilla. Estoy preparando esto. 1134 01:30:02,680 --> 01:30:15,000 Entonces, como esta posición, este transform, lo está cogiendo de la boquilla, hay otra opción que es decirle, vale, quiero que me lo hagasen, al ponerle coma, veis que se pueden ir añadiendo más parámetros. 1135 01:30:15,159 --> 01:30:25,880 Y ahora la sobrecarga que me abre es la 2, que es la que permite meter dos valores. Incluso si pusiera tres comas, significa que puedo meter tres distintos valores. 1136 01:30:25,880 --> 01:30:56,140 Pero el que está configurado para que lleve dos es una que es el objeto original y otra que es cuál es el padre y la posición donde se va a generar, que es esta posición referencia. Cierro el paréntesis, guardo y vais a ver que a diferencia de antes, ahora sí que cuando se ejecute el juego, la bala se ha hecho hija de la boquilla y además está en la misma posición que la boquilla. 1137 01:30:56,140 --> 01:31:16,680 Ya no se hace en el 0,0. Entonces veis que de esta forma podemos ir relacionando, ir cogiendo la información de uno y de otro e irla usando a nuestro antojo. Habrá que ir conociendo poco a poco los métodos, las acciones que podemos hacer, pero bueno, esto es un poco como la base de ir moviendo datos de un lado a otro mediante código. 1138 01:31:16,680 --> 01:31:19,359 solo me queda una cosita muy corta 1139 01:31:19,359 --> 01:31:20,960 por explicar y por mi por hoy 1140 01:31:20,960 --> 01:31:22,500 creo que ya estoy y puedo 1141 01:31:22,500 --> 01:31:25,140 creo que tenéis información suficiente 1142 01:31:25,140 --> 01:31:27,319 para hacer la práctica, me quedan dos cosas 1143 01:31:27,319 --> 01:31:29,180 y ahora os pregunto que tal, imaginaos 1144 01:31:29,180 --> 01:31:31,220 que yo en este instantiate en vez de hacerlo en start 1145 01:31:31,220 --> 01:31:33,180 lo pongo en update, corto y pego 1146 01:31:33,180 --> 01:31:35,140 la línea y guardo, que es lo que va a hacer 1147 01:31:35,140 --> 01:31:37,039 pues que va a generar 1148 01:31:37,039 --> 01:31:40,550 una copia cada frame 1149 01:31:40,550 --> 01:31:42,210 vale, aquí 1150 01:31:42,210 --> 01:31:43,890 se van haciendo millones 1151 01:31:43,890 --> 01:31:46,489 esto normalmente no os va a interesar porque va 1152 01:31:46,489 --> 01:31:50,369 colapsar el juego de tantas copias que está haciendo pero veis que dependiendo 1153 01:31:50,369 --> 01:31:55,010 de dónde se ubique pues hace la operación una vez al comienzo otra 1154 01:31:55,010 --> 01:31:59,329 durante cada fotograma y hay más métodos de tiempo pero bueno estos son como los 1155 01:31:59,329 --> 01:32:05,029 básicos que vienen vale luego última cosa os he dicho que antes que por nivel 1156 01:32:05,029 --> 01:32:09,210 de protección para que no se pueda acceder a una variable desde varias 1157 01:32:09,210 --> 01:32:12,350 variables que a lo mejor se llaman igual y luego un código muy grande esto por 1158 01:32:12,350 --> 01:32:15,989 defecto si no ponemos nada al declarar una variable es privado no yo lo he 1159 01:32:15,989 --> 01:32:22,909 puesto público para que se vea en el inspector. Lo he vuelto a hacer privado. Ojo, que lo privado 1160 01:32:22,909 --> 01:32:29,710 no existe. Y ahora no es solo que no exista, sino que ahora se ha perdido la referencia de los 1161 01:32:29,710 --> 01:32:35,310 objetos. Es decir, que ahora hago esto y no se va a instanciar nada porque ha dejado de pasarse la 1162 01:32:35,310 --> 01:32:41,729 información. Pero hay otra operación, digamos híbrida, que es que yo puedo seguir queriendo. 1163 01:32:41,729 --> 01:33:01,789 Esto es un poco para que veamos si lo vais cogiendo, que es que teniendo la misma protección privada, que otro script no se pueda meter a esta variable, que sí que permita que se pueda operar con ella desde el inspector de Unity, por ejemplo, para pasar los objetos. 1164 01:33:01,789 --> 01:33:18,270 Y eso se llama, esa operación es metida entre estos corchetes, lo que se llama un serialized field, campo serializado. Se pone antes del tipo de variable, que es donde se ponen los ámbitos, a ver, esperad, que lo quiero copiar en la otra. 1165 01:33:18,270 --> 01:33:42,369 Y ahora las dos van a seguir siendo de tipo privado, lo puedo poner incluso de manera explícita aquí escrito, pero siguen siendo privados. Cuando veamos cómo se accede a otros scripts, no se va a poder acceder de forma fácil, pero sí que permitimos que aparezcan aquí para poder hacer este traspaso de información de elementos. 1166 01:33:43,029 --> 01:33:46,229 Ojo, veis que cuando he borrado y lo he vuelto a poner, está en vacío. 1167 01:33:46,310 --> 01:33:50,569 Muchas veces va a dar error que de pronto vamos a ver aquí algo vacío y pensamos que está. 1168 01:33:50,750 --> 01:33:53,310 Este es el peligro que tiene de trabajar desde el inspector. 1169 01:33:54,109 --> 01:33:58,130 Por eso muchas veces se hace todo con código, que eso funciona siempre si está bien hecho. 1170 01:33:58,130 --> 01:34:04,029 Entonces habría que volver a decirle en cálculo la boquilla es lo que voy a usar de posición de referencia. 1171 01:34:04,930 --> 01:34:08,310 Ahora la nave, por ejemplo, va a ser el prefab que se va a instanciar el objeto. 1172 01:34:08,310 --> 01:34:14,569 guardo y al ejecutar pues ya la boquilla va a tener bueno como está en el update pues se va 1173 01:34:14,569 --> 01:34:20,909 a estar haciendo la nave en el sitio vale entonces bueno lo primero casi me va a interesar meter esto 1174 01:34:20,909 --> 01:34:27,810 en el start y ya está más o menos lo que se pide la práctica está todo explicado desde luego instancia 1175 01:34:27,810 --> 01:34:34,250 y luego tiene más sobrecargas vale podría poner otra coma incluso antes de decirle podemos poner 1176 01:34:34,250 --> 01:34:36,569 si se instancia en un punto 1177 01:34:36,569 --> 01:34:38,770 concreto, con una rotación concreta 1178 01:34:38,770 --> 01:34:40,630 aunque coja la posición de manera 1179 01:34:40,630 --> 01:34:42,609 independiente. Bueno, pues ya 1180 01:34:42,609 --> 01:34:43,909 hay más sutileza, pero esto ya 1181 01:34:43,909 --> 01:34:45,210 demasiado por hoy. 1182 01:34:46,789 --> 01:34:47,770 Último de todo. 1183 01:34:48,430 --> 01:34:50,449 Para que os vayáis haciendo la cabeza, y esto 1184 01:34:50,449 --> 01:34:52,630 lo voy a poner muchas veces en los temas, 1185 01:34:53,430 --> 01:34:54,550 ¿vale? Si ponéis 1186 01:34:54,550 --> 01:34:56,470 cualquier método, cualquier 1187 01:34:56,470 --> 01:34:58,210 propiedad en Google, por ejemplo, 1188 01:34:58,289 --> 01:35:00,590 Instantiate, y ponéis Unity, ¿vale? 1189 01:35:01,149 --> 01:35:02,630 Os va a remitir a la API 1190 01:35:02,630 --> 01:35:04,310 o al manual, ¿vale? 1191 01:35:04,409 --> 01:35:06,390 de Unity 1192 01:35:06,390 --> 01:35:08,949 y aquí es donde os da una explicación 1193 01:35:08,949 --> 01:35:10,189 esto está en inglés, no está en español 1194 01:35:10,189 --> 01:35:11,390 normalmente 1195 01:35:11,390 --> 01:35:14,529 de cuántas sobrecargas hay 1196 01:35:14,529 --> 01:35:16,909 su uso, descripciones, ejemplos 1197 01:35:16,909 --> 01:35:18,869 ¿vale? cuando no sepáis cómo funciona algo 1198 01:35:18,869 --> 01:35:20,989 a medida que vayáis cogiendo además 1199 01:35:20,989 --> 01:35:21,529 más 1200 01:35:21,529 --> 01:35:25,029 soltura, pues iréis entendiendo mejor que pone aquí 1201 01:35:25,029 --> 01:35:26,489 pero esto va a ser vuestro 1202 01:35:26,489 --> 01:35:28,609 manual de uso 1203 01:35:28,609 --> 01:35:31,010 frecuente y que hay que ir 1204 01:35:31,010 --> 01:35:37,489 revisando cuando tengamos problemas de hecho si en cualquier momento le dais al 1205 01:35:37,489 --> 01:35:42,109 interrogante de un componente concreto por ejemplo el transform al darle se ha 1206 01:35:42,109 --> 01:35:45,689 abierto la otra pantalla pero me ha abierto aquí la aplicación de transform 1207 01:35:45,689 --> 01:35:51,050 vale con eso podéis ir viendo la ayuda está a veces demasiado extensa pero da 1208 01:35:51,050 --> 01:35:54,710 mucha información útil