Aprende a hacer juegos haciendo Frogger | 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 haciendo Frogger

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 Frogger

      0:59

    • 2.

      Descarga sin configuración

      3:06

    • 3.

      Qué haremos

      2:01

    • 4.

      Crear el fondo

      9:10

    • 5.

      Crea al jugador

      6:02

    • 6.

      Movimiento de los jugadores

      20:07

    • 7.

      Crea vehículos

      25:47

    • 8.

      Muerte y reaparición de jugadores

      23:33

    • 9.

      Muerte por agua

      7:44

    • 10.

      Plataformas acuáticas

      21:56

    • 11.

      El espacio para ganar

      6:59

    • 12.

      Solución de fugas de memoria

      9:56

    • 13.

      Sistema de puntuación

      13:06

    • 14.

      Puntuación de HUD para juegos

      8:19

    • 15.

      Vidas de HUD

      15:25

    • 16.

      Temporizador y bonificación

      10:48

    • 17.

      Audio Frogger

      10:28

  • --
  • 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.

141

Estudiantes

--

Proyectos

Acerca de esta clase

Embárcate en un viaje emocionante al mundo del desarrollo de juegos con nuestro curso completo de Skillshare, "Aprende a crear juegos haciendo Frogger con Godot Engine". Si alguna vez has soñado con crear tus propios videojuegos, este curso es tu puerta de entrada para convertir esos sueños en realidad.

En este curso práctico, te sumergirás en el fascinante mundo del desarrollo de juegos con el motor Godot potente y fácil de usar. Tanto si eres principiante como si tienes experiencia previa, nuestros instructores expertos te guiarán paso a paso a través de todo el proceso de desarrollo del juego, asegurándose de que adquieras los conocimientos y habilidades necesarias para crear tu propia versión del clásico juego arcade Frogger.

