Aprende a hacer juegos creando asteroides con Godot | Michael Mcguire | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Aprende a hacer juegos creando asteroides con Godot

teacher avatar Michael Mcguire, Author | Programmer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción a Skillshare

      0:55

    • 2.

      Qué son los asteroides

      1:24

    • 3.

      Configuración del proyecto

      1:13

    • 4.

      Creación del reproductor

      9:49

    • 5.

      Crear el proyectil

      7:26

    • 6.

      Creación de los asteroides

      2:49

    • 7.

      Desove de asteroides

      6:09

    • 8.

      Destrucción de asteroides

      11:24

    • 9.

      Temporizador de Spawn y fugas de memoria

      7:14

    • 10.

      Actualizar puntuación

      9:11

    • 11.

      Actualizar vidas

      16:26

    • 12.

      Repasar el juego y reiniciar

      7:19

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

33

Estudiantes

--

Proyectos

Acerca de esta clase

Revive la historia de los arcade mientras desarrollas habilidades reales de desarrollo de juegos, un asteroide a la vez.

En esta clase práctica, recrearás el icónico juego de arcade de 1979, "Asteroides", con el moderno Godot Engine, apto para principiantes. Ya sea que estés empezando o buscando afinar tus habilidades, este curso basado en proyectos te guiará paso a paso a través del diseño, la codificación y el pulido de una shooter espacial completa de estilo retro, sin necesidad de experiencia previa.

Al final de este curso, tendrás lo siguiente:

Conoce a tu profesor(a)

Teacher Profile Image

Michael Mcguire

Author | Programmer

Profesor(a)
Level: Beginner

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción a Skillshare: Bien, a lo largo de este curso, vamos a seguir adelante y vamos a aprender a hacer fácil creando un juego clásico de 1979, los asteroides Ahora con asteroides, obtienes aquí esta pequeña nave que puede disparar pequeños proyectiles y volar por la pantalla Y lo que pasa es que disparas a estos asteroides que están flotando alrededor de ese desove al azar Los grandes engendran medianos, destruyes los medianos, ellos engendran los más pequeños, los más pequeños se mueven más rápido que los más grandes Y cada uno que destruyas te gana algunos puntos hacia tu puntaje total. Todo bien. Este es un juego simple, pero es importante tanto para la historia de los juegos como un pequeño y agradable proyecto para principiantes donde puedes rehacer un juego real con el que puedes divertirte y siempre agregar y hacer el tuyo propio Bien, comencemos. 2. Qué son los asteroides: Todo bien. El día de hoy vamos a seguir adelante y estaremos creando los asteroides clásicos del juego, como están viendo aquí en la pantalla aquí en este video de YouTube Lo que podemos ver de esto es que los asteroides, además de ser un juego realmente antiguo y clásico Debería ser bastante sencillo para nosotros, pero otro paso adelante porque ahora tenemos movimiento de jugador pasando, como puedes ver con nuestro pequeño jugador aquí en el medio. Está rotando, se mueve, está disparando. Tenemos estos asteroides flotando alrededor, y cada vez que les disparan, se rompen en pedazos adicionales Y podemos ver que tenemos este pequeño brill alienígena ese tipo de engendros de vez en Y en cuanto a UI, tenemos puntos y salud aquí arriba en la parte superior. Y efectivamente, este juego solo continúa hasta que tú o bien, yo no diría hasta que tú tampoco. Continúa hasta que pierdes toda la vida. Y sea cual sea la puntuación que tengas, esa es tu puntuación más alta. Y como puedes ver ahí, el asteroide se salió de la pantalla, y luego volvió a aparecer del otro lado y continuó yendo en la misma dirección en la que se estaba moviendo Pero en definitiva, eso son asteroides. Eso es lo que vamos a estar creando aquí. Entonces, en la siguiente sección, seguiremos adelante y empezaremos a montar un proyecto, que no debería ser demasiado para que podamos ponernos en marcha 3. Configuración del proyecto: Sigamos adelante y montemos nuestro proyecto. Podemos bajar. Si estás creando esto por separado en su propio proyecto, claro, adelante y crea un nuevo proyecto, nombra asteroides Si estás creando dentro de un proyecto existente, entonces solo entra en tu sistema de archivos, haz clic derecho, crea una nueva, crea una carpeta y nombra asteroides, y podemos seguir adelante y hacer una escena Toti Voy a renombrar el mío para decir Principal. Vamos a agregar una capa de lona para nuestro Guy, que yo, por supuesto, renombraré para que sea Guy. Y lo que vamos a necesitar es una etiqueta para la parte superior de aquí, y esta va a ser nuestra representación de nuestra partitura. Voy a cambiar el nombre de esto para decir etiqueta de puntuación. Todo bien. Y seguiré adelante y guardaré esto en mi carpeta de asteroides y guardaré Y realmente, eso es todo lo que realmente necesitamos para poner en marcha nuestro proyecto. La mayor parte del trabajo va a ser dentro del jugador y los asteroides 4. Crear el reproductor: Así que vamos a seguir adelante y crear nuestro jugador y configurar el movimiento. Así que solo vas a entrar en la parte superior, hacer clic en una nueva pestaña para crear una nueva escena, golpear otro nodo. Busca un cuerpo de carácter dos D y selecciónalo. Ahora, ya tengo esta configuración justo por aquí. Eso es solo un cuerpo de personaje dos D. Voy a renombrarlo jugador, y voy a golpear Control S, y voy a guardarlo dentro de mi carpeta de asteroides Ahora de aquí, ya que no tengo ningún sprites que darte para esto, lo que vamos a hacer es que vamos a crear nuestro sprite de jugador ya que de todos modos es tan sencillo para nosotros, y vamos a crear eso con una línea dos D, ya que en su mayoría es solo un triángulo con una pequeña muesca sacada de Muy bien. Entonces los números que voy a usar para esto. Ahora bien, si querías conectarte a Internet y mirar a tu alrededor, estoy seguro que puedes encontrar los sprites, si quisieras hacerlo de esa manera Voy a ir a la Línea dos D y propiedades. Voy a marcar cerrado, enciéndalo. Y voy a abrir los puntos haciendo clic en vector empaquetado dos array. Y voy a añadir hasta que tengamos una talla de cinco. Mi primer punto va a ser a las diez y cero. Mi segundo punto va a estar en negativo cinco y negativo seis. índice dos va a ser cero sobre la X, negativo dos para la Y. El tres va a ser cero en la X y dos positivos en la Y. Y nuestro cuarto índice aquí va a ser cinco negativo en la X y seis en la Y. Ahora bien, eso no se parece al sprite que vimos antes Eso es porque el ancho es demasiado grande. Ahora, porque estoy usando el tamaño predeterminado que he estado usando en esto, nuevamente, lo abriré y te mostraré aquí. Ah, ¿dónde está esto? Ventana de visualización que es 335 por 255. Ahora bien, si quieres usar un tamaño auténtico para esto, creo, creo que es 640 por 800 es el tamaño auténtico para esto. En cuyo caso, podrás salirte con la tuya haciendo tu nave un poco más grande, ¿verdad? Entonces, por ejemplo, podrías sacar la XL tal vez a 20 en vez de diez. Y de nuevo, se puede simplemente un poco aumentar sólido el. Entonces, en vez de cinco negativos, puedes hacer diez negativos. Para que puedas jugar con esos, y puedes lidiar con una línea más amplia. Pero como estoy usando esta pantalla más pequeña, voy a cambiar mi ancho de mi línea hacia abajo a una, y podemos verla aquí. Ahora, tal vez te preguntes, ¿qué pasa con dos? Bueno, podríamos hacer dos, pero vamos a tener un espacio vacío más pequeño en el medio. Y tal vez eso es algo que te gusta. Ve a seguir adelante y jugar eso. Realmente no lo podemos ver aquí en este momento. Voy a seguir adelante y simplemente arrastrarlo a la vista y jugarlo y puedes verlo ahí, cómo se ve en la pantalla. Entonces tal vez te guste así. Pero voy a seguir adelante y cambiar mi ancho a uno. Prefiero más así. A mí me parece un poco más auténtico, pero eso depende de ti. Y nuevamente, siempre se pueden cambiar esos puntos. Si quieres hacerlo más grande, entonces puedes tener un ancho de líneas más amplio, o siempre puedes conectarte a Internet y buscar en Google, y estoy seguro de que encontrarás los sprites en algún lugar para que te pongas en contacto. Muy bien. Ahora podrías notar que aquí estamos recibiendo una pequeña advertencia, y eso es porque sí necesitamos una forma de colisión para nosotros mismos que está pidiendo. Así podemos seguir adelante y podemos hacer una colisión de forma. Podemos entrar, podemos escoger una forma. Podemos hacer un círculo. Podemos hacer un rectángulo. hacer una de las formas poligonales. En serio, no importa mucho. Y si quieres ser aún más exactos, que probablemente sería un poco menos auténtico es un polígono de colisión Y luego es la misma configuración aquí donde solo puedes establecer los puntos. Entonces simplemente los pondrías igual que lo hiciste con los jugadores, por ejemplo, diez, aquí, cinco negativos, seis negativos, y puedes ver que empieza a alinearse. Con nuestra configuración. Entonces solo necesito agregar un par más aquí. Y sería cero, negativo dos, y uno es cero positivo dos, luego negativo cinco y seis. Y entonces tendríamos toda nuestra forma configurada para nosotros. Bien, así que si querías ir por esa ruta, puedes, y siempre puedes entrar y jugar con tus puntos aquí No crear, pero si quieres golpear, haz clic en Editar puntos, y luego puedes simplemente hacer clic en él y arrastrarlo alrededor. Entonces, si quisieras editarlo de esa manera. Además, si no querías escribir los puntos, haces clic en el botón más o en el botón Agregar puntos aquí arriba en la parte superior. Y, solo puedes entrar y crear puntos así. Entonces, sí tienes opciones. Acabo de ir con el interior del inspector porque me parece más fácil porque solo puedes traducir tus puntos directamente por encima. Y nuevamente, si quisieras ir por esta ruta, sin duda puedes. Es un poco más un poco más exacto. Sin embargo, menos voy a arrastrar hacia abajo un poco menos probablemente menos preciso a lo real en el gran esquema de la misma. Todo bien. Entonces, como quiera que quieras ir sobre eso, va a ser tu decisión, ya sea que quieras usar un polígono o una forma Entremos en el movimiento real de nuestro jugador. Entonces, sigamos adelante. Haz clic en el reproductor, presiona AdScript, agrégalo y asegúrate de agregarlo a nuestra carpeta de asteroides Y vamos a crear un proceso de física. Y aquí vamos a tener un par de variables para nosotros. Vamos a tener una variable de velocidad para lo rápido que nos movemos. Vamos a tener una velocidad de rotación para lo rápido que hacemos bien, rotar y luego nuestra dirección de rotación. Y antes de saltar a esta siguiente pieza, asegúrate de subir a la configuración del proyecto, ingresar el mapa y configurar tus controles. Sólo voy a usar lo que he usado en el último año. Solo voy a usar el arriba abajo izquierda y derecha ya que ya tengo esa configuración para WASD Esos son los que voy a usar. Bien, así que sigamos adelante y diremos que dirección de rotación es igual al punto de entrada del eje G. Ahora, tenemos que poner en la acción negativa, y luego la acción positiva. Estos van a ser en forma de los nombres de cadena. Entonces esto se va a dejar. Y luego a la derecha. Porque la izquierda nos va a dar nuestra dirección negativa y derecha, nos va a dar nuestra dirección positiva para la rotación. Y entonces vamos a cambiar la velocidad para que sea igual para transformar punto X veces entonces exactamente lo que acabamos de hacer aquí, punto de entrada, eje, y lo mismo. Vamos a poner nuestro negativo y positivo, así que va a estar abajo, seguido por arriba. Y entonces vamos a multiplicar eso por nuestra velocidad. Ahora, ya casi estamos establecidos aquí. Tenemos que hacer rotación. Plus es igual a la dirección de rotación multiplicados por la velocidad de rotación por Delta. Todo bien. Y en este punto, deberías estar acostumbrado a la idea. Tenemos que usar ya sea colisionar en movimiento o deslizamiento móvil. Voy a usar mover y deslizar en este caso. Y si seguimos adelante y corremos esto, ahora deberíamos poder mover a nuestro jugador alrededor. Entonces, si solo sostengo W, va a seguir adelante. Si sostengo S, va a ir hacia atrás. Yo sostengo A, va a girar a la izquierda. Yo sostengo D, va a girar a derecha y ahora tenemos algo que es muy parecido, mucho más parecido a lo que vimos dentro de asteroides Ahora, puedes seguir adelante y puedes retocar esos números. Así que puedes ajustar la velocidad si quieres que tu nave se mueva más rápido o más lento que esto Estoy usando 100 por defecto. La velocidad de rotación está usando 1.5. Podría aumentarlo para rotar más rápido o disminuirlo para rotar más lento. Eso va a ser completamente de ti. Pero independientemente de lo que elijas hacer, esa es solo una de las pequeñas cosas que vas a decidir para que tu juego se sienta más solo un poco personalizado para ti. ¿Correcto? Y para un jugador, eso es realmente todo lo que necesitamos para levantarnos e ir por eso hasta que tengamos que empezar a disparar. Muy bien. Entonces te veremos en la siguiente parte. 5. Crear el proyectil: Bien, así que sigamos adelante y creamos nuestro proyectil para nuestro jugador Entonces en mi escena de jugador aquí, he seguido adelante y agregué un Marcador dos D, y esto es solo para que tengamos una ubicación específica en la que vamos a generar nuestro proyectil que va a estar un poco frente a nuestra nave Y lo único que hace Marker two D es darnos una posición en algún lugar del mundo. Ese es todo su propósito. Bien, para que puedas seguir adelante, subir y crear una nueva escena, golpear otro nodo, y seleccionar el área dos D. Y golpear Crear, ese va a ser nuestro proyectil Y aquí, he creado una forma de colisión, que es solo un rectángulo y un sprite dos D. Para la textura, he ido adelante y desde el menú desplegable, usa nueva textura de degradado dos D. Y cuando hagas eso, abrirás lo primero hacia arriba Verás esta gran sección. Encontrarás gradiente en el inspector, ábrelo y tendrás dos puntos como este. Un punto será negro por defecto. Entonces se verá algo así. Sólo tienes que seguir adelante y click derecho sobre el punto que está en el negro para deshacerte de él, y ahora es simplemente todo blanco. Derecha. Entonces eso es todo lo que tienes que hacer, y luego tendrás un proyectil. Yo lo instalaré. Adelante y guarda esa escena como propia para que podamos usarla. Y adelante y dale al área dos D. He nombrado un guión a mi proyectil Y aquí vamos a tener una dos funciones y una variable. Todo bien. La primera variable que vamos a tener aquí es que vamos a crear una velocidad para esto. Es un vector dos, y por supuesto, se va a establecer en vector 20 por defecto. Vamos a crear una función para esto llamada set velocity. Va a tener un argumento de un vector dos. No devuelve nada, así que evita. Y todo lo que estamos haciendo es que la velocidad sea igual a V, ¿verdad? El argumento que pasamos. Y luego último, necesitamos que el movimiento real suceda para nuestro proyectil Entonces, en nuestro proceso de física, seguiremos adelante y haremos posición más igual a nuestros tiempos de velocidad Delta. Y nuestro proyectil en sí está hecho. Ahora tenemos que dirigirnos al jugador. Y si aún no tienes una configuración de mapeo de entrada, sube a nuestro mapa de entrada de configuración del proyecto y crea un botón para que puedas disparar. Yo mismo, tengo mi configuración de barra espaciadora. Y antes de continuar, lo primero que voy a hacer es crear una nueva variable llamada proyectil Entonces será una escena repleta que podamos traer. Y de esta manera, podemos cargarlo en cuando lo necesitemos o crear una instancia de la misma cuando la necesitemos, debería decir. Y eso será igual a cargar y solo encontrar esa escena y arrastrarla. Ahí vamos. Entonces vamos a cargar esa escena. Se cargará como una escena de paquete y se almacenará en la variable llamada proyectil Todo bien. Así que sigamos adelante y creamos la función de entrada. Para nuestro jugador. Esto es solo entrada de subrayado funk. Esto tiene un argumento llamado evento. Es un tipo de evento de entrada. No devuelve nada tan vacío. Y sólo vamos a comprobar si entrada es acción solo pulsamos, así que ya no podemos sostener el botón. Tenemos que presionarlo cada vez que queramos. Y la acción que buscamos es disparar. Entonces cada vez que pulsamos el botón disparar, ¿qué vamos a hacer? Bueno, vamos a crear una instancia de nuestro proyectil Entonces PI para instancia de proyectil, es un área dos D. Eso igual al punto de proyectil instanciado Ahora necesitamos usar ese Marcador dos D para nosotros aquí. Entonces PI La posición global es igual al signo de dólar Marcador dos D. Así que solo estamos obteniendo ese Marcador dos D no que agregamos a nuestra posición global de puntos de jugador. Entonces estamos configurando eso. Y si solo echamos un vistazo a eso como es, si damos la vuelta y disparamos. Ahora bien, tal vez realmente no podamos verlo, pero si nos damos la vuelta y nos alejamos, bueno, podemos ver que en realidad no estamos obteniendo nada. ¿Por qué es eso? Porque aún no lo hemos agregado a la escena. Sin embargo, sí existe y lo comprobaremos en solo un segundo. Lo que voy a hacer es que voy a establecer la rotación, configuro la rotación ahora basada en nuestra nave. Entonces, la rotación de puntos PI es igual a la rotación. Y voy a usar Get parent Ad child PI. Entonces estoy usando Get parent. De esa manera, el proyectil no se nos pega porque si solo usamos AdCilD, se nos va a pegar, y si seguimos girando nuestra nave, entonces va a Esto Esto sería útil para algo así como un rayo láser, pero no para un proyectil Entonces estamos usando get parent para que podamos pegarlo al juego y no al jugador en sí. ¿Verdad? Entonces, si entramos y disparamos, puedes ver que ahora está engendrado en el juego, simplemente no se mueve a ningún lado Y esto sucederá cada vez que presionemos nuestro botón de disparar. Entonces, si tienes que pasar esto, enhorabuena. Tu proyectil está funcionando. Solo tenemos que conseguir que en realidad se mueva por nosotros ahora. Todo bien. Así que comprueba si se o para que se mueva, vamos a ejecutar un rápido lo reviso aquí. Vamos a decir, I PI tiene métodos establecidos velocidad, y podríamos asumir esto con seguridad. Pero vamos a asegurarnos de que sí tenga esta función solo para estar seguros. Y vamos a salvar nuestra dirección. Pero estamos creando una nueva dirección aquí. Es igual al vector de dos puntos a la derecha, punto girado y pasar en la rotación. Entonces esto nos va a llevar sea cual sea la dirección correcta, que estaría en la X positiva basada en cuánto se rota efectivamente, ¿verdad? Así que de esta manera siempre tenemos una dirección específica que se está moviendo. ¡Vaya! Vaya, gritos, gritos. Ahí vamos. Vamos a darle unas velocidades una velocidad var igual a 200. Siempre puedes ajustar esto más tarde si lo deseas. Y ahora tenemos que hacer es llamar a esa función que comprobamos aquí. Así que el punto pi establece la velocidad, dirección tiempos velocidad. Y con eso, nuestro proyectil ahora se mueve en cualquier dirección que estemos disparando ¿Tan solo así? Aunque dejemos de movernos por completo. Genial. Ahora tenemos nuestro proyectil trabajando con nuestra nave. Ahora solo necesitamos algunos asteroides para disparar y algunos puntos para reunir Bien. Los veré en la siguiente. 6. Creación de asteroides: Así que sigamos adelante y creamos nuestros tres asteroides. Vamos a crear una grande, una mediana y una pequeña. Todos estos van a ser creados de la misma manera. La única diferencia va a ser el tamaño de la forma de colisión y los números de puntos reales porque obviamente, van a empezar grandes y van a hacerse cada vez más pequeños. Ahora, todos estos se crean a través de un cuerpo de personaje dos D, una línea dos D y una forma de colisión. Así que solo te voy a dar los puntos para la línea dos D. Así que adelante y pausa y cuando tengas esa configuración, entonces podemos seguir adelante y avanzar. Voy a seguir adelante y empezar ahora leyendo los puntos para la línea dos D en el asteroide grande, recuerda guardar tus escenas Cerrado, deberíamos ponernos en. Y el ancho que estoy usando en estos es dos. Todos estos tienen ocho puntos. Y estos van a comenzar con el asteroide grande aquí, 40, cero, 30, negativo 25, diez negativo 35, negativo 15, negativo 30, negativo 35, negativo diez, negativo 30, 20, negativo diez, 35, 25 y 30 Pasando a la mastoides mediática. Tengo otra vez, ocho puntos bajando por la lista, 25, cero, 20, negativo 15, cinco negativo 22, negativo diez, negativo 18, negativo 20, negativo cinco, negativo 18, 12, negativo cinco, 22, 15, 18. Pasando a los puntos para el asteroide pequeño, 15, cero, 12, ocho negativo, tres, negativo 13, negativo siete, negativo diez, negativo 13, negativo dos, negativo 12, siete, negativo tres, 13 y 1010 Esos son los puntos que estamos usando para todos estos. Y una vez que tengas los tres configurados, asegúrate de haber guardado las tres escenas y tendrás tus asteroides configurados y listos para funcionar Y lo único que les va a faltar es su rotación. Por supuesto, necesitan ser engendrados y desovar y desovar asteroide más pequeño cuando sean Entonces los grandes engendrarán los medianos, y los medianos engendrarán los pequeños 7. Desembranza de asteroides: Entonces, sigamos adelante y permitamos que nuestros asteroides aparezcan fuera de la pantalla, muévanse a aparezcan fuera de la pantalla, muévanse a Ellos van a poder tener diferentes velocidades, y vamos a usar el mismo guión en los tres tamaños. Así que sigue adelante y crea un guión, y puedes adjuntarlo a los tres asteroides, el grande, mediano y pequeño, y abrir ese guión Y lo primero que vamos a hacer es que vamos a crear una velocidad de rotación y voy a crear una X cuatro velocidades. Voy a seguir adelante y guardar eso ahora mismo. Entonces si hago clic en mi pequeño asteroide, verán que tenemos velocidad aquí en el inspector, voy a dejar eso al 100 para los pequeños Para mediano, lo bajaré a 50, y para grande, lo haré 20. Ahora, siempre puedes volver y ajustar estos números más tarde, ¿verdad Eso siempre es posible. Yo sólo voy a seguir adelante y fijar eso por ahora. Ahora, dentro de nuestra función ready, para generar fuera de pantalla, lo que vamos a hacer es que vamos a obtener el tamaño de pantalla de Get vPortrc Y vamos a obtener una variable de crédito para spawn edge. Todo el mundo es Randy por ciento cuatro, así que eso nos va a conseguir ya sea un cero, uno, dos o tres Y en base a esto, vamos a determinar si vamos a asignar cada número o asociar cada número para que sea superior, inferior, izquierda y derecha. Entonces vamos a usar algo llamado una declaración de coincidencia. Y todo lo que haces es escribir partido. Lo que quieres igualar, en este caso, sería spawn edge Colon baje, y vamos a decir cero porque esa es una opción. Colon caen, y tienes un bloque de texto. Entonces puedes emparejarlo con uno, y un bloque de texto, dos, y un bloque de texto, y así sucesivamente. Así es como coincidimos con la declaración funciona. Entonces básicamente estamos diciendo, Bien, vamos a igualar esto. Entonces si esto coincide con esto, haz esto, coincide con esto, hacemos este bloque, si coincide con esto, hacemos este bloque, y así sucesivamente. Entonces, qué vamos a hacer con eso, sólo voy a seguir adelante y copiar esto por supuesto. Pero vamos a hacer todos estos, vamos a ir al borde de desove Si es cero, vamos a tomar su posición es igual a un vector dos, y ese vector dos es un rango flotante aleatorio, por lo que rand F en el rango cuadrado entre cero y el tamaño de la pantalla punto X, y luego la Y es negativa 50. Entonces como es negativo puedes asumir aquí que la posición aquí, que el partido de cero va a estar arriba o la pantalla superior. Entonces, si estamos desove por encima de nuestra pantalla, aquí es donde vamos a colocar nuestro asteroide Y entonces nuestra velocidad va a ser vector 20 en la X, y entonces nuestra Y solo va a ser nuestra velocidad, ¿verdad? Entonces con eso siendo un número positivo, eso significa que vamos a estar bajando y vamos a continuar con este patrón hasta el final. Entonces, si es uno, la posición va a ser un vector dos de tamaño de pantalla punto X más 50. Entonces eso significa que estamos desove en el lado derecho de nuestra pantalla aquí, rango de subrayado Rand F, y eso nos va a dar entre cero y tamaño de pantalla punto Y. Así que estamos desove en el lado derecho en cualquier punto vertical, siempre y cuando estemos en el lado derecho de Entonces nuestra velocidad va a ser un vector dos. Tiene un cero en la Y y una velocidad negativa en la X, así que eso se mueve hacia la izquierda. Todo bien. Y si coincidimos con un dos, básicamente vamos a hacer lo mismo que hicimos con cero aquí. Entonces nuestra posición es un vector dos, rand F en el rango cuadrado, cero, screensizet X. Así que estamos en el lado izquierdo ahora mismo Tamaño de pantalla Y más 50. Ya que lo estamos agregando, estamos desove en la parte inferior, derecha, inferior de nuestra pantalla vector dos X es cero para nuestra velocidad, y es velocidad negativa, lo que significa que nuestro asteroide va a estar moviéndose hacia arriba. Y por último pero no menos importante, tenemos un partido para tres. vector dos va a ser un negativo 50 porque el negativo 50 ya va a estar fuera de la pantalla como está, así que está apagado a la izquierda. Rango F aleatorio de cero, y por supuesto, tamaño de pantalla punto Y, en cualquier parte del lado izquierdo, y la velocidad va a ser velocidades positivas que se mueve hacia la derecha y cero en la Y. Bien. Entonces, si tienes eso, realmente necesitamos hacer una cosa más porque no podemos movernos, y es posible que hayas notado que es que tenemos que entrar en nuestro proceso de física, y tenemos que llamar a mover y deslizar. Y también voy a sumar rotación plus iguala nuestra velocidad de rotación tiempos Delta. Si lo probamos, estás en mi pequeño asteroide. Bueno, ahí vamos. Lo vimos al otro lado de arriba. Lo volveré a ejecutar. No, esta vez vine del lado derecho . Lo intentaré de nuevo. Volví a venir del lado derecho. Entonces podemos ver que siempre es completamente al azar, vino de abajo, y está funcionando consistentemente. Y si nos movemos para decir, mi gran asteroide donde he hecho la velocidad 20 y lo pruebo, de nuevo, está rotando Viene de una dirección aleatoria, y simplemente se mueve más lento porque ajustamos la velocidad. Bien, entonces con eso, ahora está funcionando perfectamente bien para nosotros. Nuestros asteroides pueden engendrar y rotar, y todos tienen diferentes velocidades Ahora tenemos que llegar a la sección de disparos y destrucción para que puedan generar trozos más pequeños de ellos. 8. Destrucción de asteroides: Sigamos adelante y vamos a montar nuestro proyectil para poder destruir nuestros asteroides para que pueda generar uno más pequeño Entonces los grandes van a desovar medianos, medios engendrarán Entonces lo primero que tenemos que hacer es que tenemos que ir a nuestra escena del proyectil, seleccionar nuestro proyectil, el área dos D, buscar la sección de colisión bajo el objeto de colisión dos D y establecer la máscara Entonces layer es la capa en la que está el objeto, y mask es básicamente la capa con la que puede interactuar. Entonces vamos a poner máscara a dos, y luego vamos a ir a cada uno de nuestros asteroides Y selecciónala y establece nuestra capa sobre el asteroide en dos y nuestra máscara en una Entonces de esta manera con la máscara siendo una en el asteroide, puede interactuar con nuestro proyectil y con él estando en la capa dos Y no se selecciona la máscara dos. Los asteroides no deben interactuar entre sí, por lo que deben atravesarse entre sí y no golpearse entre sí. Todo bien. Y se puede hacer lo mismo en el asteroide mediano y pequeño. Todo bien. En mi escena principal, acabo de poner moví a mi jugador en ella y simplemente tiré dos mis asteroides medianos para esto para que los usemos como pruebas aquí Y si tuviéramos que jugarlo, los asteroides estamos desove, vienen de diferente dirección En este caso, ambos venían de la derecha. Y ahí teníamos uno de la derecha, uno de abajo. Ah, y se puede ver que no le pegamos ahí , lo cual está bien porque cuando se trata de ello después, eso va a terminar matando a nuestro jugador Entonces no importa que podamos interactuar con él ahora mismo. Bien, entonces, ¿cómo conseguimos que nuestros asteroides funcionen? Bueno, primero, vayamos a nuestro proyectil. Echemos un vistazo a la pestaña del nodo en las señales. Y vamos a seleccionar cuerpo ingresado. Y lo que esto va a hacer conectamos la señal, simplemente hacemos doble clic en ella y conectamos al proyectil Esto va a explotar cada vez que un cuerpo físico toque nuestro asteroide, porque es un cuerpo de personaje dos D entra en nuestra zona de proyectiles Entonces cuerpo va a representar lo que haya entrado en esta área. Entonces lo que podemos hacer fácilmente es decir, yo asteroide. Vaya, de verdad lo estropeé. I asteroide y nombre del punto del cuerpo. Porque recuerden, los míos son todos asteroides grandes asteroides medianos, asteroides pequeños Entonces, si el asteroide está en nombre del punto del cuerpo, entonces debemos estar golpeando el asteroide Voy a hacer body dot D asteroide, que la función personalizada vamos a crear aquí en un momento Y entonces me voy a hacer auto.q3. De esa manera, mi proyectil puede destruirse a sí mismo. Bien. Ahora bien, si fuéramos a ejecutarlo ahora, claro, esto no va a funcionar. Vamos a entrar en un error y alguien como, Hey, destruir no existe. Boom. Ahí vamos. Ah, y aún no he sacado esto. Entonces supongo que eso es algo bueno. Entonces lo que voy a hacer es que vamos a ir al script de asteroides, y voy a crear una variable aquí llamada New spawn Esto va a ser un toro, que es un verdadero o falso. Y por defecto, voy a establecer esto en verdad. Voy a bajar a esa declaración de partido que teníamos , y justo encima de ella, voy a decir yo, nuevo engendro, y luego voy a agarrar toda esa declaración de partido Entonces, de la línea 13 a la 25, resáltalos todos y presiona tab para moverlo. Y fuera de esa declaración si, voy a decir se. Y lo que voy a hacer es que en realidad voy a seleccionar esa declaración de coincidencia, y la voy a pegar dentro de mi se. Pero lo que voy a hacer es que voy a eliminar los cambios de posición. Entonces tengo todo lo que estoy modificando en estos partidos es la velocidad porque no queremos cambiar la posición. Sólo queremos que tenga una dirección aleatoria a la que va. Todo bien. Ahora para esa función de destruir. Ahora para esa función de destruir, lo que vamos a hacer es, en este caso, tengo una variable llamada ST, y estoy cargando, en este caso, mi pequeño asteroide porque estamos probando con el mediano ahora mismo Y quiero engendrar dos de ellos, así que estoy ejecutando un bucle de cuatro Entonces cuatro yo en rango de dos, ¿verdad? Así que vamos a pasar por esto dos veces. Todo bien. Entonces, al encontrarnos con este bucle de proa, vamos a crear una instancia de nuestro pequeño asteroide Vamos a establecer la posición global de nuestro asteroide instanciado a cualquiera que sea nuestra posición global actual de asteroides Vamos a establecer nuevo spawn en false. De esa manera no nos encontramos con nuestra declaración de partido para cambiar la posición. Solo nos topamos con él para establecer la velocidad. Y llamamos a GParentTad Child para agregarlo a la escena. Y una vez que hayamos pasado por eso dos veces, entonces nuestro gran asteroide va a indicarse por sí mismo Ahora si ejecutamos eso y le damos una prueba, boom, podemos ver que aquí funciona perfectamente bien. Y si tienes curiosidad por todos esos errores rojos ahí abajo en el depurador, es solo decirnos que deberíamos usar call deferred aquí durante nuestro on body enter para lo que llamamos body dot destroy Entonces en vez de body dot destroy, lo que hacemos es hacer body call deferred y pasar en Destruir como pantalla Y ahora si ejecutas eso, verás todos esos depuradores simplemente desaparecen Bien. Perfecto. Ahora lo tenemos destruyendo y desove. Los medianos, lo siento, los medianos están destruyendo y desove a estos pequeños. Entonces ahora necesitamos una forma para que nuestro asteroide sepa qué debería ser desove o qué versión debería estar desovando y qué es Entonces, si es mediano, debería engendrar pequeño, y si es pequeño, simplemente debería destruirse a sí mismo Si es grande, debe desovar a medio. Entonces, ¿cómo podemos hacer esto? Bueno, sube a la cima. Vamos a crearnos una nueva variable. Bueno, para empezar, vamos a crear una enumeración llamada los ojos, y esta va a tener grandes medianas pequeñas Vamos a tener una exportación, así podemos cambiar esto. Así que la exportación de nuestro tamaño. Y el tipo aquí va a ser talla de nuestra Enum así que todo el tamaño de gorra Y sólo podemos dejar eso en blanco. Si entramos en alguno de nuestros asteroides y en el inspector, deberíamos verlo. Así que asegúrate de que grande esté configurado en grande. Mediano se establece en medio, y el pequeño se establece en pequeño. Si reviso mi escena principal, estos se deberían configurar automáticamente, pero no lo son, así que solo voy a eliminarlos y traer en medio uno también. Probablemente porque simplemente no los salvé. Oh, bueno, no es un problema. De todos modos sólo traeré dos medianos. ¿Todo bien? Fuera de nuestro guión de asteroides, ya podemos bajar. Y dentro de nuestra destrucción, podemos seguir adelante y hacer un partido, ¿verdad? Entonces podemos decir que coinciden con el tamaño. Va a ser un tamaño grande Ahí tienes. Vamos a tener un punto de tamaño mediano, y por supuesto, un punto de tamaño pequeño. Entonces esto es lo que vamos a hacer en todos estos. Ahora, por supuesto, básicamente podemos simplemente copiar todo lo que tenemos aquí, cortarlo, y básicamente pegar eso dentro de nuestro medio. Porque todo esto es nuestro código para eso. Sí. Entonces, si tuviéramos que probar esto con nuestro asteroide mediano aquí, debería funcionar exactamente igual Fantástico. Sin embargo, solo engendramos dos de ellos Lo siento, uno, lo cual es interesante aquí. No, ahí vamos. Hay dos. Y lo volveré a probar. Hay dos y dos. Bien, entonces está funcionando, ¿verdad? Entonces eso está funcionando perfectamente. Ahora lo que voy a hacer es que voy a copiar esto y pegarlo dentro de mi grande. Sólo que obviamente, en lugar de cargar la escena de pequeños asteroides, voy a arrastrar en mi escena de asteroides medianos Entonces ahora si destruimos uno grande, debería engendrar un medio, y destruimos el medio Se debe desovar un pequeño. Así que sigamos adelante y echemos un vistazo. Borraré ambos de mi escena, y voy a arrastrar un asteroide grande Y vamos a probarlo. Hay un medio grande, se fue cuando tuvo que venir hacia nosotros. Todo bien. Tiempo aquí, almacene el grande. Obtenemos un mediano, almacenamos el mediano, tenemos un pequeño. Bien, así que eso está funcionando perfectamente bien. Impresionante. Ahora para los pequeños, sí, realidad no necesitamos hacer nada sino simplemente transmitirlo porque eso solo necesita destruirse a sí mismo. Al final del día, no necesitamos engendrar nada más. Pero por ahora, podemos dejarlo así porque usaremos esto para actualizar nuestros puntos más adelante. Entonces todavía necesitamos tener nuestra pequeña sección aquí. Entonces ahora tenemos nuestros asteroides que no sólo desovan en diferentes direcciones, sino que también podemos destruirlos, y engendran los siguientes muslos Ahora sería un buen momento para entrar y probarlo y decidir si quieres tal vez cambiar un poco los números de velocidad porque a lo mejor se mueven un poco demasiado rápido para tu gusto. Ahí vamos. Tenemos nuestro conjunto de destrucción de asteroides 9. Temporizador de Spawn y fugas de memoria: Vamos a configurar el desove completo porque ahora que tenemos funcionando la destrucción, tenemos a nuestros asteroides desove correctamente fuera del área de la pantalla Así que vamos a tenerlo para que esté desove continuamente para nosotros. Entonces lo que voy a hacer es que voy a ir a mi escena principal aquí. Voy a hacer plus o agregar un nodo. Voy a añadir un temporizador. Quiero llamar a este temporizador de desove. Bien. Y este engendrador va a tener un tiempo de espera de m. claro. Hagamos 2 segundos. A lo mejor vamos a cambiarlo. Siempre podemos volver a reajustarlo después. Esto va a comenzar automáticamente. Y voy a seguir adelante y agregar un guión a mi nota principal aquí. Y voy a conectar una señal, así que voy a hacer clic en mi temporizador, ir a la pestaña del nodo, hacer doble clic en el tiempo de espera. Asegúrate de que Mina esté seleccionada, presiona Conectar. Y cuando se conecte, vamos a obtener un número aleatorio, igual que hicimos con nuestros lados. Vamos a crear una variable llamada asteroide igual a Randy y por ciento tres, así que vamos a obtener cero, uno o dos, y podemos igualar asteroide 01 Y lo que vamos a hacer es que solo voy a hacer click en mi guión de asteroides aquí porque en realidad podemos tomar una parte de esto Y va a ser este largo conjunto el que tenemos aquí. A partir de esto, o vamos a engendrar el asteroide pequeño, grande o mediano Entonces para cero, voy a poner eso como mi grande. Ahí está. Entonces uno va a ser mi médium, y tres pueden ser mis pequeños. Entonces todo lo que voy a hacer es simplemente agregar Child y simplemente hacer ast dot instanciate Y eso debería funcionar en todas estas líneas. Todo bien. Entonces básicamente vamos a elegir un número aleatorio para generar un asteroide aleatorio y luego o bien cargar nuestro grande, mediano o pequeño, y luego agregarlo a la escena Todo bien. Vamos a echar un vistazo y ver si eso funciona cada 2 segundos. Boom, boom. Bueno, oh, aquí vamos. Por qué no se puede destruir. Eso es curioso. Bien, entonces los pequeños parece que tenemos un error, algunos de estos. El problema con eso es si fuéramos a ejecutar esto, y si hacemos clic en la pestaña remota, derecha, puedes ver todos los asteroides que vienen y echamos un vistazo, y vemos que algunos de ellos apenas se están asignando como cuerpo de personaje dos D, por ejemplo Entonces no siempre está funcionando porque obviamente no tienen asteroide a su nombre si les reasignan un nombre genérico como este, como puedes ver aquí Entonces, lo que realmente tenemos que hacer es que tenemos que ir dentro de nuestro guión. Vamos a nuestro proyectil. En lugar de usar if asteroide y el nombre del punto del cuerpo. Vamos a hacer I Body dot tiene método Destruir. Ahora bien, si tiene el método destruido, entonces vamos a llamarlo. Y ese cambio debería arreglarlo por completo para nosotros. Todo bien. Ahí vamos. En este momento no tenemos ningún problema con esto. Oh, detección. No, ya va. Se va. Ahora, se puede ver que aquí estamos recibiendo una cantidad ilimitada de asteroides, así que estamos creando un poco de fuga de memoria Entonces sí tenemos que limpiar eso también. Entonces, en nuestras escenas de asteroides, sigamos adelante con los tres y agreguemos un notificador visible en pantalla dos Vamos a repasar y tendremos la señal TreeNeited. Y podemos conectarlo a nuestro script de asteroides, golpear Connect Y todo lo que vamos a hacer en eso es hacer auto lindo gratis y guardarlo y podemos volver a pasar a medio. La pantalla salió, conéctela. Debería tener el mismo nombre por defecto, así que deberíamos tener una función cubra los tres de estos y pequeños en el nodo, la pantalla salió, conecte Entonces lo que esto va a hacer es esto básicamente va a decir cuando el asteroide se salga pantalla, luego destruya. Bien. Entonces ahora si tuviéramos que echar un vistazo a esto, y voy a hacer clic en remoto, para que podamos ver. Quién vamos en realidad a ir a la escena principal para jugar y hacer clic en remoto. Puedes echarle un vistazo. Y podemos ver cuando se salen de la pantalla, automáticamente se destruyen, así que no estamos creando esta infinita fuga de memoria para nosotros mismos. Bien, para que veas que el juego se está limpiando después de sí mismo, muy bien. Bien, fantástico. Ahora bien, lo que estamos viendo aquí es que tenemos un tema similar, ¿verdad? Vemos todos estos área dos Ds. Estos son nuestros proyectiles. Entonces probablemente deberíamos limpiarlos también. Entonces podemos hacer algo similar, ¿verdad? Podemos ir a nuestro proyectil, agregar un notificador visible en pantalla dos D, pantalla salida, conectarnos a nuestro script de proyectil, y simplemente llamar a y Entonces, si no disparamos nada y echamos de menos cuando nuestro proyectil se sale la pantalla, eso debería limpiarse. Pasemos al mando a distancia, echemos un vistazo. Y deberíamos ver todos estos proyectiles se borran Así que lo conseguimos todo bonito y limpiado. Todo sigue borrándose a sí mismo. Todo bien. Fantástico. Todo lo que queda es que necesitamos actualizar nuestra puntuación dándonos algunos puntos cada vez que destruimos un asteroide. Todo bien. Y, claro, entonces tenemos que echar un vistazo a la muerte de nuestro jugador, ¿verdad? Perder la vida por el jugador. Todo bien. Para que podamos empezar a abordar eso la próxima vez. 10. Actualizar la puntuación: Sigamos adelante y actualicemos nuestra puntuación cada vez que distorsionemos nuestros asteroides Ahora bien, podríamos usar cosas como conseguir padre y tener hijos, luego llamar a métodos sobre eso, pero una mejor manera de hacerlo es usar señales, ¿verdad? Entonces estas cosas aquí que tenemos de lado, solo vamos a crear nuestra propia señal personalizada y enviársela al Guy para que le diga que actualice el puntaje por nosotros, y le diremos cuántos puntos. Ahora, en primer lugar, asegúrate de que tu Guy tenga un guión en él. El mío está completamente vacío. Y luego podemos dirigirnos a nuestro script de asteroides, y vamos a crear una nueva variable exportada porque necesitamos una nueva cada asteroide tiene una cantidad diferente de puntos, y casualmente estos realmente se alinean con la velocidad que he configurado Entonces, si solo atravesamos, los asteroides grandes en el juego, creo, dan 20 puntos, los medianos dan 50, y los pequeños dan 100 Por lo que casualmente son exactamente los mismos números que di por mi velocidad para todos estos Y la siguiente variable que vamos a necesitar aquí en realidad va a ser una señal. Entonces escribimos la palabra señal, y luego el nombre de la señal. Entonces voy a decir destruido. Y voy a usar paréntesis abiertos y cerrados igual que una función porque quiero agregar un parámetro Voy a llamar a este PTS y lanzarlo como un int. Entonces, si ahora tuviéramos que mirar nuestro asteroide e ir a echar un vistazo a las señales, podemos ver nuestro personalizado aquí llamado destruido, y tiene un argumento llamado puntos sitio PTS, es decir un entero que se pasa con la señal Entonces para nosotros, cada vez que enviemos esta señal, vamos a enviar esta variable de puntos con ella. Entonces primero, necesitamos conectar realmente nuestra señal, así que voy a ir a mi escena principal aquí por un segundo y cargar mi guión de asteroides Entonces vamos a hacer Destruido porque ese es el nombre de la señal. Asegúrate de obtener el que tiene el icono de señal aquí, el que parece un símbolo de Wi Fi. Yo hago punto connect. Ahora esto toma un callable, y todo esto que dice es quién nos estamos conectando y a qué función estamos llamando Entonces solo podemos decir llamables abrir y cerrar paréntesis. El primer argumento es a lo que queremos adjuntar. Entonces este es nuestro padre aún hijo y pasar en Índice es cero al conseguir hijo. Coma el nombre de la función a la que quieres llamar. Entonces para mí, sólo voy a llamarlo Update SCORE. Y si estás confundido sobre cómo conseguimos Obtener padre y obtener hijo cero, si echamos un vistazo, tenemos un asteroide aquí como ejemplo en nuestra escena Si seguimos esta línea, sí conseguimos padre. Eso nos lleva a una rama. Entonces arriba uno y arriba eso nos lleva a Maine. Y queremos llegar a Guy desde Main. Entonces para eso tenemos que conseguir un hijo, y ese va a ser su primer hijo, ¿verdad? Es la primera sucursal allá arriba. Entonces, desde el asteroide grande, conseguimos que el padre suba y luego haga que el niño vuelva a bajar. Entonces nos estamos conectando con el Guy. Y cuando esa señal emita, vamos a buscar una función llamada Actualizar puntaje Todo bien. Ahora, voy a copiar toda esa línea porque vamos a hacer algo un poco similar aquí abajo cuando bajemos a nuestra función de destruir. Sólo que en vez de conectar, voy a llamar a desconectar. ¿Verdad? Eso es lo único que cambiaría es que solo estamos agregando tres letras más, ¿verdad? Así que desconecta en lugar de conectarte dentro de nuestra función de destruir. De esta manera, podemos simplemente limpiar la señal. No deberíamos tener que hacerlo, y probablemente estarás bien sin hacer esto, pero solo por un poco de mejor práctica, voy a seguir adelante y simplemente tirarlo ahí. Ahora, cuando se destruye, también necesitamos emitir nuestra señal porque aún no lo hemos hecho. Entonces antes de desconectar la señal, vamos a hacer destruida, emitir, y tenemos que pasar en el argumento, que en nuestro caso, está esperando que se pase un número . Entonces vamos a pasar en nuestra variable de puntos. Muy bien, adelante y guarda eso. Entonces ahora si vamos a nuestra GUI, en realidad, ya sabes, al principio, sigamos adelante y jugémosla, y verás que vamos a tener un problema. ¿Verdad? Bueno, parece que nuestro tema en realidad no va a mostrarse, lo cual es un poco interesante, pero no va a pasar nada porque esa función no existe. Eustly no se está llamando a ninguna función aquí. Entonces, si nos dirigimos a nuestro Guy y creamos esta función, entonces creo que llamé a una puntuación de actualización como esa, y tenemos un argumento, ¿verdad? Puntos, así que sólo voy a ir PTS, y eso es un entero. Y podemos seguir adelante y podemos simplemente imprimir ese PTS en el que ha pasado. Y si corremos eso deberíamos ver que todos nuestros puntos se imprimen cada vez que destruimos uno. Ahí vamos. Ahí tenemos 100 puntos. 20, 50, 100, 50 a la derecha, así que parece que todo esto está funcionando bien. Solo necesitamos actualizarlo visualmente. Pero ahora que sabemos que esto está funcionando, necesitamos hacer un seguimiento de nuestros puntos, y necesitamos actualizar la etiqueta real. Entonces voy a crear una variable aquí en nuestro Guy. Esta va a ser nuestra puntuación. Esto por supuesto, será un entero y comenzará en cero. Entonces lo primero que vamos a hacer es que vamos a hacer puntaje más igual a PTS. Por eso podemos sumar los puntos a nuestra puntuación. Y entonces tenemos que actualizar realmente la etiqueta en sí. Así que sigamos adelante y podemos usar nuestro signo de dólar aquí y obtener nuestra etiqueta de puntaje. Texto punteado. Y podemos establecer eso igual a una cadena de nuestra partitura. Ahora bien, esto va a quedar un poco raro. Si echas un vistazo a la parte superior izquierda en nuestros puntos. Vamos, da vueltas un poco hippy. Y ves que todos esos ceros desaparecieron, y los números cambian por sí solos, claro, pero ves que están en constante crecimiento, verdad Entonces cuando lleguemos a 1,000, solo vamos a tener otro aleatorio otro aleatorio aquí. ¿Debería darme eso? Ahí vamos. Así que hemos crecido un número extra. Y tal vez te guste eso. Yo no, sobre todo cuando estoy haciendo un juego clásico como este. Entonces, lo que en realidad voy a hacer al final de esto. Entonces, cuando convertimos esta partitura en una cadena, voy a hacer ceros de Dot pad, y voy a poner un número ahí Ahora bien, si tuviera que poner en nueve, por ejemplo, echamos un vistazo. Podemos seguir adelante y actualizar el puntaje. Oye, adelante y bonk me. Eso fue grosero. Boom, ya ves que tenemos todos estos ceros por deva, Y cada vez que lo actualizamos, se ve un poco más agradable, especialmente en un sistema retro, especialmente cuando también tienes una puntuación máxima que podría alcanzarse Todo bien. Ahora bien, no estoy 100% seguro de cuál es la puntuación máxima, pero esto siempre ve mejor cuando se borra el cero Entonces simplemente me adelanté y verifiqué, y el puntaje máximo es de 99 mil 990, así que eso nos va a dar uno, dos, tres, cuatro, cinco, así que eso nos da cinco ranuras Así que sigamos adelante y bajemos esto, y lo comprobaremos. Revisa esos números. Si lo tapamos con cinco, eso fue rápido. Sólo tenemos que conseguir algo en la pizarra aquí. Ahí vamos. Y eso nos daría 99,990 como posible máximo. Muy bien, entonces ahí vamos. Entonces, si quieres ser auténtico, apántalo con cinco ceros Ahí vamos. Y ahí va nuestro pequeño puntaje. Poco en eso va. Peep pío Y Bank, eso hubiera sido una vida perdida para nosotros, pero ahí vamos. ¡Vaya! Aún manteniendo pulsado el botón A. Pero ahí vamos. Tenemos nuestra puntuación actualizándose cada vez que destruimos nuestros asteroides 11. Actualizar vidas: Temprano. Entonces vamos a echar un vistazo a agregar salud, ¿verdad? Entonces vamos a agregar vidas de jugadores aquí a nuestro juego. Lo sé. Y como no tenemos sprites para usar aquí, seguimos adelante y dibujamos a nuestro personaje jugador Vamos a tener que hacer las cosas un poco diferentes, pero eso está bien. No va a ser demasiado difícil para nosotros. Lo primero que quiero hacer es dentro de mi Goey aquí. Porque las cosas van a cambiar un poco. Voy a entrar en mi guión de Guy. Voy a crear una exportación, y esta va a ser mi variable de etiqueta de puntaje. Esta va a ser una etiqueta tipo. Y solo reemplazaré esto en mi código para que no tenga que agarrar esa variable. Para que pueda dar click en Guy y veré la etiqueta de puntuación en mi inspector. Da click en eso y puedo asignarle mi nodo de etiqueta de puntaje. Bien. Ahora, lo hice porque creo que voy a mover esto un poco cuando estemos arreglando nuestras vidas. Entonces, al hacerlo de esta manera, no deberíamos tener que actualizarlo en nuestro código. Bien, así que voy a ir a mi Buy. Voy a agregar un contenedor VBox. Ahora, un VBox solo nos permite apilar verticalmente diferentes cosas Entonces, por ejemplo, si agrego en una etiqueta, agrego en cualquier texto, y verás si sigo duplicando eso Verás que todo va a estar perfectamente espaciado verticalmente, todo bonito y ordenado para nosotros, ¿verdad? Y todos espaciados uniformemente. Entonces un VBox es realmente agradable. Bien, así que voy a seguir adelante y tomar la etiqueta de puntuación y pegarla dentro de la VBox Todo bien. Y si tuviéramos que echar un vistazo al Guy, podemos ver que la etiqueta de partitura aún está establecida. Y porque eso no tenemos que editar nuestro código. Y si seguimos adelante y lo probamos, podemos verlo nosotros mismos. Ahí abajo hay uno, y podemos ver nuestra partitura y todo sigue funcionando perfectamente bien. No necesitamos actualizar nada. Entonces es agradable usar exportaciones así a veces, especialmente cuando no sabes si vas a estar moviendo las cosas al diseñar tu me gusta esto. Todo bien. Entonces lo siguiente que tengo que hacer es dentro de mi VBox, necesito crear una caja H. Ahora, un HBox funciona exactamente de la misma manera, contenedor HBox, solo que es para las cosas que van horizontalmente, lado a lado en lugar de arriba y abajo Y dentro de este HBox, voy a agregar un control En realidad, todavía no voy a agregar el control porque voy a mostrarte por qué. Entonces voy a hacer click en mi reproductor. Voy a agarrar la línea dos D donde estamos dibujando nuestra nave espacial Voy a controlar C y copiar eso. Regreso a mi escena principal y dentro del contenedor de la caja Sage. Voy a darle a Control V para copiarlo. Y te darás cuenta de Whoops. Si solo tenemos un montón de estos, nada se está organizando horizontalmente como viste con la caja V. Y eso es porque tiene que ser un tipo de control, ¿verdad? Entonces tiene que ser un nodo verde. Entonces es por eso que en realidad vamos a entrar y dentro de la caja Ace, vamos a agregar un control regular, y solo voy a darle un tamaño a ese control aquí, una caja H inferior en realidad necesita una, también. Pero mi control, voy a seguir adelante y establecer que es costumbre min aquí para ser 15 por 20. No lo sé. Eso podría ser un poco de munch. Voy a tomar mi línea dos D aquí y simplemente tirarla hacia abajo y meterla dentro de control. Doble. Todo bien. Entonces solo para que pueda ver las cosas un poco claras, voy a seleccionar mi control. Voy a activar el contenido del clip en el inspector, y ahora voy a seleccionar mi línea dos D, y eso me va a permitir moverlo un poco mejor, averiguar dónde están esos límites. Y voy a bajar a mi rotación, y voy a poner -90 grados solo para poder girarlo hacia arriba, y puedo ver que necesito moverlo más abajo Vaya, abajo uno justo ahí. Bien. Ahora puedo apagar el contenido del clip aquí. Y puedo ver que mi Y es un poco demasiado, así que tal vez 15 ahí también. Eso podría ser un poco corto. 16. Una vez estoy contento con eso. Antes de ponerlo, puedo echarle un vistazo a mi caja H, y si solo copio este control ahora, voy a seleccionarlo y hacer Control D. Ya podemos ver porque está dentro de un control, se están poniendo todos agradables y espaciados uniformemente. O así que si seguimos adelante y lo jugamos, podemos ver que se ve bien allá arriba, ¿verdad? Al igual que nuestro barco, y es parte de nuestra interfaz de usuario. Entonces como no teníamos ningún sprite para subir ahí, solo estamos aprovechando la línea dos D que ya usamos para dibujar nuestra nave Y ahora que tenemos nuestro barco funcionando, y ves que va a estar frente a nosotros aquí, igual que el resto de la interfaz de usuario, solo como un calzado Entonces ahora necesitamos que las vidas reales funcionen. Así que tenemos que restar vidas cada vez que nos atropelle uno de estos asteroides en lugar de poder empujarlo así Para eso, nuestro jugador necesita vivir. Entonces vayamos al guión de mi jugador. Y ¿quieres poner nuestras vidas ahí? No, ya sabes, creo que voy a ponerlo mi Gui. Y también voy a crear otra exportación para mi HBox. Voy a decir exportación de nuestro contenedor Vidas, y eso va a ser un HBox Y voy a crear otra variable aquí para Lives, que por supuesto va a ser un int, y la cantidad inicial aquí es de tres. Y seguiremos adelante y crearemos otra función llamada Actualizar Vidas. Bien, y solo pasaremos por ahora. Todo bien. Entonces la pregunta es, ¿cómo vamos a detectar cuando nos encontramos con el jugador o cuando el jugador se encuentra con un asteroide Para hacer la colisión para restar nuestras vidas y dejar pasar nuestras señales, vayamos a nuestro asteroide y al interior de nuestro proceso de física Vamos a comprobar si nuestro asteroide choca con algo Entonces digamos que el recuento de colisiones de barras es igual a deslizamiento, recuento de colisiones. ¿Todo bien? Entonces vamos a ver si estamos chocando con algo, y si es así, ¿verdad Entonces diremos si la colisión cuenta, lo que significa que estamos colisionando con al menos un artículo para que esto sea cierto, ¿verdad Es lo mismo decir si el recuento de colisiones mayor que cero, ¿verdad? Es lo mismo, menos palabras. Entonces, si la colisión cuenta, entonces vamos a obtener la colisión, y vamos a asignar eso a la colisión deslizante, y vamos a pasar en índice cero para que podamos obtener el primer elemento con el que estamos colisionando Entonces vamos a conseguir el propio colisionador. Hasta el momento, colisionador es igual a colisión punto et colisionador. Y si solo tuviéramos que imprimir esto para ver qué tenemos , aquí vamos. adelante y ejecutemos esto, y veremos cuando aparezcan nuestros asteroides cuando nos topemos con él con nuestra nave Podemos ver un cuerpo de personaje dos D está siendo golpeado y tiene el nombre jugador. Por lo que definitivamente estamos detectando cuando el jugador es golpeado por los asteroides Bien. Hasta el momento tan bueno. Sabemos que estamos pegando algo y que algo es nuestro jugador. Entonces en este caso, tiene que ser el jugador. No hay manera de que no lo sea. Pero para estar seguros, de nuevo, podríamos estar como, me colisionador nombre punto es igual a los jugadores Entonces, si solo queremos hacer esa doble comprobación, podríamos hacer algo como esto. Y ya comprobamos que está pegando a los jugadores. Lo que podemos hacer aquí es libre de autopuntos, ¿verdad? Para que podamos destruir el asteroide cuando nos topemos con él. Y podemos probar eso funcionando. Siempre prueba tu código. B, p, p, p, boom. Bien, hasta ahora tan bien. Cada vez que golpeamos a un asteroide, el asteroide es destruido Boom. Y aún podemos dispararles y destruirlos. Todo eso sigue funcionando. Pero boom, boom. Todo bien. Ahora bien, lo que también queremos hacer aquí es que necesitamos emitir una señal aquí, ¿verdad? Porque necesitamos esta señal para ir con la actualización nuestras vidas del jugador y el asteroide Entonces necesitamos una nueva señal de nuestro asteroide aquí. Entonces vamos a decir señal, golpe de asteroide. Y no necesitamos pasar ningún argumento a favor de esto. Sólo necesitamos saber que el asteroide ha sido alcanzado. Entonces vamos a tomar eso, vamos a bajar. Y una vez que nos conectemos con el jugador antes de que nos liberemos, vamos a emitir esta señal. Entonces asteroide hit dot emite. Y luego podemos desconectarnos. Asteroide golpeó desconectarse. Ahora estoy consciente que aún no lo hemos conectado, pero vamos a llegar hasta aquí. Y esto en realidad va a ser muy similar a nuestra conexión. Entonces solo voy a seguir adelante y copiar ahí el argumento de lo exigible Entonces vamos a conectarnos a la GUI y pasar en esta función para desconectarnos. Y en este caso, el mío se llama Actualizar Vidas. Bien, así que voy a pasar eso. Bueno, parece que aquí me falta un paréntesis. A ver. Eres parte de ese conjunto, eres parte de ese conjunto. Y tengo uno demasiado. Ahí vamos. Todo bien. Entonces voy a copiar toda esa línea. Subiré a mi función lista. Y al igual que la señal destruida, conectaré esta. Así que conéctate en lugar de desconectarte. Ahí vamos. Entonces tenemos dos señales de que estamos conectando y listas, y una que emitimos y desconectamos cuando nos destruyen, y otra que emitimos y desconectamos cuando golpeamos al jugador. Bien, entonces ahora necesitamos esta función para realmente hacer algo Entonces en nuestro guión Gooey, podemos echar un vistazo a esto y actualizamos nuestras vidas Para que podamos hacer vidas menos Sequals uno. Y luego necesitamos actualizar la etiqueta de nuestras vidas. ¿Necesito actualizar eso? ¿Porque me cambié el nombre? Yo sí. Ve porque tenía un errata ahí dentro. Entonces voy a conseguir mis Vidas Contenedor punto conseguir niños o Obtener Child Count. ¿ Con qué queremos ir? Básicamente voy a establecer esto con lo que queremos eliminar. Nosotros bajamos a dos. Entonces voy a hacer Vidas Contenedor punto, consigue niño. Voy a pasar en nuestras vidas cuentan aquí. Entonces va a comenzar a las tres, y luego una vez que nos golpeen, eso se convertirá en dos. Entonces dos va a agarrar nuestro más nuevo nuestro último aquí, última vida porque solo tenemos tres, y sale en el índice 01, dos, y voy a llamar a Dot Hyde. ¿Llamamos a Hyde ? No, probablemente porque es con ese control. Entonces lo que hacemos en cambio, solo porque no sabe qué es niño, diremos Punto visible, equivale a falso. Cosas si intentamos que deberíamos ver nuestras vidas. Vemos al primero aquí en el extremo derecho desaparecer una vez que nos atropellan con un asteroide Boom, ahí vamos. Y parece que de alguna manera nos golpearon con un segundo. ¿Eso es cierto? Todo parece estar funcionando. No estoy seguro de lo que fue eso. A lo mejor uno engendró cuando miré hacia Pero ahí vamos. Tenemos esto funcionando, claro, esto va a salir al aire ahora. O al menos debería, pero no lo hace. Un poco curioso debería estar diciéndonos que esto no está funcionando por el índice. Eso es algo curioso. Supongo que nos estamos poniendo negativos, tal vez esté regresando. En fin, viniendo por aquí. Entonces tenemos nuestras vidas desapareciendo. Tenemos nuestras vidas actualizándose. Y en base a eso, necesitaríamos una vida para entrar en un juego terminado o no. Pero primero, sí quiero establecer un número mínimo aquí o un número máximo solo para que no podamos ir por debajo de cero en nuestras vidas. Entonces lo que voy a hacer es en realidad voy a decir vidas iguales a. Y queremos que el número máximo aquí entre vidas menos uno y el segundo argumento sea cero. A pesar de que no deberíamos necesitar esto, solo voy a poner esto por si acaso para asegurar que no tengamos algún tipo de error que pase ahí. Entonces nuestras vidas nunca deben ir por debajo de cero. Y ahí lo tenemos. Tenemos esa emisión, y todo lo que haríamos ahora es que podríamos terminar el juego si acercamos a cero y reiniciamos la escena. Todo bien. Ahora lo haremos aquí porque lo único que queremos hacer es actualizar las vidas. Eso ya lo hemos hecho. Y la próxima vez, seguiremos adelante y configuraremos el juego de nuevo y reiniciaremos. 12. Pon fin y reinicio del juego: Antes de que termine el juego, voy a seguir adelante y entrar en mi Guy. Voy a añadir otra nota aquí. Voy a añadir una etiqueta. Este será mi juego sobre etiqueta. Este texto, sólo va a decir juego terminado. Voy a poner este ancla, justo aquí en la parte superior. Voy a ponerlo en el remitente de la pantalla para decir juego terminado cada vez que perdamos. Podemos entrar en nuestro código y con nuestras vidas de actualización, crear una nueva función. acabó el juego y simplemente haremos una comprobación después de que hayamos actualizado la pantalla. Diré, yo vivo es igual a cero, entonces llamamos a nuestro juego sobre función. Y el juego sobre la función Bueno, no necesito eso para estar mostrando. Voy a poner ese pase de nuevo. Voy a seguir adelante y crear una exportación aquí para mi etiqueta de juego, la etiqueta GameOver Voy a asignar eso y el inspector aquí muy rápido. Etiqueta GameOver. Entonces, ¿qué hacer? GameOver etiqueta punto Vsb es igual a tripulación Podemos pausar el árbol, Entonces es un árbol G. Y en realidad, esta vez no voy a hacer una pausa en el árbol. Creo que queremos sacar al jugador del Goey. Creo que el jugador puede manejar el segundo. Derecha. ¿Cómo quiero hacer esto? Bien, así que voy a hacer click en mi reproductor aquí en mi principal Voy a darle click izquierdo, y voy a arrastrarlo. Y voy a soltar, y esto debería darme el camino hacia mi jugador. Entonces solo voy a decir punto Qu libre para borrar mi reproductor. Una vez que te hayas quedado sin Vidas e vayas a un juego terminado, voy a decir, voy a esperar. Obtener Árbol, crear temporizador. De esta manera, podemos seguir adelante y esperar 3 segundos o algo así. Puedes seguir adelante y jugar con ese temporizador y ver lo que te gusta. Dot TO, ¿verdad? Ya lo hemos hecho antes. Y luego sólo vamos a decir Get dot. Recargar Escena actual. Entonces echemos un vistazo cuando terminemos un juego. Para hacer. Podemos entrar. Podemos jugar. Podemos disparar, conseguir puntos. Pero, pero, bah. Todo está bien. Boom, nos golpearon, perdimos una vida. Boom, perdimos dos vidas. Era nuestro pequeño barco. La hay, y vamos a perder nuestra última vida. Boom, se acabó el juego. Espera 3 segundos. El juego se recarga y podemos seguir jugando. Bien. Entonces ahí lo tenemos. Tenemos nuestro juego terminado simplemente establecido. Y estamos todos listo para empezar a jugar con nuestro juego aquí. Ahora bien, si quieres que esto sea un poco más auténtico para tener la pantalla negra, auténtico para tener la pantalla negra, puedes entrar en la configuración de tu proyecto y yo solo busco la palabra color e ir en un entorno de renderizado. Color por defecto. Puedes entrar aquí y puedes cambiar este color si quieres. Este es el color por defecto del fondo. Puedes hacerlo si lo deseas. Pero como por lo general prefiero mantener el color predeterminado aquí, lo que puedes hacer en cambio es que podrías entrar y hacer un naufragio de color, poner tus anclas para que estén llenas Bueno, parece que no va a porque no tenemos el control como principal. Ya veo. Bien. Así que sólo tendremos que entrar y configurar esto nosotros mismos. Así que solo puedes establecer el tamaño para que sea el tamaño que quieras. Siempre y cuando sea lo suficientemente grande como para cubrir el área azul, deberías estar bien. Y entra y cámbialo a negro. Y como sólo vamos a mostrar lo que hay en la zona azul, no importa que sea más grande. Así que vamos a seguir adelante y jugar Oh, y necesito cambiar el orden. Así que necesito agarrar el color retirarse y realmente jalarlo todo el camino hacia arriba de esa manera mi jugador está encima para que podamos ver. Y ahí tienes. Tenemos algo que se ve aún más cerca del original al tener el fondo negro. Pero de nuevo, eso es solo una elección personal sobre si quieres tener eso. B, boom, pero, p, p, p. Y en realidad parece un juego Nuestro. Ah, y si solo te estás preguntando por qué el puntaje eso no está funcionando. Probablemente es solo porque saqué a Color Rect para ser el primer hijo Entonces Índice cero, estoy tratando de conectar mis señales a color rect en lugar de la GUI Entonces si solo lo tiro hacia abajo para que la GUI Vamos, sal de ahí. Ahí vamos. Para que el Guy sea primero, entonces eso debería arreglar nuestro problema aquí. Ver, boom, Vive ahora conectando y nuestra puntuación. Entonces eso es solo una capa de ordenamiento en la jerarquía de escenas. Entonces eso es algo a tener en cuenta si tuvieras que, por supuesto, hacerlo de esta manera y no hacer la configuración de tu proyecto. Bien, ahí tienes. Tenemos nuestros puntos. Tenemos vidas. Tenemos GameOver. Tenemos que reiniciar. Y hemos hecho una vez más, otro juego completo sin necesidad de ningún recurso. Hemos hecho de todo desde dentro del motor. Bien, eso lo hará. Ahora tenemos asteroides. Y si quieres ir un paso más allá, puedes seguir adelante y otra vez, puedes encontrar sprites en línea, o puedes usar la Línea dos D y seguir adelante y crear esas naves espaciales que hayas visto y asignarles Y lo mismo, dales una señal, conéctala a tu GUI, envía los puntos con ella, igual que hacemos con los asteroides