Aspectos destacados clave:

  1. Introducción al motor de Godot: familiarízate con el motor de Godot y aprende a configurar tu entorno de desarrollo.

  2. Fundamentos del diseño de juegos: entiende los principios básicos del diseño de juegos, incluidas la mecánica de juego, el diseño de niveles y la interfaz de usuario.

  3. Programación con GDScript: descubre los fundamentos de GDScript, el lenguaje de scripting fácil de aprender de Godot, y úsalo para crear lógica de juego, manejar las entradas de los jugadores y administrar los estados de juego.

  4. Gráficos y animación 2D: aprende a diseñar y animar personajes y objetos de juegos 2D, incluida la rana icónica Frogger y los obstáculos y entornos.

  5. Sonido y música: sumérgete en el mundo del diseño de audio y agrega música de fondo, efectos de sonido y comentarios para mejorar la experiencia de juego en general.

  6. Creación de niveles: técnicas de diseño dominantes a medida que creas niveles desafiantes y visualmente atractivos para tu juego de Frogger.


    Al final de este curso, no solo habrás creado tu propio juego inspirado en Frogger, sino que también habrás adquirido habilidades y conocimientos valiosos que se pueden aplicar a una amplia gama de proyectos de desarrollo de juegos.
    ¡Únete a nosotros y da vida a tus sueños de desarrollo de juegos con el curso de Skillshare de Aprende a crear juegos haciendo Frogger con Godot Engine!

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 Frogger: Muy bien todos, en esta sección, este es en realidad un módulo de un curso más amplio, y aquí vamos a seguir adelante y crear Frogger con el fin de ayudarte a aprender cómo puedes hacer juegos usando el motor Gatto recreando un juego clásico de, creo que fue de creo que fue Ha pasado mucho tiempo. Pero se puede ver con esto vamos a conseguir movimiento de jugador. Música Tenemos algunas zonas de viento, detección de colisiones. Vamos a poder usar mapas de mosaico. Entender cómo funcionan los mapas de mosaico. Contamos con representación visual del tiempo. Tenemos patrocinadores pasando. Tenemos colisiones en curso. Tenemos algo de física sucediendo, tenemos haciendo un seguimiento de vidas y puntaje, así como algunos multiplicadores de fondo Tenemos muchas cosas sucediendo en este sencillo juego clásico aquí. Entonces espero que disfrutes a medida que avanzamos. Y ojalá al menos tengas un conocimiento básico de programación, si no del guión G D entrando eso te ayudará a mantenerte al día y no perderte tanto. 2. Descarga sin configuración: Bienvenidos futuros desarrolladores. Si vamos a estar desarrollando cosas usando el motor Gatto, ya sea videojuegos o software de escritorio Cop, lo primero que vamos a necesitar es bien, el motor Gatto Entonces echemos un vistazo a cómo podemos seguir adelante y obtener esto descargado. Ahora bien, lo primero o la primera forma que debo decir que podemos conseguir esto es descargar Gatto desde la página oficial aquí, simplemente vaya a goto engine.org Todo como vemos aquí. Justo aquí en la pantalla. Y una vez aquí, verás la sección de descargas arriba en la parte superior de nuestra pantalla. Así como dos botones de descarga en el centro. Tenemos el LTS, que es tres puntos y el último, que es 4.1 Estaremos usando la última versión, que es 4.1. No hay nada malo con la versión de tres puntos x. Todavía se está desarrollando, y es el soporte a largo plazo. Sin embargo, si tuvieras que usarlo esa versión mientras sigues, puede haber algunas funciones o algunas cosas que escribamos que podrían tener diferentes nombres o potencialmente ni siquiera existir en la versión anterior. Entonces solo tenlo en cuenta, y por eso, recomendaría que uses la versión 4.1 a medida que avanzamos. Todo bien. Entonces esta es la versión estable y salió 4.1. Entonces puedes presionar el último botón de descarga o la pestaña de descarga en la parte superior. Ambos te traerán a esta pantalla aquí. Todo bien. Así que adelante y para descargar esto. Todo lo que vamos a necesitar ya que vamos a usar el lenguaje de programación de scripts GD Todo lo que necesitamos es la versión estándar aquí con el botón azul. Y la diferencia entre esta y la versión.net es que la versión.net también soporta C Sharp Y si tuvieras que usar eso, entonces tendrías que desplazarte hacia abajo y también recoger el.net que se requiere para poder usarlo, así como preferentemente programas externos a Rachel Codin es solo un montón de cosas extra que no necesitamos a la hora de pasar por este Entonces, si quieres obtenerlo del sitio web, puedes seguir adelante y simplemente presionar ese botón del motor Goto ahí para 4.1 en la versión estándar Ahora, hay una segunda manera de que puedas conseguir esto. Y eso sería de Steam. Puedes venir a Steam y seguir adelante y descargarlo de ahí si quieres, y eso nos va a dar la versión estándar. Por defecto, la versión de Steam no tiene disponible la versión dot p. Así que no tienes que preocuparte por ninguna confusión con eso si sigues adelante y lo obtienes de Steam. 3. Qué haremos: Bien, esta semana vamos a patear las cosas. Una opción, en lugar de salirse de solo algunos textos como lo hicimos la semana pasada. Esta semana vamos a estar creando o recreando un viejo juego de dos D de los 80 llamado Ahora esto nos va a dar la oportunidad de trabajar con un controlador de dos jugadores D colisiones A lo mejor nos meteremos en algunas partículas con las que podamos trabajar responde como veis. Si nunca antes has jugado Frog o nunca has oído hablar de ella. Verás aquí vamos a estar trabajando con UI para nuestro heads up display. Tenemos puntos que vamos a necesitar para hacer un seguimiento de mi ratón ahí por un segundo. Pero no sólo eso, sino que también vamos a ver, es que va a demostrarlo aquí tenemos cierta cantidad de prog por jugador Obviamente no tenemos monedas adentro, pero este es esencialmente el juego Aquí tenemos dos pequeñas zonas seguras. En esta pequeña zona morada, tenemos una carretera en el medio que tiene cinco carriles de circulación alternando de ida y vuelta. Si la rana es atropellada por uno de estos autos, mueren y el jugador pierde una vida. Lo hacen hasta la cima. Pueden subirse a las tortugas y troncos para llegar a la zona segura Si aterrizan en el agua, eso también es un fracaso. Lo cual supongo ahora que lo piensas no hace demasiado en sentido ya que es una rana. Pero ahí tienes. Esa es la idea de lo que vamos a estar creando, y eso es lo que es rana, si nunca la has jugado ni has oído hablar de ella. 4. Crear el fondo: Bien, así que sigamos adelante a dar un salto. Empieza a crear Frogger. Lo primero que vas a hacer es asegurarte de descargar los activos y simplemente seguir adelante y mover esa carpeta de sprites a tu proyecto Nuevamente, acabo de crear una carpeta vacía específicamente para Frogger, pero te recomendaría que crees un nuevo proyecto para esto De esa manera podrás exportarlo sin tener ningún problema en el futuro. Bien, así que lo primero que vamos a necesitar hacer, sobre todo porque nuestros sprites son tan pequeños, es que vamos a necesitar encogerlos. O no encogerlos, sino reducir nuestra pantalla a más del tamaño del gabinete arcade. Para hacer eso, vamos a subir al proyecto y entrar en la configuración de nuestro proyecto. Bien, entonces debería comenzar así con la configuración avanzada apagada. Y verás en el lado izquierdo simplemente va a bajar a la sección de visualización y entrar en ventana. Y vamos a establecer el ancho a 336 y la altura a 240. Bien, esto es un tamaño de pantalla de gabinete arcade. La resolución de pantalla para esto, y va a ser perfecta para nuestros pequeños sprites. Bien, una vez que sigas adelante y pongas eso, puedes seguir adelante y simplemente cerrar y verás que nuestra cajita azul se ha vuelto mucho más pequeña de lo que solía ser. Lo primero que vamos a hacer aquí es que vamos a crear el fondo. Entonces vamos a crear todo el camino, el agua, la mediana púrpura que ellos lo llaman, el área de anotación a la que tenemos que llegar nuestro frente. Vamos a configurar todas esas cosas. De esa manera podemos saltar directamente a conseguir nuestro juego y todo lo que configuramos y ejecutamos en los siguientes videos. Bien, entonces vamos a necesitar una escena de dos D aquí. Vamos a hacer clic en dos D, y esto nos dará un nodo dos D para nuestro nodo raíz. Si quieres seguir adelante y renombrar eso, puedes. Puedes llamarlo Maine si quieres. Game Manager, Realmente no importa. Si realmente quieres, puedes simplemente dejarlo como el nombre predeterminado. Me va a dejar como defecto por ahora. Para crear esto en nuestro pequeño fondo, voy a crear un nuevo mapa de corbata. Voy a presionar el botón más y vamos a ir a seleccionar Tile Map en el menú desplegable, ver en nuestro nodo cortina. Seleccione el mapa de teselas. Sigue adelante y haz doble clic en eso y selecciona eso. Ahora tengo la mente puesta aquí. Voy a seguir adelante y simplemente borrar todos estos. 1 segundo. Bien, entonces deberías tener este aspecto cuando tengas seleccionado el mapa de teselas. Si no tienes una selección, sigue adelante y selecciónala. Lo que vamos a hacer es dirigirnos hacia el lado derecho. Aquí vamos a ir al juego de azulejos. Se queda vacía en este momento, pero lo que vamos a hacer es hacer clic en él e ir al nuevo juego de mosaicos. Y luego haga clic en ese juego de mosaicos, y eso nos traerá aquí. Ahora lo que necesitamos aquí es que vamos a necesitar la pequeña zona de meta, el agua, la carretera, y la mediana. Si entramos en nuestro sprite y nos desplazamos hacia abajo, veremos casa, mediana, carretera y agua Si solo mantienes el control, puedes seleccionar todos estos a la vez así y simplemente seguir adelante y arrastrarlos a nuestra caja de azulejos aquí. Todo bien. Antes de que realmente podamos usarlos aquí. Como puedes ver, no podemos hacer click en nada. Lo que queremos hacer, solo voy a desplazarme ahí con mi rueda de desplazamiento, o puedes más un menos. Lo primero que tenemos que hacer es asegurarnos de que estamos en la pestaña de configuración aquí, seleccionar nuestra agua, y podemos hacer clic en ella. Y ahora tenemos a su alrededor esta caja naranja. Eso significa que tenemos un azulejo que ahora podemos usar. Voy a hacer lo mismo por carretera, casa mediana, frente directo Ahora el hogar es un poco más grande. Estoy pensando que podría ser uno más grande que eso. A ver, ¿qué tenemos? 2062 grande. ¿Cómo es eso? Creo que eso servirá. Perfectamente divertido. Todo bien. ¿Alguna vez van? Tengo un 16 por 24 aquí para este azulejo. Bien, así que ahora si hacemos clic en el mapa de teselas en la parte inferior. Nuestra pantalla aquí abajo. Ahora deberíamos poder hacer click y comenzar a dibujar nuestros sprites. Haga clic en mi mediana, haga clic en mi ficha morada aquí. Simplemente arrastre una fila por la parte inferior. Ir a mi carretera, tenemos cinco capas de tráfico. Necesitamos cinco filas de nuestra cerveza negra 4.5 Si nos referimos de nuevo a nuestra imagen, entonces tenemos otra capa de púrpura, cinco capas de agua, 12345 Entonces tenemos una capa de agua que se llena debajo de nuestra casa. Hagamos una capa más ahí. Vamos a agarrar nuestra casa. Simplemente continúe y haga clic en un spray, y arrastre el mouse para que pueda seleccionar los tres. Vamos a colocarlo. Oh, mira eso. Parece que tenemos este tema. Bueno, ¿qué está pasando? Estamos reemplazando nuestras tejas de agua aquí. No queremos hacer eso. Necesitamos dibujar esto en una, otra capa. Y yo sólo voy a seguir adelante y terminar llenar eso con nuestra agua. Todo el camino hasta la cima de las dos últimas líneas. Voy a hacer click en nuestra sección de inicio aquí. Y no queremos reemplazarlos, queremos construir encima de ello. Te darás cuenta aquí en el lado derecho de nuestros mapas de teselas, tenemos algo que dice capa cero. Y si tenemos un desplegable, no hay nada más ahí. Lo que queremos hacer es ir a nuestro inspector de nuestro mapa de teselas, abrir la sección de capas, presionar agregar nuevos elementos. Ahora en realidad tenemos una segunda capa de vuelta en los mapas de teselas con nuestra fila de inicio seleccionada. Podemos ir a la capa desplegable y golpear la capa uno. Ahora en realidad podemos dibujar directamente encima de ella sin afectar nuestra final. Tenemos siete al otro lado con esto. Solo para asegurarse de que nuestra rosa, 1235, me queda bien Si volvemos a hacer clic en nuestro No TD, nada es genial. Esto es con lo que estamos trabajando. Si recuerdas, cuando estamos viendo la configuración de Alpro, cómo se ve, en realidad tenemos nuestro puntaje Esa información se configura justo en la parte superior aquí en esta zona azul vacía, este espacio de agua vacío, tenemos nuestros troncos, tortugas que saltan a través que nos ayudan a saltar por aquí Dentro de estas pequeñas áreas en blanco en casa es donde podemos sumar puntos al conseguir nuestras ranas El morado es seguro y nuestro camino negro es donde van a desovar nuestros autos Bien, ahora tenemos todos nuestros antecedentes establecidos así como así. Bastante fácil de poner en marcha. El nuevo mapa de teselas es muy agradable para levantarse rápidamente y continuar con esto. No solíamos tener capas. Ahora que hacemos eso facilita mucho la configuración de las cosas así. Bien, ese es nuestro trasfondo, sigamos adelante y saltemos a la siguiente porción. 5. Crea el jugador: Bien, sigamos adelante y creamos nuestro jugador. Pero antes de que lo hagamos, voy a seguir adelante y salvar esto. Va a controlar a S. Entra en mi rana o soporte y guarda mi escena muy rápido. Bien, entonces para nuestro jugador, nuestro jugador en realidad va a tener su propia escena que traemos. Entonces vamos a hacer clic en el plus justo arriba aquí o agregar nueva costura. Vamos a ir a otro ya que este es un jugador sobre el que necesitamos tener control. Este va a ser un cuerpo de personaje dos D. Esto solía llamarse cuerpo cinemático En otros motores se puede escuchar a la gente referirse a él como tal, pero aquí ahora se llama un cuerpo de personaje dos D. Ahora este cuerpo de personaje, tenemos aquí este triángulo amarillo que da un pequeño aviso. Simplemente nos dice que nuestro nodo no tiene ninguna forma. No puede chocar con nada. No tiene colisión por ahora, está bien. Usa eso para flotar ahí. Lo que vamos a hacer es que en realidad vamos a ir a agregar un, otro nodo aquí. Y lo que queremos añadir es un sprite. Dos D. Queremos añadir un sprite animado. Queremos que nuestro sprite esté animado. Tenemos dos marcos para esto. Sigamos adelante y hagamos un sprite animado. Dos D en el lado derecho en el inspector. Vamos a abrir la sección de animación frente a los fotogramas de sprites. Hagamos clic en él y hagamos nuevos marcos de sprites. Entonces abramos esos marcos de sprites con solo hacer clic en él. Bien, vamos a tener nuestra animación por defecto, que voy a seguir adelante y renombrar eso para que simplemente esté inactivo. Entonces vamos a agregar una nueva animación con este pequeño icono de aquí abajo. Voy a cambiarle el nombre a Jump A Idle. Seleccionado. Voy a traer a Proger inactivo y G, saltar Vamos a traer a Proger Id, luego a nuestro ícono saltador Proger, y ahora deberíamos poder ir entre los dos cuando queramos jugar a estos enemigos Bien, si jugamos ahí, estamos saltando, estamos haciendo nuestro pequeño rebote hinchable Podrías notar que el sprite está un poco borroso aquí arriba en nuestro Pero aquí abajo podemos ver que se supone que es agradable y arriesgar. Bueno, para arreglarlo, podemos seguir adelante y podemos simplemente seleccionar todos nuestros sprites aquí a la vez Desde nuestro sistema de archivos ir al lado izquierdo a la importación no va a ser una importación movida esto déjame simplemente seguir adelante y hacerte saber dónde está esa parte. Bien, así que si te dirijas a la configuración de tu proyecto, ¿dónde voy a dirigirme a la configuración de tu proyecto y ubicar la sección de renderizado y textura aquí en configuraciones avanzadas o la necesitamos en esto? No, no lo necesitamos en eso. Queremos un filtro de textura predeterminado aquí, cambiarlo de lineal a más cercano. Adelante y cierra eso, y verás tus sprites van mucho afilados Si vas a hacer pixel art así, este es el valor predeterminado que deseas establecer en la configuración de tu proyecto. Y ahora tenemos un bonito Roggio afilado. Eso es todo lo que realmente necesitamos. No necesitamos preocuparnos por la colisión o la detección ni nada de eso por el momento. Eso nos preocuparemos cuando lleguemos a esa porción. Así que sólo voy a seguir adelante y ja, para salvar esto. Y yo sólo voy a llamar a este jugador. Ahora si entro en mi escena principal con mi nodo dos D seleccionado. Puedo hacer clic en no este plus para un nuevo nodo, sino en la cadena al lado de él. Eso nos dejará instancia en una escena que ya existe para nosotros. Esa va a ser la escena de nuestros jugadores. Ahora podemos seguir adelante y agarrarlo y podemos traer a este pequeño. Podemos jugar, podemos hacer lo que queramos hacer con este pequeño. Entonces veamos cuál es nuestra transformación. Sabemos que esto está en valores de 16172, ¿no sería 176 si estamos en valores de 16 Y sólo voy a mover a mi pequeña ranita . Aquí vamos. Estar un poco más centrado con eso. Ahora tengo a mi ranita en mi escena principal con mis antecedentes y está listo para irse. Bien, eso lo hará por este. Tenemos a nuestro jugador configurado tanto como necesitemos en este momento que saltaremos al siguiente donde abordaremos haciendo algunos movimientos de jugador. 6. Movimiento de los jugadores: Bien, sigamos adelante y vamos a crear el movimiento para que nuestra pequeña ranita pueda moverse hacia arriba, abajo, izquierda, fin, derecha Para empezar, vamos a necesitar algunas entradas. Ahora si quieres usar las teclas de flecha, entonces yo abajo, me fui, y yo derecha ya existe, pero quiero usar WASD Entonces voy a subir a mi proyecto e ir a mi Configuración del proyecto, y voy a entrar en el asignador de entrada en la parte superior, agregar una nueva acción Y solo voy a escribir add left and right. Ahora para cada una de estas acciones aquí, solo voy a ir al lado derecho y darle al botón más hacia arriba. Voy a darle al plus. Sólo voy a presionar en mi teclado. Te voy a mostrar cómo se ve eso, lo que vas a ver desde ahí. Veamos, esta es esta ventana de aquí. Traeré eso arriba. Aquí tienes. Acabo de darle a la llave y tenemos eso. Golpeamos bien, vamos a bajar. Presiona el signo más, presiona la tecla S nuevamente. A izquierda y D por ahora mismo tenemos arriba abajo, izquierda y derecha para nuestros controles. Podemos cerrar fuera de ahí. Nuestro jugador va a necesitar un guión. Y voy a tomar una nota aquí en mi sprite animado en salto, no me deshice del primer sprite, así que solo tendré este con las piernas abiertas y pondré un guión a un lado de nuestro cuerpo de personaje dos D en la escena de nuestros jugadores, solo tenemos uno vacío así Ahora lo que voy a hacer es que voy a crear una función llamada movimiento. Así que esto es solo para que podamos mantener todo limpio y organizado y mantener todo nuestro movimiento en un solo lugar. Vamos a hacer para tomar entrada aquí, vamos a usar la sentencia if en la misma declaración if que hemos estado usando mucho. Si entonces queremos acceder al objeto de entrada o a la entrada de clase de entrada, entonces queremos verificar la acción. Queremos ir con liberación. Recién soltado o simplemente presionado. Cualquiera de los dos trabajará para este juego, específicamente. Si vamos es acción presionada, entonces eso es mientras se mantiene pulsado el botón. Simplemente pulsado y solo soltar significa, bueno, solo presionar es cuando tan pronto como el botón se activa cuando lo presionas hacia abajo. Y soltar significa que el bloque de código se va a ejecutar cuando levantes el dedo hacia arriba. Voy a ir con solo prensa, intentemos eso. Voy a usar el botón y esta es una cadena que debería haber aparecido. Tú automáticamente, esto fue un colon. Así podremos entrar a él y crear el bloque de código. Todo lo que vamos a hacer es que vamos a hacer dos cosas. Tenemos que mover nuestra pequeña roca, tenemos que moverla hacia arriba por la pantalla. Y vamos a subir por una cuadra y todo se divide en 16 bloques de 16 o 16 tamaño de teja. Entonces vamos a mover nuestra ranita hasta 16 cuadras. En este caso, vamos a conseguir nuestra posición. Si tiene un poco más de sentido para ti, puedes decir auto posición porque te estás moviendo a ti mismo que este guión está adjunto en este momento. Eso nos va a dar una ordenanza x y a que tiene dos números asociados a ella. Si hacemos clic en nuestro cuerpo de personaje y miramos dentro del inspector bajo transform, verá que tenemos una X y una Y y estas corresponden a la ubicación que están en la pantalla. Si hacemos clic en nuestra escena principal y vamos al cuerpo de nuestro personaje, verás que su posición es 169.2 33 en mi caso, aquí es de donde partimos Y vamos a estar sumando o restando de esto ya sea para la X o la Y para conseguir nuestros movimientos ya que queremos subir Cuando presionemos hacia arriba, vamos a estar afectando el número, vamos a decir posición. Estamos en nosotros mismos, queremos obtener la propiedad de posición y luego queremos obtener el número de la misma para subir la pantalla, en realidad tenemos que restar Entonces vamos a decir menos es igual a eso. Podríamos decir que esto es igual a nuestra posición y número, es igual a la posición y menos algún número, que nuestro número en este caso va a ser 16. Si lo tuviéramos que dejar así y dirigir nuestra escena. Bueno, qué desafortunado no se mueve nuestra pequeña ranita . ¿Por qué no se mueve? Ojalá lo hayas indicado o captado eso antes de que presione el botón de vuelo Nunca vamos a llamar a nuestro movimiento en ningún lado, así que en realidad nunca estamos comprobando ninguna de estas cosas. Para eso, vamos a simplemente meterlo dentro de la función de proceso aquí. Movimiento y ahora se le llama. Uy. Al menos lo haría, si pudiéramos deletrearlo correctamente. Ahí vamos. Si intentamos correr eso ahora y el botón arriba, que para mí es W, se puede ver que vamos adelante y estamos moviendo nuestras 16 cuadras a la vez. Nosotros ganamos. Tenemos una pequeña ranita ahí arriba Ahora claro, el problema es que todavía nos estamos moviendo, pero no podemos retroceder. No tenemos animación ni nada. Hagamos que nuestra animación funcione ahí. ¿Cómo jugamos nuestra animación? Bueno, si nos fijamos en la escena de nuestro jugador, podemos ver desde nuestro guión podemos, podemos seguir esta línea fácilmente, solo un nivel hasta el sprite animado dos D. Vamos a conseguir ese nodo La forma en que lo he demostrado antes era usar este signo de dólar. Sería lo más fácil. Tan pronto como empieces a escribir sprite animado, va a aparecer. Recuerda que solo es sprite animado dos D porque ese es el nombre del mismo. Si tuviera que nombrar a esta banana y muy por deletreo de banana, entonces eso es lo que tendría que escribir aquí para poder acceder a ella. Sólo voy a restablecer ese nombre de nuevo a Deft. Todo lo que vamos a hacer es que vamos a llamarlo. Jugar, jugar. Verás las animaciones que creamos pop up. Vamos a usar salto. Lo intentamos ahora solo con esa edición de nuestra línea, gritos, en realidad tenemos que tocar esta escena y no a nuestro jugador, puedes ver que entramos en nuestro salto, pero estamos atrapados en nuestro salto Ahora, eso es un poco decepcionante. ¿Cómo podemos arreglarlo? ¿Cómo podemos volver a la normalidad? Bueno, podemos configurarlo para que cuando nuestra animación se complete, entonces volvamos a nuestra forma ociosa. Para ello, vamos a tener que acceder al sprite animado de nuestro jugador Ir al lado derecho a la pestaña de nodo y vamos a conectar una señal que esta animación terminó. Si solo hacemos doble clic en eso, obtendremos un pop up para conectar una señal aquí. Solo vamos a seleccionar el cuerpo del personaje dos en el que está nuestro guión y presionar el botón de conectar. Va a mantener todo para usar mis teclas de flecha para sacarlo a colación cada vez que nuestra animación termine de reproducir este bloque de código se va a ejecutar. Ahora lo que queremos que suceda aquí es que queremos volver a nuestro estado de inactividad donde nuestra rana simplemente está sentada ahí. Lo mismo. Vamos a conseguir nuestro sprite animado dos D, vamos a llamar play Eso va a estar inactivo si lo intentamos. Ahora, ¿qué hacemos de nuevo si tocamos la escena correcta, cómo intentamos eso Ahora vemos que ahora tenemos este pequeño salto que es aparecer a medida que jalamos a través del agua. Eso es increíble. Ahora la cosa es que nuestro ídolo va a estar jugando constantemente en este punto. Nuestro ídolo juega y luego termina. Y porque termina, va a jugar, no, eso realmente no va a ser un problema. Eso podría ser algo a tener en cuenta en el futuro para resolver este problema. De hecho, podemos arreglar esto con un si pick. Y como puedes ver mi pequeña salida ahí, estaba revisando las cosas y te mostraré cómo hacerlo. Voy a limpiar eso. Todo lo que tenemos que hacer es comprobar sprites animados. ¿Quieres el signo del dólar ahí? Si el sprite animado dos D Animación. No, ¿cómo se llamaba? Bueno, si entramos en nuestro sprite animado, y por cierto, puedes acceder a esto, si solo mantienes el control y haces clic en el sprite animado dos D aquí en nuestro código, entonces abrirá la página de documentación para Esto es lo que estamos buscando aquí. Obtener animación. Queremos obtener animación. Como ves eso no estaba apareciendo. A veces es útil revisar la documentación todos modos que queremos hacer si el sprite animado dos consigue animación Si tuviéramos que echarle un vistazo a eso, se la animación actual del recurso de fotogramas de sprite cambia la animación actual del recurso de fotogramas de sprite en el valor Contador de cuadro, progreso de cuadro o reinicio. Pero lo que queremos hacer es que queremos obtener lo que es esta animación. Eso es básicamente devolvernos qué animación se está reproduciendo o actualmente seleccionada. Entonces vamos a usar los dobles iguales porque queremos comparar lo que sea que nos devuelva y queremos escribir salto. Entonces cuando jugamos nuestro ralentí, solo vamos a tocar eso en uno, para que pueda estar dentro de nuestro candado. Ahora básicamente vamos a comprobar cuándo termina nuestra animación. Si el actual es salto, entonces vamos a jugar al ralentí. Si ejecutamos eso, ahí vamos. Tenemos nuestro pequeño boing. Se ve exactamente igual, pero no vamos a estar constantemente reproduciendo la animación inactiva una y otra vez cuando se reproduce la animación inactiva. Recuerda que toca una vez y luego se hace. No es un “looping”. Si el tuyo, por ejemplo, está haciendo un ciclo por cualquier razón, el seguir adelante mancha tu spray animado Y si es un lazo, puedes ver nuestro ratón aquí. Eso es porque esto está encendido. Entonces solo tienes que seguir adelante y hacer clic en él apagado, así es blanco así. Si es azul, entonces está encendido. Si es blanco, está apagado. Ahora cuando nuestra animación termine, después de saltar, vamos a comprobar si nuestra animación actual es salto. Si es así, entonces jugaremos al ralentí cuando termine el inactivo. Esta declaración if no será cierta porque cuando obtengamos animación, va a estar inactiva, no saltar. Como eso ya no es cierto, no vamos a hacer otra cosa. No vamos a seguir repitiendo inactivos una y otra vez en este tiempo Es una pequeña diferencia, una de esas cosas que están en el back end que el jugador nunca va a notar. Como dije, en un juego pequeño como este, no va a hacer una diferencia tan grande, si es que hay alguno que se note. Pero es algo que vale la pena conocer en el futuro. Pero cuando sí quieres hacer juegos cada vez más grandes. Bien, así que sigamos adelante y ya podemos conseguir nuestro botón. Si solo copiamos y pegamos esto, podemos obtener L si en lugar de un si queremos nuestro abajo presionado en lugar de arriba, queremos más 16 en lugar de -16 Porque si menos va a subir, entonces plus nos va a derribar Así que ahora podemos subir y bajar. Ahora nuestra pequeña ranita no se da la vuelta en absoluto, lo cual es un poco decepcionante Pero podemos arreglarlo fácilmente agregando una línea más aquí. Podemos hacer eso hablando de su rotación antes de saltar, podemos obtener autorrotación. Si echamos un vistazo a nuestro jugador, volvemos a la escena de nuestro jugador, clic en nuestro cuerpo de personaje dentro del inspector. Si bajamos, vemos que aquí tenemos rotación. La rotación es en radianes más que en grados. Lo que podemos hacer es decir que la rotación es igual. Podemos usar esta función que está incorporada llamada deg two red Eso podría haber cambiado aquí. Parece que tiene. Parece que se le ha renombrado aquí, deg two d, Ahora tiene los guiones bajos en él Entonces tomemos un argumento en forma de grados. Si decimos 180, eso va a ser un cambio completo. Giramos a la derecha, eso va a ser 90 grados. Si giras a la izquierda, vamos a estar -90 De cualquier manera, tenemos que llegar a 180 positivo o 180 negativo Yo sólo voy a ir con 180 grados aquí. Esta función va a convertir estos 180 grados en radianes para que se pueda asignar a nuestra rotación aquí Ahora, una rotación completa en radianes es 3.14 y de aquí es de donde es pi Esto sería lo mismo aquí, 180. Como si solo tuviéramos que copiar esto. Decir rotación es igual a pi dividido por cuatro, entonces eso nos dará una rotación. Pi dividido por dos, eso nos dará la mitad de nuestra rotación aquí en radianes Si te mostrara que con pi dividido por dos, ahí nos dividimos al revés, tal vez sea un poco más de dos. Ahora, normalmente no uso radianes yo mismo. Podemos ver divididos por cuatro. Obtenemos este pequeño ángulo incómodo. Puede ser un poco incómodo cuando se trata de radianes a veces, que es una de las razones por las que prefiero usar grados para radiar solo porque es algo en lo que puedo trabajar un poco más rápido Como veis, ahí vamos. Volteamos la cara hacia abajo. Sólo que ahora no estamos enfrentando una copia de atrás. Entonces ahora tenemos que arreglar eso dentro de nuestro código. Simplemente haremos lo mismo cuando presionemos hacia arriba, establecemos nuestra rotación a cero si la jugáramos. Ahora, aquí vamos. Ahora podemos saltar hacia arriba y podemos saltar hacia abajo. Ahora, ¿y si queremos saltar a la izquierda y a la derecha? Bueno, aquí podemos conseguir esos con dos LC más. Sólo voy a espaciar estos para que sean un poco más legibles. Aquí vamos. Comenzando en nuestro segundo aquí, vamos a decir si queda acción, en lugar de modificar el valor y, en realidad vamos a modificar la x de nuestra posición. Porque x es izquierda y derecha, si vamos a la izquierda, tenemos que -16 aquí, grados a rojo Bueno, podríamos establecer esto en 270 solo para quedarnos en el lado positivo aquí. Lo que significa nuestra última L aquí. Cuando presionamos a la derecha, vamos a modificar la posición X en lugar de la Y, vamos a más 16. Si nos movemos a la derecha, vamos a ser girados a 90 grados. Seguimos adelante y lo intentamos ahora. Debería ver. Ahora podemos saltar en las cuatro direcciones que podamos movernos. Si tu rana se coloca en la ubicación correcta, deberías poder aterrizar en todos estos pequeños objetivos de casa aquí. No hay problema sin repasar. Aquí tienes. Ahora vamos a mantener nuestra posición. Bueno en la pantalla estaría bien. Podemos preocuparnos por todas esas cosas más adelante. Por ahora, solo tenemos nuestro movimiento dando vueltas y este vehículo se está bajando mucho tiempo. Yo solo quería mantener el movimiento en su propia pequeña sección. Aquí, allá vamos. Podemos correr por ahí como nuestro propio pequeño Boeing ranas. Boeing Pero bien, ahí lo tienes. Ahora podemos seguir adelante y pasar a la siguiente sección de nuestro código. Creo que a continuación vamos a, creo que vamos a crear nuestros vehículos y hacer que comiencen a cruzar la carretera aquí. 7. Crea vehículos: Bien, hoy vamos a seguir adelante y crear los vehículos para cruzar. Ahora tenemos un par de diferentes. Veamos cuántos tenemos aquí. Dentro de nuestros sprites, tenemos cinco autos diferentes Ahí vamos. Y algunos van a la izquierda, algunos van a la derecha. Y ya están mirando en la dirección que quieren. Eso es genial. Todo lo que tenemos que hacer es crearlos y hacer que se muevan por nuestra pantalla. Bien, sigamos adelante y creamos una nueva escena con nuestro botón más aquí en la parte superior. Para nuestras pestañas, vamos a ir a otro nodo y al igual que nuestro jugador, vamos a usar el cuerpo del personaje dos D aquí. Vamos a darle un sprite. En este caso, como no tenemos animaciones para ello, solo vamos a usar un sprite regular dos D, podemos seguir adelante y asignarle uno de los primeros sprites Ahora en este caso seguí adelante y seleccioné el camioncito, pero claro que puedes escoger el que quieras Específicamente, estoy usando uno que se mueve a la izquierda. Por el momento, eso vale la pena señalar. Voy a cambiar este nombre de cuerpo de personaje dos D para ser camión. Voy a guardar eso como mi escena de camión. Voy a necesitar un poco más ahora. No vamos a usar una forma de colisión, aunque vamos a tener algún tipo de colisión que pueda ocurrir aquí. Porque obviamente nuestra rana tiene que ser aplastada de alguna manera si es golpeada Para prepararme para eso, voy a crear un área dos D que simplemente va a permitirme tener un área predefinida que pueda verificar para obtener esa área con el área dos D seleccionada. Ahí es ahora donde puedo traer la forma de colisión. Ahora la forma de colisión tiene este pequeño triángulo en ella, dándonos una forma de colisión de advertencia seleccionada. Nos movemos a la derecha a nuestra sección de formas y creamos una nueva. Eso solo va a ser una nueva forma de rectángulo. Ahora no usamos formas complicadas como usar los polígonos En su lugar, usa polígono con forma con algunas de estas formas básicas aquí Porque la sien tu forma es mejor va a ser en términos de rendimiento. No obstante, cuanto más complicada sea una colisión, más precisa va a ser. Es un equilibrio que tú, tú mismo tendrías que elaborar. Pero en este caso, por suerte para nosotros, solo podemos usar estos rectángulos y que responden, sobre todo porque para recrear un juego más antiguo como este Bien, ahora que tenemos nuestra forma de colisión así, y otra vez, si no cogiste eso, solo asegúrate tu rectángulo esté cubriendo todo. Cada parte de la camioneta aquí. Ahora nuestro camión en realidad va a necesitar un guión en él. Voy a agregarle uno , y en vez de llamarlo el guión del camión, voy a llamarlo el guión del vehículo. Ahora la razón por la que vamos a llamarlo el guión del vehículo es porque vamos a poder usar este script en todos nuestros vehículos. Ahora para hacer esto vamos a una variable. Para nosotros lo que esto va a hacer, esta palabra clave de exportación nos va a permitir cambiar dentro del inspector. Vamos con la exportación de signo at y crearemos una variable y llamaremos a esta dirección, va a ser un entero. Por defecto, podemos simplemente enviarlo a cero o podemos enviarlo a uno. Realmente no importa en este caso. Si lo guarda y vuelve a seleccionar su camioneta, debería ver la dirección dentro de su inspector en el lado derecho. Ahora en nuestro caso, vamos a necesitar ser uno negativo porque vamos a movernos significa que vamos en la dirección negativa. Simplemente seguí adelante y puse eso en negativo. Ahora en la función de proceso, vamos a tener nuestro carácter es correcto, pero nuestro camión se mueve. Entonces para movernos, necesitamos tener algo llamado deslizamiento móvil o colisionar en movimiento Cualquiera de los dos trabajará para tener movimiento. En mi caso deslizador móvil de piel. El código de mudanza también está bien. Prácticamente solo define lo que sucede cuando dos cuerpos de Física chocan entre sí ahí mismo O se golpean uno contra el otro y se quedan ahí, o pueden deslizarse uno a lo largo del otro En nuestro caso, realmente no importa ya que solo vamos a estar usando el área para determinar si nuestra rana ha sido atropellada por el camión. Ahora tenemos tobogán móvil. No podemos simplemente jugarlo ahora, porque todavía tenemos que controlar este movimiento. Voy a tener una, otra variable aquí llamada velocidad, que también será un entero. Yo creo. Voy a fijar esto. Ya intentaremos ocho. Veremos lo rápido que se mueve eso. Eso podría ser un poco demasiado rápido. De hecho lo intentaré con dos. Ahora que lo pienso, todo vamos a hacer es que vamos a cambiar la velocidad y queremos cambiar el número x. Al igual que la posición, tenemos tanto una x como una y Cuando se trata de velocidad. La velocidad va a controlar nuestro objeto moviéndose consistentemente. Vayamos a velocidad a partir de cuatro, interesante, tal vez V mayúscula porque sé que hay una construida en una. Bastante seguro aquí, es bajo, justo ahí. Debo haber puesto ahí un error tipográfico . Pero ahí vamos. Entonces solo podemos hacer velocidad x esta vez. Vamos a decir iguales. No vamos a decir menos ni más, porque esto va a depender de nuestra dirección, digamos velocidad tiempos dirección. Vamos a movernos a lo largo del eje x, así que vamos a estar moviéndonos de izquierda a derecha a la velocidad, que es dos ahora mismo tiempos de dirección. Ahora mismo estamos en menos uno. Entonces va a ser dos veces menos uno y eso nos va a dar dos negativos y debería hacernos mover a la izquierda. Fuimos en el inspector y lo cambiamos a uno positivo. Entonces eso debería ser dos veces uno. Trae un dos positivo y haz que nos movamos en la dirección correcta. Sólo voy a poner el mío de nuevo a menos uno. Regresaré a mi escena principal y solo traeré una camioneta para echarle un vistazo. Lo voy a poner aquí mismo. Toca la escena y mira si se mueve. Podemos ver que se mueve, pero se mueve demasiado lento. Vamos a tener que retocar eso. Volvamos a las ocho. A lo mejor ocho estuvo bien. Prueba eso. Ocho no es bueno, pero es mucho mejor. A ver, ¿queremos estar moviéndonos a 16 píxeles? 16 se ve bien, aunque eso parece que podría ser bastante fácil. A lo mejor queremos aumentar eso. Tenga en cuenta que siempre podemos volver a esto, y como estamos usando la velocidad en todos nuestros vehículos, podríamos ajustarlo fácilmente y modificarlo una vez que tengamos los cinco carriles usados para vehículos ver, con 32, 32 se ve mejor aquí, creo que 32 es donde voy a dejarlo y retocarlo más adelante A lo mejor quieres ir al 48 o no creo que vamos a poder llegar a algo como 64, pero nunca se sabe. Supongo que sólo voy a usar 32 como mi base. Bien, entonces tenemos un camión moviéndose en una dirección. Ahora también podemos crear nuestros otros vehículos. A ver, tenemos dos más que se mueven a la izquierda y dos que se mueven a la derecha. Veamos qué tenemos aquí. Y vamos a ir a la izquierda. Así que vamos a repetir prácticamente este proceso y usar el script del vehículo en todos ellos. Bien, he seguido adelante y como pueden ver he hecho mis otras cuatro escenas de autos aquí. Todo lo que hice fue entrar, ajustar la forma de colisión si necesitaba reemplazar el sprite por otro de nuestros autos Y luego si es necesario, pruebe la dirección de menos uno a uno positivo, que controla todos nuestros autos. Y seguí adelante y los coloqué aproximadamente a donde estarían aquí, solo para poder probar y echar un vistazo. Como puedes ver mientras lo corremos, nuestros autos siguen adelante y conducen y cruzan la pantalla en la dirección apropiada y nunca chocan entre sí. Impresionante. Ahora todo lo que necesitamos son más autos que abarquen. No queremos colocar estos consiste, excepto que tenemos que colocarlos manualmente. Entonces solo tenemos que tener esta enorme lista de autos que no tenemos idea de cuánto tiempo va a ser para que engendren O cuánto tiempo va a tomar para que el jugador o se quede sin vidas o complete el nivel. Lo que vamos a hacer es crear engendradores para estos autos. Bien, estos generadores son básicamente solo en un tiempo establecido engendran Podríamos tener cinco reproductores diferentes si queremos, uno por cada carril A ver, creo que eso es lo que quiero hacer. Creo que voy a tener cinco patrocinadores diferentes esa manera todos ellos pueden tener sus propios tiempos y si quisieras solo podrías haber establecido como límite de generación, un límite de tiempo para todos los vehículos Eso también está perfectamente bien. Voy a seguir adelante y crear uno y esto solo va a ser un básico no dos D. Sólo voy a llamar a esto Sp. ¿Queremos llamar al patrocinador uno aquí? Sí, ve a patrocinar uno y esto va a controlar mis mejores engendros aquí arriba y creo que voy a usar esto como su ubicación base también, así que solo voy a conseguir un buen lugar Y como esta es la camioneta, traeré de vuelta hasta ahí y eso me mostrará que el camión genera en esta posición Estará ahí mismo en mi engendro. Voy a crear un nuevo guión. Esto solo va a ser un script de spawn. Una vez más, vamos a usar esto bastante bien en todos, todos nuestros tramos que creamos aquí ¿Qué tenemos que hacer? Bueno, tenemos que esperar una cantidad determinada de tiempo. Se va a eliminar este común de ahí. Así como el de aquí abajo en la línea nueve. Bien, entonces tenemos que esperar una cantidad de tiempo determinada. Ese tiempo debería ser aleatorio entonces basado en ese engendro en nuestro caso vamos a estar cargando el camión Voy a seguir adelante y hacer variable aquí para mi camioneta. Eso va a ser una precarga aquí. Señor quiere decir que sólo vamos a cargar la escena de antemano. De esa manera podemos usarlo, podemos ponerlo en instancia en cualquier momento. Así que solo voy a agarrar mi camioneta de mi sistema de archivos y arrastrarla. De esa manera tenemos la ubicación correcta aquí a la escena. Con esto, sólo voy a mostrarles cuál es el único vehículo de aquí, porque entonces sólo tenemos que entrar y podemos retocar esto Mostrarte cómo podemos exportar. Bueno, de esa manera podemos usar este script en todo en lugar de hacer múltiples scripts solo por una diferencia de variable. Te voy a mostrar eso. Pero primero pongamos esto en marcha. Lo que vamos a hacer, no vamos a utilizar este proceso en absoluto. En realidad vamos a crear una función llamada spawn vehicle Aquí, estamos donde necesitamos un número aleatorio Sigamos adelante y llamemos a tiempo tarde. Sólo llámalo tiempo de espera. Vamos a establecer un float y vamos a establecer esto igual a, vamos a ver, un entero aleatorio y no equivocados. Podríamos simplemente hacer algo como esto y eso funcionaría. No creo que tengamos que usar rango Rand, aunque podría ser incorrecto en eso. Bien, ahí vamos. Ya que quiero verificar eso, solo para estar seguro, voy a tener el control. Da click en Randy y eso me va a abrir a esta página Y sí, lo hice correctamente usando 20 por ciento. En este caso, un GC nos va a dar un tituentre 0.19% 100 nos va a dar 0-99 Y si hacemos por ciento 100 más uno, eso nos daría un número 1-100 En mi caso, si hago tres, si hago tres, entonces vamos a tener un tiempo de espera Voy a agregar uno a eso. Ahora tenemos que esperar al menos 1 segundo, y entre los engendros de camiones va a ser 12-3 Podemos ver cómo se ve esto Siempre podríamos ajustar esto más tarde. Ahora nuestro tiempo de espera tenemos eso, ahora tenemos que esperar realmente esta cantidad de tiempo. Vamos a decir espera, tenemos que conseguir el árbol para poder hacer esto. La palabra clave wait aquí significa que solo vamos a esperar esto. En nuestro caso, va a ser un temporizador, pero esto también podría estar esperando que se envíe una señal. Pero ahora mismo vamos a decir un árbol get crear Tim. Este va a ser nuestro tiempo de espera aquí. Nuestro tiempo de espera aleatorio que tenemos tiempo, estamos fuera para esa señal de tiempo de espera que se envía cuando termina nuestro Tim. El cual se basará en un número aleatorio, una cantidad aleatoria de segundos. Bien, así que una vez hecho eso, podemos crear una instancia de nuestro camión, de nuestro, diremos VT para vehículo VI por instancia de vehículo igual, en este caso vamos a decir camión pero deberíamos cambiarlo a vehículo Truck instanciate y luego lo agregaremos a nuestro yo engendrador, un niño para agregarlo a Y yo Muy bien, veamos cómo funciona esto ahora. No va a hacerlo porque no lo llamamos. Vamos a entrar en nuestra función listo aquí y nuestra función de vehículo de generación que creamos Vamos a probarlo ahora. Ahí vamos. Entonces tuvimos otro camión engendrado en, y no vamos a tener más porque solo estamos desove a Lo que podemos hacer a partir de ahí es después de agregar niño, justo después de agregar el camión a nuestra escena, solo tenemos que llamarlo recursivamente a sí mismo Va a provocar un bucle infinito. Se va a mantener, va a generar un vehículo y no hacer nada y luego generar un Cuando se termina con ese desove otro vehículo, está hecho engendrar un vehículo y siempre va a ser un número aleatorio cada vez que tengamos que esperar entre Si solo le echamos un vistazo ahora, podemos ver que son bastante consistentes en su espaciado. Y entonces ese fue un espaciado mucho mayor. Tenemos un espaciado muy cercano en esa. Parece que por ciento tres más uno podría ser el más corto que queremos ir, pero ahí tienes. Depende de ti. Eso es un montón de cercanos juntos. Depende de ti si quieres retocar eso un poco, juega con él en absoluto Y hasta ti cómo quieres tenerlos espaciados ahí fuera. Ahora bien, la razón por la que no tenemos que establecer su posición es porque estamos agregando de niño a mi observador Y el vigilante está justo aquí, ya que el camión aquí está a las 00 en su posición El camión aquí está a las 00 en su posición aquí. Y podemos ver que si vamos al transporte 00, va a ser exactamente lo mismo que es padre, que en este caso va a ser patrocinador uno. Donde mi patrocinador uno aquí es que va a engendrar en esa ubicación, justo fuera de la pantalla lo suficiente Ahora bien, ¿cómo podemos cambiar este script para que se ejecute para poder usarlo en cualquiera de nuestros vehículos? Lo que tenemos que hacer para que esto funcione para todos nuestros patrocinadores, que podamos tener el menor trabajo posible aquí. Bueno, antes que nada, voy a cambiar mi nombre de variable de vehículo camión porque ahora lo vamos a usar para más de un vehículo, no solo el camión. Eso significa que vamos a tener que cambiarlo aquí abajo en nuestro engendro de camión instantáneo a instancia de vehículo Queremos tener esta variable expuesta dentro de nuestro inspector para poder modificarla por nodo. Aquí vamos a hacer el at firmado con exportación. Ahora, ¿qué vamos a exportar aquí? Bueno, podríamos dejarlo como tal. Y esto solo funcionará si miramos dentro del inspector. Pero si quieres ser específico, esto se llama pack visto, así es como exportarías esto. Entonces podríamos incluso simplemente borrar la precarga aquí, solo tenemos un letrero, nuestro vehículo y declarado como un paquete visto. Ahora bien, si hacemos clic en nuestro spawn y nuestra escena aquí, podemos simplemente abrir el vehículo y decir Nuevo ritmo o podemos cargar Obviamente nos gustaría cargar. Pero para ahorrar algo de tiempo, solo podemos entrar en nuestro sistema de archivos, agarrar nuestro camión, arrastrarlo y soltarlo ahí. Si ejecutamos esto, veremos a nuestros camiones desovar tal como deberían, tal como lo hacían antes Bien, perfecto. Si tuviéramos que agarrar, digamos, veamos, Auto uno también va a la izquierda, vamos a agarrar auto. Reemplaza esa escena ahí dentro, y échale un vistazo. Ahí lo tenemos. Lo conseguimos trabajando aquí con un vehículo diferente. Todo lo que tenemos que hacer es cambiar esta. Eso es un montón de autos seguidos. Ahí otra vez, puedo bajar a ti retocando las cosas, pero ahí las tienes. Voy a seguir adelante y reemplazar este camión otra vez y evitar que eso funcione. Ahora, puedo seguir adelante y puedo hacer más vanos. Yo sí, hacemos historia y desajuste. Eso es interesante. No estoy haciendo nada con la historia. Yo sólo voy a usar el control D ahí. Y éste es apadrinado dos. Así que voy a bajar, asegurarme de que las filas que este va a ser el auto tres. Voy a buscar mi auto tres, escena y arrastrarlo dentro. Adelante, échale un vistazo a eso. Ahí vamos. Tenemos nuestros camiones y nuestro auto desove en nuestros diferentes intervalos. Fantástico. Podemos hacer lo mismo por nuestro fondo aquí. Duplicaré eso una vez más. Y solo estoy duplicando eso con control D con spawner Y sólo voy a tirar eso aquí abajo para este vehículo. Este es solo, voy a meter el auto aquí, echamos un vistazo, vemos que todos nuestros autos que van a la izquierda están todos desovando correctamente Fantástico. Ahora sólo tenemos que sacar a los dos a la derecha. Lo mismo. Solo voy a duplicar mi spawn aquí y simplemente arrastrarlo hacia el lado izquierdo Y luego lo ajusto aquí. Nuestra posición que debería ser buena. Y ese es auto mi auto Fc lo duplicaría una vez más y lo masificaría aquí para mi auto dos escena. Bien, ahora debería poder entrar aquí y eliminar todos estos autos y camiones temporales. Si corremos debería estar funcionando perfectamente bien, desovar todos nuestros vehículos ahí dentro Ya lo tenemos. Podemos correr por ahí con nuestra pequeña, sí, digamos, pequeña ranita aquí Ahí lo tenemos ahora. Solo necesitamos una forma de atravesar esta agua para poder entrar ahí de una manera para que nuestra pequeña ranita sea aplasta. Creo que nos encargaremos del aplastamiento. La próxima vez traeremos la muerte del jugador aquí. 8. Muerte y reaparición de jugadores: Bien, entonces, ¿cómo vamos a conseguir que nuestro pequeño ranita se ponga si es atropellado por un auto Bueno, lo primero que hice fue agregar una colisión en forma dos D para cubrir el tamaño de mi ranita. Vamos a usar eso para determinar si te atropelló un auto en combinación con el área dos D que está en nuestros vehículos. Dentro de mi sprite animado, creé una nueva animación llamada Muerte, y traje el Sprite de rana muerta Ahora que tenemos que también necesitamos en nuestro vehículo, vamos a tener que añadir aquí una conexión de señal. Y el que vamos a querer es cuerpo ingresado. Podríamos pasar por aquí y conectarlos uno por uno en todos nuestros vehículos o podríamos ahorrar un poco de tiempo y conectarlo a través del código. Creo que eso es lo que voy a hacer aquí, justo así ahorramos un poco de tiempo. Ahora echemos un vistazo a cómo conectaríamos esta señal a través del código en lugar de la interfaz. La forma más fácil para nosotros de configurar esto es como ves en lo siguiente, dentro del bloque listo aquí, ese error es solo porque aún no hemos creado esa función. Vemos que agarramos nuestra zona dos D porque eso es lo que está enviando la señal, el nombre de la señal que es cuerpo ingresado, se puede ver eso a la derecha. Y vamos a conectar esa señal con la función connect. Entonces creamos lo que se llama un callable y pasamos en un nombre Y este nombre va a ser el nombre de nuestra función a la que queremos llamar. Golpe de jugador, golpe de rana. Puedes ir con eso es lo que voy a llamar mío. Ahora todo lo que tenemos que hacer es simplemente bajar y crear una nueva función para Funko Esta función también pasa en una pieza de datos. Si echamos un vistazo a la señal ingresada al cuerpo aquí del lado derecho, vemos que pasa en el cuerpo y ese es un nodo dos D, va a ser un nodo dos D de algún tipo. Tenemos que poner ese argumento en el nodo dos D. Y así así eso ahora debería conectar la señal para todos nuestros vehículos. Y para probar esto, podemos seguir adelante e imprimir cuerpo. Y vamos a ver esto algo que también he hecho es que me cambié de jugador. He cambiado el nombre de mi jugador de cuerpo de personaje TD para ser jugador Entonces he tenido que entrar aquí en mi escena principal y reemplazarla para que se actualice el nombre. Ahora bien, si seguimos adelante y ejecutamos esto, deberíamos tener un cuerpo impreso cada vez que nos atropelle un vehículo. Entonces probemos el carril uno. Sí. Carril dos, Si, Carril tres, Correcto. Carril cuatro. Nuestro último carril, el camión. Aquí vamos. Todos nuestros vehículos están detectando cuando nos atropellan y podemos ver que tenemos muchos vehículos ahí con este tiempo, esa podría ser una buena cantidad. O tal vez quieras aumentar el mínimo de desove entre ellos. De nuevo, completamente hasta ti y como quieras hacerlo, ve sobre el tuyo. Pero con eso, ahora todos nuestros vehículos han sido conectados y preparados para aplaudir a nuestra ranita El motivo por el que te dije leí mi personaje Body TD. Para que el jugador juegue, estoy usando una mayúscula Es porque vamos a usar este nombre en el guión de nuestro vehículo. Vamos a decir si y luego pasando un resorte aquí, jugador. Así que queremos ver si esta cadena está dentro de otra cadena. Y la cadena que queremos verificar es el nombre del cuerpo. Ahora recuerda cuerpo es cualquier objeto con el que acabamos de colisionar, Cualquiera que sea el cuerpo que acaba de entrar en nuestra zona de vehículos El nombre propiedad de la misma nos va a dar cualquiera que sea este nombre aquí, que en nuestro caso es jugador. Vea si nuestro nombre es jugador en lugar del nombre del cuerpo. Podríamos simplemente hacer un doble igual si quisiéramos ser un nombre exacto, depende completamente de ti. En este caso, no debería afectar nada. Terminamos nuestra declaración con nuestro colon. Desplázate a la siguiente línea. Ahora podemos ejecutar nuestro trozo de código. ¿Qué queremos hacer cuando nuestro jugador lo consiga? Bueno, vamos a llamar a la función de muerte a nuestro jugador. Ahora bien, esta función aún no existe, así que vamos a tener que ir a crear eso. Pero muerte corporal si quieres tener un caso extra. Seguridad aquí. Se puede decir si cuerpo tiene método puede pasar en la cadena de la muerte, entonces podemos golpear la muerte corporal en una más. Podemos ir así y esto evitará un error. Si fuéramos a seguir adelante y ejecutar esto, ya ves que aquí no vamos a tener ningún error. Porque básicamente estamos diciendo, bien, estamos diciendo si chocamos con el jugador aquí, jugador, si ese cuerpo tiene esta función, entonces llámalo En este momento no tiene esa función. Si quisieras poner esa capa extra de seguridad ahí usando el método has, ciertamente puedes hacerlo. Voy a entrar en mi jugador ahora y crear esta función litera muerte. No estamos pasando ningún argumento con ello. Qué va a pasar cuando muera nuestro jugador. Pero necesitamos reproducir nuestra animación de muerte para que podamos corregir nuestro sprite . Sigamos adelante y hagamos eso. Sprite animado dos, juega a la muerte. Echemos un vistazo a eso ahora. ¿Qué pasa cuando nos atropellan un vehículo? ¿Una pobre ranita cruzando la calle? Bien, entonces te vemos morir y luego nosotros uno o sprite es el camino equivocado No está mirando hacia arriba como debería. Corregamos eso. Después de eso, sólo vamos a establecer su rotación. Y ya lo hemos hecho. Cuando presionemos, agreguemos eso a nuestra función de muerte. Aquí echamos un vistazo que ahora debería estar actuando bien plano. Estamos en una posición increíble. Ahora lo que no puedes ver es que constantemente nos chocan porque nuestra forma de colisión sigue golpeando estos autos Y no sólo eso, también podemos seguir moviéndonos, así no podemos traer al ser y volvemos a estar vivos, tenemos una rana inmatable Muy bien, un tiempo de materia de prof. Detengamos que nuestra colisión ocurra. Y podemos ver esto, y te voy a mostrar que si entramos en nuestro jugador golpeamos y yo sólo voy a seguir adelante e imprimir rana triturada Se puede ver que a pesar de que estamos muertos, todavía estamos siendo aplaudidos, sapos aplaudidos. Y vamos a seguir siendo aplaudidos a pesar de que ya estamos muertos. No queremos que esto suceda porque esto podría seguir restándonos vidas, dependiendo de lo lejos que estén los engendros Sigamos adelante y arreglemos eso en nuestro jugador. Para ello, vamos a conseguir nuestra forma de colisión que creamos, la forma de colisión dos D que agregamos a nuestro jugador Y vamos a usar algo llamado diferido en él. Lo que esto esencialmente va a hacer si echamos un vistazo, es llamar al método en el objeto durante el tiempo de inactividad siempre devuelve null, no el resultado de los métodos. Ahí vas. Nuestra palabra clave aquí es lo llama durante el tiempo de inactividad. Entonces va a llamar a esto cada vez que pasemos, cuando tenga la siguiente oportunidad que tenga, básicamente en lugar de tratar de llamarlo ahora cuando tal vez no pueda estampar funciones, te va a decir que hagas eso antes de que llamemos a eso. No tienes que eliminarlos. Sólo voy a mostrarte aquí el error. Si entramos aquí y me voy deshabilitado es igual a verdad, vamos a ver que aquí nos vamos a encontrar con un error. No impide que nuestro juego funcione. A ver, nos socavaron dos veces. Nuestra desactivación no funciona para 12. Si entramos en nuestro depurador y miramos los errores, eso nos va a decir que no podemos cambiar el estado mientras que las consultas de descarga usan llamada diferida Entonces nos está diciendo específicamente que usemos eso, por eso estamos usando llamada diferida aquí Llamada diferida aquí va a ser una cadena de lo que queremos hacer En este caso, se va a configurar deshabilitado. Ese discapacitado toma un segundo argumento y esto va a ser lo que dijimos, en nuestro caso, se va a poner en verdad. Ahora bien, si miramos esto, ese error va a desaparecer y sólo nos vamos a aplaudir a una vez Ahí vas. Ya no va a aparecer dentro de nuestro código si te preocupa la llamada diferida Cuando nos atropellan una gama cercana de vehículos como cuando son como tres espalda con espalda, podemos echar un vistazo aquí. Ya se deshabilitó antes de que el siguiente vehículo incluso nos toque. Bien, así que ahora realmente podemos morir aquí. Lo que tenemos que ver es cómo nos recuperamos. Derecha. Ahora solo somos una rana inmatable porque no podemos chocar con nada Entonces tenemos que arreglar eso con nuestra muerte. Tenemos que tener algún tipo de reaparecer. Tenemos que asegurarnos de que sólo podemos movernos si estamos vivos. Trato un poco más de lo previsto ahí. ¿Todo bien? Tenemos que hacer un seguimiento de si nuestra rana ha sido o no viva o está viva. Podemos hacer esto con una sencilla función que solo comprueba si está vivo o si está muerto. En base a esa variable, podemos o bien movernos o no podemos. Para ello, vamos a utilizar un conjunto de estados, que va a ser una enumeración, como se puede ver aquí del ejemplo aquí Podemos usar estas enumeraciones para contener datos específicos. Supongo que se podría decir, es básicamente como una lista de opciones entre las que podemos seleccionar. Hace que sea más fácil a la hora de revisar las cosas. Esto se puede ver cuando se trata de la forma básica de una máquina de estado que se utiliza para caracteres. Por ejemplo, si jugaste a Grand Theft Auto Five por ejemplo. Tienes diferentes controles cuando estás a pie en comparación con cuando estás en un vehículo. Eso es porque estás a pie. Los controles serían un estado. Nadar sería otro estado. En un automóvil sería un estado, en una aeronave sería otro estado, etcétera Vamos a usar esto para saber cuándo estamos vivos y cuándo nuestra ranita ha sido aplaudida. Para crear esto, en lugar de usar la palabra clave Var, usamos enum El nombre de la enumeración, que dice va a funcionar como una máquina de estado, sólo voy a llamarlo estado Y luego en lugar de usar iguales o dos puntos, simplemente saltamos directamente a las llaves Tradicionalmente, por lo que siempre he visto, estos siempre van a estar en la capital, así que voy a tener un directo el drop a la siguiente línea, muerto. Estos son nuestros dos estados, vivo y muerto vivo será el estado predeterminado aquí. Vamos a crear una nueva variable llamada current state. Sólo vamos a declarar esto como un estado, uno de nuestros estados aquí. Bien, ahora con nuestro movimiento, todo lo que tenemos que hacer es verificar si el estado actual es igual a dos iguales estado vivo. Y luego tabular nuestro movimiento. Ahora sólo podemos movernos cuando estamos vivos. Ahora cuando morimos, tenemos que decirle que nuestro estado actual ahora se está poniendo a igual muerto. Si ejecutamos esto ahora, no deberíamos poder movernos. Una vez que morimos y nos aplastan, ahí tienes. Nos aplastaron todos y no podemos movernos. Ahora todo lo que nos queda es que sigamos adelante y creamos el reaparecer Vamos a crear funciones de Respawn una vez que tengamos vidas aquí Aquí es donde vamos a comprobar si al jugador le quedan vidas. esto lo vamos a llamar. Bien, vamos con ¿cómo respondemos? Vamos a necesitar que nuestra colisión vuelva a funcionar. Entonces vamos a necesitar llamar diferido en nuestra forma de colisión Y en lugar de configurarlo en deshabilitado, necesitamos configurarlo en false para que ya no esté deshabilitado. Necesitamos cambiar nuestra posición, autoposición y tenemos que restablecerla a donde va a estar nuestra posición inicial en este momento. Eso es 169.2 33. Sólo voy a copiar este valor muy rápido dentro de mi escena principal. Voy a agregar a. ¿ Ves a qué le cambiaron el nombre? Aquí. Aquí vamos. Se le cambió el nombre para marcar dos D, y sólo dame 1 segundo Te lo voy a levantar. Ahí vas. Entonces vamos a usar un marcador dos D. Voy a establecer su transformación por ahora. Yo sólo voy a pegar el valor en, voy a ponerlo en la misma posición en la que empieza nuestra rana. Voy a llamar a esta ubicación de generación de jugadores. Ahora, cuando respondemos podemos a la posición de uno mismo punto es igual a nuestra. Jugador que no va a llenar para nosotros. Solo voy a tener que escribirlo, posición de ubicación de desove del jugador Esto debería suceder de manera bastante instantánea. Entonces sigamos adelante y subamos a nuestro proceso aquí vamos a formar otro cheque, LF estado actual es igual a estado muerto. Podemos llamar repawn. Esto debería aparecer justo atrás en el principio donde empezamos Si te matan, parece que tenemos lo que es. Oh, eso es justo. Ubicación de aparición de jugadores, No podemos acceder a eso porque en realidad tenemos que subir al árbol para recordar quién es nuestro jugador, y el jugador no tiene acceso directo a esta ubicación de jugadores Aquí tenemos que subir, seguir esta línea y subir uno y luego eso nos lleva a este nodo dos D. Y entonces no hay dos D entonces tiene acceso a un engendro de jugadores Tenemos que subir en la forma en que podemos hacer esto son algunas formas en que podemos seguir adelante y hacer obtener nodo padre get. Este nodo get es solo una forma larga de escribir ese signo de dólar. Entonces dentro habría una cadena o la ruta directamente a PlayersPalocation Alternativamente, para mantener esto un poco corto, solo podemos hacer get node. Podemos pasar en las cosas. Podemos decir usar un punto que es igual a escribir uno mismo. O podemos hacer dos puntos que es igual a ese get parent que acabamos de borrar. Y se puede ver que como mucho podemos decir hacer esto con get parent player spawn location Bien, eso debería arreglar eso. Ahora cuando nos aplauden, ves que volvemos enseguida al principio en Todavía no podemos movernos porque sí tenemos que fijar nuestro estado actual. Recuerden que no podemos mover el estado actual igual al estado vivo. Y no sólo eso, tenemos que hacer que nuestra animación vuelva a ser nuestros ídolos Conseguiremos que nuestro sprite animado interprete a nuestro sprite ídolo. Ponlo de nuevo a la normalidad cuando lo ejecutemos. Ahora realmente no podemos decir cuándo conseguimos responder. Lo que voy a hacer antes que nada es que voy a usar calder y ponerle eso después de todo lo demás porque noto que nos están aplaudiendo dos veces Entonces ya veremos si solo moviendo esa línea, lo arreglaremos. No lo hace. Bien, no es un problema. Sólo tendremos que tener un pequeño temporizador, por ejemplo, después. Lo cual está bien. Bien, entonces veamos, ¿qué necesitábamos? Nuestro símbolo muerto no está funcionando muy bien porque morimos. Estamos reapareados instantáneamente. No podemos decir nada de lo que está pasando. Lo que vamos a hacer es dentro de esta reaparición, espera, hacemos lo que hicimos antes de usar get tree y crear ese temporizador Lo pondremos a 1 segundo. Eso se siente como mucho tiempo. Y la señal de tiempo de espera 1 segundo puede parecer mucho tiempo aquí en un viejo juego como este split. Y luego respondemos. Impresionante, Ahora estamos siendo aplaudidos varias veces ahí, lo cual es un poco desafortunado Yo sólo voy a bajar aquí y crear otro pequeño temporizador para 0.5 Y voy a ver con qué puedo salirme con la suya o lo pequeño que puedo reducir esto a través de pruebas 0.5 podemos salirnos con la suya. Voy a probar 0.2 Puedo salirme con la suya 0.2 Es posible que incluso podamos salirnos con la suya con 0.1 teniendo ese retraso realmente corto aquí. Ahí vamos. Ahora tenemos ese 1 segundo que nuestra imagen de muerte va a estar en la pantalla de nuestros pobres bronquios pequeños y destapados Y entonces sucede el resp. Impresionante. Ahora bien, si quisieras, podrías establecer este número en una variable aquí arriba para responder Tim, o responder el tiempo. Y ese será tu tiempo entre tus respuestas. Ahora para mí creo que sólo voy a dejarlo a la una. Eso no es un problema. No creo que alguna vez vaya a querer retocar eso Ahora bien, si te das cuenta aquí, cuando iba si me siento aquí mismo, cuando iba si me siento aquí mismo, podría que el auto me aplaste debajo sin multa, pero sí me aplasta ahí cuando giré hacia Tal vez quiera modificar un poco más mi posición Y. Tal vez quiera ajustar mi posición Y un poco más ahí. Pero eso va a reducirse a simplemente jugar con la posición y eso solo un poco más, pero sin problemas. Pero eso lo hará por esto. Ahora tenemos nuestro sistema de muerte y reaparición de jugadores sistema de muerte y reaparición No tenemos ninguna vida en estos momentos, pero llegaremos a esas vidas cuando lleguemos a nuestra sección. Pero con ese cuidado, había mucha información que repasamos. Espero que estés listo para pasar a la siguiente sección del juego. Eso es. 9. Muerte por agua: Bien, así que hagámoslo para que cuando saltemos al agua, muramos y tengamos que responder. Bueno, para hacer esto, podríamos hacer esto de varias maneras diferentes, pero la forma más fácil entonces, voy a decir que hagamos esto, ya que estamos usando un mapa de mosaico, es aprovechar eso y usar el mapa de azulejos para decirnos en qué azulejo estamos parados. Si estamos parados en el agua, entonces moriremos. Si no, estaremos bien para hacer esto. Vamos a entrar en nuestro script de capa. Cerrar por el otro ya que entraremos en nuestro script de jugador, lo que vamos a necesitar es una nueva variable para mantener nuestro mapa de mosaico aquí. Ahora no tenemos que poner esto en la parte superior, pero no tenemos que configurarlo constantemente en nuestra función. Vamos a hacer o bien todos vamos a conseguir esto y vamos a usar la palabra clave on ready. Todo lo que significa es que la variable que vamos a hacer sería la misma que si la pusiéramos aquí en la lista. Si dijéramos por ejemplo el número es igual a diez, sería lo mismo que si creáramos número y luego lo pusiéramos en diez aquí abajo dentro del bloque listo. Eso está todo listo significa que esto es útil para cuando queremos obtener nodos específicos que están dentro de nuestra escena En nuestro ejemplo, queremos ponernos en contacto con ese mapa de mosaico. Aquí vamos a hacer var tile map y vamos a establecer ese nodo igual a todavía padre. Por supuesto que actualmente se acaba de llamar mapa de mosaico. Ahora recuerda lo que dije creo que fue en el último video. En lugar de usar get parent aquí, podríamos acortar esto en nuestro get No, solo para hacer y tener el mismo equivalente de get parent Pero entonces voy a hacer eso solo para que las cosas vuelvan a ser un poco más cortas. Bien, así que ahora tenemos nuestro mapa de azulejos. Ahora lo que queremos hacer es que queremos comprobar en qué baldosa estamos parados. Voy a seguir adelante y crear una nueva función aquí. Voy a llamar a esta identificación de celda de verificación. Eso nos va a dar un giro vacío. Lo que esto va a hacer por nosotros es que básicamente lo usaremos para obtener primero la posición de la celda en la que estamos parados. Entonces vamos a decir mapa de barras Pausa, que se establecerá en nuestro mapa de mosaico. Local para mapear. Y entonces esto va a tomar una posición, y esa posición sólo va a ser la posición de nuestro jugador. Ahora local para mapear solo nos va a devolver una posición que será la posición de la celda en la que estamos parados. Las celdas serían cada uno de estos cuadrados anaranjados. Ya que estamos parados aquí inmediatamente cuando comienza el juego, nos diría esta celda de aquí, la ubicación de esta celda. Entonces la siguiente variable que vamos a crear va básicamente a entrar ahí y decir, bien, eso está hecho con este mosaico. Ahora, ¿qué es esa identificación? Y nos va a devolver uno para obtener ese ID, vamos a crear una variable aquí. Esto solo va a ser mapa de mosaico. Mapa de azulejos, Sí, vender ID de origen. Eso sólo va a tomar dos argumentos. El primero va a ser la capa en la que está la capa cero. El segundo va a ser la posición que ya obtuvimos de nuestro mapa, una variable aquí. Ahora bien, esta identificación ahora debería ser lo que sea en lo que estemos parados. Si entramos e imprimimos esta identificación, solo ejecutamos cheque, vendemos ID. Dentro de nuestro proceso, vemos que uno se imprime inmediatamente para que la mediana se imprima para la carretera y tres para el agua. Aquellos que ejecutamos esto, podemos echar un vistazo hacia abajo en la salida, vemos que uno se imprime para nuestra mediana, dos para nuestro camino. Si puedo llegar al agua aquí, vamos a tener uno para la mediana otra vez. Y luego tres cuando golpeamos el agua. Ahí vamos. Ahora sabemos que esto está funcionando perfectamente aunque vengamos todo el camino hasta aquí porque estamos comprobados para la capa cero, vamos a tres va a ser nuestra agua. Pues eso lo sabemos. Ahora lo que vamos a hacer es que ahora podemos I D es igual a tres y aquí es donde mataríamos a nuestro jugador. Entonces entra, llama aquí a nuestra función de muerte. Ahora cuando tocamos el agua, debemos morir. Ahí vamos. Ahora podemos morir cuando nuestro jugador toca el agua. Y esperar a que reaparecieran. Ahora bien esto es un, podría ser un poco agotador cuando lo estamos comprobando constantemente así No importa cuál sea la siguiente mejor ubicación para llamar aquí solo cuando estemos vivos. Pero aún mejor es que podemos llamarlo cada vez que realmente nos movemos. Entonces solo voy a agregar esto al fondo de todos mis movimientos aquí. Ahora cuando me muevo en cualquier dirección es la única vez que vamos a revisar. En lugar de enviar spam hasta el momento. Bien, salta arriba, muerto. Esperar respuesta. Ahora volvemos a movernos. Bien, así que ahora somos capaces de ahogar nuestra rana en el agua Y podemos dejar que nuestro ranita sea destrozado por un auto. Bien, entonces tenemos todos nuestros chequeos de muertes. Ahora todo lo que nos queda por hacer es que nuestras plataformas funcionen y luego obtener nuestros pequeños puntos de viento al final saltando a las ubicaciones correctas. Y luego configuramos nuestro headup display con nuestra partitura. Entonces creo que va a estar a punto de terminar. No creo que nos falte nada después de eso. Podría estar equivocado. Pero ahí lo tienes. Ahora podemos redondear nuestra ranita con el agua y ya sabes cómo obtener la identificación de cualquier ficha en la que esté parado tu jugador Bien, para hacerlo por éste. Los veré chicos en el siguiente video. 10. Plataformas acuáticas: Bien, sigamos adelante y configuremos nuestra plataforma. Una vez que tengamos nuestra plataforma instalada, lo único que podemos hacer o lo único que nos quedará para estas plataformas es básicamente simplemente intercambiar los sprites y hacerlos más y más cortos a través de mi plataforma aquí Yo sólo voy con sprites establecidos aquí que tenemos. Usando el registro para este ejemplo, el final medio y el otro extremo, end middle y start. Eso significa que estoy usando tres sprites aquí con mi escena principal La raíz de mi escena aquí es un cuerpo de personaje que he renombrado plataforma Podría cambiarle el nombre para iniciar sesión si quisiera. Eso tiene un área dos D con forma de colisión que cubre mi tronco. Aquí he conectado tanto el cuerpo entró como la señal de salida del cuerpo Una vez que tengas ambas señales conectadas, el script en tu plataforma debería verse así. Y estamos listos para agregar información o agregarle todo a ella. Con la forma en que vamos a hacer esto, también vamos a estar agregando cosas a nuestro guión también. La mayor parte de este trabajo estará realidad en el guión de nuestros jugadores. Por el momento, vayamos al guión de nuestros jugadores y agreguemos un par de variables que vamos a usar. primero va a ser plataforma, y eso va a ser un lean. Y eso solo va a decir o dejar que nuestra agua sepa si estamos o no a salvo porque estamos en una plataforma o si no estamos en una plataforma. Llamada la notificación de defunción. Vamos a conseguir nuestra plataforma o plataforma actual y ese es un cuerpo de personaje dos D que pasamos en. Entonces eventualmente nos pondremos a ello. Por ahora solo envíalo para saber que necesita una dirección de plataforma que es una falla entera que vamos a poner a cero aunque no debería importar. Nuevamente, vamos a usar la plataforma, la plataforma actual y la dirección de la plataforma como nuestras tres nuevas variables en nuestro script de jugador. Vamos a seguir adelante y bajarnos a nuestra identificación de celular de cheques. Vamos a agregar a nuestra declaración, así que vamos a decir ID es igual a tres plataforma es igual a falso. De esa manera decimos si estamos en el agua y no estamos en una plataforma, entonces mataremos al jugador. Tenemos nuestras condiciones establecidas ahí. Veamos por nuestro jugador. También vamos a comprobar, mientras estemos vivos, si nuestra plataforma actual no es igual a nula, que sólo es igual a ella. Por ahora será un objeto que se le asigne. Una vez que nuestro jugador se encuentra en nuestro registro, digamos que la plataforma actual no es igual a nula, entonces solo podemos seguir adelante y nuestra posición más es igual a 0. Entonces vamos a hacer una pequeña misa. Tenemos que abrir y cerrar nuestros paréntesis aquí porque vamos a usar el orden de las operaciones cuando se trata de nuestras matemáticas Vamos a decir dirección de plataforma tiempos 16. Vamos a usar esto ya sea como más uno o uno negativo, tal como lo hicimos con nuestros vehículos. Y multiplicar por 16. O vamos a estar moviendo 16 a la izquierda o 16 a la derecha. Y vamos a estar haciendo esto con el tiempo, así que vamos a multiplicar eso por delta. De esta manera no estamos basados en fotogramas estaban más basados en el tiempo. Entonces, lo único que nos queda por hacer es establecer la dirección de nuestra plataforma. Y podemos hacer eso a través de una función que queramos ir, Sí, vamos por una dirección establecida. Y eso va a tomar un argumento de un entero no devuelve nada. Todo esto va a hacer es que va a establecer la dirección de nuestra plataforma igual a. Bien, así que ahora podemos dirigirnos a nuestro script de plataforma. No necesitamos este bloque listo, podemos eliminarlo dentro de nuestro proceso. Queremos que nuestro registro, en mi caso, siga en movimiento. Voy a seguir adelante y hacer posición más es igual a 16 veces delta. Eso va a moverlo constantemente hacia la derecha cuando entremos, cuando nuestro jugador entre al área. Entonces vamos a establecer la plataforma aquí en true. Y vamos a configurar nuestra plataforma actual a nuestro registro aquí. Mi plataforma aquí. Voy a decir plataforma corporal y ponerla en verdad. Ahora estamos en la plataforma. Cuerpo Legos Curva. Plataforma. Sí. Plataforma actual equivale a L. Cuando el cuerpo salió, vamos a hacer lo contrario Así que vamos a establecer en lugar de verdadero, lo pondremos en falso en lugar de vender. Ponlo a no. Bien, entonces lo que estamos haciendo hasta ahora es cuando nuestro frente salta sobre el tronco que actualmente se mueve a la derecha en todo momento. Mientras está haciendo ese reinicio, nuestro registro actualmente está moviendo el derecho por 16 a lo largo del tiempo y no basado en cerebros. Ahora cuando nuestro jugador entre al área de nuestra plataforma aquí en la que puedan pararse, vamos a establecer la variable de plataforma en nuestro jugador a true de esa manera cuando revisemos el ID de celda para ver si estamos parados en plataforma de agua será cierto y nuestro jugador no será asesinado. Entonces estamos configurando la variable de plataforma curva de nuestro jugador para la plataforma actual igual a self, el cuerpo del personaje aquí. Eso es conmovedor, representando nuestra plataforma. En base a eso, podremos mover a nuestro personaje aquí. La plataforma actual no es igual a nula. Si estamos en una plataforma actual, entonces vamos a mover nuestra rana en la misma dirección, a la misma velocidad. Lo último que nos queda es llamar realmente a esta función que creamos, Establecer dirección. Cuerpo, establecer dirección, eso toma un entero, que luego nos moveremos hacia la derecha, Usaremos uno positivo. Ahora si seguimos adelante y agregamos la plataforma a nuestra escena y la ejecutamos, como ves, ahí está nuestro registro y si saltamos sobre él, oh, terminamos muriendo. Podría ser necesario actualizar este piso. Un momento ahí, uno nuevo, de vuelta. Muévete ahí abajo. Dale otra oportunidad a papá. Bien, me estoy muriendo. Entonces mis señales podrían necesitar ser reconectadas Voy a desconectar eso Y reconecté y haré lo mismo con mi salida Desconectar y volver a conectar la salida de mi cuerpo y ya veremos si ese fue el problema Bien. Oye, creo que veo lo que me perdí aquí y estamos recibiendo esta información un poco demasiado rápido. Entonces antes de que tengamos nuestra declaración F dentro de nuestro check cell ID, voy a usar una wait y hacer lo que hicimos antes con get tree create timer. Y sólo vamos a tener una pequeña pose ahí de 0.1 y obtener esa señal de tiempo de espera. Eso debería arreglar eso para nosotros. Aquí vamos. Ahora podemos saltar a nuestro pequeño tronco y estamos bien. Podemos saltar de un lado a otro y estar bien y nos estamos moviendo y en cuanto saltemos, estamos bien para correr de regreso al otro lado si lo queremos todavía. Si saltamos al agua, seguimos adelante y morimos. Bien, ¿cómo podemos hacer que este guión sea un poco más, supongo. Un modular en cierto modo, una manera que va a ser más amigable para que podamos cambiar constantemente si tenemos dos sprites, tres sprites, un sprite, qué tan grande es nuestra forma de colisión y tener todo Así como supongo establecer nuestra dirección para que podamos tener algunos moviéndose a la derecha y algunos moviéndose a la derecha o algunos moviéndose a la izquierda. Bueno, vamos a seguir adelante y exportar una dirección de un entero que a cero. Por defecto, tenemos la palabra barra ahí dentro. Ahí vamos. Entonces ahora quiero ir a mi plataforma. Puedo cambiar esto a uno en lugar de cero. Podemos tomar dirección y pasar eso aquí cuando llamamos a set direction plus equals. Y podríamos hacer lo mismo aquí donde tenemos dirección tiempos 16. Podemos seguir adelante y verificar y asegurarnos de que todo siga funcionando. No hemos roto nada. Nuestro candado sigue moviéndose. Podemos saltar sobre él y Bien, así que aún no hemos roto nada. Eso es genial. Veamos, ¿qué más necesitamos? Bueno, supongo que eso sería todo. Y podemos simplemente seguir adelante y configurar o crear todas nuestras diferentes plataformas ahora usando el mismo script y luego cuando creamos un sonderal igual que hicimos con nuestros camiones Bien, enseguida vuelvo. ¿Por qué crear un par de estos? Bien, así que he seguido adelante y he hecho tortugas largas también y solo tiré algunas aquí en la escena Y como veis, sigue adelante en este tronco, salta a las siguientes tortugas, Siguiente, salta a la derecha, arriba sobre mi tortuga, salta sobre el tronco, y estoy listo para saltar a lo que sería nuestro espacio eólico Bien, nuestras plataformas ciertamente están funcionando bien. Ahora es genial. Quiero saber que sí agregué peso para 0.1 en el cuerpo ingresado antes de cambiar la plataforma en nuestro script de plataforma. Yo sí quiero tomar nota de eso ahora. Todo lo que necesitamos ahora son nuestros patrocinadores. Bien, así que sigamos adelante y creemos esos. vamos a hacer efectivamente como los de nuestros camiones aquí. Vamos a seguir adelante y conseguirnos o sumar un No dos D, lo llamamos patrocinador de plataforma. Seguiremos adelante y empezaremos a alinear estos. Entonces tengo uno ahí, tengo uno ahí, tengo uno, parece que está ahí. Bien. Esa mirada incluso hace eso. En realidad es un lugar un poco raro. Sí, ve ahí. Y entonces necesitamos un par para el otro lado, para nuestros obstáculos, tomarlo y uno por hora Todo bien. Entonces esos parecen algunos buenos puntos de desove. Estos un poco cercanos atrás. Esos se levantan un poco. Vamos a tener algo parecido a nuestro desove de camiones. Voy a seguir adelante y sólo copiar nuestra camioneta. A ver, ¿esos van a ser del mismo nombre diferente, el vehículo? Bastante. Probablemente podríamos salirnos con la suya con solo usar nuestro guión para camiones aquí. Nuestras plataformas se llamarían vehículo, pero creo que quiero hacer unas distintas porque no me gusta el tiempo de espera. No creo que eso sea bueno para las plataformas. Sólo voy a usar eso como mi base. Voy a dar click en mi plataforma Spon agregar un nuevo script aquí Voy a seguir adelante y sólo pegaré en el guión del vehículo. Voy a llamar a estas plataformas. Cambiaremos a plataforma. Do instanciate for platform instance self at child I wait time, mira aquí es donde va a entrar el problema ver, vamos a ir 1-2 y a eso le agregaremos tres. Veremos cómo funciona eso. Entonces cambiaremos esto de vehículo de generación a plataforma de desove Esta de aquí va a ser nuestra escena de plataforma de escenas de registro. El siguiente otra vez, va a ver, seguir adelante y simplemente arrastrar mi guión hacia arriba y adjuntarlos a todas mis plataformas. Y dos es mi escena de registro, tres es la plataforma de registro. Y entonces 45 será mi. Bien, así que si ahora nos deshacemos de estas plataformas, mueve a mi jugador para que quede debajo de la parte inferior para que la C pueda sentarse arriba. A ver si estos funcionan. Si, cruza todo el camino, ahí están mis tortugas. Parece que necesitamos cambiar esos tiempos de espera. Eso va a hacer que sea extremadamente fácil para nuestro jugador simplemente hacerlo a través. Es por eso que queríamos usar un script diferente al de nuestro camión porque vamos a necesitar tiempos de espera completamente diferentes para las plataformas. Bien, así que probemos más diez. Esto nos dará una variación de 11.12 segundos. Oh, ¿por qué me metí entre estos autos? 11.12 segundos podría ser una brecha demasiado pequeña en este caso. En este punto sólo estamos para ver qué encaja mejor aquí, tal vez intentemos 5.6 Voy a saltar todo el camino a través y veremos cómo es este spread. Pero en este punto, simplemente estás modificando tus números para ver qué se ve bien para tus plataformas y qué se ve bien para tus camiones Solo quiero estar seguro de que estos no van a ser completamente consistentes todo el tiempo y no parece que lo sean, lo cual es genial. Alternativamente, si querías codificar el un poco más o hacerlos diferencia, específicamente ven aquí y haz tiempo de espera aquí arriba Y lo haremos un flotador no un piso. Alternativamente, podrías hacerlo aquí arriba y eliminar esta línea por completo. Si querías tener una cantidad específica, querías tener control sobre la cantidad exacta de tiempo que esperaste por respondedor. Puedes hacerlo de esa manera, pero voy a seguir con este poco de aleatorización aquí ¿Sabes qué? Voy a ir diez ahí. Creo que eso lo hará por esto. Porque ahora tenemos a nuestros respondedores, tenemos nuestras plataformas Todo parece estar listo y funcionando. Podríamos cruzarlo. Supongo que a continuación podemos hacer nuestra victoria, nuestra pequeña victoria allá arriba cuando saltemos a la zona correcta. A ver, ¿me gustan estos números? Y saltamos al agua, morimos. Impresionante. Creo que por ahora me gustan estos números, al menos. Bien, eso es todo. Terminamos con nuestro columpio de plataforma y montándolos. A continuación cubriremos el área donde saltamos a nuestra zona de viento y ahí desovamos en nuestra ranita hogareña Bien, los veré en la próxima. 11. El espacio para ganar: Bien, para la zona de viento, puedes ver que aquí tengo una nueva escena. Y eso es solo un área dos D con forma de colisión y derecha dos D que solo tiene mi rana casera aquí como textura. Está desactivado o visible está deshabilitado por defecto. Puedes hacerlo haciendo clic en el pequeño globo ocular aquí. El espacio de viento tiene un guión así como una señal de cuerpo ingresada conectada a él para el guión simplemente, todo lo que vamos a hacer es tener vino corporal puesto en verdad. Zona de viento es una nueva variable que se ha agregado al cuerpo del jugador. El estado actual se establece en estado corporal. Cuando tenemos un nuevo estado agregado aquí, ahora tenemos un muerto vivo. Y cuando entonces todo lo que hacemos es obtener nuestro sprite dos D, obtener la propiedad visible, establecerla en true en nuestro reproductor para evitar cualquier problema y arreglar un pequeño bug Saqué justo aquí, LF estado actual es igual a estado muerto. Pongo nuestro peso, nuestro 1 segundo de peso aquí y lo saqué de la función de repawn que solía estar aquí en la parte superior Simplemente lo saqué y lo trasladé ahí arriba a nuestro estado. Eso debería ser todo lo que tenemos que hacer ahora. Podemos ir a nuestra espalda a nuestra escena principal e importar nuestra zona de viento, nuestro espacio eólico. Sólo se lo mordió ahí dentro. En cada una de nuestras pequeñas ranuras. Es posible que tengas que hacer algunas pruebas para asegurarte que tu rana no la esté tocando prematuramente para activar el viento Aquí tengo la mía cubriendo todas mis áreas. Si quieres verificar zonas de colisión y todas estas, estas áreas de depuración, simplemente nos dirigimos al menú de depuración en la parte superior. Y tendrás la opción de mostrar formas de colisión visibles si lo haces cuando lo ejecutas, verás que aquí podemos ver todas nuestras pequeñas cajas de colisión para todo. Ahí vamos. Si lo estás activando accidentalmente o podrías estarlo, adelante y habilitarlo Échale un vistazo tú mismo. Verás una vez que hagamos nuestro camino, deberíamos tener otro registro. Ahí está. Podemos activar nuestro viento Aviso que no nos quedamos muertos impresos en nuestra consola ahí abajo. Cuando nuestro estado es nuestro estado actual, el estado gana, respondemos y luego ponemos a la zona de viento de nuevo a caídas. Ahora también estamos usando zona de viento. Abajo en nuestra identificación celular, agregamos otra condición aquí. Si ID es igual a tres y plataforma es falsa, si estamos en el agua, no estamos en la plataforma y nuestra zona de viento no es cierta. O se puede decir que zona de viento es igual a falsa, esa sería otra forma de escribirla. Entonces podemos llamar a la muerte. Si no estamos en la zona de viento, no estamos en la plataforma y estamos en el agua. Entonces matamos a nuestra ranita. De lo contrario, nuestro estado de viento debería activarse y solo podemos hacer una respuesta sin matar a nuestro jugador. Todo bien. El espacio de viento es muy sencillo, muy fácil de hacer ahí. Ahora bien, ya sea que dejes la rana aquí habilitada, todo el tiempo depende de ti. Si quisieras, podrías entrar y agregar un nodo temporizador. Podrías entrar aquí y agregar un temporizador y luego configurar esto en, no lo sé, diremos 5 segundos. Entonces podemos entrar, o mejor dicho podemos conectar su señal de tiempo de espera a nuestro espacio de viento en tiempo de espera, estableceremos nuestro sprite dos D visible a falso Justo después de convertirlo en verdad, podemos comenzar el tiempo. Podemos poner en marcha el temporizador. Si tuviéramos que hacerlo de esta manera, que depende de ti, aquí es donde va a entrar un poco de diseño. Qué auténtico quieres y qué tan personalizado quieres hacer tu juego, etcétera Entonces mis cerraduras Y eso empieza a desovar , así puedo subirme aquí Esperamos a cruzar. Si usamos la rana Tim er aquí, nuestra ranita hogareña va a aparecer para el viento. Después después de unos segundos, y va a desaparecer. Entonces lo ves ahí arriba, y ahí va, desaparece. Si quisieras desaparecer así , así es como lo harías. Simplemente podemos agregar ese temporizador a su espacio de viento. Ponlo en el inspector a cuánto tiempo quieres que sea. Inicie el temporizador después de configurar el sprite para que sea visible cuando el temporizador se agote, conéctelo a caídas Bien, eso lo hará por nuestro espacio eólico. Y solo tenemos que echar un vistazo a nuestro headup display o hud o pegajoso, y mirar a crear un Bien, eso es, y te veré en la siguiente. Casi terminamos de crearnos un clon Frogger 12. Solución de fugas de memoria: Bien, no vamos a agregar ninguna característica. En realidad vamos a arreglar lo que sería un utilete crucial, especialmente en un juego más grande. Ahora lo que tenemos es una fuga de memoria en nuestro juego. Tenemos esto desde dos puntos técnicamente fueron alrededor de diez. Pero echemos un vistazo, si seguimos adelante y jugamos a este juego, y solo voy a sacar esto aquí, voy a tener que deslizar a los chicos plateados. Se puede ver todo desove fuera de la pantalla y vienen, solo mira que esos autos van, y las plataformas arriba harán lo mismo Van a seguir adelante y van a ir para siempre. Nunca van a parar. Esto es lo que se llama una fuga de memoria. Todos, lo dejaré ahí justo para que podamos verlo más fácilmente. Pero si hago una pausa en esto y hago clic en la pestaña remota aquí en la parte superior de nuestro árbol de escenas, que solo está disponible cuando el programa se está ejecutando. Golpeamos a distancia, echemos un vistazo a todos estos autos solo en un generador que aún existe aunque probablemente no necesitemos a la mayoría de ellos Lo mismo con todos los demás reproductores. Nuestra plataforma, nuestros generadores de plataformas no son tan malos porque tienen una tasa de generación mucho más lenta que los Pero van a seguir para siempre y nunca van a desaparecer. Nunca van a liberarse de la memoria. Eventualmente tendrás este pequeño juego que podría tomar 128 gigs de Ram solo para seguir jugando Tomaría mucho tiempo, pero eventualmente todo sumaría. Arreglemos esto crucial, supongo que lo llamamos bug. Es muy sencillo para nosotros hacerlo. Sólo tenemos que poner una declaración if dentro de ambos scripts. Ahora los números que escojas aquí, por supuesto, dependerán de tu proyecto. Pero por lo que he probado y basado en nuestra vista de ventana, un conjunto de números que voy a usar aquí. Lo que vamos a hacer es ahora mismo que estoy dentro del script de mi plataforma y dentro del proceso aquí, solo voy a comprobar si la posición global, ahora la diferencia aquí entre y posición global es si entramos aquí a nuestra plataforma, por ejemplo, esta va a ser nuestra posición local, ¿verdad? Así que solo la propiedad de posición. Pero cuando estamos en nuestra escena principal, por encima de todo lo demás, esta va a estar a cargo de nuestra posición local que vemos en pantalla, independientemente de quién sea el padre de familia. Por ejemplo, si echamos un vistazo a nuestro espacio aquí, podemos ver que su posición en nuestra pantalla principal aquí es a las 24.45 Esto va a ser más un espacio global, mientras que si entramos aquí, podemos ver nuestro espacio eólico, nuestra posición local aquí es a las 00 Se trata de dos números diferentes. Ojalá, eso tiene sentido para usted cuanto a por qué estamos usando la posición global aquí. Por supuesto, queremos la propiedad X porque eso va a controlar nuestra izquierda y derecha. Si nuestra X es mayor 436, eso es alrededor de 100 píxeles fuera de la pantalla a la derecha, en función de dónde están nuestros patrocinadores. Esto sigue dando suficiente espacio para ir más allá de eso. Si nuestra posición global x es mayor que 4,436 o la posición global x es menor que 100 negativa, vamos a unos 100 píxeles fuera de la pantalla en dirección izquierda y derecha Si alguno de esos es cierto, todo lo que vamos a hacer es autoliberarnos. Muy bien, entonces ahora deberíamos ver el carácter de nuestras plataformas, deshabilitándonos entre sí o borrándonos de nuestra memoria Esta es sólo una solución potencial para algo así. Otra solución si, dependiendo de tu juego, por ejemplo, si estás haciendo algo así como un infierno de bala, vas a querer ir con algo llamado pooling de objetos Y podemos hablar de pooling de objetos en video futuro. Bien, así que voy a bajar a mi lugar aquí, a mis vehículos. Veamos, cuál estamos buscando aquí En nuestro guión de vehículo. Ahí vamos. Así que no en nuestro lugar en un guión de vehículo. Y lo mismo asignado al proceso va a pegar en el mismo código. Si la posición de subrayado global hace mayor que 436 o la posición de subrayado global x, es menor que negativa 100 self Ahora bien, si sigo adelante y ejecuto esto, y estamos en la escena correcta, nuestra escena principal aquí. Voy a seguir adelante y pausar esto muy rápido. Construye nuestro árbol remoto, podemos echar un vistazo a nuestros reproductores regulares aquí donde van a estar los autos Aquí está mi ventana de juego para sacar eso. Si sigo adelante y dejo que esto juegue. Bien, tenemos algunos autos desove netos aquí. Esto lo podemos ver aquí. Sólo voy a extender la ventana a la derecha. Tengo un error ahí. Parezco haber agarrado a Gato en su lugar. Ahí vas. Se puede ver que están en el control remoto así como visualmente ahí. Una vez que vas lo suficientemente lejos, en realidad se están borrando por completo. Ahora todos nuestros objetos están siendo manejados y solo podemos tener potencialmente tantos o tantos en nuestra escena en un momento dado. Se puede ver las plataformas en la parte superior haciendo lo mismo, pasando las mismas cosas fuera del lado izquierdo de la proyección. Lo que no podemos ver ahora mismo. Ahí vamos con esa simple, técnicamente dos líneas de código. Tenemos nuestra memoria, nuestra memoria, solo dejando mi mente ahora mismo, fuga de memoria. Es gracioso ya que estamos hablando memoria, pero ahí tienes. Con eso, hemos solucionado nuestro problema de fuga de memoria. Te voy a mostrar un problema aquí. En realidad no es un problema, sino solo para mostrarte un ejemplo más, aquí vamos a la plataforma. Si usamos posición en lugar de la posición global, vas a ver un ejemplo aquí. Si echamos un vistazo, vas a ver, sobre todo con las tortugas, vas a ver a las tortugas desovar justo por esta zona de aquí ¿Todo bien? Míralos. Están entrando cuando estamos usando esa posición local, ahí tienes. Ya ves que están desapareciendo demasiado pronto. Apenas llegan a la pantalla y desaparecen. Se acercan por aquí y se han ido. Es por ello que tenemos que usar la posición global. Entonces solo quería demostrarlo un poco más visualmente para ti. Ahí, no volver a dibujar Q libre, igual que dije, destruye por completo el objeto y lo saca de Bien, así que ahí tienes. Ahí está cómo podemos arreglar esa memoria. Bien, a continuación pasaremos al marcador y al hud, sumando vidas de jugadores y todo eso ahí dentro 13. Sistema de puntuación: Muy bien, en el video de hoy, vamos a seguir adelante y sumar el sistema de puntos. Como puedes ver aquí, estas son las reglas por las que vamos. Diez puntos por cada paso, 50 puntos por cada prog que entra y 1,000 puntos por cada vez que obtenemos cinco procs Eso es lo que debemos tener en cuenta cuando hacemos esto. Voy a comenzar con la creación de un script global, también conocido como singleton o auto load Para eso, sólo voy a hacer click derecho en mi sistema de archivos y crear un nuevo script. Y voy a llamar a esto, solo voy a mantenerlo simple y volverme global. Para activar esto, subimos a la configuración de nuestro proyecto. A ver, ¿tenemos eso capturado ahora mismo? Nosotros lo hacemos. Vamos, puede que sea un poco grande. Ahí vamos. Y entramos en el autolite, nuestro guión global Obtendrá el nombre global por defecto, podrías cambiarlo, pero no veo por qué necesitamos agregar. Y ahí vamos. Ahora podemos usar este script en cualquier parte nuestro código ahora mismo, creo que ahí es donde vamos a mantener nuestra partitura. Ahí es donde vamos a mantener nuestro puntaje. Si cerramos eso, ya podemos abrir nuestro guión global haciendo doble clic en él para darle un ejemplo. Aquí podemos bajar aquí, podemos crear otra función aquí llamada print score. Tengo una variable aquí arriba llamada score. Es un número entero que dice que tienes 50. El objetivo de esta función es simplemente imprimir la escuela con que sea global. Podría entrar aquí en el guión de mis jugadores. Yo sólo podría escribir ese nombre que teníamos para el que me fui, que se llamaba global para la capital. Entonces podríamos usar la función que acabamos de crear, imprimir partitura. Entonces cuando ejecutemos esto, veremos esa partitura impresa aquí en nuestra salida. Un script global contiene variables y funciones que podemos alterar y usar dentro de nuestro juego, en cualquier guión en cualquier momento. Vamos a seguir adelante y podemos eliminar todas esas cosas y establecer la puntuación a cero por defecto. Vamos a seguir adelante y tener una función llamada update score. Todo lo que vamos a hacer aquí, vamos a estar imprimiendo nuestra partitura. ¿Nos mostramos en pantalla en este video? Ahora guardaremos la visualización en pantalla para cuando empecemos a cubrir el Hud Aquí sólo vamos a seguir adelante e imprimir la partitura. Cuando esto sucede, la puntuación de actualización tomará la nueva cantidad para agregar la puntuación que hacemos más es igual a nueva cantidad que podamos hacer. Bueno, primero asegurémonos de que estas cosas funcionen. Cada vez que saltamos obtenemos diez puntos. Todo lo que vamos a tener para agregar esto a nuestro movimiento y a todas nuestras piezas. Entonces iremos a la actualización global, puntuación de actualización, porque aún no la guardamos. Actualizar puntaje, y pasar en diez puntos. Y seguiremos adelante y copiaremos esto en todos nuestros movimientos y seguiremos adelante y saltaremos en el juego. Y a medida que nos movemos, deberíamos ver constantemente se agregan diez puntos. Ahí vamos, 1030, 4050, 6070, 8090, 10110, etcétera Entonces esto está funcionando todos nuestros botones. Fantástico. Podemos simplemente subir nuestros puntos así. Los puntos aquí son increíbles. Simplemente seguí adelante y me deshice de las otras impresiones. ¿Hay falsos? Solo para aclarar eso, hazlo un poco más fácil para ti. A medida que avanzamos y corremos ahí y corremos por ahí, puedes ver en nuestra salida nuestro número sube cada vez que nos movemos. Ahí vamos. Está funcionando fantástico. Ahora, también tenemos que hacer un seguimiento de cuántas ranas obtenemos en total Ranas. No suena como la cantidad que queremos. Lo llamamos un combo ranas. No lo sé. Vamos a llamarlo la rana múltiple. Multi frog, es un int, comienza en cero cada vez que agregas a la rana múltiple. Bien, hacemos multi rana más igual a uno. Recuerdo que con cada combo de cinco, conseguimos mil puntos. Aquí es donde vamos. Multi rana menos de cinco. Entonces sólo voy a tocar esta línea de aquí. Entonces solo haremos puntaje más igual a nueva cantidad. Hacemos puntuación más igual a 1,000 obtendremos 1,000 Si conseguimos cinco adentro, eso solo va a ser si nos metemos en un área de anotación. En realidad no podemos aumentar nuestro multirot, ir a nuestro espacio de viento y entrar en nuestro cuerpo entrado Aquí es donde vamos a incrementar ese número. Vamos a ser multirana global más igual a uno. Y sólo vamos a pegarlo ahí dentro, dentro de nuestro espacio de viento. Entonces también vamos a llamar a nuestro puntaje de actualización global de actualización. Y vamos a pasar en 50 porque conseguimos entrar una rana, ya que estamos aumentando nuestra multi rana antes de actualizar nuestra puntuación. Así que estamos actualizando nuestro multi frog y one. Entonces comprobaremos básicamente si esa es nuestra quinta rana o si esa no es nuestra quinta rana, entonces haremos esto. Sólo vamos a sumar en ese 50. De lo contrario agregaremos 1,000 Y luego en realidad necesitamos establecer multi frog de nuevo a cero porque eso tiene que restablecerse. A ver si esto funciona. Bien, estamos todo el camino hasta aquí. Sigamos adelante y entrémonos en la zona. Ya estamos arriba en el tronco, esperamos a que estas tortugas lleguen por pequeñas tortugas en la rana tortuga en las Entonces vamos a tener 290. Saltamos aquí. Ahora entramos en zona deberíamos saltar hasta 340. Subimos a 350 en esa porque también nos mudamos al mismo tiempo, llegamos a recordar que conseguimos nuestros diez puntos. Haz esta rana o trabaja de esa manera. En realidad ha pasado mucho tiempo desde el plato, así que no estoy 100% seguro de eso. Si ese es el caso, entonces para resolver este problema, por supuesto podemos simplemente sumar 40 y luego contará eso más diez de nuestro salto ahí dentro. Si fuéramos a seguir adelante y saltar en eso, ahora parecería un plus 50 al que como dije, no estoy seguro si cuenta ese salto real o en el juego real. A lo mejor es algo a lo que podamos echar un vistazo. A lo mejor puedes dejar eso a elección personal sobre si quieres o no permitir que eso cuente efectivamente Froggy murió Dijo que parece que tengo un Brad Frog, aquí vamos. Parece que se ha metido en un pequeño bicho saltando en un lugar extraño. Ahora mi pequeño mantel está bien. Esto nos pone a las 05:50 así que este próximo trabajo nos pondrá en 600 Ahí vas. Depende de ti si quieres hacer 40 o 50 aquí. Lo que básicamente se reduce a si quieres o no contar eso como tu principal, cuenta ese diez como tu principal cosa. Y solo recuerdo que probablemente deberíamos meter cinco ranas ahí para probar esto Podría seguir adelante y simplemente avanzar rápido en el video aquí en esta parte solo para que podamos conseguir cinco adentro. Muy bien, lo he pasado e hice mi bucle varias veces, cinco drogas, y seguimos adelante, llegamos hasta 4,800 puntos Impresionante. Parece estar funcionando perfectamente bien. Nuestro sistema de puntuación funciona. Obtuvimos nuestro plus 40 o 50, dependiendo de cómo enviaste con si vas a contar o no el paso extra como parte de tus 50 o si quieres hacer un 50 adicional. Encima de eso, tenemos nuestros diez puntos por paso. Aquí tenemos nuestro plus 1,000 cada vez que obtenemos cinco ranas multi Cada vez que rescatamos a cinco de estas ranas, todos conseguimos configurar nuestra puntuación Supongo que a continuación solo podemos echar un vistazo a cómo mostrar esto y comenzar a poner nuestro head up display. Hugo todo listo. 14. Puntuación de HUD en juegos: Bien, sigamos adelante y comencemos a crear el capó de juego para nuestro juego de hoy. Vamos a seguir adelante y sólo conseguir el puntaje aquí arriba en nuestra pantalla. Para esto, acabo de ir a mi No TD y agregué en una capa de lienzo. Si entro aquí, capa de lona es lo que estamos buscando, no lona creció capa de lona básicamente va a ser todo lo que está en la cima de nuestro juego sin importar dónde esté en nuestra escena. Entonces esto es, como te imaginarías, donde van todos tus elementos calientes. Si estás jugando digamos, Dark Soles, aquí es donde están tus cuatro cuadrantes en la parte inferior izquierda Por ejemplo, si estás jugando Sky Rim, tus tres barras de resistencia de salud y Mana, W estará al otro lado de la parte inferior y así sucesivamente Para nosotros solo para hacer la partitura aquí en mi capa Canvas que renombré a Guy I Stanford Graphical User Interface Seguí adelante y agregué en dos etiquetas, Dos etiquetas solo regulares aquí. Y lo llamé Score label, solo tiene la palabra score en ella y score text que solo tiene cinco ceros Ahora el texto de ambos era demasiado grande para este proyecto. En ambos, entré en el inspector hacia abajo al tema anula el tamaño del bono Mi tecnología de puntuación está en la talla diez y la etiqueta de puntuación está en la talla 12. Ahora podrías notar que tengo una barra negra extra abajo en la parte inferior. Subí a la configuración del proyecto y en la ventana de visualización, seguí adelante y actualicé la altura de mi ventana gráfica, 240-256 Ahí tienes Ahí lo puedes ver. Entonces agregué 16 píxeles adicionales para poder agregar el negro en la parte inferior porque ahí es donde nuestra barra de salud va a terminar abajo, o nuestra barra de vidas en el siguiente video. Muy bien, una vez que tengamos nuestras dos etiquetas aquí en nuestra capa de lienzo para la partitura, no puedes averiguar dónde cambiar el texto para eso, es solo seleccionar tu etiqueta y dentro del inspector en la parte superior verás la sección ahí para texto, Escribe partitura para uno y pon cinco ceros para el otro Esto nos dará una buena idea de la cantidad de espacio que vamos a necesitar. Muy bien, ahora para que esto funcione, todo lo que tenemos que hacer es agregar una línea a nuestro script global aquí, fuera de nuestro bloque L S y nuestro bloque. Fuera de ambos. Independientemente de la cantidad de puntos que agreguemos, necesitamos obtener nuestra etiqueta de texto de puntaje. Establezca el texto para que realmente muestre nuestra escuela ya que venimos de nuestro guión global. Si sigo adelante y ejecuto esto por un momento y luego solo postulo, cambiar a remoto global está aquí No tiene acceso a nada. De hecho, tenemos que subir al árbol una vez para llegar a enraizar y luego bajar a nuestras dos D, luego bajar a nuestra pegajosa Entonces a partir de ahí podemos agarrar nuestro texto de partitura ya que tenemos que subir y luego bajar podemos seguir adelante y simplemente obtener nodo. Y recuerda, esto toma una cadena como argumento. Y como pueden ver, podríamos simplemente escribir todo el camino solo Roth, dos D en este caso Pero aún así, ya que solo subimos a un nivel, sigue siendo más rápido si solo hacemos dos puntos solo para subir uno y luego bajamos a nuestro nodo dos D. De ahí accedemos a nuestra Y ahí, obtenemos nuestro texto de partitura, si te lo estás preguntando. Solo estamos siguiendo esa línea blanca desde nuestro global aquí donde estamos escribiendo este código. Tenemos nuestros dos puntos, que es lo mismo que escribir conseguir padres. Entonces subimos uno a la raíz. Entonces sólo estamos siguiendo cada parada con esta línea blanca. Vemos que esta línea blanca baja y luego va en puntos. No dos D, ahí es donde hemos escrito ahí. Seguimos la línea hacia abajo otra vez, se detiene y apunta a la Y. Lo escribimos para la siguiente parada. Entonces bajamos y finalmente apunta a nuestro texto de partitura. Y ahí lo terminamos. Siempre que estés en delts, adelante, haz clic en el nodo que estás buscando Simplemente siga esa línea blanca para obtener su ruta en el texto de la partitura. Derecha, este tipo de etiqueta objeto, vamos a obtener acceso a la propiedad text del mismo. Déjame sacar el juego de tu pantalla ahí. Simplemente miré y vi que estaba cubierto. Nuevamente, usamos dos puntos. Lo mismo que conseguir padre. Eso nos lleva hasta, hasta el nodo raíz y solo seguimos estas líneas blancas, baja puntos en el nodo dos. D baja puntos, luego se reduce a puntos en el texto de puntuación. Y sólo estamos siguiendo ese camino aquí todo el camino hacia abajo. Queremos la propiedad de texto de la misma y vamos a establecer eso. Vamos a ponerla a nuestra puntuación. No obstante, si solo hacemos esto, todos esos ceros van a desaparecer Como ves, realmente no podemos hacer mucho con la partitura en este aspecto, lo que vamos a hacer es que realmente la vamos a convertir en una cadena con STR y luego dos paréntesis Podemos escribir nuestra partitura dentro de eso Esa partitura ahora va a ser tratada como una cadena en lugar de un entero. Ahora podemos hacer pad, y podemos empañarlo con ceros Pasamos en el número cinco. Vamos a tener cinco dígitos como vemos aquí, 12345. Entonces vamos a tener estas 50 ranuras. Nuestro puntaje va a cambiar, pero aunque solo diga diez, todavía vamos a tener los cinco espacios disponibles visualmente para nosotros. Va a quedar igual que lo haría en una sala de juegos. Y en un típico sistema de puntuación. Si seguimos adelante y jugamos esto ahora podemos ver nuestro marcador ahí en lo más alto. Si salimos por ahí, deberíamos ver nuestro puntaje aumentando como debería. Eso es un montón de autos allá arriba. Ahí vamos. Sigamos este largo. Aquí vamos. Vayamos a buscar algunos puntos. Monta el tronco, monta las tortugas, monta el tronco. Y podemos montar a las tortugas, montar el tronco y saltar a casa gratis Bien, entonces nuestro sistema de puntuación parece estar funcionando perfectamente bien. Se muestra con precisión. Es fantástico. Bien, lo último que debemos hacer en este momento es, bueno, en este video, nada. Pero en el siguiente video, vamos a seguir adelante y configurar nuestras vidas para que cuando morimos perdamos una vida. Y eso va a reflejarse visualmente en la pantalla al mostrar cuántas vidas nos quedan en realidad. 15. Vidas de HUD: Bien, sigamos adelante y sumemos en nuestras vidas ahora. Nuestras vidas van a tener seis vidas como máximo aquí. Y vamos a entrar en nuestra capa de lona gooey. Vamos a agregar un nuevo nodo, sé que no es visible. A tan solo 2 segundos. Ahí vas. Vamos a buscar la palabra textura. Estamos buscando la barra de progreso de textura. Todo bien. Voy a cambiar el nombre del mío por el bar Lives. Voy a pasar a la sección Texturas en el inspector para el progreso. Voy a pasar por encima de la barra de salud y entrar en esa ranura. Establezca el valor máximo nuevamente en el inspector en seis. Voy a establecer mi valor actual en seis. Ahora deberías verlas. Voy a agarrar este pequeño mango naranja y jalarlo hacia arriba solo para que solo ocupe el espacio que necesitamos. Voy a llevarlo directo hacia abajo hasta el fondo en ese vacío espacio negro. Esos van a funcionar como nuestras vidas. Verás a medida que ajustamos los valores 6-5 está dividido equitativamente, así podemos determinar fácilmente cuántas vidas nos quedan El seis, por supuesto, va a ser nuestro defecto y vamos a necesitar retocar eso cada vez que realmente morimos en mi global aquí Nuevamente, tal vez el manager del juego tendría más sentido para un nombre, pero por ahora va a dejarlo con eso. Vamos a ir a vidas por defecto seis. Voy a crear otra función, Actualizar Vidas, Nada. Y vamos a caer camino salvado. En lugar de un texto de partitura, vamos a llevar vidas lejos y vamos a acceder a la propiedad de valor aquí que podemos ver en el inspector. Vamos a decir más igual cantidad. La cantidad va a ser un parámetro que pasemos en el que va a ser un fin cuando perdamos una vida, vamos a sumar una negativa, lo que hará que baje a cinco. Esto también nos da la capacidad de sumar vidas en el futuro simplemente poniendo una positiva para ganar una vida. Pero también actualizando que en realidad tenemos que actualizar nuestras vidas también. Lo mismo más equivale a cantidad. Ahora podemos ir a nuestro jugador, podemos buscar nuestra muerte. Ahí está al morir. También tenemos que ir a acceder a nuestro script global. Actualizar vidas y pasar en negativo. Eso debería hacerlo. Muy sencillo, cosa pequeña que hacer Ahora cuando morimos en pantalla, deberíamos perder una vida y deberíamos ver nuestra barra de vida ahí abajo, bajar a cinco. Necesito sacar esto porque ustedes no pueden ver el fondo ahí. Ahí vas. A ver si bajamos a cinco. Ahí vamos, nos separamos. Me topé con la parte trasera de ese auto. Yo lo estaba mirando, y solo ganas puntos cuando avanzas en Frogger Perdemos una vida cuando nos metemos en el agua también. Podemos seguir adelante y actualizarlo si así lo deseas. Si quieres que sea un poco más preciso. Sólo vamos a actualizar la puntuación cuando pulsemos a la izquierda y a la derecha no nos conseguirá ningún punto. La única voluntad de presionar hacia adelante, lo cual tiene sentido porque eso es un montón de puntos que podrías acumular muy rápido. ¿Dónde están mis bitácoras? Ahí están ahora montamos las tortugas. Perdición en la tortuga. Iba a ir por el tronco, pero sentí que me lo iba a perder, así que me quedé saltar al tronco aquí, y luego saltaremos sobre esas tortugas y lo haremos a casa gratis En este registro, estamos Muy bien, increíble. Ahí vamos otra vez. Podemos perder el ascensor. Fresco. Nuestro sistema en vivo funciona. Se actualiza visualmente en pantalla. Tenemos la capacidad de sumar en vidas en el futuro. Bien, supongo que eso lo hará para esta sección. A menos que queramos agregar live cuando lleguemos a la escuela, queremos hacer eso. Todo bien. Si quieres poder ganar vidas extra cuando alcanzas una cantidad determinada de puntos, esto es lo que vamos a hacer. Vamos a crear una variable llamada multiplicador dentro de nuestra puntuación de actualización. Aquí vamos a realizar una nueva comprobación. Vamos a decir puntaje dividido por puntaje dividido por, podemos decir 10,000 si quieres, veces nuestro multiplicador es mayor o igual a uno, entonces aquí es donde vamos a sumar a nuestras vidas. Entonces necesitaríamos hacer vidas, normalmente diríamos más es igual a uno. Pero como queremos taparlo a las seis, lo que en realidad vamos a hacer es decir vidas iguales. Y vamos a usar esa función llamada clamp. Ahora, clamp te permite tener tres argumentos aquí. El primer argumento es lo que agregarías en lugar de más es igual a uno. Nuestro primer argumento aquí va a ser uno. Entonces el siguiente argumento va a ser el mínimo y máximo de que este valor pueda ser el mínimo, Podría ser cero. Nuestras vidas nunca irán por debajo de cero. Aquí, el número máximo que podemos tener es seis, así que nunca será un número mayor que seis. Así es como funciona el pinzamiento aquí. Podemos llamar vidas de actualización con uno, cierto, así que vamos a tener un plus uno para agregar a eso lo que en realidad podemos simplemente mover nuestra abrazadera aquí abajo dentro de nuestras vidas de actualización y reemplazar una con una montura. Entonces probablemente podríamos salirnos con la suya de no tener nada ahí dentro, No configurarlo. Vamos a sujetarlo ahí abajo, Actualizar vidas en e Entonces vamos a querer aumentar nuestro multiplicador más es igual a uno. Y la razón por la que queremos hacer esto porque si no lo hacemos, vamos a ganar una vida constantemente porque nuestra puntuación siempre va a ser divisible Una vez que ganemos una vida, cada vez que nos movemos, vamos a seguir ganándola. Queremos cambiar esto. Si conseguimos una vida por cada 10,000 puntos, entonces obtendremos en 10,000 10,000 veces uno todavía va a ser 10,000 entonces la próxima vez va a ser 10,000 veces dos, necesitaremos 20,000 puntos para obtener una nueva vida. Y entonces serán 30,040 etcétera. Si fuéramos a correr esto ahora con solo eso, podemos ver si entramos corriendo, vamos y perdemos una vida, tal vez incluso perdemos dos. Ahora tenemos que subir, pasar por todo este tráfico. Tenemos que hacer nuestro camino a este registro. Entonces podremos volver a montar el tronco de las tortugas, trasladarnos a las tortugas, esperar a que el tronco suba aquí, y luego si nuestro puntaje fue lo suficientemente alto, deberíamos obtener 10,000 cual no lo cambié ahora que lo pienso Entonces eso es un poco decepcionante, pero podemos comprobarlo muy rápido con solo entrar en nuestro espacio eólico y diremos, oye, ganamos 20,000 Ahora bien, si tuviéramos que comprobarlo para ganar puntos por entrar en nuestro espacio eólico y diremos, oye, ganamos 20,000 Ahora bien, ganamos 20,000 Ahora bien si tuviéramos que comprobarlo para ganar puntos cada 10,020 no deberíamos Simplemente debería darnos la única vida, lo cual está bien porque nunca debes conseguir 20.001 perro En fin, lo máximo que deberías conseguir a la vez serán 1,000 Lo que ves a medida que avanzamos, boom, ya casi estamos ahí. Deberíamos ver nuestras vidas en el fondo aumentar, más uno. Ahí vamos. Entonces nuestras vidas han aumentado. Bien, entonces nuestras vidas están funcionando ahora. Voy a seguir adelante y restablecer esto nuevo a 40 puntos. Queremos asegurarnos de que podemos terminar el juego. Eso va a ser. Supongo que dentro de nuestro global aquí actualizar vidas, vamos a seguir adelante y ver esto. Vayamos uno negativo por casualidad. No, no lo hará. Eso es perfecto. No tenemos que preocuparnos por eso. Podríamos decir que si vive, en realidad no tendríamos que ya porque lo estamos configurando aquí. Verificamos de antemano. Entonces decimos si vive, es menos de cero en realidad ya sería cero. Digamos que nos quedan cero vidas, entonces morimos, ¿verdad? Estamos pasando otro negativo. Estamos diciendo que si nuestras vidas ya son cero, entonces vamos a tener, diríamos, se acabó el juego, pero solo vamos a recargar la escena en un juego completamente nuevo Si nuestras vidas no son ya cero, entonces vamos a bajar aquí y vamos a restar nuestra vida Para esto solo usamos get three reload currency y eso va a ser lo mismo que si acabáramos de comenzar la escena Esto si escribimos en nuestras vidas no se están restableciendo, probablemente porque no se restablecen en Global. Vamos a averiguarlo. Entremos en nuestro listo y echemos un vistazo a cómo depuramos esto, digamos vidas de impresión y veremos si eso se restablece Nos están aplastando a lo ancho. En realidad nunca volveremos a prepararnos y se restablece constantemente. Bien, así que en vez de estar listo, vamos a imprimirlo aquí abajo. Tratando de averiguar por qué estamos constantemente punteando aquí. Se restablece después de las dos, cómo vamos 6-0 Bien No estoy seguro de por qué, pero la pinza parece ser lo que estaba causando esa ruptura, que es porque no hay ninguna razón real por lo que pude decir que debería haber estado saltando de seis vidas para romper a cero. Pero eso está bien. Acabo de cambiarlo de nuevo a vidas más iguales cantidad ahora si ejecutamos el juego y vemos si podemos correr o volver a perder vidas una a la vez. Una vez bajamos tres vidas a una, aquí entramos en el agua. Nos quedamos sin vidas cuando nos golpean. A continuación, va a ser un juego terminado y nuestro juego va a reiniciarse. Ahí vamos, tenemos un reinicio de nuestro juego. Rápidamente nos encontramos, podemos volver a perder vidas otra vez, pero ahí tienes. Tenemos ese reset. Ahora perdemos vidas y mostramos en la pantalla apropiadamente. Cuando nuestras vidas son demasiado bajas, reiniciamos completamente el juego y empezamos de nuevo, así como ganamos vidas cada vez que obtenemos 10,000 monedas. 16. Temporizador y bonificación: Bien, hagamos que nuestro Tim Er vaya ahora a nuestro tipo. Acabo de agregar otra etiqueta aquí abajo con la palabra tiempo con una anulación, tamaño de fuente establecido en 12. Entonces tengo una barra de progreso de textura, igual que hicimos con nuestras vidas aquí. Cambié el modo de relleno para que sea derecha a izquierda en lugar de izquierda a derecha. Voy a renombrarlo aquí, Tim bar. Mi valor máximo 30, mi valor actual 30. Todo lo demás queda igual. Cumplí nueve parches estirados para poder estirar esta barra para que tenga cualquier forma, largo ancho que quiera. Y solo estoy usando el temporizador y que tengo aquí, solo lo arrastre como la barra de progreso desde la textura de progreso. Ahí vas. Simplemente lo estiro, lo coloco ahí abajo para algo que se vea bien. También tengo un temporizador que agregué aquí abajo con un guión sobre mi chico y la señal de tiempo de espera aquí conectada a él. Esto es lo que estamos viendo aquí. Lo que tenemos que hacer cada vez, esta vez o tiempos por defecto el temporizador se establece en 1 segundo, lo cual está bien. Eso es lo que queremos. Lo que queremos hacer si queremos obtener nuestro tiempo o barra y necesitamos restarle uno al valor, solo podemos seguir adelante y agarrarlo con nuestro signo de dólar Aquí lo entiendes, ya que esto viene de nuestro chico valor menos igual a uno. Ahora bien, si fuéramos a seguir adelante y echar un vistazo a eso y ejecutar eso, ahora deberíamos ver nuestro temporizador marcando abajo. Hermoso. Eso es exactamente lo que queremos. Ahora tenemos que comprobarlo. Necesitamos verificar si nuestro, nuestro valor de barra de temporizador, ha llegado a cero. Si es así, desafortunadamente, nuestra ranita tiene que morir. Así es como es cuando nuestro temporizador se agota. Sigamos adelante y consigamos nuestro nodo F. Recuerda que estamos aquí, así que vamos a tener que subir uno para nuestro nodo, dos D, luego volver a bajar jugador. Y sólo vamos a llamar a nuestra función de muerte en ello. Uy. Y eso debería ser dos iguales, porque es una comparación si vamos a ejecutarlo. Ahora cuando nuestro temporizador se agota, nuestra pequeña ranita debería simplemente ir splat y perdemos una vida en nuestro Sólo dale un minuto ahí para que se acabe el temporizador. Ahora teniendo este temporizador aquí en 30 segundos, veo que mis plataformas arriba necesitan ser un poco más rápidas o al menos un poco de retraso menor. Creo que la velocidad podría ser la mejor opción en lugar de cambiar el retraso. Pero ahí vamos. Un poco ranita ha muerto. Y sigue muriendo, eso no es genial. Tenemos que resetear eso de hecho. Ahora, una vez que llegue a cero y nuestro ranita muere, reiniciemos nuestra barra de temporizador Consigamos la barra del temporizador y pongamos su valor de nuevo en 30. Podemos tener una barra completamente nueva llena. Ahora bien, este no es el único momento en el que necesita ser reseteado, necesita restablecerse cuando lleguemos a la meta también, vamos a seguir adelante y hacer que el nodo suba uno, obtener nuestro pegajoso, y luego obtener nuestra barra de temporizador y establecer el valor de nuevo Ahora antes de probar esto, voy a entrar aquí en mi plataforma. Voy a cambiar esto a 32 y duplicar esa velocidad. Eso significa que tengo que ir a mi jugador y ajustar eso. Bueno ahí es cuando estamos aquí, 32 ahora debería por lo menos moverse más rápido y ojalá pueda seguir adelante sin faltar. Ahí están las tortugas. Necesitamos algunas bitácoras. Gracias. Registro. No sé si voy a lograrlo. No voy a lograrlo. Voy a perder mi rana. Adiós por un abrazo. Apenas sabía que veis, esto va a ser un poco difícil. ¿Nuestro tiempo o no se reinicia cuando salpicamos? No lo hace, así que tenemos que establecer eso también en nuestro jugador. ¿Dónde es que morimos? Ahí está nuestra muerte. Y respondemos. Oka, sí, vamos a meterlo en profundidad aquí otra vez. Vamos a subir y luego volver a bajar a nuestra barra de temporizador y establecer el valor de nuevo en 30. De esa manera cuando morimos eso se restablece. Supongo que voy a cambiar que respawn, el spawner value platform spawn Voy a quitar el más seis. Mira cómo se ve eso ahora ya que tenemos números completamente nuevos. Bien, eso se ve bien. Podríamos ser capaces de hacer esto ahora. Ahí vamos. Lo hicimos en nuestro reinicio del temporizador. Y cuando morimos, nuestro temporizador. Así que resetea también. Fantástico. Puedo ver que todavía necesito un poco de impulso ahí dentro. Mi mínimo, voy a hacer 3 segundos solo porque vi bastante solapamiento cuando corrí por ahí. Pero vimos que el temporizador funciona perfectamente bien ahora. Ahora lo haces, o al menos se supone que debes obtener una bonificación en lo que respecta a los puntos, en función de cuánto tiempo queda cuando anotas. Seguiremos adelante e implementaremos eso también. Sólo tengo que ir a reactivarme con lo que es el multiplicador Sé que es algo multiplicado por la cantidad de tiempo que queda. Así que dame 1 segundo ahí. Todo bien. Es diez veces el tiempo restante que queda. Veamos cuando lleguemos a nuestro espacio eólico, antes de reiniciarlo, necesitamos actualizar el puntaje aquí nuevamente. Vamos a sumar 40, pero luego también vamos a agregar lo que quede aquí. Vamos a decir, en realidad vamos a poner esto en su propia variable aquí. Nosotros lo llamamos bono de pastel. Diez de bonificación. Bonificación de tarta. Por supuesto, quiero enviarlo a este valor por diez antes de reiniciar. Ahora en nuestro segundo puntaje de actualización aquí hacemos bono de tiempo. Bien, entonces ahora deberíamos tener nuestro bono de tiempo ahí dentro. Entonces, cuanto más rápido podamos llegar allí, mayor bono vamos a obtener hasta un máximo más 300 puntos. Hipotéticamente, quiero decir, no vas a llegar ahí a los 300 o 30 segundos que quedan porque empieza a Puede que no llegue en absoluto. Podría estar cerca. Yo lo conseguí. Pero se puede ver que me dieron 190 puntos en esa. Bien, ahí vamos. Ahí tenemos el temporizador, así como las muertes cuando se agota el temporizador, y el bono de puntuación cuando aún nos queda tiempo o nos queda y llegamos al final. Bien, así que eso es todo. Creo que eso podría ser. O rana. No creo que me esté olvidando nada aquí. Si ese es el final de la rana, felicidades llegaste hasta el final, eso es increíble. Espero que ustedes hayan aprendido mucho. Repasamos muchas cosas a lo largo de este proyecto. Las variables están trabajando con muchos guiones diferentes, pero recreamos completamente este juego de los 80 Y lo bueno de estos juegos antiguos, son bastante simples en concepto, pero sobre todo si eres nuevo en la programación, hay mucho que puedes aprender de estos juegos. Todo bien. Cuídate. Tengan uno bueno y los veré en la próxima semana. ¿Qué? Ahora voy a entrar en una semana. Oh chico, la cuarta semana va a ser divertida. Ahí dentro tenemos muchas cosas de las que hablar. 17. Audio de Frogger: Todos, vamos a seguir adelante y agregar primero en el audio. Entonces esto va a contar nuestro salto cuando movemos la música de fondo y nuestros sonidos de muerte Todo bien para nuestra música de fondo. Aquí sólo podemos entrar en nuestra escena principal. Selecciona nuestro nodo raíz, que es nuestro nodo dos D, Adelante y dale al plus o agrega un nuevo nodo. Y lo que vamos a agregar es este reproductor de flujo de audio aquí. Entonces vamos a entrar en nuestra carpeta de sonidos, agarrar la música tres, arrastrarla ahí, asegurarnos de activar la reproducción automática. De esa manera no tenemos que desperdiciar un guión y desperdiciar escribir código para reproducirlo. Simplemente empezará todo por sí mismo. Ahora, advertencia, esto podría ser un poco ruidoso al comenzar. Si quieres ajustar el audio solo para la música aquí, puedes seguir adelante y cambiar el volumen. D, B aquí, cuanto más bajo lo pongas, más tranquilo va a ser cero es el valor por defecto para todos ellos. Sin embargo, si quieres bajar la música para todo tu audio a la vez, puedes hacer clic en una pequeña pestaña de audio en la parte inferior, ahí abajo. Y aquí está todo tu bus de audio. Aquí tenemos al maestro, que si has cambiado la configuración de audio y los juegos antes de que te des cuenta, tenemos el control deslizante maestro. Eso es lo que es esto aquí. Podemos cambiar el volumen de esto a lo que queramos. Si quieres agregar un bus de audio diferente, puedes personalizar tus efectos de sonido de la música por separado. Podemos simplemente golpear el autobús add aquí. Simplemente cambiaremos el nombre de esto a música Ahora con nuestro reproductor de flujo de audio seleccionado, lo notarás en la sección de autobuses aquí en el inspector. Ahora tenemos una pieza musical aquí del menú desplegable. Esta música llegará primero a través de esta pieza de audio y luego saldrá, se la pondrá al maestro como cabría esperar a. Entonces depende de ti lo que quieras hacer. Voy a seguir adelante y bajar mi música a tal vez 0.6. No estoy seguro. Voy a asegurarme de que ustedes realmente sean capaces de escuchar esto. Ojalá esto no le haga daño a los oídos de nadie. Voy a golpear play y averiguarlo. Todo bien. Entonces eso parece que es más tranquilo que yo, así que voy a asumir que eso está bien. Pero si quieres, siempre puedes bajarlo un poco más. Creo que voy a ir con menos diez aquí. Ahora el resto de nuestro sonido en realidad va a estar en nuestro reproductor. Debido a que nuestro jugador tiene, el jugador tiene el saltando nuestro jugador. El otro efecto sonoro necesita, nuestra otra muerte. El plunk, el squish, y el caliente. Vamos a ir a ver a nuestros jugadores. Mismo. También vamos a agregar un reproductor de flujo de audio para ellos. No vamos a tocar nada más inspector, a menos que quieras agregar un bus de audio para efectos de sonido y luego cambiar el bus ahí específicamente. Eso depende de usted y nuevamente una preferencia personal. Pero una vez que tengas un reproductor de flujo de audio agregado a la escena de tus reproductores, podemos entrar en el guión de tus reproductores. Lo que vamos a necesitar hacer es configurar el flujo de audio cargándolo en el archivo de audio y luego reproducirlo realmente. Lo que voy a hacer es que voy a ir primero a nuestra función de muerte, y esto va a tener una identificación que le pase. D obviamente va a ser un entero porque vamos a conseguir un dos o tres. Entonces voy a llamar a un int y voy a establecerlo igual a dos por defecto. La razón por la que estoy usando dos es si volvemos a nuestro mapa de azulejos y le echamos un vistazo, nuestro camino es ID dos. Por defecto debería ser nuestro camino. Debe ser un squish. Lo que voy a hacer aquí es que vamos a obtener nuestro reproductor de flujo de audio, transmisión de reproductor transmisión de audio lo largo de esa propiedad de transmisión. Estás en nuestro reproductor, cierto, esa transmisión de aquí. Y vamos a ponerla igual a, y vamos a llamar a load open y closed paréntesis Y dentro de aquí va a ser la ruta a nuestro archivo dos va a ser nuestro defecto, ese va a ser nuestro squish Entonces voy a conseguir squash, squash. Salga de nuestra carpeta Sonidos y arrástrala ahí. De esa manera no tengo que escribirlo. Ahora lo que haremos es en la siguiente línea, diremos si ID es igual a 33, recuerda ser nuestra agua. Si nos estamos muriendo y está en el agua, entonces vamos a hacer lo mismo que hicimos en la línea anterior y poner nuestro arroyo. Y cargue en un nuevo archivo esta vez conjunto de squash. Vamos a cargar en plunk. Entonces fuera de esa declaración if, todo lo que vamos a hacer es reproducir nuestra transmisión. Entonces vamos a decir reproducción del reproductor de flujo de audio , así como así. Ahora bien, si seguimos adelante y nos machacamos en la carretera, deberíamos tener un solo efecto de sonido Y si vamos a saltar al agua, deberíamos tener otro. Bien, por ahora, voy a seguir adelante y simplemente apagar la reproducción automática de la música para que podamos escuchar Si saltamos al agua, nos atropellan en carro. Bien, tenemos el mismo audio reproduciendo en ambos. Bueno, eso es un poco interesante. ¿Por qué es eso? Bueno, al parecer no estamos pasando ninguna identificación para tres. Nunca van a ser tres. El motivo de eso, recuerda que tenemos que bajar y verificar, vender identificación. En realidad estamos comprobando si nuestra rana se está ahogando, eso es lo que tenemos que pasar a nuestra muerte Ahora bien, no se equivocó porque le dijimos que si no le pasamos nada, solía hacerlo por defecto, pero como queremos específicamente un ID de tres, siempre que estemos en el agua, tenemos que asegurarnos de pasarlo aquí abajo en nuestra función de identificación de celda de verificación. Ahora bien, si lo hiciéramos, deberíamos tener nuestro plunk en el agua y machacado en la carretera Ahí vamos. Sabemos si eso está funcionando perfectamente bien. Ahora lo único que nos queda es hacer nuestro salto. Para eso, eso solo va a estar arriba en nuestro movimiento donde podamos ir a revisar nuestro flujo de audio y establecer ese flujo reproductor de flujo de audio igual a carga. Y corre el riesgo de ir a agarrar nuestro efecto de sonido y arrastrarlo ahí dentro. En la siguiente línea solo podemos reproducir nuestro reproductor de audio stream play. Podemos copiarlo en cada pulsación de botón aquí. Si está abajo podemos hacer eso. Boom queda. Y si es ahora mismo, si lo jugamos, deberíamos poder saltar por ahí. Vamos a entrar en nuestra escena principal e intentar que abajo pueda mostrar empujado hacia abajo así como el agua subterránea, abajo, abajo, abajo, abajo, abajo, abajo. Impresionante. Ahora todo lo que tenemos que hacer es volver a encender la música en nuestro reproductor de flujo de audio de la escena principal, Autoplay, vuelto a encenderse así Tenemos el juego Frogger completo con nuestro audio y jugabilidad Ahí me atropelló la parte trasera del auto. Pero ahí tienes. Le hemos agregado sonido, y ahora nuestro juego se siente mucho más completo. No hay nada más que realmente podamos hacer aquí. Puedes sentirte libre de agregarle más. Puedes intentar agregar pick ups. Puedes encontrar nuevos sonidos y reemplazarlos. A lo mejor si quieres crear tus propios sprites y usarlos para cambiarlo un poco, hace un poco más personalizado para ti O si solo quieres mantenerlo como tu propio pequeño remake de arcade, eso también es increíble. Pero eso lo hará por éste. Cuídense y tengan un buen paquete ustedes mismos en la espalda. Hemos completado Frogger. La próxima semana creo que empezaremos a hablar de algunas de las diferencias y similitudes entre dos D y tres D y empezaremos a meternos en eso.