Clase magistral de programación en C# y desarrollo de juegos en 2D con Unity | Michael Murr | Skillshare

Velocidad de reproducción


1.0x


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

Clase magistral de programación en C# y desarrollo de juegos en 2D con Unity

teacher avatar Michael Murr, Software Engineer | Coding Instructor | Game Dev

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.

      Por qué debes ver este curso

      4:05

    • 2.

      Cómo utilizar este curso

      14:35

    • 3.

      Descarga de la unidad y Visual Studio

      7:09

    • 4.

      Unity y Visual Studio 101

      10:50

    • 5.

      Control de versión 101

      18:37

    • 6.

      Inspiración del diseño de juegos Hades

      6:54

    • 7.

      Sección 2: configurar nuestro mundo - configurar la hoja de sprite

      21:18

    • 8.

      Crear el jugador

      16:03

    • 9.

      Movimiento de entradas (variables)

      21:31

    • 10.

      Cambio de la posición del jugador (transformación de objetos de objetos de juego

      11:28

    • 11.

      Golpear los obstáculos (colillas)

      15:04

    • 12.

      Buscador de ganas (punto de pantalla de pantalla)

      13:18

    • 13.

      Atender a la dirección correcta

      10:43

    • 14.

      Animaciones en unidad

      24:28

    • 15.

      Mejorar las animaciones de jugadores

      18:29

    • 16.

      Velocidad del jugador 00

      5:57

    • 17.

      Sección 3: configurar los mecanismos de rodaje de proyección y crear balas

      16:46

    • 18.

      Aminar hojas (prefabs y de instantiation)

      14:39

    • 19.

      Mostrador de fuego

      9:01

    • 20.

      Bullets de la masa con los otros

      9:36

    • 21.

      Efecto impacto de balas

      16:56

    • 22.

      Agrega rastro a los Bullets

      12:44

    • 23.

      Sección 4: configurar los enemigos - configurar un Enemy

      20:24

    • 24.

      Pasar a la persona del jugador

      11:42

    • 25.

      Animación Enemy

      12:59

    • 26.

      Enemy Damaging (métodos)

      17:06

    • 27.

      Splatter de sangre

      9:55

    • 28.

      Efecto en sangre Enemy (Armas)

      22:03

    • 29.

      Ataque en los enmende Aten (cortines)

      11:06

    • 30.

      Hacer viñetas enables

      12:05

    • 31.

      Gama de tomas Enemy

      10:45

    • 32.

      Diseño de juegos

      6:24

    • 33.

      Sección 5: crear habitaciones - introducción a la unidad en la unidad

      15:06

    • 34.

      Colliders

      9:59

    • 35.

      Crear una habitación más grande (Cinemachine)

      13:20

    • 36.

      Crear puertas cerradas (bucle de bucle para forcada

      19:52

    • 37.

      Atraer todos los enemigos (listas)

      15:41

    • 38.

      Abrir puertas 00

      14:04

    • 39.

      Sección 6: flujo de nivel - Gestión de escenas y hilado)

      16:45

    • 40.

      Gerente de nivel

      10:32

    • 41.

      Hacer que la transición más fríos

      11:47

    • 42.

      Descenso de peso y fuera (lienzo)

      20:02

    • 43.

      Sección 7: entorno masticable - movimiento tornado

      14:19

    • 44.

      Animación del torpedo

      14:33

    • 45.

      Objetos Breaking

      17:09

    • 46.

      Piezas rotas

      9:55

    • 47.

      Spreading de piezas rotas (Lerp)

      11:50

    • 48.

      Destaque las piezas lentos

      10:50

    • 49.

      Sección 8: toma avanzada y crear un sistema de organización de Shooting

      11:53

    • 50.

      Contador de velocidad de fuego

      6:25

    • 51.

      Tener diferentes armas

      11:54

    • 52.

      Cambio entre las armas

      13:35

    • 53.

      Armas que mostran lienzo UI

      22:22

    • 54.

      Hacer agitar la cámara

      14:21

    • 55.

      Sección 9: sistema de salud de salud de jugadores

      7:09

    • 56.

      Lienzo de UI

      13:49

    • 57.

      Actualizar UI con guiones

      10:05

    • 58.

      Crear una pantalla de muerte

      13:16

    • 59.

      Añadir insurgencia temporal

      19:11

    • 60.

      Añadir picos en el terreno

      12:07

    • 61.

      Sección 10: picks

      13:20

    • 62.

      Gota de elementos aleatorios

      19:56

    • 63.

      Conección de armas

      18:53

    • 64.

      Añadir armas captas

      13:50

    • 65.

      Crear un pecho que te abre

      16:28

    • 66.

      Qué Spawn

      6:49

    • 67.

      Sección 11: música y SFX

      16:36

    • 68.

      SFX en la unidad

      12:58

    • 69.

      Uso mezclador de audio

      14:47

    • 70.

      Sección 12: varios tipos de Enemies y diferentes tipos de Enemies (diseño de juegos)

      10:17

    • 71.

      El Enemy de que Enemy

      11:55

    • 72.

      El wanderer

      16:15

    • 73.

      El Patroller

      14:35

    • 74.

      Sección 13: sistema de tienda y dinero - crear dinero (Bitcoin)

      9:44

    • 75.

      Conección de Bitcoin

      10:10

    • 76.

      Muestra la UI en nuestro lienzo

      7:29

    • 77.

      Cómo ganar Bitcoin

      5:37

    • 78.

      Artículos de tienda

      12:35

    • 79.

      Comprar en la tienda

      15:20

    • 80.

      Cómo mejorar de salud

      9:58

    • 81.

      Comprar armas

      18:41

    • 82.

      Sección 14: crear menus de nombre de título

      18:44

    • 83.

      Tener pantalla de victoria

      11:18

    • 84.

      Nivel de relleno después de la muerte

      8:12

    • 85.

      Configuración de el menú de pusas

      8:50

    • 86.

      Realamente pausas el juego

      6:42

    • 87.

      Sección 15: batallas de jefe (máquina mayor de estado C# estado) introducción a la máquina Sate

      15:50

    • 88.

      Configuración de movimiento de jefe

      16:18

    • 89.

      Mejor movimiento de jefe

      11:50

    • 90.

      Preparación de ataque de jefe

      14:35

    • 91.

      Jefe en la segunda etapa

      9:00

    • 92.

      Agregar el sistema de salud del jefe

      13:34

    • 93.

      Agregar barra de salud de salud de tu jefe

      21:22

    • 94.

      Añadir capacidad para tomar

      30:22

    • 95.

      Sección extra: Generación de habitaciones (programación en forma con objetos avanzados C# objetos) y configurar las habitaciones

      8:05

    • 96.

      Crear Enemy

      14:09

    • 97.

      Desplantar varios tipos de Enemies

      17:16

    • 98.

      Completar las ondas

      11:55

    • 99.

      Elige una habitación

      20:02

    • 100.

      Ir a la de la siguiente nivel

      14:40

    • 101.

      Siguiente nivel El camino adecuado

      15:10

    • 102.

      Patrón de Singleton

      19:56

    • 103.

      Tweaking final

      22:03

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

1985

Estudiantes

3

Proyectos

Acerca de esta clase

Este curso está hecho con el último contenido y las nuevas técnicas utilizadas en Desarrollo de juegos modernos (Unity 2D 2022)

La mejor manera de aprender cualquier cosa es hacerlo de una manera muy divertida y aquí es dónde viene este curso. Si quieres aprender cómo todos estos juegos increíbles que ves no hay mejor lugar para empezar en este curso. Nos aseguramos de que este curso tiene todo lo que necesitas para llevar desde un principiante (incluso con la experiencia de codificación cero) y lenta al nivel de nivel inter

Elegí el proyecto principal en este curso para ser un Roguelike 2D porque no solo tiene una gran biblioteca de conceptos de desarrollo desarrollador de juegos que podemos implementar y aprender, pero también es muy sencillo es el verte sencillo (especialmente si eres principiante) profundizar y empezar a iniciar tu viaje de desarrollo de desarrollo de juegos.

Todo en este curso se ha diseñado metiéndole metiéndolos en experiencia posible y maximizar tu aprendizaje lo más posible. Así que no tendrás mucho tiempo aprendiendo que más desde tu curso en el desarrollo de tus recursos de estos cursos y muchas herramientas en tu arsenal que te seguirá camino en el desarrollo de juegos.

Sección 1: introducción

Comenzaremos descargando Unity y estudio visual. Instalarlos y asegurando que funcionen de la forma de trabajar. Luego crearemos nuestro primer código en C# y te acostumbrará a la interfaz Unity. Por Por último, hablaremos de el diseño de diseño de el diseño del juego y lo que se necesita para empezar a crear un juego desde cero

Sección 2: configuración de nuestro mundo

En esta sección comenzaremos a aprender qué hojas de sprite y cómo configurarlas. Aprenderemos lo que hay en unidad. Veremos los colores y RigidBodies a nuestros objetos de juego y veremos cómo se afecta a la física de la física. aprenderemos a animar nuestros sprites. Incluso entenderemos lo que mezclar árboles nos ayudarán a reducir la dificultad de animar

Sección 3: configuración de la mecánica de proyección de tomas

En esta sección vamos a crear viñetas de nuestros jugadores y disparar y en el ratón apuntalado, teniendo un contador para crear disparar y añadir efectos de impacto a esos bullets, Mientras bien aprenderemos sobre prefabs y la instantiation y cómo manipular el mundo de nuestro juego para que sea mucho mejor

Sección 4: configuración de los enemigos

Esta sección completó la anterior. Creamos nuestra mecánica de proyección de proyectado, pero ahora necesitamos algo para grabar realmente Vamos a configurar nuestros enemigos y moverlos hacia el jugador. Comenzaremos a las animaciones añadiendo el enemigos y los métodos de uso, los arreglos y algo que nos pongamos en la coruña que nos llevará a profundizar en C#

Sección 5: crear habitaciones (mapa de mosaicos)

Hasta este punto usamos una imagen pre-created para representar el mapa. Termina los días y es hora de crear nuestro propio mapa. Te presentaremos los cambios tilemaps en Unidad, te añadimos varios colliders y aprender sobre un mecánico en la unidad que pocos saben cuál es la Cinemachine. cinematográfica. También tenemos nuestra parte de C# en C# cuando aprendemos los bucles y las listas

Sección 6: flujo de nivel

En esta sección aprenderemos sobre el gestor de escena en la unidad que nos permitirá crear múltiples niveles en nuestro juego y la transición entre ellos. Además, aprenderemos una forma muy complicada de asegurarnos de que siempre llegamos en la posición correcta cuando se mueve a nuestros mundos

Sección 7: entorno masticable

Esta es una de la sección más divertida del curso. Cada técnica de roguelike Agregaremos un mecánico de tornado que no solo nos hará invincible y un poco rápido que se destruir cualquier objeto de juego "destructible" de nuestro camino

Sección 8: toma avanzada (sistema de armas)

¿Qué mejor que tener un arma para grabar? Teniendo muchos muchos ellos y ser capaces de elegir entre ellos en el movimiento, be múltiples armas a nuestro juego. Cada una de ellas con tu estilo de disparo, velocidad y daños. Con varios viñetas y velocidad de fuego para cada uno. No solo eso, también haremos agitaremos nuestra cámara cuando tomes el movimiento a añadir más peso a nuestro juego

Sección 9: sistema de salud

En esta sección vamos a añadir un sistema de salud de salud jugadores. También lo visualizamos creando una barra de salud que podemos ver en un lienzo libre. Aprenderemos cómo podemos actualizar esa barra de salud a través de la barra de la vida y añadir una pantalla de muerte genial cada vez que nuestro jugador se suffers una muerte. Por Por último, añadiremos picos al terreno al terreno en el jugador que se le mete el plano heridas y perderemos un poco de esa salud

Sección 10: pickups

En esta sección nos profundizar en las pickups captas. Vamos a hacer armas de la tierra. Mondas con las que podremos comprar dinero en las tiendas, empaques de salud que una vez en las internos podemos ir y recoger, y también añadir un chest de un pecho que podemos abrir y conseguir un armas. Una armas random es aquí donde nuestras habilidades de C# van a frutadas

Sección 11: música y SFX

Es que respirar algo de vida en este juego añadir efectos de sonido y música. Ahora nuestro juego pasa de estático y dinámico. Agregaremos música y SFX. A cada nivel y cada interacción respectivamente

Sección 12: varios tipos Enemy (algunos deben tener ataques espirituales y materiales)

¿Qué es más divertido tener un enemigo que pueda matarte? Tener 4 tipos diferentes de enemigos que puedan matarte. Tendremos el caminante, la wanderer, el enemigo y el enemy. de los enemigos skeletal Esta sección será la base de nuestro AI enemigo y abrirá las puertas para la forma que implementaremos a nuestro jefe en la sección próxima

Sección 13: sistema de tienda y dinero

Ahora que remos los artículos, queremos venderlos... ¡para dinero dinero! ¿A quién no le gusta el dinero? Presentaremos un sistema monetario así básicamente una economía. Creamos una tienda con un guardador de la tienda dentro y podremos operar con él utilizando el dinero que tenemos que comprar y los artículos que tenemos que vender

Sección 14: crear los menús

Cada juego se tiene que tener un menú principal. Pero también necesita un menú principal dinámico. Creamos un menú simple con un fondo. Pero la parte exitosa de esto es la forma que damos la habilidad de nuestro jugador para continuar desde su último salvador o comenzar un nuevo juego. También agregaremos una pantalla de victoria, una forma de volver a reformar el nivel después de la muerte y un mecánico de a

Sección 15: batallas de jefe (máquina estado avanzado de la unidad

Es el momento de la parte muy divertida aquí. Vamos a crear un combate de pelea de pelea de jefe pelea de jefe Pero no cualquier pelea de jefe de pelea trabajar, esta pelea de estado utilizará una máquina estado. Que también es el animador al tiempo de animador. Vamos a hacer transición de estado y en cada uno de los ataques

Sección extra: Generación de habitaciones (programación en los objetos avanzados y objetos)

Llegamos a nuestra sección final, en la sección del que crearemos múltiples habitaciones con la mecánica de juego, tendremos un spawner enemigo aleatorio. Tenemos puertas que están cerradas y que solo en una vez que we los enemigos en nuestro nivel deseado. y tendremos una opción para elegir entre los 2 niveles para ir después de que mates todos los que están aquí

Qué aprenderás en este curso:

  1. Usa Visual Studio con la unidad de una manera sencilla

  2. Cómo establecer un buen entorno de desarrollo de desarrollo de juegos

  3. El motor de Unity Engine están de una manera sencilla y completa

  4. Los fundamentos de C# de las formas más divertidas creando un juego

  5. Usa la entrada de jugadores para controlar el comportamiento de nuestro juego

  6. Añade diferentes componentes a los objetos de juego

  7. Añade gravabilidad y otras fuerzas a los objetos de juego

  8. Haz que los objetos del juego interact entre nuestro juego

  9. Añade hojas de sprite y corta retrata

  10. Crear activos de mosaicos

  11. Cómo crear niveles a partir de nuestros recursos de mosaico

  12. Convierte en resolución de problemas ninja y aprender a resolver cualquier problema en desarrollo de problemas de desarrollo de problemas ninjas y programación

  13. Crear animaciones

Conoce a tu profesor(a)

Teacher Profile Image

Michael Murr

Software Engineer | Coding Instructor | Game Dev

Profesor(a)

Hi there, my name is Michael Murr. I'm a software engineer from one of the most highly esteemed universities in the Middle East and the founder of 2M Dev. 

I started coding when I was about 11 years old, when my dad taught me my first lines of HTML, and I have never looked back.

I am a software engineer with more than 10 years of experience. I am the founder of 2M GameDev, a leading game development software company in the Middle East.

Over the years, I've helped hundreds of students create real-world games, learn how to code, and set their lives up for opportunities in many fields that require a software programming skillset. And I will help you do the same.Ver perfil completo

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. Por qué debes ver este curso: Entonces probablemente estés aquí preguntándote, ¿cómo se crean mis juegos favoritos? ¿ Cómo sabe el enemigo dónde estoy y me sigue? ¿ Cómo deben proyectar archivos? ¿ Cómo funcionan los tableros? ¿ Puedo crear mis propios niveles? ¿ Cómo recojo patrones? ¿ Cómo disparo a estas armas? Las respuestas a todas estas preguntas se aclaran una vez que entiendes un par de conceptos fundamentales, cómo agregar un cuerpo rígido a un juego objetos, empezar a moverlo. Agrega animaciones para hacer que Sprite swap en un mundo que construimos usando un conjunto de teselas, permite que interactúe con el mundo y más de una escena a la siguiente. Ah, y además agregar comportamientos a esos objetos usando código con más de 30 scripts y miles de líneas de código, te convertirás en una programación maestra C-Sharp. Mi nombre es Michael Moore, fundador de WM game dev, y mi objetivo es hacerte el mejor desarrollador de juegos y de la forma más divertida posible. Estoy desarrollado una estrategia que ha ayudado a miles de aspirantes a desarrolladores de juegos a lograr sus objetivos de crear los juegos del mundo real. Y yo quiero hacer lo mismo por ti. Lo que he aprendido es que puede ser muy difícil saber por dónde empezar y qué pasos tomar para ir de principiante a intermedio, a no sólo en desarrollo de juegos, sino en programación y aprender a codificar. Y aquí es donde entra en juego la nueva estrategia actualizada. Yo lo llamo la pirámide cíclica, donde empezamos aprendiendo los mismos fundamentos en motor Unity, programación C-Sharp, y diseño de juegos usando diapositivas y documentación de unidades, entonces de inmediato usamos lo que aprendimos para realzar nuestro juego. Pero a medida que avanzamos a través de nuestro proyecto, volvemos a los mismos conceptos y usamos esos y formas más complejas y divertidas. Por último, tenemos las dos últimas secciones donde vamos más profundo que cualquier otro curso. En primer lugar, hacia la unidad avanzada, donde diseñamos una máquina estatal para nuestras peleas de jefes. Y en segundo lugar, avanzado C-sharp fueron semana dimos un bucle de jugabilidad de nivel 2 consistente. También tendrás la oportunidad de flexionar los músculos de tus desarrolladores de juegos porque con cada video hay un mini reto para que completes. Y aunque no sepas cómo hacer el reto, No te preocupes, estaré ahí para ayudarte después de intentar completar el reto contigo. Y lo más sorprendente es que estamos haciendo todo esto con la última versión de Unity, con las técnicas y contenidos más recientes y desarrollo de juegos modernos. Muchos estudiantes, al igual que tú, que no conocían la casa a los bienes y el y limita los puntajes para ser extremadamente útiles. Pero más de 10 mil estudiantes, cientos de críticas, un número que probablemente ha crecido para cuando estás viendo este video y una enorme comunidad activa en crecimiento en el marcador. Y puedo decir con absoluta confianza, las puntuaciones hacen que sea fácil para cualquier principiante con experiencia de codificación 0 saltar y empezar a aprender a crear ganancias increíbles. Entonces, ¿qué debes esperar para el final de las anotaciones? Te convertirás en un maestro solucionador de problemas. Entenderás los fundamentos de la codificación y aprenderás cómo programar los juegos, al igual que los que estás viendo en pantalla en este momento. Todo en nuestra ganancia será configurable. Para que puedas retocar, jugar y darle al juego y sentir individual y especial al respecto. Entonces estarás metiendo tu propia creatividad en ella y realmente haciéndola tuya. Estoy tan emocionado de empezar y espero que tú también lo estés. Este es el momento perfecto para empezar a aprender a codificar. Así que sumérgete conmigo y te ayudaré a lo largo cada paso de tu viaje de desarrollo de juegos. 2. Cómo utilizar este curso: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Y este video, en realidad, no en este video. He creado este video con el fin de que podamos maximizar el potencial de aprender de este curso. Entonces te quiero, quiero guiarte a través de un par de pasos que podemos utilizar con el fin exprimir por completo toda la energía de aprendizaje del curso que estás tomando actualmente porque has ya, ya estás pasando tu tiempo aquí. Entonces, ¿por qué no maximizarlo? Entonces lo primero que vamos a entender es cómo funciona la Q&A. Entonces mientras estás viendo los videos, estás mirando a través de ellos. A lo mejor surge algo que no debería entender del todo. Entonces lo que puedes hacer es seguir adelante y deslizarte en las discusiones aquí mismo. Y puedes ver que tienes múltiples opciones. Puedes iniciar una conversación, hacer una pregunta o simplemente compartir un proyecto. Entonces aquí, puedes hacerme cualquier pregunta que quieras. No hay duda es de límite. Pero hay un pequeño paso que debes hacer antes de hacerme una pregunta. Y es decir, adelante y haz tu propia investigación. ¿ Por qué te pido que hagas eso? Bueno, porque a veces cuando te tropiezas con un problema y vas adelante y buscas una solución tú mismo, y entonces o la encuentras o no. Cuando vuelves y me haces la pregunta, es mucho más fácil de entender. ¿ Por qué es eso? Porque ya has pasado por un par de sugerencias, tal vez ninguna de ellas era adecuada. Pero a medida que avanzas buscando la solución a tu problema, has ganado mucho conocimiento. Cuando vengas a mí, cuando le preguntes a Michael y pasamos juntos por encontrar la solución, entenderás cómo todo clica y más adelante, cuando tal vez te encuentres con el mismo problema o tal vez se ve este problema para otro estudiante. Puedes ayudarlos y es mucho más fácil. Y por último, siempre que sí encuentres una solución a tu pregunta en ella, tu pregunta y agregarle un prefijo de sal porque otros estudiantes podrían tener el mismo problema y ellos encontrarán una solución por su problema si ven el prefijo resuelto detrás de él. Y por último, antes de irme, sólo quieres decir una cosa que no hay cuestión de límite. No hay preguntas estúpidas, no hay preguntas tontas. Solo hay desarrolladores de juegos no profesionales. Nadie nació profesional. Todos tenemos que aprender a través del ensayo y el error. No te creerías cómo citar comillas, mis preguntas se hicieron porque no nací un profesional en unidad me llevó años de práctica, juicio y error o hacer preguntas, Google cosas. Entonces este es un proceso. No te preocupes, no tengas miedo, no seas inseguro con algunas de las preguntas que podrías querer hacer. Sé lo suficientemente valiente como para ir a buscar una solución. Si no encuentras uno, no te preocupes por ello. Simplemente deja una pregunta. Yo siempre, siempre respondo a todos mis alumnos y siempre profundizamos lo necesario para encontrar una solución a cualquier problema. Y ahora hablemos del servidor Discord. Y aquí es donde puedes profundizar en la comunidad que hemos creado aquí en el desarrollo de juegos de WMD. Por lo que puedes ir ya sea al enlace en la descripción de este video o puedes visitar mi perfil y encontrar el enlace en algún lugar de ahí. Y sí te recomiendo que te sumes a la discordia. ¿ Por qué? Porque la mayor parte del tiempo me podría tomar un par de horas para responder en base a dónde eres. Entonces tal vez nuestra vivimos en diferentes zonas horarias. A lo mejor cuando me hagas la pregunta, es medianoche y necesitas una solución rápida. Podría estar durmiendo, quizá no pueda llegar a mi computadora. Por lo que es muy beneficioso para ti unirte al canal de discordia que hemos creado. Y déjame solo mostrarte el canal de partituras aquí mismo. Este es el inicio de nuestro canal de discordia. Se puede ver que tenemos a la comunidad en general. Tenemos el chat C-sharp, tenemos el chat de diseño de juegos, tenemos el show off tu juego. Tenemos las preguntas generales de desarrollo de juegos. Y se puede ver que todavía no tenemos nada aquí porque es bastante nuevo ya que estoy grabando esto. Pero más adelante, cuando entres aquí, notarás que hay una enorme comunidad de personas esperando para ayudarte y tal vez gente esperando obtener ayuda de ti. Y es muy beneficioso tratar de resolver la pregunta de otras personas. No creerías lo mucho he aprendido de sólo ayudar a otras personas. Y puedes ver aquí que tenemos múltiples cursos. Estos son todos los cursos que doble m gamma game down tiene o he creado. Y podemos ver también podemos compartir memes y aquí tenemos discusiones generales de juego, juegos AAA, no sé lo que te guste jugar. Podemos discutirlas aquí y el canal social o categoría y así sucesivamente y así sucesivamente. Por lo que sí te recomiendo que te unas a nuestro servidor de discordia. Es muy divertido. vamos a divertirnos mucho. Y eso es todo. Eso es todo lo que quería decir sobre el servidor Discord. Ahora pasemos a las diapositivas de desafío. Entonces lo que nuestro reto se desliza. A medida que avanzas por cada video, te darás cuenta de que en algún momento, te voy a decir que pausas el video e inicies el reto. Entonces cuando veas esta diapositiva, esperarás a que termine todos los puntos y luego tienes que pausar el video. ¿ Por qué estoy enfatizando la palabra? ¿ Tienes que hacer una pausa? Porque es mucho mejor aprender haciendo y no solo viendo muchos cursos que he aprendido de que tomé personalmente donde me sentí carente en el Departamento de hacer. Entonces. Acabas de ponerte alrededor de ver a alguien crear de nuevo. Está bien. Eso es muy bueno. Y ahora se acabó. ¿ De acuerdo? Y luego terminas el curso. Y después de un par de semanas, te das cuenta de que en realidad no sabes hacer nada. Por lo que las diapositivas de desafío que he creado es extremadamente importante porque tú en este punto comienzas a hacer en lugar de ver. Y aunque no puedas averiguar cómo hacer el reto, No te preocupes por ello. Estaré ahí para ayudarte después de que lo hayas intentado y ayudar a completar el reto contigo. Por lo que nunca te quedan solos. Y una adición a eso, igual que mirar a través de respuestas a tus preguntas antes de preguntar en la Q y a, cuando haces un reto, te tropiezas con múltiples variables que podrías no haber considerado antes. Y cuando veas cómo completa el reto, lo tendrás arraigado mucho mejor en tu cabeza cuando te encontraste con el mismo problema cuando sí empiezas a crear tus propios juegos. De acuerdo, entonces pasemos a la estructura del curso y solo hablemos de cada sección. Y brevemente, sólo para ponerte una cabeza arriba sobre lo que vamos a hacer. Por lo que en primer lugar, tenemos la sección uno que están viendo actualmente en este momento. Tenemos la forma de utilizar las partituras, cómo descargar y configurar Unity y Visual Studio. Y luego solo hablaremos del diseño del juego y la inspiración de nuestro juego y de dónde lo vamos a conseguir. También tendremos solo una breve introducción a Unity y Visual Studio, solo para que saques esa incómoda primera fase del camino. Entonces vamos a estar montando nuestro mundo. Esto es justo como dice, vamos a estar montando el mundo que tenemos. Usaremos un poco de sprites con la configuración, el jugador, y así sucesivamente y así sucesivamente. Entonces vamos a montar la mecánica de tiro porque obviamente vamos a tener armas y el invasor del robot de tiempo. Entonces necesitaremos algún tipo de armas. Y lo más importante cada vez que estás empezando de nuevo, es configurar la mecánica del núcleo. Y esto es lo que vamos a hacer montando el tiroteo. Nosotros vamos a armar a los enemigos. Obviamente, necesitamos enemigos. Esta será la primera fase de nuestra configuración enemiga. Entonces vamos a tener una más variada, digamos, más variedad en los enemigos. Pero por ahora esto será suficiente sólo para tener a alguien que le dispare a eso. Vamos a estar creando habitaciones usando mapas de azulejos. Aquí es donde vamos a aprender a rebanar los sprites. Ya aprenderemos a eso, pero aprenderemos a crear ácidos biliares a partir de los sprites rebanados. Y entonces tendremos el nivel de flujo. Entonces es cuando vamos a empezar a pasar de un nivel a otro, porque obviamente se trata de un juego como pícaro. Entonces vamos a crear ese flujo de nivel. Sigamos adelante. Tenemos la Sección 7, que es el ambiente distráctil. Queremos tener cajas que podamos destruir y sacar monedas de ellas y no cajas en realidad, creo que serán jarrones o algo así. Recibiremos monedas de ellas y obtendremos ayuda de ellas. Tendremos tiroteos avanzados. Entonces aquí es donde vamos a crear un sistema de armas. Entonces cuando creamos la mecánica de tiro, sólo tendremos una pistola tal vez, o una escopeta o algo así. Entonces en este tendremos una escopeta, rifle, una pistola, y todo eso bueno. Entonces tendremos el sistema de salud porque a estas alturas todavía no morimos y aún no matamos al enemigo, solo explota. Entonces en esta sección realmente vamos a estar agregando un sistema de salud donde nuestra salud se drene lentamente y también lo hacen los enemigos. Tenemos las pastillas. Obviamente podemos recoger armas de recolección de salud, recoger qué más pueden ser monedas. Tendremos la música y los efectos de sonido, porque qué juego no tiene música y efectos de sonido tendrá múltiples tipos enemigos. Esto es algo que te he dicho antes. Ya tenemos un tipo de enemigo, pero vamos a crear diferentes AI, cuatro maneras diferentes los enemigos funcionarán. Tendremos en la Sección 13, la tienda on y sistema de dinero, como verás en el siguiente video tal vez, o en el próximo par de videos. Nuestra inspiración proviene de un juego que se llama Hades. Y ahí tenemos una tienda y todos, casi todos los juegos tienen una tienda y sistema de dinero. Y aquí es donde vamos a presentar la nuestra propia y la tienda. Se puede comprar salud por mejoras y comprar armas. Algo más, ya veremos, tendremos creando menús. Obviamente, cada juego tiene un menú, por lo que también tendremos un menú. Y entonces tenemos la Sección 15, que es unidad avanzada, y ahí es donde vamos a crear la batalla de jefes. Entonces a este punto, tenemos a los enemigos, tenemos el sistema de armas, tenemos todo preparado. Ahora es el momento de una batalla de jefes real. Y creo que cada buen juego tiene sus propias batallas de jefes. El mecánico será diferente a los enemigos regulares, y será diferente a través un sistema que es la máquina estatal, que es la parte de unidad avanzada del curso. Así que asegúrate de llegar a la sección. Por último, tenemos la sección de aguinaldos, que es la sección 16, que es la generación de habitaciones. Entonces como verás en el juego que sólo vamos a jugar en el, en realidad un cualquier juego como pícaro. Siempre está la generación de habitaciones. Entonces tendremos, digamos, cinco o seis modelos para habitaciones. Y luego mientras matas a todos los enemigos y a todas las olas en cada habitación, entonces vas a pasar a la habitación contigua y el siguiente término será aleatorio. Y también tendrás una opción entre dos habitaciones. Entonces podrás elegir entre, digamos la sala de batalla del jefe y una habitación llena de esqueletos, o la sala de batalla del jefe y una habitación llena de picos. Y entonces tal vez una habitación llena de picos. Y no sé, quizá la tienda o algo así. Por lo que esta será la programación avanzada C-sharp y orientada a porque nos llevará mucho trabajo tener esta selección de salas aleatorias. Y va a ser muy divertido. Vamos a aprender mucho. Entonces, antes de dejarte, solo te voy a dar un par de palabras de aliento. Pero si quieres llamarlo, eso, puede llamar a ese estímulo, pasar por este viaje, vas a enfrentar muchos retos. Así que asegúrate de empujarlos siempre a través de ellos cada vez que encuentres un problema, te recomiendo que, en primer lugar , hagas tu propia investigación. Así que pasa, ve a hacer la pregunta en Google, Checkout, algunos videos en YouTube, y luego cuando te encuentres extremadamente stock, entra en la Q&A, busca tus preguntas, mira para una respuesta. Y también me puedes preguntar de inmediato, siempre estoy ahí, siempre respondo cualquier pregunta. Y con eso dicho, este va a ser un viaje increíble de, no sé cuántas horas ni para ti, cuántas semanas te tomará terminar el curso o tal vez días te llevará días. Lo que te recomiendo es que llegues a las dos últimas secciones porque todo este curso lo es, sobre todo si eres principiante. Por lo que el discurso comienza a un nivel muy principiante, pasamos a un nivel intermedio. Y como ven ahora mismo, y las dos últimas secciones, vamos al nivel avanzado. Y una vez que llegues a las últimas cinco o seis secciones, tendrás tantas habilidades, tantas herramientas en tu arsenal que las secciones avanzadas serán bastante fáciles. Creo que ojalá te haya enseñado todo bien? Entonces con eso dicho, no perdamos más tiempo y empecemos. Continúa. 3. Descarga de la unidad y Visual Studio: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, vamos a estar descargando unidad y estancando bien e integrando con él las herramientas de Visual Studio que vamos a necesitar para las partituras. Entonces, empecemos. Lo primero que necesitas para entrar a Google y luego ir, simplemente ve a teclear aquí mismo, descarga Unity. Es tan simple como eso. Cuando teclees, obtendrás muchas sugerencias. Así que asegúrate de que encuentres el que tiene el Unity 3d.com y el get unity por supuesto, y haz click en la descarga Unity, que abrirá esta página aquí mismo. Por lo que aquí necesitarás descargar Unity Hub si nunca antes habías usado Unity. Ahora bien, ¿qué es Unity Hub? Unity Hub es como un lugar donde mantendremos todas nuestras versiones de Unity y también todos los proyectos que realizamos. Ahora antes de Unity Hub, nuestro proyecto estará por toda nuestra computadora, en algún lugar de diferentes directorios y así sucesivamente. Por lo que el Unity Hub realmente hace mucho más fácil pasar por tu proyecto y realmente tener, si realmente buena organización. Por lo tanto, asegúrate de descargar Unity en función del sistema operativo que tengas. Por lo que si tienes la macOS, debes asegurarte de descargar la unidad 40 macOS. Y si tienes un Windows 7, entonces lo descargas para Windows 7. Por lo que simplemente haga clic en descargar Unity Hub. Y cuando termines de descargar, Q debería tener esta carpeta de instalación aquí mismo. Cuando hagas doble clic en él, te preguntará, ¿quieres? Sí. Por lo que continúas, das click en De acuerdo, eliges el destino donde quieres poner tu Unity Hub. Y luego inicias la instalación. Ahora porque ya tengo instalado Unity Hub, no lo volveré a instalar. Así que asegúrate de instalar todo y te veré en tan solo un poco. Oh, bien, bienvenido de nuevo. Entonces si has instalado Unity Hub correctamente, deberías recibir un mensaje o una ventana aquí mismo que se vea algo así. Ahora bien, aún no tenemos ningún proyecto, pero aquí es donde estarán todos nuestros proyectos presentes y podemos acceder a ellos a nuestro tiempo libre. Ahora, antes de continuar, Unity tendrá que asegurarse de que tenga una cuenta. Entonces esta es mi cuenta aquí mismo. Utilicé mi Google Gmail para crear una cuenta en Unity. Puedes crear una cuenta nueva o también puedes usar tu Gmail o Facebook. No estoy seguro si lo permiten. Y una vez que hayas creado una cuenta en Unity, puedes ir aquí mismo a las instalaciones. Y aquí es donde descargamos diferentes versiones de Unity. Ahora, para este curso, estaré usando la última versión de Unity que tenemos actualmente. Ahora, si quieres instalar una nueva versión de Unity o cualquier tipo de versión de Unity, simplemente ve aquí mismo al anuncio. Haga clic en Agregar. Y aquí dentro se puede ver que tenemos diferentes tipos de unidad que podemos instalar. Ahora, en primer lugar, tenemos los lanzamientos recomendados. Estos son los que ya han sido probados y probados a fondo y funcionan perfectamente. Pero también puedes ir a buscar los lanzamientos oficiales. Ahora, vamos a estar usando esta versión aquí mismo. Y esta es una muy buena versión. Puedes instalarlo. Y también tienes el preestreno es ahora comunicados de prensa son hacer trabajo igual que el comunicado oficial y los lanzamientos recomendados, pero a veces son un poco buggy y posible que te encuentres con un par de bugs en los lanzamientos oficiales. También podría ser capaz de fastidiar tema, pero no son tan evidentes como en los lanzamientos anteriores. Puede que no encuentres ningún problema, pero te recomendaría que uses el lanzamiento oficial porque son más nuevos que los lanzamientos recomendados y menos voluminosos que los pre lanzamientos. Entonces descarga la última versión que tengas en tu computadora. O actualmente tal vez eres del futuro y tienes una versión más nueva que yo. Así que descarga la última versión. Y no te preocupes, este curso funciona o el proyecto que vamos a crear funcionará en cualquier versión de Unidad y el futuro. Ahora, vamos a dar click en Siguiente aquí mismo. Y esta es una parte muy importante de descargar e instalar Unity ahora. Y aquí tenemos módulos, y estos módulos son como complementos a nuestra unidad que nos permiten crear juegos en diferentes plataformas. Entonces por ejemplo, aquí puedes ver que ahora podemos cargar módulos para diferentes plataformas. Entonces, por ejemplo, si quieres crear un juego en Android, puedes usar el módulo para Android. O si quieres crear un juego para el iOS o iconos y así sucesivamente. También puede estar buscando crear juegos para Linux o Mac OS o qué. Entonces, en base a lo que quieras crear, puedes elegir uno de estos módulos modelo, o simplemente puedes esperar más adelante, puedes descargarlos en cualquier momento. También tienes las documentaciones que te recomiendo descargar. Estas documentaciones son la documentación de Unidad y son muy importantes. A veces se quiere buscar ciertas cosas. Y finalmente tienes el paquete de idiomas. Y tal vez si eres chino o coreano, no estoy seguro de cuáles son estos, honestamente, no tengo ni idea. A lo mejor puedes usar uno de estos paquetes de idiomas. Pero lo más importante, y debes asegurarte de que tengas la Comunidad Microsoft Visual Studio instalada la Comunidad Microsoft Visual Studio 2019 o más reciente con tu unidad. Porque vamos a estar usando Visual Studio para codificar todo, todo, y todos los comportamientos de los objetos que creamos inmunidad. Ahora, esto es todo lo que necesitas hacer. Simplemente haz click en Siguiente y comenzarás la instalación de tu Unidad. Entonces con eso dicho, es hora de tu primer reto. Y tu reto va a ser descargar Unity y Visual Studio. Entonces descarga Unity Hub, igual que te mostré, asegúrate de que si tienes un Mac, descargues la versión para Mac. Si tienes un Windows, descarga la versión de Windows. Entonces necesitas descargar la última versión. Y por último, asegúrate de descargar también Visual Studio con Unity. Así que pausa el video ahora mismo y sigue adelante y descarga la unidad con Visual Studio. Y en el siguiente video simplemente repasaremos la interfaz de unidad y Visual Studio que acabas de ver podemos superar nuestros miedos iniciales. Entonces te veré en el próximo. 4. Unity y Visual Studio 101: Hola y bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, simplemente vamos a estar explicando qué es Unity, qué es Visual Studio, cómo se comunican entre sí. Y te explicaremos un poco sobre la interfaz de ambas increíbles herramientas. Entonces, en primer lugar, ¿qué es la unidad? Déjame ponerme mi láser. Por lo que láser por favor. Está bien. Por lo que la unidad es un desarrollador de motores de juegos multiplataforma por, desarrollado por Unity Technologies. Entonces, ¿a qué me refiero con multiplataforma? Multiplataforma significa que se puede utilizar en diferentes tipos de plataformas. Por ejemplo, unity, Windows y Mac OS estarán usando Unity para desarrollar nuestros juegos. Y por supuesto que vamos a estar usando este motor de Unity aquí mismo. Entonces, antes de seguir adelante, déjame solo mostrarte la interfaz de la unidad y pasaremos a explicar Visual Studio, y esto es unidad. Enhorabuena, lo has hecho hasta aquí. Entonces, en primer lugar, tenemos nuestra barra de herramientas aquí mismo sobre todo. Y esta barra de herramientas proporciona acceso a las características de trabajo más esenciales. A la izquierda, tenemos las herramientas básicas para manipular la vista de escena y los objetos del juego dentro de ella. En el centro tenemos el control de juego y pausa y paso aquí mismo, lo que nos permite jugar nuestro juego, pausar nuestro juego. Y entonces también podemos añadir un paso fotograma por cuadro. Los botones de la derecha te dan acceso a la unidad, colaborar, y a la Nube que no estará usando y a las cuentas. También tenemos las capas justo aquí que estaremos usando mucho en este curso para nuestro proyecto. Y finalmente tenemos el layout y bi-capa. Este es nuestro diseño aquí mismo. Entonces podemos cambiar el diseño, por ejemplo, el dos por tres o el cuatro dividido. O básicamente podemos usar el valor predeterminado y esto es lo que vamos a estar usando. Entonces si no tienes la misma interfaz que yo o diferentes tipos de diseños. Simplemente haga clic aquí, vaya al valor predeterminado, y ambos tendremos la misma interfaz. Ahora, de lo siguiente de lo que quiero hablar es de la ventana jerárquica aquí mismo. Entonces si hacemos click en esto aquí mismo, podemos ver que tenemos una cámara principal y esta es nuestra vista de escena. Llegaremos a nuestra vista de escena y aquí tenemos la luz direccional. Pero esta jerarquía, jerarquía aquí mismo representa cada objeto de juego en nuestra escena. Por lo que cada elemento en la escena una entrada en la jerarquía. Por lo que las dos ventanas son realce inherentemente ligadas. En la jerarquía se revela la estructura de cómo el objeto de juego se unen entre sí. Y verán con más detalle lo que quiero decir por apegados el uno al otro. Ahora lo siguiente tenemos la vista de escena aquí mismo. Y si hacemos clic derecho en el botón del ratón, realidad podemos movernos usando las teclas a WASD justo aquí. Y se puede ver que podemos movernos alrededor de nuestro mundo. Y aquí dentro vamos a estar construyendo nuestros juegos. También tenemos otra ventana aquí mismo que es el juego, y esta es nuestra vista de juego. Entonces así es como vemos nuestro juego desde la perspectiva de la cámara, estará cambiando todo a su alrededor. Y aquí es donde vamos a estar más enfocados más adelante con nuestra creación de juegos. A continuación tenemos la ventana del inspector a la derecha y déjame volver escenas. Por lo que en una ventana de inspector, se le permite ver y editar todas las propiedades del objeto de juego seleccionado actualmente. Entonces como puedes ver en este momento tenemos seleccionada la luz direccional. Podemos aumentar y disminuir la intensidad. Podemos cambiar el color, podemos jugar con todo. Y también tenemos la cámara principal aquí mismo. También podemos cambiar y jugar con diversas propiedades. Y el inspector aquí mismo. Y estas palabras técnicas son muy importantes porque las estaré usando a lo largo del curso. Entonces recuerda a un inspector jerárquico, la vista de escena, el juego de vista. Y por último, tenemos la ventana del proyecto justo aquí. Y aquí es donde mostramos las bibliotecas y activos de nuestro juego. Por lo que si hace clic en activos, actualmente, no tenemos nada más que las escenas. Y si hacemos doble clic en escenas, tenemos la escena de muestra justo aquí que podemos hacer doble clic y entrar, podemos guardar. Por lo que no tenemos nada más que nuestras escenas. A continuación, hablemos de Visual Studio y qué es. 0. De acuerdo, entonces, ¿qué es Visual Studio? Por lo que Visual Studio es en realidad Microsoft Visual Studio y es un IDE. ¿ Qué es un DNI? Se trata de un entorno de desarrollo integrado. Y lo que eso significa es que es como un ambiente para que desarrollemos código integrado en Unidad. Entonces esta es una explicación muy complicada, pero aquí básicamente es donde vamos a escribir todo nuestro código. Y VS nos ayudará a escribir el código. Úsalo para manipular objetos de juego en Unity utilizando guiones. Entonces lo que nuestros scripts, esta es la forma en que usamos Unity con Visual Studio. Por lo que queremos unidad para comunicarnos con Visual Studio. En unidad, vas a estar creando objetos de juego. Entonces por ejemplo, el auto que queremos mover mientras no consiguió al jugador que queremos mover. Los objetos quizá que caen, quizá algún tipo, las armas que disparan a los monstruos que nos atacan. Ponemos estos, todos estos objetos en Unidad. Pero siempre que queramos manipularlos, vamos a usar Visual Studio. Pero la unidad y Visual Studio no funcionan automáticamente juntos. El modo en que hacemos que funcionen juntos es a través estos scripts que son archivos CSV dot. Y aquí es donde escribimos todos nuestros códigos en los archivos CSS de punto en Visual Studio y allá, y desde estos scripts vamos a manipular los comportamientos de los objetos que tenemos dentro de Unity. Entonces déjame solo mostrarte cómo se ve Visual Studio. Entonces este es Visual Studio. Déjame acercar un poco. Y aquí dentro se puede ver que en primer lugar, tenemos estas tres líneas que están usando algo, usando algo y usando el motor de Unity. Ahora estos se llaman espacios de nombres. Y cuáles son estos, son una colección o una biblioteca de códigos que nos permiten usar ciertas cosas en nuestro juego. Entonces, por ejemplo, el motor Unity nos permite utilizar diferentes aspectos de la unidad. Por ejemplo, la física en Unidad. Nos permite acceder a diversos detalles en Unity que sin esto. Entonces, por ejemplo, si eliminamos esta línea justo aquí, ya no podemos usar el comportamiento mono. Y porque no estamos usando 10 comportamientos, a los que llegaremos en un segundo. Ya no podemos usar inicio y actualización. Por lo que volveremos a encender esto y podemos usar el comportamiento mono. Antes de llegar a eso, hablemos primero de lo que significa público. Público significa que es para todos. Hay dos tipos. Hay público y hay privado. Llegaremos a eso también. Más tarde. Tenemos la clase y tenemos el nombre de la clase, y este es en realidad el nombre de nuestro script. Y aprenderemos que siempre tenemos que asegurarnos de que nombramos a nuestra clase correctamente la primera vez, porque nos va a crear muchos problemas. Entonces así es como creamos una clase y todo este código se escribirá automáticamente para que no tengas que preocuparte por ello. Estos dos puntos aquí mismo significa que estamos heredados, heredando el comportamiento mono. Entonces lo que es el comportamiento de Monte 10 son, bueno, usamos conductas que ya están construidas en Unity que permite, nos permite controlar los diversos objetos del juego. Y por el comportamiento del dinero, podemos usar dos métodos o funciones, que por supuesto serán más adelante en entrar como inicio y actualización. Y en realidad aquí dentro se puede ver que tenemos esta línea verde. Y esta línea verde significa que esto es un comentario. Y siempre que quieras crear un comentario, simplemente pones estas dos barras traseras detrás de él. Y cada vez que ponemos dos barras entrelazadas detrás de cualquier código, significa que esto es un comentario y no se ejecutará en abrigo. Genial, entonces ¿qué es el inicio? Se llama Inicio antes de la primera actualización del marco. Por lo que cuando alguna vez se inicie el objeto de juego que tiene este script adjunto , se ejecutará el código dentro de este método de inicio. Y similar a iniciar actualización se llama una vez por fotograma. Por lo que pasa cada fotograma por el que pasa nuestro juego. Este método, actualización se llamará un todo dentro de ella se ejecutará para ponerlo de manera más simple, inicio es donde ponemos nuestras condiciones iniciales. Entonces por ejemplo, el peso del auto, la velocidad de nuestro jugador, el clima tal vez. Y luego la actualización es donde hacemos que nuestro auto se mueva. Hacemos saltar a nuestro jugador, y hacemos el cambio climático, por ejemplo, el viento sopla o algo así. Y el otro, no lo sé. Entonces así es como básicamente usamos Unity con Visual Studio. Por supuesto, en el futuro a medida que avancemos por nuestro proyecto, tendrás una comprensión mucho, mucho mejor del inicio y actualización y todo lo que hay en él. Entonces, no te preocupes demasiado si no entiendes todo de inmediato. Pero ahora tienes un reto frente a ti. Y tu reto va a ir y hacer una misa. Por lo que abre Unidad y límpiate. Haga clic en algunas cosas. Y cuando termines, ve al siguiente video y vamos a estar haciendo nuestro primer código y empezar. Y es que aún no sabes crear un nuevo proyecto. No te preocupes por ello. En el siguiente video, vamos a crear un proyecto y hacer nuestro primero ir. Entonces espero que hayas disfrutado de este video y te veré en el siguiente. 5. Control de versión 101: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, vamos a estar aprendiendo todo sobre el control de versiones, árbol de fuentes, y la creación de repositorios de nuestros proyectos. Entonces como puedes ver aquí mismo, hemos creado un nuevo proyecto y hemos descargado el árbol de fuentes. Ahora tenemos un par de commits aquí, y en realidad hemos revertido algo. Hemos creado nuestro commit inicial, añadido un cubo, lo hemos revertido. En realidad podemos revertir este compromiso. A lata. Entonces dar click en Sí. Como pueden ver, podemos volver a la recarga de Unity y tenemos nuestro cubo aquí mismo. Estaremos aprendiendo todo a minuto detalle. Entonces dame toda tu concentración. Esto es muy importante. Se trata de un video o lección extremadamente útil y nos quedaremos contigo para siempre siempre y cuando estés comprometido a convertirte programador profesional o desarrollador de juegos. Entonces, no perdamos más tiempo y empecemos. O K. Entonces control de versión eso y ponme mi control de versión láser. Es difícil de aprender. Es aún más difícil enseñar, pero trataré de mantenerlo lo más simple posible. Y cuando te las arreglas, confía en mí, es muy sencillo y fácil de usar. Además es una habilidad indispensable que debes aprender si buscas convertirte en un desarrollador de juegos profesional o incluso en un programa profesional. Entonces empecemos con lo que es. En primer lugar, se trata de un sistema que se encarga de gestionar los cambios a los programas informáticos. Entonces esto significa que cada vez que creamos cambios en nuestros programas, realidad podemos guardar esos cambios en cada paso de nuestro proyecto. De esta manera, en primer lugar podemos comprobar lo que hicimos. Podemos crear diferentes tipos de versiones donde podemos volver atrás y cambiar las cosas que hemos creado. Permite un mejor trabajo en equipo. Entonces, por ejemplo, digamos que tienes cuatro o cinco personas trabajando en un mismo proyecto, pero cada una de ellas tiene una tarea diferente que necesitan crear. Por lo que el control de versiones es una muy buena forma de manejar todo esto. ¿ Y por qué lo necesitamos? Bueno, ¿por qué nosotros, en realidad lo usamos? Bueno, lo usaremos para recordar la versión anterior de nuestro juego y tener más flexibilidad para experimentar. Por lo general, el desarrollo de juegos es un entorno en el que requieren muchas experimentaciones. Por ejemplo, quieres agregar algún tipo de propiedad a algún tipo de objeto de juego y tal vez rompa todo tu proyecto. Por lo que quieres tener siempre una versión anterior de tu proyecto antes de añadir este mecánico rompedor de juegos. siempre puedas volver atrás y empezar fresco a partir de ahí. Por lo que esto es extremadamente importante, sobre todo para los desarrolladores de juegos que siempre necesitan estar experimentando con nuevas ideas y cosas en sus juegos y proyectos. ¿ Y cómo lo vamos a utilizar? Bueno, vamos a estar usando algo llamado árbol fuente, y este es el control de versiones. Nos permite crear diferentes versiones. Y su primero, es gratis. Es muy fácil para principiantes, muy flexible, y tiene una interfaz muy sencilla que podemos utilizar como principiantes. Entonces sigamos adelante y descarguemos el árbol de fuentes. Déjame mostrarte dónde podemos hacer eso. Si abres Google Chrome o cualquier navegador que tengas, simplemente ve a Google y justo aquí, descarga el árbol de fuentes. Deberías encontrar un enlace aquí mismo, y debería ser el árbol de origen. Arriba. Al hacer clic en él, vas aquí mismo a su página web. Si te desplazas hacia arriba, puedes ver que tienes la opción de descargar para Windows. Pero si estás en un Mac, asegúrate de hacer clic aquí y descargar árbol fuente para Mac OS o no funcionará para ti. Entonces si tienes un Mac, descarga la versión para Mac, si tienes un Windows, descarga la versión para Windows. Suficientemente simple. Ahora, cuando termines de descargar, deberías conseguir este archivo aquí mismo. Y cuando haga doble clic en él, debe iniciar la instalación. Ahora porque ya tengo árbol fuente, no lo estaré instalando en otro momento. Simplemente te llevaré a través del proceso de instalación en realidad. De acuerdo, Entonces esta es la primera ventana que aparecerá para ti. En primer lugar, es necesario aceptar la licencia, por supuesto. Y tal vez puedas apagar esto si no quieres ningún correo electrónico a tu manera desde el árbol de fuentes y etcétera en la lección. Lo siguiente que debes hacer es que necesitas crear una cuenta en ocasiones, puedes acudir a en lysine y colocando como la empresa matriz del árbol fuente puede seguir adelante y crear una cuenta allí, o puedes usar una cuenta existente si ya tienes un Gmail. Personalmente creo uno usando Gmail. Es mucho más rápido, Es mucho más fácil y no te spam con muchos correos electrónicos. Lo siguiente aquí dentro, vamos a conectarlo a una cuenta. Ahora bien, esto es, por supuesto, no vamos a estar haciendo esto. Si quieres hospedar tu código en ciertos sitios web como GitHub o Bitbucket. No vamos a estar haciendo eso, por lo que simplemente puede hacer clic aquí en configuración omitida. Por último, mientras se instala el árbol de fuentes te dirá que no es capaz de localizar get. Entonces para completar esto, simplemente haga clic en Descargar y versión incrustada de Git y continuar. Y entonces también puede pedirte algo llamado mercurial. Ahora, Mercurial es un sistema diferente, al igual que get. Nos permite guardar diferentes versiones de nuestro proyecto. No estaremos usando Mercurial, así que simplemente puedes hacer click en, no quiero descargar o no quiero usar Mercurial. Y esto debe ser cuando termines de instalar. Deberías tener esto aquí mismo. Y tu, bueno, esta ventana justo aquí cuando inicias árbol fuente, si no simplemente haces clic aquí en Crear y deberías obtener esta ventana. Ahora, aquí es donde realmente creamos nuestro repositorio. Y aquí dentro se puede ver que tenemos la ruta de destino, el nombre, y el tipo de control de versión que queremos utilizar. Por supuesto que estaremos usando el GET. También tenemos la opción de crear una cuenta, pero como les he dicho, estamos manteniendo las cosas muy simples. Es nuestra primera vez, así que no estaremos creando ninguna cuenta. Entonces aquí vamos a elegir cuál es la ruta de destino de nuestro repositorio. Entonces qué, cuál es el proyecto del que realmente vamos a estar creando un repositorio para versiones posteriores de. Bueno, vamos a crear nuestro primer proyecto que vamos a estar usando. Entonces aquí que se abre el Hub de la Unidad. Y como puedes ver, ya tenemos Hello World que no tenemos en un video anterior que está dando click en Nuevo. Y asegurémonos de que sea un proyecto 3D. Y este va a ser nuestro ciberespía 2087. Sigamos adelante y creemos este proyecto. Entonces da click en Crear. Y yo, por supuesto, siempre usando mi magia de edición con el fin de acelerar este proceso. Te veré del otro lado. De acuerdo, bienvenido de nuevo. Entonces espero que todo te haya salido bien. Por lo que ahora tenemos un nuevo proyecto que es cibernético despecho 2087. Entonces ahora que tenemos nuestro proyecto creado, en realidad podemos seguir adelante y empezar a crear un repositorio. Ahora, si volvemos a nuestro árbol de fuentes aquí mismo, podemos hacer clic en Navegar y en realidad podemos seguir adelante a los proyectos de Unity. Y se puede ver que tenemos un mundo hola y tenemos un ciberespacio para 2087. Entonces vamos a seleccionar esta carpeta. Creará un repositorio con este nombre. Si golpeamos Crear, se va a preguntar un problema. No te preocupes por ello. Haga clic en Sí. Y voila, ahora en realidad hemos empezado a crear un repositorio. Tienes los archivos escenializados aquí mismo. Tienes diferentes tipos de perillas. No hace falta que te preocupes por ninguno de ellos por ahora, solo céntrate en los archivos escenializados, en los archivos por etapas y comete aquí. Ahora bien, si nos desplazamos hacia abajo en estos archivos en el escenario, se puede ver que la mayoría de ellos son de la biblioteca. Nos desplazamos hacia abajo hasta el final, podemos ver algunos de ellos son Tampa 10 o temporalmente. Podemos ver también que tenemos configuraciones de proyecto y estos son todos los archivos que nosotros para nuestro proyecto. También tenemos activos aquí para la unidad en las escenas por ejemplo. Entonces este es un repositorio el cual es una versión de nuestro proyecto actual. Ahora, el problema aquí es que, como pueden ver, hay una tonelada y tonelada de archivos, y B no va a estar necesitándolos todos. Bueno, en realidad vamos a necesitar casi ninguno de ellos. Sólo necesitaremos cierto tipo de archivos. Por lo que queremos estar haciendo caso omiso de la biblioteca y de los archivos temporales temporales. ¿ Por qué es eso? Bueno, déjame mostrarte abriendo el directorio de nuestro proyecto. Oh, bien, Así que esto es Cyberspace por 2080 directorio sevens dentro del proyecto Unity, como se puede ver aquí arriba. Entonces tenemos los activos, los registros de la biblioteca, paquetes, etcétera, y etcétera. Ahora bien, ¿cuál es la carpeta temporal y cuál es la carpeta de la biblioteca y por qué en realidad no las necesitamos? Por lo que temporal es sólo una forma de que la unidad se abra más rápido cada vez que iniciemos el proyecto. Y siempre se crea cada vez que abrimos un proyecto. Entonces, por ejemplo, si entro aquí mismo a Unity y en realidad la cierro, verás que el archivo temporal. Desaparecerá. Y aunque eliminemos la biblioteca ahora mismo, así que sigamos adelante y eliminemos esta biblioteca por completo. Si volvemos a nuestro Unity Hub y abrimos ciberespía 287. Como puedes ver aquí mismo, viste que la biblioteca se ha creado de nuevo y también se ha creado la carpeta temporal. Entonces, por supuesto, el proyecto debería tardar un poco más de tiempo ahora en abrirse. Pero esto es evidencia de que una biblioteca y las carpetas temporales no son necesarias para que siempre nos comprometamos y escenificemos. ¿ Y a qué me refiero por etapa? Entonces cada vez que escenificamos nuestras carpetas, en realidad creamos un commit a partir de ellas, cualquier versión de ellas. Y biblioteca ocupa mucho espacio. Como pueden ver, si nos desplazamos hacia abajo, ocupa la mayor parte del espacio y no queremos ninguno de ellos en absoluto. Entonces, ¿cómo debemos proceder? Bueno, en realidad podemos ignorar todas las carpetas que están debajo la biblioteca simplemente yendo y eligiendo cualquiera de las carpetas que tienen biblioteca en ellas. Haga clic derecho en él. Y aquí dentro se puede ver que tenemos la opción de ignorar a uno de ellos. Entonces haga clic en ignorar. Y aquí dentro tienes opción ignorar este nombre de archivo exacto, ignorar todos los archivos con esta extensión, o puedes ignorar todo debajo de una biblioteca, y esto es lo que queremos. Entonces da click en Ok. Y como pueden ver, todo lo que hay debajo biblioteca ahora ha sido ignorado, por lo que no podemos escenificarlo, por lo que no podemos guardarlo en nuestra versión más reciente. Y si te desplazas hacia arriba, podrías haber notado que tenemos una nueva carpeta aquí que es el dot git ignore. Y cuando hacemos clic en él a la derecha, se puede ver que tiene la biblioteca. Y, y si hacemos doble clic en él, realidad podemos abrirlo en nuestro bloc de notas y aquí dentro podemos agregar los diferentes archivos que también queremos ignorar. Entonces, ¿cuáles son los expedientes que queremos ignorar? Bueno, hay una tonelada de archivos, pero afortunadamente, alguien realmente ha pasado por todos estos archivos y ha creado una lista de todo lo que podemos ignorar cada vez que creamos controles de versión o versiones de nuestro proyecto. Y para poder encontrar ese archivo, puedes ir de nuevo y a Google o al frente. Adelante y busca dot git, ignora la unidad. Y deberías tener este enlace aquí mismo para el github.com. Y estará alojado en GitHub. Si abres este enlace , te llevará aquí mismo. Entonces este es el dot gitignore y es el punto de la unidad git ignore. Y estos son todos los archivos que podemos ignorar al crear versiones de nuestro proyecto. Puedes hacer click en fila justo aquí, y se abrirá esta ventana o pestaña. Vamos a seguir adelante y seleccionarlos todos haciendo click en control a. copiaremos todo esto usando control C. Y lo vamos a pegar aquí en nuestro bloc de notas gitignore de puntos. Y ahora tenemos el bloc de notas gitignore lleno de todos los archivos que no usaremos para nuestro positivo 3. Vamos a guardar eso usando Control S. Y ahora de vuelta en Unity o me refiero de vuelta en el árbol fuente, puede ver que cuando tuvimos el git ignore, todo se ignora. Vamos a escenificar todo eso. Y cuando escenificamos todo eso, se puede ver que estos son los expedientes que se van a comprometer. Y estos serían nuestro compromiso inicial o nuestra versión de repositorio inicial del proyecto. Y por lo general cada vez que creas tu commit inicial, llamamos a esto la inicial. Puedes capitalizarlo, el inicial, oops, compromiso inicial. Y hacemos click en Comprometir aquí mismo. Entonces ahora si miras a la izquierda, puedes ver que aquí tenemos sucursales y tenemos la rama maestra. Enhorabuena, hemos creado nuestro primer compromiso. Muy bonito. Ahora, permítanme mostrarles cómo vamos a avanzar más abajo de la línea, pesar de que este video ya ha sido lo suficientemente largo. Pero creo que necesitamos obtener una base adecuada para el árbol de fuentes y control de versiones a medida que avanzamos por nuestro proyecto. Entonces digamos que estamos en nuestro proyecto aquí mismo. Y vamos a seguir adelante y crear algún tipo de cubos. objeto 3d. Haga clic derecho en la jerarquía. objeto 3d, crea un cubo, y ahora tenemos un cubo. Vamos a escalarlo un poco. Así que escalar en la x, la y, y la z. Genial. Entonces ahora tenemos un cubo y nuestra escena. Y ahora si entramos en árbol fuente, vamos a guardar eso antes de irnos. Y necesita guardarlo en cierta escena. Entonces vamos dentro de escenas. Esta será nuestra escena muestral. Seguro. Muestra de escena, sí, sustitúyala. Por lo que tenemos esta escena de muestra de vuelta y árbol de origen. Espéralo un poco, y puedes ver que tenemos cambios no comprometidos. Entonces si hacemos clic en ellos, se puede ver que los archivos en el escenario son cambios dentro de las escenas, que es la escena de muestra. Y aquí puedes mirar a detalle lo que hemos creado ahora. Es un poco raro aquí mismo, pero si miras de cerca, puedes ver que hemos creado un colisionador de cajas. Y básicamente esto representa el cubo que hemos agregado a nuestra escena. Entonces sigamos adelante y escenificemos todo eso. Podemos dar click en Commit aquí y nombrar esto añadido un cubo. Haga clic en comentario. Y ahora en nuestra rama maestra, se puede ver que tenemos un commit inicial cual no tenía ningún cubed. Y ahora en nuestro cubo agregado, hemos agregado un cubo. Por lo que felicitaciones. Y como nota final, esto puede parecer un poco engorroso. Esto puede parecer un poco raro, pero no tengas miedo esto es muy sencillo. Y lo que es más importante, es extremadamente importante para nosotros entender a medida que avanzamos por nuestro proyecto, creamos versiones, versiones del mismo. Y si alguna vez cometemos un error, en realidad podemos volver haciendo clic derecho aquí, revirtiendo el commit. Y sí, podemos revertir el compromiso si volvemos atrás y a la unidad, nos pedirá una recarga en vivo. Escribimos, recargamos, y ahora no tenemos el cubo ni ningún mecánico rompejuego que hayamos agregado en el camino. Y ahora es el momento de tu reto. Tu reto va a ser descargar y configurar el árbol de fuentes y el archivo de ignorar. Así que descarga el árbol de fuente y el puesto y configurar todo. Crea tu proyecto 3D en Unity Hub , crea un repositorio para ello y árbol de fuentes, ni los archivos de la biblioteca y consigue el punto ignore archivo y agrégalo a tu repositorio, crea tu primer commit, y luego crea tu segundo commit. Incluso puedes seguir adelante y tratar tal vez jugar con un par de cosas. Agrega un cubo, invierte el commit, ve qué pasa. Ponte cómodo con el árbol fuente. Y si estás teniendo un poco de problemas, puedes pausar el video de esta lista de cosas que necesitas crear. Y también siempre puedes volver atrás y ver el video y ver cómo lo hice todo y seguirme paso a paso. Entonces nos vemos en solo un poco. 6. Inspiración del diseño de juegos Hades: De acuerdo, Así que voy a terminar este video te mostraré el juego Hades. Y es una de las mayores inspiraciones para el proyecto que vamos a crear. Entonces empecemos. Obviamente, tú vas a jugar y yo sólo voy a jugar a uno de los juegos que ya estaba jugando. Te voy a mostrar un par de aspectos en el juego y los que vamos a ser interminables. Entonces este es el hub de área. No tendremos un hub de área necesariamente un juego de horas, pero será justo. Entonces voy a caminar por ahí e ir a la parte real de la jugabilidad. Entonces ve aquí. Y como puedes ver, lo primero que notamos en el juego y este juego, obviamente. Y lo primero que notamos es que tenemos múltiples armas de las que podemos elegir. Esto es algo que obviamente vamos a tener un juego de horas también. Entonces sólo voy a tomar el arma y esto es lo que voy a darle la vuelta. Y yo sólo voy a seguir adelante y empezar a poner muerto otra vez. Obviamente, antes de que empecemos, nuestro juego no será tan pulido como este. Esta es una ganancia de NP que tardó años en crear. Se trata de un operador que tú eliges. Entonces sólo voy a elegir cualquier cosa. Por lo que este juego tomó años y años de diseño gráfico y todo eso bueno. Como se puede ver, se trata de un enemigo. Simplemente vaga por ahí y luego una vez que te encuentra, empieza a dispararte o empieza a atacarte o lo que sea. Como puedes ver aquí mismo tenemos, este es un estilo isométrico de juego. Tendremos un juego de plataformas 2D o un juego 2D. Por lo que obviamente se puede ver aquí mismo tenemos el tiroteo conecta. Para que podamos disparar. Se pueden ver los jarrones que se rompen. Si los mostramos, tendremos un mecánico similar. Y si tiramos, podemos romperlos, pero en nuestro juego podremos romperlos. Y se puede ver que tenemos el guión y esto es algo que se usa regularmente y todo de juegos como pícaros, también tendremos su guión. Bueno, en realidad tendremos un torpedo, pero tendremos al mecánico puntiaguero. Como se puede ver aquí mismo, la capacidad de entrar a una segunda habitación. Entonces vamos a hacer justamente eso. Se puede ver que aquí tenemos la salud. También tendremos un bar de salud. Se puede ver cómo se configura la interfaz de usuario. Vamos a hacer algo bastante parecido. Por lo que puedes ver aquí mismo obtenemos la opción de presionar la tecla E. Voy a presionarlo y vamos al siguiente nivel. También tendremos puertas. Podrás ver tendremos también cada nivel harold tener su propio mapa de azulejo. Podemos ver aquí mismo que tenemos también picos. Entonces esto es algo que vamos a sumar. Tendremos picos fuera, obviamente no tan bonitos como estos, pero ellos harán el truco. Se puede ver en este momento tenemos diferentes tipos de enemigos. Te darás cuenta de que cuando nos ataquen, si estamos corriendo, no nos golpean. Y esto es algo que también vamos a implementar en nuestra ganancia, que es la capacidad de ser invencible por un par de segundos después de que corremos y después, por ejemplo, lo conseguimos . Entonces voy a dispararle a este tipo y lo vamos a matar. Se puede ver que no sólo tenemos un enemigo o dos enemigos que ya están en el mapa. Tenemos enemigos desovando, así que tenemos oleadas de enemigo. Entonces en este playthrough actual y esta cámara actual, verás que sólo tenía un tipo de enemigo, pero generalmente tenemos múltiples tipos de enemigos. Podemos ver que las armas también tienen diferentes tipos de ataques y esta ganancia. Entonces solo voy a disparar y te darás cuenta de que como puedes ver, tenemos múltiples ondas. Al matar a la primera ola, tenemos una segunda onda apareciendo. Entonces matamos al siguiente, matamos al siguiente. Y finalmente ganaremos todas las olas o non y todos los enemigos o muertos. Llegamos a tener nuestra recompensa y las acciones de lucha. Entonces solo voy a recoger cualquier cosa aquí mismo. Y se puede ver que los picos dejan de lastimarnos una vez que ya no estamos en combate. Y esto es algo que quería mostrarles. Tenemos dos opciones. O bien pasamos por la opción a, que es el ANOVA, eso es algo la moneda del juego. Y el otro donde podemos recoger una llave. Y también se puede ver aquí mismo que tenemos la moneda o el dinero que vamos a usar el tiro. Entonces voy a jugar un poco a través este juego y solo te mostraré cómo opera la tienda. Entonces tendrás una idea. Ah, caso. Entonces como puedes ver, uno de los niveles es el corazón, el otro nivel es la tienda. Entonces vayamos a la tienda y veamos cómo se ve eso. Y todo esto vamos a estar implementando en nuestro juego, obviamente a ciertos niveles de grados. Obviamente no podemos crear un juego como éste. Esto lleva años y años y un tema enorme. Ahí vamos. Estamos en la tienda. Tenemos al tendero. No tenemos un tendero y nuestro juego. Tendría el ruido. Puedes agregarlo tú mismo. El trabajo de la mecánica. Como puedes ver, podemos comprar algo de salud, podemos comprar una actualización, o podemos mejorar nuestra salud y nuestro juego. También tendremos cosas similares a ésta donde podamos mejorar nuestra salud, por lo que incrementar la salud máxima que tenemos. También podemos comprar nuevas armas las cuales estarán en el lugar de las actualizaciones. Y también podemos incrementar nuestra salud. Entonces si nuestra salud está baja, sólo podemos comprar algo de ayuda y luego seguir adelante. Entonces esto es básicamente todo lo que quería mostrarte. No sé si hay algo más que quisiera mostrarles. Voy a volver a través. También tendremos obviamente la jugada las opciones, el botón Salir y todas esas cosas buenas, un poco de menú y así sucesivamente y así sucesivamente. Entonces espero que hayan disfrutado de este video, la pequeña demostración de lo que es lo común el futuro. Dicho esto, no perdamos más tiempo y empecemos con la configuración de nuestro mundo. 7. Sección 2: configurar nuestro mundo - configurar la hoja de sprite: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Como puedes ver en este video, hemos creado una escena sencilla. Hemos agregado un fondo sencillo. Hemos añadido una hoja de cálculo con llamado nuestro pequeñito aquí, Jimmy, tal vez le cambie el nombre. No lo sé. A lo mejor lo llamaremos condenado Jimmy. Pero por ahora tenemos el Jimmy GameObject con un fondo de algún tipo de mazmorra. Y tenemos, si jugamos el juego, se puede ver que no pasa nada, pero al menos tenemos la hoja de cálculo y todo configurado. Hemos creado un repositorio aquí mismo. Como puedes ver, el compromiso inicial, hemos aprendido a crear un proyecto utilizando los nuevos datos de Unity Hub. Entonces, no perdamos más tiempo. Y empecemos. De acuerdo, así que empecemos. Lo primero que vamos a hacer es que vamos a crear un nuevo proyecto. Entonces como pueden ver aquí mismo, tenemos la última versión de Unity Hub 3 mejor, acabo de cargar hoy. Entonces vamos a ver cómo está todo configurado. Y aquí tenemos las instalaciones. Es bastante similar a las versiones anteriores de Unity Hub. La única diferencia es que si entramos al nuevo proyecto aquí mismo, se puede ver que tenemos muchas formas de elegir la plantilla que queremos usar. Tenemos la versión de Unity o la versión editora de Unity que vamos a estar usando. Y tenemos los diferentes tipos de plantillas. Entonces esta es una forma de configurar un proyecto. Entonces, por ejemplo, digamos que necesitas un proyecto que sea móvil 2D. Esto lo configurará para ti, pero claro que vas a necesitar descargarlo. Pero lo que vamos a hacer es que vamos a elegir un núcleo 2D. Vamos a tener el nombre del proyecto. Voy a llamarlo la hora. Pero invasor a la ROCC. Me gusta para que puedas elegir el nombre que quieras para tu juego. A mi juego se le va a llamar el invasor del bot del tiempo porque esa es la historia de mi juego. Entonces, y también es un 2D, parecido a una roca. Eliges cualquier nombre que se adapte a tu tipo de juego. Voy a crear un proyecto. Esto va a llevar un poco de tiempo. Entonces lo que voy a hacer es usar la magia de la edición para ir a donde tenemos todo configurado y podemos empezar a crear nuestro juego. Entonces te veré ahí. Oh, bien, bienvenido de nuevo. Entonces ahora todo está configurado. El proyecto está abierto. Podemos empezar a crear nuestro juego. Lo primero que queremos hacer es entrar en la ventana del juego. Y aquí dentro se puede ver que es aspecto libre. Eso no queremos. Queremos que nuestro juego sea 16 por 9 o un 1920 por 10 ATP. Esta es la resolución estándar de la mayoría de las pantallas, mayoría de las PC que van a jugar a este juego. Entonces si no tienes esta opción aquí mismo, puedes hacer click en el botón más y puedes agregar el tuyo usando la resolución fija. Por lo que 1920 por 1080, sólo voy a seleccionarlo aquí mismo. Ahora la resolución de nuestra ventana de juego está fija y podemos entrar en escena y podemos ver todo aquí mismo en nuestra escena de muestra. Se puede ver que tenemos la cámara principal. Tenemos todo preparado. Si cambiamos el tamaño de la ventana de escena, nada cambia. Se queda 1920 por 1080. Está bien, genial. Entonces ahora lo primero que queremos hacer es que queremos agregar algún fondo interesante a nuestro juego. No queremos solo tener esta pantalla azul y estar agregando cosas a ella. Entonces voy a entrar en mis archivos aquí. Voy a seleccionar el fondo y lo voy a arrastrar a los activos aquí mismo. Y ahora se puede ver que lo tenemos, sólo esperemos a que se importe. Ahí vamos. Por lo que voy a dar clic en la imagen de fondo. Y se puede ver aquí mismo en el Inspector, tenemos mucha información al respecto. Y se puede ver que se trata de un Sprite 2D. Mantengámoslo en eso. Pero se puede ver que los píxeles por unidad son de 100 y hay un modo de filtro en este momento, vamos a elegir de bilineal a punto. Esto significa que no hay filtro porque ya tenemos una imagen guapa. Y si agregamos la imagen aquí dentro, notarás que es muy pequeña. Entonces lo que podemos hacer es hacer clic en el fondo y establecer los píxeles por unidad para que sean 50 y aplicar eso. Y ahí tienes. Se puede ver que ahora es mucho más grande. Y sólo vamos a restablecer la posición aquí mismo, 200. Entonces lo que hicimos, acabamos de establecer el modo de filtro a ningún filtro. Hemos ajustado los píxeles por unidad de 100 a 50, y aplicamos todos los cambios y acabamos de establecer la posición y el medio. Entonces ahora si vamos y hacemos clic en el botón de reproducción, notarás que ya no tenemos sólo un fondo azul. En realidad tenemos. Un fondo de aspecto bastante sólido. Ahora, se puede ver que los bordes están un poco fuera de nuestro juego. Puedes cambiar eso si quieres. Hagamos esto tal vez un poco más pequeño para que encaje exactamente como queríamos. Y nos aseguraremos de que también cambiemos la escala en el y Así que solo copie la escala en el eje x, pegada en el eje y. Y ahora si entramos al juego, se puede ver que podemos ver los bordes, aunque aquí hay una pequeña línea azul. Si tienes OCD como yo, en realidad podemos cambiar esta barra moviéndose un poco hacia arriba. Entonces ahora lo podemos pegar aquí. ¿ Se ve bien el juego? No, todavía necesito un poco arriba. Ahí vas. Ahora, el juego se ve lo suficientemente bien. A lo mejor también necesitas cambiarlo aquí abajo. Ahora el juego se ve perfecto. Y sólo vamos a copiar la báscula en el y. copia eso porque cuando salgamos de nuestro modo de juego, se puede ver que la báscula vuelve a la normalidad, lo cual no es algo que queremos. Entonces ahora veamos, el modo de juego y juego se ve perfecto. Ahí vamos. Lo guardamos todo de nuevo en nuestra escena. Podemos ver que el fondo tiene la escala diferente correcta. Sigamos adelante. Lo siguiente que queremos hacer es que queremos sumar a nuestro jugador al juego. Entonces voy a entrar en mis recursos. Voy a elegir al jugador contra jugador. Y vamos a elegir la hoja Xanax. Ahora puedes ver aquí que tengo un tipo de personaje diferente. También podemos usar este si quieres. Te he proporcionado eso y los recursos, pero voy a usar esta hoja aquí mismo porque vamos a aprender cómo podemos dividir esta hoja o rebanarla. Si haces doble clic, puedes ver que esta es una imagen regular de un, algún tipo de, no lo sé, Butler, esta es la que vamos a usar y la estoy usando de este Xenakis, último amigo smash. Es por el rico rojo shrew-like, algo así. Stephen Challenger de juego abierto arm.com, que es un sitio web increíble. Se pueden obtener toneladas de activos libres. Y aquí siempre lo uso para casi todos los activos que tengo. Y puedes ir a revisar el examen Documentos hoja de cálculo descargada desde aquí, dar algo de amor y los comentarios al creador de la hoja sprite. Pero sigamos uno. ¿ Qué estamos haciendo aquí dentro? ¿ Por qué estamos cortando? Y ante todo eso, ¿qué es un sprite? Entonces déjame explicar qué es exactamente un sprite. Entonces me voy a poner mi láser. Un sprite es un al objeto. Entonces al igual que tenemos la imagen que hemos agregado en este momento, esto es algo un poco diferente. Un sprite es un objeto 2D, profundizará en lo que esos son en el futuro. Tienen imágenes gráficas en ellas llamadas texturas. Entonces si volvemos a Unity aquí mismo, se puede ver que tenemos este trasfondo, ¿no? Y también tenemos un renderizador sprite y un elemento Sprite aquí, que es el fondo. Si lo configuro en ninguno, puedes ver que aún tengo el objeto de fondo, pero ya no hay una imagen en él. Entonces voy a fijar este precio del fondo. Se utilizan agregando un componente llamado renderizador sprite a un objeto de juego. Entonces al igual que viste en este momento, tenemos el objeto de fondo y le hemos agregado un render sprite. Y en él tenemos la opción de agregar un sprite. Posteriormente veremos que podemos agregar también capas a los sprites para que puedan renderizarse y frente unos a otros. Entonces de vuelta en nuestro juego, y aquí se puede ver que tenemos la hoja de Xanax. Ahora si lo agregamos a nuestro juego, se puede ver que tenemos toda esta hoja y no queremos eso. Queremos rebanarlo y tener diferentes tipos de animaciones para nuestro examen, no estoy seguro de cómo pronunciar. Yo sólo voy a llamar a esto Jimmy. Este será nuestro gen. Entonces Jimmy, vamos a dar click aquí. Vamos a buscar en el inspector. Podemos ver que tenemos nuestro modo sprite y sencillo, eso significa que toda esta imagen es una sola imagen. Pero como vamos a estar rebanándolo, vamos a hacer que sea un múltiplo. Por lo que elegimos múltiple. Hacemos click en Aplicar, y luego entramos al Editor Sprite aquí mismo. Hacemos click en él. Y ahora tenemos las opciones para rebanar a este bebé. Entonces, ¿cómo vamos a hacer esto? Hay muchas formas de rebanar un sprite. Siempre que tengamos una buena posición, el sprite normalmente lo podemos hacer automáticamente. Entonces si tratamos de hacerlo automáticamente, como puedes ver, no se han rebanado todos los sprites. Eso es bueno. Pero eso no es lo que queremos exactamente. Porque si, digamos que aquí tenemos la animación que es el inactivo. Tenemos tres animaciones, que son el ídolo y tenemos tres animaciones o para no animaciones. Esto, esto, estas tres imágenes crearán la animación del ocioso, y estas cuatro imágenes crearán la animación de caminar. Y esas imágenes crearán el torpedo o el volteo o lo que sea. Pero cada uno de ellos tiene un tamaño diferente y esto será un gran dolor más adelante cuando creemos nuestras animaciones. Entonces nuestro objetivo aquí es rebanarlos exactamente del mismo tamaño todos juntos. Y podemos cambiar el tamaño de nuestra rebanada cambiando aquí mismo, como puedes ver, el corte. Entonces voy a hacer este corte un poco más pequeño para que no tengamos los rectángulos negros. Como puedes ver, hemos quitado los rectángulos negros. Y aquí también hemos quitado los rectángulos negros y lo mismo aquí. Y solo quiero quedarme con esto ahora mismo para poder demostrar lo que pasa cuando realmente aplicamos el corte. Por lo que ahora mismo cambié sólo éste. Se puede ver que el que tiene el inactivo aún tiene rectángulos negros a su alrededor. Y todos estos también han sido rebanados. Entonces, cuando golpeamos la tecla apply justo aquí, puedes verlo arriba. A la derecha. Cerraremos esta ventana y podremos abrir la hoja Jimmy. Y se puede ver que ahora mismo tenemos todas estas rebanadas diferentes de las ovejas. Por lo que podemos sumar cada uno de forma individual a nuestra escena. Y se puede ver la cámara escondiendo el talón jimmy. Ahí vas. Un pequeño Jimmy muy diminuto. Y lo puedes ver aquí mismo. Este es el corte, la rebanada que acabamos de agregar. Y si agregamos el que tiene el rectángulo, se puede ver que hay un rectángulo a su alrededor el cual no queremos. Entonces voy a borrar ambos. Voy a dar click en la hoja del panel. Otra vez. Voy a ir al Sprite Editor y voy a rebanar todas esas cosas correctamente. Ahora, puedes hacer esto por tu cuenta. Es bastante fácil. Yo sólo voy a cambiar las casillas aquí mismo. Entonces los voy a hacer más pequeños. Este es para los ociosos. Entonces ahí lo tienes. Lo estoy haciendo más pequeño para que se ajuste a la plaza. No vamos a estar usando ninguno de esos dos. Voy a borrar todo lo que no vamos a necesitar y saber a estos dos los vamos a necesitar. Por lo que acabo de presionar Control Z para deshacer algunas de las cosas. No vamos a usar el vuelo, pero sí te recomiendo el para guardar algunas de las cosas que tal vez quieras agregar. Entonces voy a rebanar todos estos. No vamos a estar usando las animaciones de tiro que tenemos aquí porque vamos a crear nuestra propia mecánica de tiro. Por lo que solo estoy seleccionando y borrando todos estos. Puedes quedarte con éste por diversión. Digo, honestamente, esto se ve tan gracioso. Puedes conservarlo para su uso posterior. Y por último, voy a cambiar el torpedo aquí. Por lo que también voy a eliminar todos estos. Voy a elegir una de esas cajas. Voy a duplicarlo. Entonces la forma en que duplicamos como Control D, voy a asegurarme de que todas las rebanadas tengan el mismo tamaño. Entonces voy a elegir uno de esos. Y voy a duplicarlo otra vez, ponlo aquí. Tenemos que asegurarnos de que todos estén en la misma altura. Entonces este es 513. Y vamos a ver si esto se ajusta a todos los demás. Posteriormente, entenderás por qué estamos haciendo esto y por qué es tan crucial que todas las rebanadas sean iguales. Entonces voy a mover esto aquí mismo y éste. Por lo que obviamente podemos ver que todos estos encajan correctamente excepto éste. Entonces tenemos que asegurarnos de que esté aquí. A ver si funciona en este. Y es un poco pequeño como puedes ver, no, en realidad encaja perfectamente de arriba a abajo. Eso es genial. Y también intenta asegurarte de que el personaje esté en medio de esto. Entonces voy a mover esto sólo un poquito a la izquierda. Este también. ¿ Y cuál es la altura en esos? Entonces veamos que son tres, 513. Vamos a copiar eso. Está bien. Este es correcto. Pega aquí. En base a éste. En base a éste. Y en base a éste. Y éste, necesitamos tenerlos todos de la misma altura. Ya veo que tengo una caja extra aquí. Voy a borrarlo y ahora tenemos los recortes adecuados que necesitamos. Entonces el ocioso, el caminar, y el torpedo que vamos a usar. Entonces voy a presionar la clave de aplicación. Yo voy a mirar, ahí tienes. Ahora tenemos todo preparado. Voy a usar uno de los, veamos cuál es el ya sea 0. Y también una cosa más que me olvidé de decir, en realidad podemos cambiar el nombre para que pueda cambiar este nombre por uno inactivo. Yo sí. Inactivo tres, y así sucesivamente. Podemos cambiar todos esos por ahora. Simplemente se les llama el examinador diez, Ejemplo 2 y así sucesivamente. Yo sólo los voy a mantener como están. Este no es un paso muy importante, pero solo quería asegurarme de que sabes lo que está pasando. Entonces vamos a, por supuesto, nos va a pedir que ahorremos. Solo vamos a darle el aplico aquí mismo. Recuerda siempre aplicar. Y ahora podemos sumar el inactivo. Y aquí se puede ver que es extremadamente pequeño. ¿ Cómo lo hacemos más grande? Bueno, al igual que hicimos con el fondo, podemos hacer click aquí y podemos cambiar los píxeles por tamaño. Esta será tu tarea. Podemos cambiarlo. Vamos a ponerlo en 15. ¿ A dónde se fue? Ah, así desapareció. ¿ Por qué es eso? ¿ Por qué ya no se muestra? Esa es una pregunta complicada. Nos ocuparemos de eso más adelante. Pero por ahora, sólo tratemos de hacerlo lo más grande que podamos. Entonces tal vez 50 es todavía un poco pequeño. Hagámoslo 32. Entonces creo que 32 es lo suficientemente grande 0, así que en apareció delante. Por qué, por qué aparece a veces en Francia, a veces en la parte de atrás. ¿ Cómo podemos arreglar esto? No te preocupes, vamos a arreglar todos esos en el futuro. Entonces creo que el 32 es un tamaño bastante decente. A lo mejor solo quizá lo hagamos 28. Tan bien. Creo que 28 es suficiente, tal vez incluso un poco grande. Ya veremos más adelante, lo cambiaré de nuevo a 32, tal vez 30. No estoy seguro. Ni siquiera lo sé. Por supuesto, tómate el tiempo para entender cómo quieres configurarlo. Pero hasta entonces antes de irme, déjame emitir. Te comiste pequeño reto y tu reto va a ser crear tu propio jugador. Así que explora el juego abierto r.org o también puedes encontrar una gran cantidad de activos de juego en HI dot io. Estos son sitios web increíbles. La mayoría de los activos son de forma gratuita y puedes utilizarlos. Encuentra algunos personajes y sprites que se adapten a tu estilo. Entonces como pueden ver, he agregado mi propia imagen de fondo. Quizás puedas encontrar un área diferente donde quieras que tu jugador esté batallando. Añádalos a tu juego y corta los sprites, tal como aprendimos en este video, y eso es todo. Así que pausa el video ahora mismo y ve a hacer el caso de cada desafío. Entonces antes de irme, lo último que tenemos que hacer es crear un repositorio. Por lo que ya hemos aprendido a descargar árbol de fuentes, a agregar todo. Lo último que vamos a hacer es que vamos a golpear el Create o puedes abrir una nueva pestaña en las cejas. Veamos unos proyectos de Unidad. ¿ Dónde lo guardamos? Nos olvidamos de dónde salvamos a todos. A ver, Unity proyecta respaldo. Ahí vamos. Encuentra invasor comprado a la fila así es donde vamos a seleccionar la carpeta. Vamos a crear un repositorio. Sí. Y como pueden ver, todo aquí está configurado como aprendimos, tenemos que asegurarnos de que tenemos que ignorar las bibliotecas. Entonces haga clic con el botón derecho, ignore todo en la biblioteca. De acuerdo, entonces ahora tenemos el expediente gitignore. Vamos a abrirla. Vamos a conseguir que eso está bien. Git. Ignorar. Ahí vamos, los amos. Y sólo vamos a dar click en fila. Control, una copia de eso aquí atrás. Seleccionar todo control V. Guarda eso. Atrás. Aquí, se puede ver que el archivo gitignore ha cambiado, por lo que todo lo que no necesitamos se ha eliminado y no se va a guardar. Vamos a escenificar todo eso. Vamos a comprometer nuestro trabajo y este será el compromiso inicial de nuestro juego. Comprometen nuestros cambios, vayan con los amos, y ahí vamos, Estamos preparados para nuestro viaje. Esto es tan emocionante. Esta es la primera vez que creas un proyecto. Verdaderamente, esto es muy emocionante. Entonces espero que hagan el reto. Encuentra tus propios sprites, asegúrate de comprometerte siempre los cambios es muy importante. Entenderás por qué más adelante en tu viaje de desarrollo de juegos , me lo agradecerás, confía en mí, y te veré en el siguiente video. 8. Crear el jugador: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, hemos aprendido todo sobre la clasificación de capas. También hemos aprendido sobre la relación padre e hijo, no como en la relación padre-hijo regular, como en la relación padre-hijo objeto de juego. Como puedes ver en este momento, la escopeta se renderiza delante del brazo o detrás del brazo, pero todas se renderizan frente al jugador, que se renderiza frente al fondo. Y también tiene una pequeña sombra. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Entonces, empecemos. El primero que queremos hacer es que queremos crear un objeto de juego de jugador. Entonces no queremos tener este tampoco uno por ahora, lo cambiaremos. No queremos tener el sprite como objeto principal. Queremos estar usando un objeto de juego de jugador que tenga un cuerpo que es a su vez el render sprite. Entonces voy a cambiar esto de ocioso al cuerpo. Y voy a hacer clic aquí, crear un nuevo objeto de juego. Y voy a restablecer su posición porque actualmente se puede ver creamos este objeto de juego y su posición se basa en Donde estamos buscando en la escena. Para que veas que tiene ciertos actos, cierta manera, una cierta Z. Lo que podemos hacer es hacer es hacer click en la X, ponerla a 0, podemos dar click en la Y, pero si los ceros a 200, pero eso es un poco engorroso en funciona. Pero hay una manera mucho más suave y profesional. Por cierto, hice clic en controles que tres veces para revertir todos estos, podemos dar click en los tres botones de aquí mismo, o tres pequeños puntos. Podemos desplazarnos hacia abajo y podemos ver que podemos restablecer la posición o podemos restablecer todo el transporte. Entonces, por ejemplo, digamos que puse una rotación de un 134. Doy clic aquí, puedo restablecer la posición o restablecer la rotación, o puedo restablecer todo el objeto del juego. Entonces estas son solo pequeñas pistas. Incluso puedes ver que se ha restablecido el nombre del objeto del juego. Entonces no la semana ni la semana, ni siquiera lo nombramos. Yo creo. De todos modos, vamos a llamar a esto la capa de perdición, que también es Ginny. Y vamos a mover el cuerpo y ponerlo ahí, el jugador de la perdición. De acuerdo, Entonces, ¿qué pasó ahí mismo? Déjame rehacer eso. Echemos un vistazo al cuerpo. ¿ Cuál es su posición? Su menos 5.60.89. Cuando lo colocamos bajo el jugador de cúpula, lo estamos haciendo un niño. Por lo que ahora puedes ver que si nos movemos V, no juegues ni de izquierda y derecha, nota que no estamos moviendo el cuerpo. Estamos moviendo el objeto de juego del jugador del doom. Se puede ver que el cuerpo, que es éste de aquí mismo, se está moviendo también. Y se puede ver que podemos cambiar su posición. Y lo genial es, veamos nuevamente el cuerpo, recientemente la posición del cuerpo. Entonces el cuerpo es, digamos agregar 0, 0, ¿de acuerdo? Si movemos al jugador DOM, ¿cuál será la posición del cuerpo mientras sigue siendo 00? Por lo que ahora la posición y rotación y escala y todo es relativo al objeto principal del juego, que es el jugador de la perdición. Pero objeto principal del juego no es la palabra correcta. Es el objeto de juego padre y el cuerpo se convierte en el objeto de juego infantil. ¿ A qué le gusta una relación padre-hijo? Ahora bien, esto no es una sesión de terapia. En realidad es lo que se llama una relación padre-hijo en Unidad. Entonces niño se moverá, rotará y escalará con el objeto de juego padre, como vimos en este momento, utilizado para crear un cuerpo de objetos APT que se mueven juntos. Ya veremos a qué me refiero con un cuerpo de objetos. Quiero decir no sólo el cuerpo del jugador. Vamos a añadir un brazo, vamos a añadir un arma, vamos a añadir una sombra. Y todos esos se moverán o necesitarán moverse con el jugador a lo largo mientras jugamos nuestro juego. Los niños también pueden ser padres de otros objetos. Te darás cuenta más adelante que podemos tener un hijo de un niño. Entonces el niño se convierte en padre, pero sigue siendo un hijo pariente del padre principal. Entonces es como una especie de abuelos si quieres, llámalo así. Por último, las propiedades de transformación hijo son relativas al padre. Eso significa que como viste cuando cambiamos la posición del objeto principal del juego principal principal, la posición del cuerpo se mantiene igual, 0, 0, 0, 0 caso. Entonces volvamos a Unidad. Entonces ahora tenemos el cuerpo. Lo siguiente que vamos a hacer es que vamos a añadir un arma y la sombra. Entonces si entramos en los recursos. El jugador de aquí mismo, se puede ver que tenemos una R y tenemos una sombra. Y este ONE pertenece al otro jugador de doom, no este, el que estamos usando actualmente al otro que he proporcionado, puedes usar ambos. Voy a usar este brazo específicamente sólo para que siempre sepamos la diferencia entre los dos. No se verá tan bonita, pero es bueno para aprender. Entonces voy a seleccionar el brazo y la sombra, y los voy a arrastrar a los ácidos aquí mismo. Voy a poner la sombra y se puede una, intenta hacer esto tú mismo. Entonces si muevo la sombra debajo del jugador de cúpula, notarás que solo moviéndola como niño del jugador de dunas ahora tenemos la sombra en una posición diferente. Puedo restablecerlo y lo puedo poner justo aquí, pero no está ahí. Y aunque lo haga un poco más grande, así que voy a hacer esto tal vez ocho en lugar de 100. Ahí vas. Se puede ver la sombra ahora está al frente. Pero, ¿por qué a veces tiene que estar delante, a veces atrás? ¿ Qué da, cómo vamos a arreglar eso? Discutiremos esto en tan solo un poco. Sólo déjame añadir el brazo aquí mismo. Ahí vamos. Ahora tenemos el brazo. Vamos a ponerlo como el hijo de los jugadores de cúpula a la sombra debajo de él. Vamos a restablecer la posición del brazo. Vamos a hacer que se aplique el 32 armado. Entonces mientras que el brazo, para que puedas ver el brazo. Ahí vas. Está detrás del jugador. Eso no es nada bueno. ¿ Cómo vamos a arreglar esto? Vamos a arreglar esto usando algo llamado las capas de clasificación. Por lo que actualmente, podemos ver que el cuerpo tiene un renderizador sprite, el brazo tiene un renderizador sprite, y la sombra también tiene un renderizador sprite. Y se puede ver aquí mismo en el render sprite hay algo llamado la configuración adicional, que tiene algo llamado la capa de clasificación y el orden en capas. Ahora bien, ¿qué hace todo esto? Se puede ver que todo actualmente el fondo está en el valor predeterminado. El cuerpo, la R y la sombra están todos en el valor predeterminado, y todos están ordenados en 0. Es así como la unidad determina qué sprite debe estar frente a qué otro sprite, sobre todo cuando se trata de juegos 2D. Por lo que actualmente se puede ver que la sombra está en 0 y está detrás del jugador. Pero mira de cerca aquí. O vamos a hacer el brazo. Si consigo la R, sigue en el defecto como es el cuerpo. Pero si lo pongo en el uno, ahí vamos. Ahora está frente a nuestro jugador. Si lo pongo, vamos a moverlo a un lado. Si lo pongo en minús1, se puede ver que desaparece detrás del fondo. Entonces déjame ponerlo de nuevo a uno y déjame ponerlo en el avión. Ahora bien, esto es genial, todo está funcionando bien. Puedo poner el fondo a minús1 y asegurar que cada vez que agrego algo, está al frente o en el banco y el banco. Pero hay un problema. ¿ Qué sucede cuando tengo 100 objetos o 200 objetos de 5000 objetos? ¿ Tengo que ponerlos todos? Minus1 más 1, 2, 3, 4 menos 100. Obviamente no. Lo que tenemos que hacer es crear una capa de clasificación. Y si hago clic aquí mismo en el fondo, y si hago clic en el valor predeterminado, se puede ver que puedo agregar una capa de clasificación a nuestra ganancia. Así que vamos a hacer clic en Agregar capa de clasificación. Abrimos la capa. Como puedes ver, tenemos etiquetas, tenemos capas de clasificación y tenemos capas. Vamos a ahondar en esos en tan solo un poco. Centrémonos en la capa de clasificación. Podemos darle al pequeño plus justo aquí. Y podemos crear una nueva capa que llamará al fondo. Por lo que ahora puedes ver que el fondo se renderiza por delante o por detrás del valor predeterminado. Entonces si vuelvo al segundo plano, esto tendrá sentido en tan solo un poco. Pondré la capa de clasificación como fondo. Y ahí tienes. Se puede ver que desaparece. Porque déjame volver. De la forma en que regresamos, vamos a Capas, las capas que puedes ver aquí. Entonces capas, capas añadidas. Conseguirás a este inspector. Si muevo el fondo detrás del valor predeterminado, se puede ver ahora mismo que el, todo lo que estaba en la capa por defecto, por lo que la sombra, el brazo y el cuerpo ahora se renderizan frente a ella. Por lo que volver a capa. En esa capa se puede ver que así funciona la jerarquía. Y esto es muy importante aquí mismo. Pero como puedes ver, hace la vida mucho más fácil. Ahora tienes un reto y tu reto va a ser crear una capa de clasificación de capas. Por lo que vamos a crear una nueva capa de clasificación llamada jugador. Asignar todos los elementos del jugador a esa capa. Asegúrate de que el jugador se renderiza delante del fondo como vimos cambiando la jerarquía en la capa de clasificación. Y por último, como un reto extra, si te sientes a la altura, ve a los Recursos, agrega un arma de su, ponla en el jugador, y asegúrate de que se renderiza entre el jugador y el brazo. Queremos que el brazo esté delante de la pistola, pero queremos arma para estar también frente al jugador, pero detrás de la pistola. Por lo que necesitarás jugar con eso. Si necesitas crear una capa extra, ve por ella. Puedes crear tantas capas de clasificación como quieras, pero asegúrate de que lo verdadero guarde las cosas para que no tengas que crear una capa especial para el brazo y la sombra. Es todo el tiempo en el jugador. Entonces no te preocupes por eso. Con eso dicho, pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces, ¿cómo conseguiste casi eso? Espero que hayas hecho todo lo posible para hacer el reto. Siempre haz lo mejor que puedas con un reto, aunque sea difícil, aunque no estés seguro de cómo hacerlo, siempre puedes volver atrás y deshacer lo que hiciste. Aprendes de los errores que has cometido. De todos modos, capa de jugador, voy a seleccionar el cuerpo, sostener Control, seleccionar el brazo y la sombra. Y puedo cambiar todos esos. Y a la capa de jugadores, voy a mover la sombra para estar justo debajo del jugador aquí mismo. A ver. Ahí vamos. Puedo hacer la capa de orden. Vamos a mantenerlo en 0. El cuerpo estará a la una y el brazo estará a las dos. Por lo que el brazo siempre será renderizado y frontal del cuerpo del jugador. Salvamos la escena y vamos a entrar en nuestros recursos y conseguir nuestras armas. Para que se pueda ver aquí mismo en nuestros recursos tenemos las armas que va aquí. Vayamos al PNG. Voy a seleccionar la escopeta, va a arrastrarla a los activos aquí mismo. ¿ Voy a qué final? El jugador de cúpula. Voy a cambiar esto a través de la pistola de tiro. Es extremadamente pequeño. Voy a asegurarme de que esto sea una tercera rampa, para tal vez aplicar los cambios. En tanto que la escopeta 0 o que arranca a lo grande. Entonces voy a cambiar esto a tal vez la pistola Eso es crear una capa de clasificación para el arma. Entonces todas las armas, armas. Y se va a poner eso como las armas. Está bien. Es un poco más grande de lo que me gustaría. O sabemos porque estamos usando sólo las armas en el jugador que no vamos a crear. Entonces ahí vamos. Vamos a quitar esto. Mantendremos la escopeta en la capa de jugador. Y como el brazo está en los dos, lo pondremos en los tres y la escopeta estará en los dos ahora mismo. Entonces ahí tienes. Pero obviamente, hagamos de esto un hijo del jugador. Y obviamente tendremos que hacer la escopeta un poco más pequeña. Entonces 32, hagámoslo 50. A ver cómo se ve eso. A lo mejor demasiado pequeño. Vamos a intentarlo. 40. Gracias. Cuarenta serán buenos. Aún así de grande. A lo mejor hagámoslo de 40 a 40 para aplicar eso. Sí, creo que eso es escopeta se ve bastante bien. Entonces ahí vamos, guardemos todo eso, corremos el juego. Y ahí vamos. Entonces ahora tenemos el fondo, el jugador, tenemos una sombra que es un toque muy bueno por cierto, le da al juego capaz de profundidad. Y tenemos una escopeta que se renderiza frente al jugador. Ahora creo que la escopeta se beneficiaría con un poco de cambio de posición, pero por ahora, espero que la disfruten. Vámonos y nunca olvidemos también. Cambios metálicos. que veas que vamos a escenificar todo esto, pero sí tenemos un par de cosas que no quisiéramos cambiar. Entonces por ejemplo, algunos de los PNG o las imágenes que ocupan mucho espacio. Por ahora los vamos a conservar, pero más adelante verás que no tenemos que escenificar las imágenes. Simplemente podemos quitarlos. Ocupa mucho espacio, espacio innecesario. Entonces vamos por ahora, vamos a escenificar todo eso, comprometer los cambios. ¿ Qué hicimos? Creamos un jugador y aprendimos capas de clasificación. Es muy importante nombrar siempre a tus commits con algo que puedas recordar más adelante. Entonces por ejemplo, ahora sabemos que este fue el commit inicial y el segundo commit creamos un jugador y aprendimos capa de clasificación. Podríamos haber agregado un arma, cambiar la capa de clasificación de las pistolas, etc, etc. Así que espero que la disfruten y nos vemos en el siguiente video donde realmente estaremos agregando un guión al jugador y empezaremos a cambiar su comportamiento. Tan emocionante, nos vemos entonces. 9. Movimiento de entradas (variables): Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, vamos a estar creando nuestro primer guión y agregándolo a nuestro reproductor de doom. No sólo eso, vamos a estar aprendiendo muchas cosas, vamos a estar aprendiendo lo que significa esta palabra aterradora. Vamos a aprender sobre las variables. Vamos a aprender sobre los insumos. Vamos a aprender sobre el vector 2. Vamos a estar aprendiendo cómo empezar y actualizar funcionan por separado. Entonces con eso dicho, este es un video un poco más largo si quieres, pero si eres principiante, es muy importante, muy crucial entenderlo todo. Entonces, no perdamos más tiempo y empecemos. Oh, está bien, entonces es hora de algunos scripting. Lo primero que vamos a hacer es crear un guión y asignarlo al jugador del doom. Ahora, hay muchas formas de crear scripts y hay muchas formas de asignar scripts a ciertos objetos. Todos son iguales. Empecemos con el más básico, y eso es simplemente hacer clic en el objeto del juego. Se puede ver aquí mismo que tenemos la transformación. Es uno de los componentes que tenemos. Podemos agregar otro componente aquí mismo haciendo click sobre él. Ahora, se puede ver que tenemos muchos componentes que podemos agregar, van desde el audio a afectar, hasta la física y así sucesivamente. Pero también tenemos esta opción aquí mismo de agregar scripts. Podemos dar click en él. Podemos ver a través de ella y agregar el guión que queramos. O incluso más fácil que eso, simplemente podemos empezar a escribir el nombre del script que queremos agregar. Y el guión que queremos llamar o crear será el controlador del jugador. Por lo que vamos a crear controlador de capas aquí mismo y asegurarnos de que cree el nombre para que sea una sola frase sin ningún espacio. Se puede ver aquí mismo tenemos la opción de un nuevo guión. Vamos a dar click en él. Se puede ver el nombre como controlador de jugador. Y ahora podemos crear el guión, pero asegúrate de que zapato descubra la palabra correcta o el nombre correcto para el guión porque será el nombre de la clase dentro de este guión. Esto será muy crucial a medida que crees guiones más adelante. Entonces vamos a crear un anuncio. Espera sólo un poquito. Y ahora deberíamos ver que tenemos listo el guión. Si le damos click aquí mismo, podemos ver en el Inspector cómo será este guión. Y ahora vamos a hacer doble clic. Y se puede ver que Visual Studio se está abriendo. Ahora. Una de las cosas que mucha gente o muchos estudiantes míos me siguen preguntando una y otra vez. Si tu script no se abre usando Visual Studio, o por ejemplo, cuando escribes algo aquí y no obtienes las recomendaciones de Visual Studio, puedes entrar en el eso, ir a Preferencias, ir a Herramientas externas, y en el editor de scripts externo, asegúrate de tener Visual Studio Community. Puedes elegir nuestros IDE como Visual Studio Code. Pero a mí personalmente, me gusta o prefiero usar la Comunidad Visual Studio 2019. Es mucho mejor y más suave que el estudio. A veces el estudio solo tiene sus peculiares donde no aparece, no se abre correctamente. Por lo que prefiero usar Visual Studio Community. Eso es gratis. Funciona. Sigamos adelante. Ahora. Tenemos nuestro guión abierto aquí mismo. Tenemos las bibliotecas que podemos usar. Tenemos el nombre de la clase, el controlador del jugador. Siempre debe tener el mismo nombre que el script que hemos creado aquí mismo. Entonces puedes ver controlador de jugador bajo ninguna circunstancia cambias el nombre del guión aquí sin cambiar el nombre de la clase? Ni siquiera intentes hacer eso. Creará muchos problemas. ¿ Qué tenemos aquí? Es un público, ya veremos qué significa eso. Es una clase, es un comportamiento mono. El comportamiento de Monte nos da la capacidad de usar cosas como inicio y actualización. ¿ Qué es el inicio? Start es un método. Veremos más adelante cuáles son los métodos. Pero por ahora todo lo que necesitas saber cualquier código que escribamos dentro de la estrella se ejecuta tan pronto como iniciamos nuestro juego, si ese objeto está encendido, claro, veremos lo que eso también significa más adelante. Una actualización, como puede ver, actualización se llama una vez por fotograma. Entonces si tenemos, por ejemplo, cosas que queremos llamar cada actualización de fotogramas es perfecta para eso y veremos todo esto a medida que avancemos por este curso. Entenderás todo, no te preocupes por ello. Ahora, lo primero que tenemos que hacer es que necesitamos una forma de mover a nuestro jugador. Lo haremos tomando entradas de las teclas de flecha o de las teclas WASD. Pero antes de hacer eso, hay algo que debemos tomar en consideración y esa es la velocidad de movimiento de nuestro jugador. Y para eso, vamos a necesitar una variable. ¿ Qué es una variable cuando se trata de C-sharp? Déjame explicarte. Las variables son como cajas. Entonces tenemos una caja, le damos el nombre vive, y ponemos dentro de esa caja un número tres. Por lo que ahora tenemos una variable obtener vidas que tiene un tres dentro de ella. Entonces así es como creamos el código para esta caja o valiosa. Empezamos dando la accesibilidad. Entonces, ¿dónde se puede acceder a esta variable? Puede ser público o puede ser privado. Si es privado, sólo podemos acceder a él dentro de la clase que hemos creado, no desde afuera. Si es público, podemos salir de cualquier otro guión que queramos. Tenemos que asignar el tipo de la variable. Por lo que tenemos múltiples tipos, tenemos enteros, cadenas y así sucesivamente. Veremos en tan solo un poco qué otros tipos tenemos. Tenemos el nombre de la variable. Obviamente, cada variable debe tener un nombre. ¿ De qué otra manera lo llamamos? Y tenemos los datos que se encuentra dentro de esta variable. Entonces así es como creamos una variable en C Sharp. Y esta es la representación si quieres, Es justo como una caja que ponemos las cosas y luego seguimos adelante. Tenemos diferentes tipos de variables. Y el primer tipo es una velocidad. Entonces un entero es un número normal, digamos 123456. Un flotador es, digamos 4.8. ¿ Por qué tenemos un flotador? Porque a veces la velocidad de algo o la velocidad de un auto no son sólo cinco o seis. Puede ser 6.32, puede ser 6.9, puede ser 6.9456. Entonces necesitamos un flotador, y así es como creamos un flotador. Siempre agregamos los datos. Por lo que el 4.8 con una F al final. Entonces tenemos un booleano. El booleano suele ser cierto o es falso. Entonces, por ejemplo, digamos que queremos determinar si un jugador está muerto o no. Entonces como él, que está muerto, entonces la variable es cierta. Si no está muerto, entonces la variable es esa S falsa. Por último, tenemos una cuerda. Entonces, por ejemplo, ¿qué es una cadena de caracteres? Tenemos múltiples personajes, uno tras otro. Veo h, e, l Esa cadena de personajes es Michael. Por lo que llamamos a una variable de tipo string con el nombre mi nombre, y representa michael. Asegúrese siempre que cree una variable de cadena que esté entre estas dos comillas. De acuerdo, ahora, con todas estas variables hechas con, Vamos a seguir adelante y crear nuestra propia variable en los guiones aquí mismo. Entonces lo primero que vamos a hacer, ya que vamos a crear algo llamado campo serializado. Ahora, no tengas miedo de este nombre largo. Va a ser un entero, y se le va a llamar la velocidad de movimiento. Ahora esto determinará qué tan rápido se mueve nuestro jugador a medida que implementamos tu entender y por qué estamos usando algo llamado el campo serializado. Me acabas de decir, Michael, que es público o privado. ¿ Qué hace este campo serializado Meet? Bueno, no te preocupes por ello. Más tarde. También explicaré por qué estamos usando algo llamado campo serializado. Pero por ahora entienda que es algo que podemos ver en el Inspector. Entonces si hago esto público, guarda esto, vuelve a nuestro guión. Ya verás que en el inspector esto cambia. Tenemos el público y el movimiento. Y si vamos al jugador de la fatalidad, puedes ver aquí mismo que tenemos la velocidad de movimiento y podemos cambiarla. Pero si lo hago privado para que otros guiones no accedan a él, notarás aquí mismo que ya no podemos cambiarlo. Pero y si queremos poder cambiarlo desde el Inspector, pero al mismo tiempo, no queremos que otros guiones accedan a él. Bueno, en ese caso, creamos un campo serializado. lo guardamos. Volvemos atrás y hacemos inspector. Y puedes ver en este momento, no podemos cambiarlo, pero otros scripts no pueden acceder a él. lo veremos más adelante a medida que avancemos cuando tengamos otros guiones. Genial, por lo que ahora tenemos la variable de la velocidad de movimiento. Lo siguiente que queremos conseguir es d, movimiento, dirección o la entrada que obtenemos. Entonces, ¿cómo vamos a mover a nuestro jugador? Bueno, vamos a necesitar dos insumos. Uno que moverá al jugador a izquierda y derecha, o en dirección horizontal, y otro que moverá al jugador hacia arriba y hacia abajo, que es la dirección vertical. Entonces la forma en que hacemos eso es usando el sistema de entrada y vamos a conseguir nuestras entradas usando algo llamado el punto de entrada get access Raw. Ahora, podría estar confundido. ¿Qué es eso? ¿ Cómo vamos a conseguir esto? Bueno, siempre que te enfrentes a algunos tal vez. A lo mejor un nuevo método o alguna cosa extraña que estamos usando en unidad y estás un poco confundido. Tienes un amigo muy servicial, que es Google. Y luego cuando lo busques en Google, puedes ver que tenemos algo llamado la documentación de Unity, que es un lugar tan increíble y debería ser una fuente diaria de información para ti. Por lo que queremos usar input. Queremos conseguir los ejes, que son los horizontales y verticales. Se puede ver aquí mismo, si lo buscamos y las documentaciones, tenemos toda la información que necesitamos. En primer lugar, podemos ver cómo funciona la declaración. Podemos ver la descripción por lo que devuelve el valor del acceso virtual identificado por nombre de eje. También te dice cómo usar estos diferentes métodos. Y también te da aquí mismo un ejemplo de cómo usarlo. Y he aquí, lo usan y la actualización, incluso podemos seguir adelante y copiar esto y usarlo en nuestro propio rey. Pero por ahora, sólo vamos a buscar el punto de entrada, obtener fila de acceso, horizontal. Muy bonito. Pero, ¿de dónde sacaron el nombre horizontal? Vamos a comprobarlo. Si volvemos atrás y nuestro juego. Si vamos al archivo o déjame ver la Editar configuración del proyecto. Si miramos a través del gestor de entrada, hacemos click en el eje, podemos ver que tenemos el firewall horizontal, vertical para saltar, salto fuego MouseX, etcétera. Estos son todos los insumos que podemos utilizar. Y si hacemos click en el Horizontal, se puede ver aquí mismo que tenemos el nombre horizontal, ahí por qué se está utilizando aquí mismo. tanto que aquí se puede ver que estamos usando horizontal. Y también tienes la vertical y puedes ver que el botón negativo está a la izquierda, el botón positivo está a la derecha. Y también tienes un botón fuera negativo, lo que significa alternativa, que es la a y la D. También tienes la gravedad y demás, pero de detalles ahí dentro. Y también tienes el eje, el eje x, que significa lo horizontal. Entonces sigamos adelante en nuestro código e implementemos esto. Entonces vamos a abrir el frío aquí mismo. Lo usaron una actualización. Sigamos adelante y lo usemos y actualicemos porque queremos tener acceso a ella cada vez. Entonces vamos a escribir aquí punto de entrada, obtener acceso mal. Y vamos a abrir los dos corchetes aquí. Pero ahora queremos escribir horizontal. Digamos que escribimos prisa xanthan. Para que puedas ver, como que lo estropeé. No es la palabra correcta. Si no es exactamente la misma palabra que la utilizada aquí mismo en la Configuración del proyecto. Esto no funcionará. ¿ Qué significa eso? Siempre que estamos usando las referencias de cadena, ya aprendimos qué son las cadenas. Tenemos que asegurarnos de que vayamos a Unidad. Haga doble clic aquí para seleccionarlo, Control C para copiarlo, vuelva aquí y pegue. Esto fue asegurar que no cometeríamos ningún error cada vez que estamos creando o usando una referencia de cadena. Esto es muy importante porque cuando se trata de errores, esto no será detectado por el Visual Studio. Por eso es imperativo siempre que estés usando una referencia de cadena para siempre, siempre copiarla y pegarla. Esta es una regla que usarás todo tu desarrollo de juego de viaje. Ahora que tenemos el eje rodar sobre horizontal. También podemos agregar la vertical, pero no es suficiente. Necesitamos una forma de almacenar lo que estamos haciendo clic. Entonces la forma en que hacemos eso es que vamos a crear otra variable aquí. Esta vez va a ser privado. Va a ser de tipo vector 2 y va a ser el movimiento. Y ahora qué es un vector dos y por qué lo usamos para tener la entrada de movimiento. Bueno, porque si miramos atrás aquí y esperamos a que se compile, puede ver que la posición es una x, y, y z Ahora, porque no estamos trabajando en dimensión VC y esta dimensión, quieras llamarla, nosotros sólo están trabajando en la x e y. queremos tener un vector a que tomará tanto la x como la y. entonces ahora lo que podemos hacer en nuestro código, podemos venir aquí. Podemos escribir entrada de movimiento. Podemos agregar el punto x y va a ser igual al punto de entrada. Obtener acceso mal. Y solo para asegurarnos de que podamos ver todo, vamos a escribir debug dot log. Y aquí dentro sólo vamos a imprimir el movimiento, ese pie punto x. Vamos a guardar eso. También sigamos adelante e imprimimos el registro de puntos de depuración y toda la entrada de movimiento. Entonces voy a escribir aquí, este es el vector. Para guardar eso, vuelve a Unity y asegúrate de tener la consola aquí mismo. Si no vas a Ventana, ve a General. Y puedes ver aquí mismo tienes la ventana de la consola. Por lo que vamos a dar click aquí. No te preocupes por estos pequeños errores. Ejecuta el juego. Ahí vamos. Por lo que podemos ver que actualmente tenemos ceros. Podemos dar click en el colapso. Esto colapsará todos los mensajes que son iguales. Si ahora tratamos de presionar a o D, si presionamos sobre la a, ahí tienes. Se puede ver que esto se convierte en menos 1 y el vector 2 es menos 1 000. Si presionamos la tecla d, notarás que se convierte en 1 y el vector dos es 110. Entonces ahí vamos. Excelente. Ahora que entiendes cómo funcionan estas, cómo se ven estas, es hora de un pequeño reto y tu reto va a ser conseguir la entrada y. Así que comprueba en Project Settings Input Manager para la entrada y, ¿cuál debería ser? ¿ A qué me debe referir la cuerda? Obtener la entrada y el código utilizando el rodillo del eje de brecha. También puedes echar un vistazo a algo llamado el get access sin fila. Este es un buen El recurso extra para que hagas. Es muy fácil, solo revisando la documentación, el solo consigue acceso sin Rob, ve cuál es la diferencia. Y por último, necesitarás mostrar esa entrada en la consola usando el registro de puntos de depuración, igual que hicimos usando la entrada de movimiento. Así que pausa el video ahora mismo y ve a hacer el cada galón. De acuerdo, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Siempre espero que estés intentando lo mejor posible. Entonces vamos a duplicar esta línea. ¿ Cómo haríamos eso? Simplemente haga clic en el final de esta línea. Sostén el control D. Ahora tienes exactamente la misma línea. Vamos a cambiar esto de la x a la y. ahí tienes. Y luego el input.txt obtener acceso. Rob, ¿qué debería ser esto? Bueno, sabemos que esto debe ser vertical, pero siempre que estamos tratando con referencias de cadenas, vamos a la vertical, hacemos doble clic en Control C, retrocedemos en el control de código V, guardamos eso. Y vamos a duplicar esto también, punto de entrada de movimiento y. Y vamos a añadir un poco de palabras aquí. Entonces esta será la x, esta será la y. guardar todo eso, volver a la unidad. Eso es cerrar la ventana de configuración del proyecto. Ejecuta el juego. Entonces ahora como se puede ver tanto la x, la y, y el vector o todo 0. Y se puede ver cuántos tenemos aquí. Una vez presionamos la w, Podemos ver que tenemos la y como uno, el vector 2, 0, 1. Si presionamos la S, es minús1. Si presionamos el a, x es minús1 mientras que el y sigue siendo 0, lo puedes ver aquí mismo en el vector 2. Si presionamos tanto la tecla W como la tecla D, se puede ver que tenemos este vector es 1, 1 con x siendo uno. Y todo está funcionando perfectamente bien con todo. Por lo que espero que lo disfruten. Espero que hayas entendido lo que está pasando. Si no estás seguro de lo que está pasando. Trató de mirar a través de esto de nuevo, entender lo que significa un vector dos. También tenemos algo llamado el vector 3. Siempre que estamos trabajando con dimensiones VC, si se trata de un juego 3D. Y con eso dicho, espero que disfruten y espero que también entiendan cómo se está llamando actualización cada fotograma se puede ver cuántas veces se está llamando. Y sólo por una pequeña demostración, si todavía estás un poco escéptico de lo que estoy diciendo, Probemos debug dot log. Y digamos aquí, oye, estoy y empiezo a ser llamado una vez. Guardó eso de nuevo en nuestro juego cuando corremos, tan pronto como este se ensambla, ejecutar el juego. Ya verás aquí mismo, oye, se llama sólo una vez. Y a estos se les está llamando cada fotograma. Y nuestro juego con eso dicho, de vuelta aquí, comprometer todos nuestros cambios. Comprometerse. ¿ Y cómo deberíamos llamarlo aquí? Se creó un guión para el jugador y las variables aprendidas. Ahora bien, esto es porque estamos creando un curso normalmente cuando estás haciendo un proyecto y aprendiendo variables, ¿no es eso importante? Yo lo voy a quitar. Eso es sólo decir que creó un script para la capa. Nosotros vamos a comprometer nuestros cambios. Y te veré en el siguiente video. 10. Cambio de la posición del jugador (transformación de objetos de objetos de juego: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, en realidad vamos a poner a usar las entradas que creamos y vamos a ver lo importantes que son las variables. Entonces ahora cuando corremos nuestra ganancia, notarás que no sólo nos quedamos ahí parados. No tienes nada en la consola. Cuando presionamos la tecla WASD, podemos ver que nuestro jugador se mueve a la izquierda, derecha, izquierda, arriba, abajo. Y no sólo eso, si yo aumento la velocidad de movimiento, ahí vamos, Somos mucho más rápidos. Entonces no sólo movemos al jugador con las llaves, también podemos controlar lo rápido que se movió. Entonces bueno, dicho eso, no perdamos más tiempo y empecemos. De acuerdo, entonces ahora que tenemos los insumos listos, vemos cómo funcionan. Es hora de empezar realmente a mover al jugador. Como lo prometimos. Abramos el guión aquí mismo. Y sigamos adelante y eliminemos estos debug dot log. Estos estaban justo aquí también. Haznos creer que esto realmente está funcionando. De acuerdo, entonces lo primero que tenemos que hacer es tener acceso a la posición transformada del jugador. Entonces vamos a seguir adelante y hacer clic en Transformar. Y puedes ver aquí lo útil que ya es Visual Studio. Nos está diciendo cuál es la transformación. Por lo que la transformación que va a escribir en este momento es el transporte adjunto a este objeto de juego. ¿ Qué objeto de juego? Es el objeto del juego que tiene el script del controlador del jugador en él. Y si miramos atrás aquí, hacemos click en la capa. En cualquier momento ahora hacemos clic en el jugador. Podemos ver que el controlador de jugador está unido al jugador y la transformación que está en el GameObject no juegan como esta. Por lo que estamos accediendo a esta transformación específica. Por lo que de vuelta aquí, volveremos a escribir transform, pulsa Tab para completar la posición de punto de palabra. Se puede ver que se puede acceder a la posición, a la escala, la rotación, a todo lo que está disponible en la transformación. Y escribimos posición. Ahora, esto va a ser igual a un nuevo vector tres. Y va a ser, digamos por ahora solo 0.1 f. Y también podemos escribir punto 1 f Esto significa 0, y mantendremos el eje z en el mismo lugar. Eso lo ahorraremos. Ahora bien, podría estar pensando ¿por qué Vector3 no simplemente dijimos que no queremos modificar esto? Bueno, si pasamos por encima de la posición, se puede ver que la posición espacial mundial de la transformada como vector tres, que también puede pasar por las documentaciones y ver que en realidad es la posición transformada de cualquier objeto, independientemente de si estamos usando 3D, 2D 1D, Eso es imposible, pero se obtiene el vector de imagen tres posición. Siempre accedemos a la posición del vector C, pero lo mantenemos como 0 f Ahora el alcance no está completo, pero lo voy a usar solo para que aprendamos a medida que cometemos errores, voy a guardar esto. Voy a volver aquí. Y solo pongamos algunos valores reales aquí para que lo sepamos, así que menos cinco y digamos que esto es minús1 salvará eso. Vamos a correr nuestro juego y veamos. Ahí vamos. Por lo que 0.10.1. Ahora bien, ¿cuál parece ser el problema? ¿ No lo estamos llamando cada fotograma? Bueno, el problema aquí es que simplemente estamos asignando este valor aquí mismo, el nuevo vector, 30.10.10 f a la posición. En cada cuadro no estamos aumentando la posición de transformación. Entonces, ¿cómo vamos a empezar a aumentar? Déjame que detenga aquí al dramaturgo. Vamos a escribir que tomamos la posición de punto transformado del objeto del juego y luego le agregamos el vector 0.10.1 3, cada fotograma. Entonces vamos a ahorrar eso. Y volvamos atrás y miremos nuestro juego, cómo se ve ahora mismo. Corremos el juego y ahí vas. Muy goles. El jugador acaba de salir del edificio, como se puede ver, como se puede ver en este momento lo que sucede aquí. Tomamos la posición transform.py. Asignamos en la transformación ya disponible, pero posición más el vector 3, y lo hacemos cada fotograma. Entonces digamos que empezamos en 0, 0. Tomamos 000 aquí mismo, agregamos a este vector, el siguiente cuadro tenemos 0.21. Nosotros lo tomamos, le sumamos, se convierte en 0.2. Nosotros lo tomamos, le sumamos se convierte en 0.3. Por lo que cada cuadro lo incrementamos. Ahora, como pueden ver, aquí hay código redundante. Redundante significa que lo estamos usando varias veces. Para evitar esto, simplemente podemos eliminar esto aquí mismo y en su lugar agregar un plus detrás de los iguales. Y esta es exactamente la misma sintaxis que antes. Entonces si escribimos esto de nuevo, permítanme simplemente duplicar esto. Simplemente añadiré dos barras. Esto se convierte en un comentario. Y como hemos dicho, un común no ejecuta el código, y simplemente eliminaremos esto. Entonces como un pequeño recordatorio de lo que significa este plus. Entonces vamos a guardar eso. Volveremos a nuestro juego y vamos a hacer esto un poco más pequeño, así que vamos a añadir otro 0 y aquí, guarde eso de nuevo en nuestro juego. Corremos el código, el juego. Y ahí vamos, podemos verlo lentamente flotando lejos y otra vez, genial. Por lo que ahora tenemos a nuestro jugador moviéndose. Pero no queremos que estos valores sean simplemente arbitrarios. No queremos tener 0.1 o 0.01. En realidad queremos la entrada que hemos conseguido aquí para mover al jugador. Entonces este será tu reto. Tu reto es mover la posición del jugador con la entrada. Por lo que vas a acceder a la posición de la transformación del jugador. Vas a hacer de la posición un nuevo vector 3. Y vas a usar el movimiento input.txt y el punto y ya que el x e y de este nuevo vector 3 también mantendrá el eje z en 0 F. Y algunos solo un poco de ayuda extra. Te recomiendo que pases por la documentación de Unity y veas el ejemplo. Fueron tan amables en la empresa Unity en algún lugar para darnos un ejemplo de exactamente lo que estamos buscando. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces si nos desplazamos hacia abajo justo aquí, se puede ver que obtenemos la entrada horizontal, obtenemos la entrada vertical, y luego los ponemos todos dentro de la posición transformada. Este es el ejemplo exacto que necesitamos y nuestra ganancia. Entonces si volvemos aquí, en lugar de 0.01, voy a escribir el punto de entrada de movimiento x. Voy a escribir el punto de entrada de movimiento y Y voy a guardar todo eso. Ahora de vuelta en nuestro juego, ejecutamos el juego y ahora nuestro jugador no se mueve. Si queremos moverlo a la derecha, teníamos el Dickey se mueve a la derecha, la izquierda, y desapareció. Entonces como puedes ver, nuestro jugador es extremadamente, extremadamente rápido. ¿ Por qué es eso? Bueno, es porque las actualizaciones se llaman cada fotograma. Entonces si intentamos jugar de nuevo, déjame mostrarte a lo que me refiero. Si miramos aquí arriba en las estadísticas, podemos ver cuántos fotogramas por segundo tenemos. Entonces, ¿sabes qué son los cuadros por segundo? Si alguna vez has jugado un juego y puedes ver en este momento son casi mil cuadros por segundo. Estamos llamando a esto mil veces, una 1000 veces. Estamos agregando uno, así que estamos sumando un 1000 cada vez o cada segundo si quieres. Entonces, ¿cómo vamos a controlar esto? Bueno, hay una manera muy sencilla, y eso es multiplicando esto por el tiempo.Deltatime. Y lo que sucede ahora mismo, tiempo.Deltatime, si pasamos sobre él, es el intervalo y los segundos desde el último fotograma hasta el actual. Entonces lo que esto hace es que toma el tiempo entre cada fotograma, lo multiplicamos por éste y ahora se convertirá en velocidad de cuadro y dependiente. Déjame mostrarte lo que eso significa. Esto significa que cuando ejecutamos el juego, el tiempo que tarda desde el primer fotograma hasta el segundo se suma al movimiento. Y ahora cuando golpeamos la tecla D, ahí vamos. Somos mucho más lentos. Y si tuviéramos la W, nos movemos arriba, SVMs abajo, a, nos movemos a la izquierda, nos movemos a la derecha, y así sucesivamente y así sucesivamente. ¿ Qué tan guay es eso? Lo que tenemos en otro plural, que somos extremadamente bajos. Esta no es forma de jugar un juego, sobre todo cuando tenemos enemigos aterradores siguiéndonos. Por eso tuvimos esta variable de velocidad de movimiento todo el tiempo. Esto nos permitirá controlar nuestra velocidad. Por lo que ahora también multiplicaremos esto por la velocidad de movimiento. Eso lo salvaremos. Por lo que de vuelta en nuestra ganancia, podemos ver que la velocidad de movimiento es de 20. Pongámoslo a cinco. Guarda eso, ejecuta el juego. Y ahora podemos movernos arriba, abajo, izquierda, derecha, como queramos. Qué genial es que finalmente tengamos un personaje, un jugador que se está moviendo en un mundo que hemos creado usando código simple. Hagamos esto 50. Echemos un vistazo. Bueno, ahí vamos. Incluso podemos controlar lo rápido que va. Es decir, en serio, ¿qué tan emocionado estás? A lo mejor sólo soy yo. Mantengámoslo a las cinco. Creo que cinco. No hay fibras realmente lentas. Hagamos entonces. Sí, ahí vamos. Entonces 10 se ve realmente, muy bonito. Y con eso hecho, espero que lo disfruten. Antes de presentar el siguiente video, notarás que en realidad todavía podemos caminar por paredes y alejarnos, lo cual no es bueno. Por eso en el siguiente video, estaremos aplicando la física a nuestro jugador y haciendo que interactúe con diversos objetos de nuestro mundo. Con eso dicho, cuatro, voy a asegurarme de comprometer sus cambios. No voy a hacer con cada video porque es algo que hay que volverse automático. Y cada vez que hagas algo importante en tu juego, asegúrate de escenificar todo el trabajo, comprometer todo tu trabajo, y te veré en el siguiente video. 11. Golpear los obstáculos (colillas): Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, estamos llevando nuestro juego al siguiente nivel. Cuando ejecutamos nuestro juego. Te darás cuenta de que no solo caminamos, sino que si tratamos de salir de nuestro mapa, ahí vamos. No podemos. Juro que sigo presionando el achy. Sigo tratando de bajar, pero no funciona. Sigo tratando de salir. No funciona. Por lo que estamos confinados en este pequeño espacio. Hacemos eso usando cuerpos rígidos, usando colisionadores. Y esto es realmente agradable porque finalmente podemos sentir el peso de nuestro juego. Entonces aunque pudiéramos caminar, pudimos ver que podemos hacer cualquier cosa, pero ahora realmente tenemos peso a nuestro movimiento. Podemos sentir el mundo que nos rodea. Con eso dicho, no perdamos más tiempo. Y empecemos. O K. Así que actualmente, cuando corremos nuestro juego, podemos movernos y todo eso es genial. Pero como puedes ver, cuando tratamos de golpear la pared o algo así, simplemente nos movemos bastardo. Y es como si no hubiera nada en este mundo. Se siente vacío, se siente no real a pesar de que nos estamos moviendo en él. Entonces, ¿cómo vamos a arreglar eso? Vamos a usar algo llamado colisionador. Déjame mostrarte lo que es un colisionador en la documentación de Unity, como puedes ver, siempre referido en la documentación de Unity, puedes llegar a través de Google. Es súper fácil, súper efectivo. Veamos qué tenemos clase de colisionadores basada en descripción. Contamos con caja, esfera, cápsula, un colisionador de malla, materiales físicos y cuerpos rígidos. Algo que vamos a aprender en tan solo un poco de un objeto con un colisionador necesita ser movido. Durante la jugabilidad, puedes adjuntar un componente de cuerpo rígido y solo vamos a conseguir el cuerpo rígido un poco de pacientes, puedes ver todas las propiedades que podemos tener, los límites, el desplazamiento de contacto, el material. Contamos con métodos públicos como refundir punto más cercano. Tenemos mensajes que son extremadamente importantes y estaremos usando mucho Trigger Enter en la salida del gatillo en Trigger Stay. Aquí puedes leer las descripciones de lo que cada método, lo que cada propiedad, lo que significa cada mensaje, lo que hace, toda la herencia, lo que podemos usar, la etiqueta de comparación será muy importante. Se puede ver que tenemos mucho. No tienes que entender a cada uno de ellos. Es solo agradable saber que puedes, si tienes algo en mente para implementar, siempre puedes ir a documentaciones de Unidad y ver si lo que buscas está disponible aquí mismo. Entonces con eso dicho, volvamos aquí y sigamos adelante y agreguemos un colisionador de cajas a una de estas paredes aquí mismo. Empecemos con el de abajo. Entonces la forma en que hacemos esto es que vamos a hacer clic aquí. O vayamos al segundo plano. Añadamos un componente aquí. Vamos a hacer que sea un colisionador de cajas 2D, porque estamos trabajando en este colisionador de cajas es 3D. Este es 2D. Hacemos click en él. Se puede ver que llena todo el cuarto de inmediato, pero eso no queremos. En realidad queremos editar esto, o podemos dar click en el Editar aquí mismo. Se puede ver que podemos convertirlo en un gatillo. Podemos establecer un desplazamiento, podemos establecer el tamaño, así podemos hacer esto más pequeño en el eje y, o simplemente, podemos hacer clic en estos tres puntos conectados justo aquí y simplemente moverlo manualmente. Entonces ahí lo tienes. Entonces ahora tenemos este colisionador aquí mismo en la pared o en la parte inferior o como quieras llamarlo, podemos deshacer click. Esto correrá el juego. Y ahora nuestro jugador, cuando se mueve hacia abajo, oh, bueno, ¿qué está pasando? El jugador sigue golpeando la pared y se está moviendo más allá. ¿Por qué es eso? Bueno, porque no tenemos un colisionador en nuestra capa. Entonces este va a ser tu reto. Tu reto es agregar un colisionador al jugador. Entonces en un colisionador, una cápsula, no tiene que ser una cápsula. Depende del tamaño y el marco de tu jugador. El que realmente obtuvo personalmente, o si estás usando el mismo que yo, asegúrate de que sea solo objeto padre jugador, no el cuerpo. Y cambia el tamaño del colisionador al tamaño apropiado de tu jugador. Entonces con estas instrucciones, pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces, ¿cómo te pusiste con eso? Vamos a añadir un colisionador de cápsulas 2D. Ahí vamos. Tenemos la cápsula, la cáscara de la cápsula y ni siquiera estamos seguros de cómo se pronuncia. Por lo que pinchamos aquí. Se puede ver la pequeña línea verde aquí. Entonces vamos a derribar. Ahí vamos y lo hacemos apenas del tamaño de nuestra capa. Ahora, veamos si eso funciona. Si ejecutamos nuestro juego. Ahora cuando bajamos caminando, seguimos moviéndonos por el objeto. ¿ Por qué no funciona? Probablemente debería haberte advertido sobre esto. Ahora vamos a añadir un Cuerpo Rígido 2D. Y ahora cuando corremos el juego, veremos que golpeamos la pared. Pero yo no presioné nada. Si me muevo hacia arriba y lo suelto, nos caemos. ¿ Por qué es eso? ¿ Qué está pasando? Bueno, porque cuando se agrega un cuerpo rígido, también se agrega gravedad. Vamos a ahondar un poco más en lo que es un cuerpo rígido. Por lo que el control de la posición de un objeto a través de la simulación física. Entonces, cuando le agregas un cuerpo rígido a un objeto de juego, le agregas física. objeto de cuerpo rígido será tirado hacia abajo por gravedad sin agregar ningún código adicional. Y también podemos aplicarles nuestras propias fuerzas, lo que quiero decir con ellas, es el cuerpo rígido. También se puede entrar en la unidad es documentaciones y profundizar más en lo que es el cuerpo rígido. Y de hecho, vamos a necesitar ahondar en ello. Entonces voy a entrar aquí. Unidad del cuerpo rígido docs. Ahí vamos. Ahí vamos. Vemos los docs Unity 3D. Y se puede ver la descripción, las propiedades, los métodos públicos y demás y demás. Entonces vamos atrás y otra vez, podemos ver aquí mismo podemos cambiar la masa, el arrastre angular. Podemos cambiar la forma en que se detecta la colisión, discreta, continua, pero se necesita un poco más de potencia de procesamiento, el modo de suspensión, las restricciones, realidad vamos a usarlas en tan solo un poco. Ya verás por qué. Y podemos cambiar esto de dinámico dos cinemático, estático. Y cada uno de esos se explica aquí mismo. Pero la principal diferencia, mientras que explicaba en algún lugar de aquí, no estoy seguro de dónde se puede leer sobre cada uno para profundizar más en ella, sino saber que dinámica significa ser PUEDE afectar por fuerzas externas. Kinematic significa que no se ve afectado. Y medios estáticos es igual que una roca grande. No se mueve en absoluto. Aquí se puede ver la escala de gravedad. Pongámoslo a 0, guarde eso, ejecute el juego. Y ahora te darás cuenta de que ya no estamos caídos. Entonces ahora cuando bajamos, se puede ver que ya no podemos ir por debajo de esto. Pero ¿qué, qué, qué pasó? Y se puede ver que nos movemos, necesitamos añadir un colisionador de cajas. Pero, ¿qué pasó aquí y qué es el, este nerviosismo? Entonces lo primero lo arreglaremos como las cosas volteando. Entonces esto es porque estamos girando. puede ver aquí mismo, Sepuede ver aquí mismo,en realidad es porque la física ha calculado que deberíamos rotarlo por la cápsula justo aquí. Por lo que congelaremos la rotación alrededor del eje z mientras que Z, porque eso te muestra si hacemos clic en la herramienta de rotación aquí arriba o simplemente golpeamos el like. Podemos ver cuando giramos, es el eje z el que nos rota y lo podemos ver claramente cuando salimos de 2D, puedes dar click en esto a la derecha aquí, salimos. Te darás cuenta de que el eje z, y lo puedes ver. Ahí vamos. Es alrededor del eje z que estamos girando. Entonces vamos a parar el al, vamos a poner esto en 0, se congelará en la Z. Y ahora cuando corremos nuestro juego, bajamos. Y ahí vamos. Ya no volteamos si nos movemos de izquierda a derecha, pero aún tenemos este nerviosismo. ¿ Y qué es esta nerviosa? ¿ De dónde viene? Bueno, es cuestión de código. Podemos ver aquí mismo que estamos moviendo al jugador usando su transformación, esa posición. Entonces tenemos dos fuerzas colisionantes. Tenemos la posición transformada tratando de pasar por la golondrina, pero tenemos la física de los dos colisionadores tratando de alejar al jugador. Entonces esto está creando este nerviosismo. ¿ Cómo solucionamos esto? Bueno, vamos a empezar a mover al jugador, no usando su posición de transformación, sino usando su velocidad. Y la velocidad está disponible en el cuerpo rígido. Si encuentras eso en algún lugar justo aquí, no estoy seguro de qué es. A ver. Velocity. Ahí lo tienes. Podemos agregar velocidad aquí, velocidad angular, velocidad normal. Podemos cambiarlo aquí mismo. Entonces hagámoslo. Si vamos y sabes qué, sumémoslo aquí. Crearemos un campo serializado. Esta será una variable de tipo cuerpo rígido 2D, y sólo lo llamaremos el cuerpo rígido del jugador. Guarde eso. Ah, y una cosa más te has dado cuenta, y olvidé decirte esto. Es la forma en que nombramos nuestra variable. La primera palabra siempre debe tener la primera letra no mayúscula, mientras que todas las palabras subsiguientes se pondrán en mayúsculas. ¿ Por qué es eso? Tomemos un ejemplo de aquí. Te darás cuenta de que el jugador no está en mayúsculas. Cuerpo rígido es por la B para el cuerpo no lo es. Entonces si guardamos eso, buscaremos en el inspector. Te darás cuenta aquí mismo, la variable, la forma en que está escrita será cuerpo rígido jugador con cuerpo rígido como una sola palabra. Si volvemos atrás, hacemos que esto se capitalice. lo guardamos. Volvemos en el inspector, notarás que ahora la B está mayúscula y es una palabra separada. Entonces cada vez que capitalizamos una de las palabras, se vuelve separada. Pero eso no queremos. Nosotros lo queremos como una sola. Se puede ver el mismo ejemplo y la velocidad de movimiento. Cuando volvemos, ahí vamos. Por lo que acabamos de crear una referencia al cuerpo rígido en el jugador, pero no lo hemos agregado porque se puede ver en este momento que el cuerpo rígido del jugador, y simplemente no hay cómo hacemos eso. Simplemente hacemos clic en el cuerpo rígido justo aquí y lo arrastramos hacia arriba. Por lo que ahora se puede ver, como su nombre indica, es el cuerpo rígido en la capa de dunas. Eso lo guardamos de nuevo en nuestro juego. Y aquí vamos a usar en lugar de la posición de transformación delta y todo eso, solo voy a comentar este outlet en, lo eliminaremos, pero solo quiero tener todo esto frente a ti para que conozcas el proceso de lo que es ocurriendo. Por lo que ahora tomamos el cuerpo rígido de los jugadores, accedemos a la velocidad en él. Y va a ser igual a la entrada de movimiento veces la velocidad de movimiento. Y debido a que estamos usando la velocidad, esto no requerirá ningún tiempo.Deltatime. lo guardamos. Volvemos aquí. Vamos a mover un poco a este tipo. Entonces ahora cuando ejecutamos nuestro juego, Nos movemos. Y si tratamos de movernos por el muro, ahí tienes. Se puede ver que ya no tenemos el nerviosismo porque tenemos los dos motores de física funcionando. Bueno, no el motor de física 2, 1 que trabaja en las dos bibliotecas por el cuerpo rígido. Y por último, sólo agregaremos un par de colisionadores más al fondo. Entonces voy a añadir un colisionador de cajas 2D. Voy a hacer esto un poco más pequeño. Y ahora nunca se recomienda que añadas múltiples planeadores de caja en el mismo objeto de juego, pero por ahora haremos una excepción. Esto rara vez sucederá. Entonces ahí lo tienes. Añadamos un colisionador de cajas así. Añadamos otro. Y éste estará a un lado. Para que no salgamos, sólo lo haremos un poco más grande. Y añadamos el último colisionador de cajas, y éste será el del otro lado. Ahí vamos. Ahorramos todo eso. Corrimos nuestro juego. Y ahora caminamos hacia abajo. No podemos caminar a la izquierda, no podemos. Caminamos hacia la derecha, no podemos. Y si tratamos de subir, tampoco podemos, pero hay un ligero problema. Se puede ver que todavía tenemos espacio aquí para caminar hasta. Entonces lo que voy a hacer es que sólo voy a hacer el colisionador de jugadores sea un poco más pequeño en la parte superior. Entonces, solo hagámoslo por aquí. Podemos incluso tal vez cambiar esto de una cápsula a otra cosa y haciéndolo así. Ups. ¿ Dónde está? Cambiamos la posición, por lo que la movemos en la X. Sí, ahí vamos. Corrimos nuestro juego. Y podemos ver que como que nos movemos hacia arriba. Todavía tenemos este pedacito de espacio. Esto no es un problema enorme. Incluso podemos hacer B en lugar de una cápsula, hacer un colisionador de cajas o algo más. Pero puedes ver que todo funciona de fino y dandy con eso dicho, asegúrate de comprometer tus cambios. Y en el siguiente video estará apuntando nuestra pistola alrededor usando la dirección o donde nuestro ratón está apuntando porque actualmente, solo tener esta pistola no está haciendo mucho. Te veré en el próximo. 12. Buscador de ganas (punto de pantalla de pantalla): Hey, bienvenido de nuevo, Mis desarrolladores de juegos favoritos en este video, nuestra pistola ya no es un objeto estático. Si miras de cerca, puedes ver que cuando bajamos, el arma se mueve hacia abajo. Cuando miramos hacia arriba, el arma se cierra. Obviamente, todavía hay un par de cosas que necesitan ser arregladas porque sostener el arma así me siento bastante incómodo, pero no se preocupe por eso. Este es el primer paso para nombrar adecuadamente a nuestra pistola. Entonces, no perdamos más tiempo y empecemos. esto hay mucha matemática. Así que ponte tus gorras de pensamiento. Ahora que nos estamos moviendo y nos estamos chocando con las cosas, es hora de empezar a apuntar nuestra arma. Para ello, queremos rotar el arma alrededor de una determinada posición. No queremos realmente estar rotando el arma exacta porque si miramos aquí, si vamos a la escena, ya puedes ver, si tratamos de rotar el arma tal como está, no se ve tan bien. Necesitamos un punto desde el cual estará girando el arma. Entonces lo que haremos es que vamos a hacer clic derecho en el jugador de cúpula. Vamos a crear un objeto de juego vacío. Nosotros lo vamos a llamar el brazo de armas. Y vamos a moverlo a cierto punto. Y este es el punto donde el arma o desde el que estará girando la pistola. Entonces lo voy a poner alrededor casi de la mano o del brazo del jugador. Y yo voy a hacer la escopeta, un hijo de esas armas son. Entonces ahora cuando rotemos el brazo de armas, notarás que la escopeta se queda en su lugar casi alrededor del brazo justo aquí, y se ve mucho más natural a medida que rotamos la escopeta o las armas están. Entonces ahora es el momento de un poco de frío. Pero antes de que hagamos eso, ¿cómo vamos a estar rotando este brazo? Va a depender de dónde esté nuestra boca. Entonces digamos que estamos aquí arriba. Queremos que la pistola de disparo apunte hacia el ratón. ¿ Cómo vamos a calcular eso? Bueno, necesitaremos un par de puntos y déjame explicarlo usando matemáticas, yay matemáticas. Entonces, empecemos. primera hora necesitamos la posición del jugador en la pantalla. Bueno, yo uso el término posición de jugador, pero en realidad es el punto en el que estamos girando la escopeta alrededor. Pero por ahora, vamos a mantenerlo simple. Llama a esto la posición del jugador, y tenemos la posición del ratón en la pantalla. Entonces lo que queremos es que queremos conseguir el vector en estos dos puntos. Esta es la dirección que se han ido va a estar apuntando. Pero, ¿cómo vamos a calcular realmente el ángulo en el que queremos que el arma apunte? Bueno, conocemos la exposición y conocemos la posición y. Bueno, me refería a X e Y. Entonces lo que podemos hacer es que podemos usar algo llamado arco tangente. Y esto es algo disponible para nosotros en matemáticas. F de unidad es biblioteca. Entonces podemos usar eso para calcular el arctan. Y si no sabes qué arctan o ni siquiera sabes lo que Dan es tangente creo que se llama es la parte delantera, que es la y dividida por V x. Y cuando hacemos eso, obtenemos cierto número, que es la tangente. Entonces para obtener el ángulo, usamos algo llamado el arco tangente, que es una especie de reversa. Pero todo lo que necesitas saber es que obtenemos la diferencia en la altura, obtenemos la diferencia en la distancia. Y usando eso, calculamos el ángulo en el que el argón debería estar señalando. Se trata de matemáticas elementales básicas. No estoy seguro si estás familiarizado con eso. Si quieres profundizar más en ello, sé mi invitado, creo que esta será suficiente explicación. Entonces, traducimos estas ecuaciones matemáticas en códigos matemáticos. Entonces voy a volver atrás y nuestro guión aquí en el controlador de jugador. Y lo primero que necesitamos es los dos referentes para la cámara y para las armas son. Entonces voy a empezar creando un campo serializado, que será una transformación. Y va a representar las armas son geniales. La segunda variable que vamos a crear como cámara privada, y va a ser la cámara principal. Y lo genial de esto es que de inmediato podemos entrar a Stuart y decir que la cámara principal es igual a la cámara. Punto principal. Y usando esta cámara, esa principal, inmediato podemos conseguir una referencia a la cámara principal que tenemos. Y aquí, genial. Ahora necesitamos saber dónde está nuestra boca en el mundo. Entonces vamos a desplazarnos hacia abajo y aquí, y sólo voy a eliminar estos comentarios porque ya no los necesitamos. Si sientes que los necesitas, guárdalos como recordatorio para más adelante cómo cambiamos y avanzamos a través de nuestro código. Entonces ahora voy a conseguir la posición del ratón. Voy a usar un vector tres. Y se va a llamar la posición del ratón. Y va a ser igual a la posición del ratón de punto de entrada. Y puedes ver en este momento que de inmediato la Comunidad Visual Studio nos da la posición actual del ratón en coordenadas de píxel. Tan genial, eso es lo que necesitamos. Y obviamente, ya conozco estas cosas. Si quieres investigar esto, habrías necesitado entrar en Google, cómo ir a conseguir la mayor parte de la posición. Se han conseguido las documentaciones para la unidad. Habrías encontrado esta posición de ratón de punto de entrada. Lo habrías usado. Esto es sólo un atajo. Sigamos adelante. Lo siguiente que necesitamos es el punto de pantalla. Entonces punto de pantalla, y va a ser igual a la cámara principal, la cámara mundial, mundo a punto de pantalla. Y se puede ver la definición y aquí está la posición transformada del espacio mundial y al espacio de pantalla. Ahí vamos. Esto es lo que necesitamos. Transformar escala local, me refiero a posición local. Y esto nos dará la posición local de la transformación, que es el jugador en este momento. Y ahora es el momento de calcular el ángulo. Primero que nada, guardemos todo eso. Adelante y asignemos el brazo para el jugador. Entonces voy a arrastrar el brazo de armas ahora mismo. Eso lo vamos a salvar. Y ahora el siguiente paso es calcular realmente el ángulo. Entonces voy a primero que nada, mostrarte esto otra vez para que puedas volver atrás y mirarlo si es necesario. Y luego te voy a emitir un reto. Y tu reto va a ser calcular el ángulo. Entonces lo primero que haces es que necesitas restar la posición x del ratón de la posición del punto de pantalla de la x. Obviamente, necesitarás hacer lo mismo para el y. y entonces necesitarás calcular el punto F matemático arctangente para encontrar eso en la documentación de Unidad. Adelante, pausa el video ahora mismo. Ve a hacer lo mejor que puedas. Pruébalo. No perderás nada haciendo lo mejor que puedas. Pausa el video ahora mismo y ve a hacer el reto. Hey, bienvenido de nuevo. Entonces como pueden ver, acabo de buscar matemáticas, arco tangente en Unidad. Ahora estoy justo aquí. ¿ Qué hago? Bueno, necesito ver cómo funciona esto. ¿ Qué hace? Devuelve un flotador. Esta es nuestra como uso matlab.org Tange. Está bien, genial. Entonces volvamos aquí. Entonces lo primero que tenemos que hacer es calcular la diferencia. Voy a poner ambos en un vector dos. Entonces voy a usar un vector to, voy a llamar a esto el offset. Entonces es el desplazamiento entre los dos puntos. Será igual a un nuevo vector dos. Y aquí dentro voy a primero de todo conseguir la posición del ratón punto x y restarle de ella, el punto de pantalla dirige. Y yo voy a hacer lo mismo en el porqué. Ahora voy a crear un flotador porque como vimos este método, el método dot arctan devuelve un flotador, va a ser igual a matemática F dot arc tan o no, Eta. Se llama bronceado dos. Y voy a utilizar el offset dot y dividido por el offset DRX. Genial, así que voy a guardar eso. Pero siempre que queremos asignar la rotación real a las armas son, no podemos simplemente hacerlo usando un flotador. Lo que necesitamos hacer es usar un método extra, que es el método que rad dos grados. Y se puede ver esto convierte radianes en grados constantes. Entonces tendremos que hacer eso. Y lo último que tenemos que hacer es que tendremos que acceder a las armas en rotación de puntos y ahora prepárate para un mundo un poco aterrador. Vamos a usar cuaterniones. Así cuaternion dot Bueller. Y lo vamos a fijar como 00 en el eje x. No giramos en el eje Y, no giramos. Sólo giramos alrededor del eje z utilizando el ángulo. Ahora, antes de huir, ¿qué es Turnitin dot Hulu? Si miras lo anterior justo aquí, puedes ver que devuelve una rotación que gira Z grados alrededor del eje z, x alrededor del eje x, y así sucesivamente y así sucesivamente. Entonces cuaternion dot. Si te interesa, puedes ahondar en esto. Yo personalmente, llevo varios años rotando objetos en Unity y nunca he entendido del todo lo que significan por cuaternión es solo una forma de convertir del XYZ en una rotación y espacio reales. Así que siéntete libre de ahondar, ve a buscarlo, asegúrate de entender todo. Si no, si no te molesta no entender completamente lo que está pasando con cuaternion u dot. Confía en mí, puedes pasar por tu viaje de desarrollo de juegos sin preocuparte por ello. Entonces esta es simplemente una forma de convertir x, y, y z en un ángulo en una rotación. Eso lo ahorraremos. Volveremos a Unidad. Y vamos a correr el juego. Y veamos qué está pasando con el arma ahora mismo, nos movemos hacia arriba, el arma se mueve hacia arriba. Nos movemos hacia abajo. El arma se mueve hacia abajo. Si vamos a la izquierda, sí. Nuestra pistola se ve un poco rara cuando miramos en la otra dirección, pero cuando se trata de la dirección adecuada, ahí vas. Nos movemos e incluso se ajusta a medida que caminamos. Para que veas cuando nos movemos hacia arriba, el arma se mueve hacia abajo. Siempre mirando exactamente dónde está nuestra posición del ratón. Tan genial ahora tenemos un arma que en realidad está disparando, lo cual es increíble en mi opinión, no en realidad disparando, que estará disparando en la dirección correcta más adelante a medida que nos movamos. Pero obviamente hay algo mal cuando tratamos de mover el ratón en la otra dirección, sí se mueve correctamente. Eso es lo que vamos a estar arreglando en el siguiente video mientras aprendemos algo muy agradable codificación que se llama las sentencias if y si condiciones. Entonces te veré ahí. Pero antes de irnos, siempre asegúrate de poner en escena todos tus archivos. Mega se compromete. Voy a llamar a esto hizo que mi arma apuntara en la dirección correcta o no envidio ángulo recto. Porque en el siguiente video, lo haremos apuntar en la dirección correcta, hará que todo el jugador apunte y la dirección correcta. Entonces, nos vemos entonces. 13. Atender a la dirección correcta: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, no sólo vamos a estar girando el arma, sino que también vamos a estar apuntando en la dirección correcta. Pero no sólo eso, no sólo estamos apuntando en la dirección correcta, también podemos apuntar hacia atrás. Y esto es muy importante y este será tu reto. Vamos a estar aprendiendo cómo podemos usar si las condiciones, si las declaraciones con el fin de rotar de izquierda a derecha. Y va a ser muy aficionado, va a ser increíble porque estamos haciendo nuestra ganancia sea mucho más viva, mucho más efectiva. Entonces, no perdamos más tiempo. Y empecemos. Ah, está bien. Entonces ahora nuestro chicle está girando en realidad. Siempre está apuntando hacia el ratón. Eso es genial. Pero, ¿qué pasa cuando rebasamos cierto límite? Se puede ver en este momento que el GAN sigue apuntando hacia la boca. Pero es, en primer lugar, está invertido. En segundo lugar, el jugador no está mirando en la dirección adecuada, por lo que necesitamos arreglar todo eso. Pero, ¿cómo podemos decirle a nuestro jugador que se comporte de alguna manera cuando está mirando en una dirección y otra manera cuando está mirando en la otra dirección o debería estar mirando cómo podemos decírselo? Si es así, entonces queremos hacer algo. Si es otra cosa, queremos hacer otra cosa. Bueno, esto es lo que llamamos la declaración if. Déjame llevarte a través de ella. Estructura de declaración IF tan condicional. Así es como se ve la sintaxis. Tenemos alguna condición que necesita ser cierta. Está dentro de estos dos corchetes aquí mismo. Y si esa condición es cierta, entonces se ejecuta el código dentro de estas dos líneas garabateadas. Si no lo es, entonces tenemos algo que se llama lo más. Si, si esta condición no es verdadera, lo contrario si alguna otra condición es verdadera, se ejecutará este código. Y si ni esta condición ni la segunda es cierta, entonces tenemos algo que se llama la otra. Y este código se ejecutará si ninguna de las condiciones anteriores es cierta, puede agregar tantas sentencias más if como desee para que pueda agregar. El primero siempre es si ni siquiera puedes hacer otra cosa, si puedes agregar inmediatamente otra o puedes agregar 15 ifs más, si necesitas, tal vez nunca necesites ese dinero, pero si alguna vez necesitas más de uno, más de dos, se puede agregar. Entonces tenemos una condición aquí. Si es cierto, este código se ejecuta y nos detenemos. No seguimos mirando hacia abajo. Si esto no, este primero no es cierto. Nos fijamos en el segundo. Si lo es, ejecutamos, si no lo es, continuamos. Por último, si no encontramos ninguna condición que sea cierta, ejecutamos otra cosa. Entonces sigamos adelante e implementemos eso. Entonces, ¿qué buscamos aquí? Estamos buscando rotar todo el objeto. Si es así, ¿qué buscamos aquí? Queremos ver si la posición del ratón es menor que porque veamos al jugador de cúpula por ejemplo, esta es la posición en la x espalda en la escena. Entonces cuando nos estamos moviendo hacia atrás, se puede ver que es menos cuando nos movemos hacia la derecha. Eso significa que es pequeño. Entonces imagina la posición del ratón como un objeto de juego más. Por ejemplo, Estamos aquí y esta zona a la izquierda del jugador, eso significa que la posición más es menor que este punto verde, lo que significa que queremos rotar todo el no jugador al otro lado. Pero, ¿cómo vamos a hacer eso? Bueno, ahí está la báscula justo aquí, lo que la hace súper fácil. Entonces si cambio la escala en la x, puede ver que se hace más ancho y más ancho. Pero, ¿qué pasa cuando vamos y negativo? Entonces cuando vamos Negativo, sí, ahí vamos. En realidad volteamos al jugador. Y esto es lo que queremos estar ajustando cada vez que estamos mirando en la otra dirección. Y esta dirección, cuando la posición del ratón es menor que el punto de pantalla, que es el jugador. Nosotros queremos estar mirando justo aquí. Y en esta dirección queremos cambiar la escala a menos uno, no sólo la ACS, también la y. veremos por qué. Entonces ahora que tenemos esas cosas establecidas, creemos nuestra primera declaración if. Entonces aquí dentro, vamos a crear suficiente. Vamos a abrir los dos corchetes o columnas. No estoy seguro de cómo se llaman. Vamos a comprobar la posición del ratón punto x No necesitamos la y No importa. Y si es menor que el punto de pantalla, el RX. Entonces vamos a tomar la escala local de transformación, que es la escala local del objeto que sostiene este guión. Eso significa que todo el don 't player va a ser nuevo vector 3 menos 1, f 1, f 1. Guarda eso. Corremos la ganancia. Esto es mientras la y sigue siendo positiva. Entonces si miramos en la otra dirección, se puede ver que el arma está al revés. Entonces nuestro objetivo, déjame solo mostrarte y la forma en que hago una pausa en esto usando teclas es control turno P. Entonces lo que tenemos que hacer es si agarramos el brazo de las armas, si lo pongo a menos uno, ahí tienes. Se puede ver que estamos de vuelta a una escala adecuada o un anuncio adecuado. Entonces voy a poner esto en minús1, guardar eso de nuevo en nuestro juego, ejecutar el juego. Y ahora miramos arriba y abajo, la pandilla gira. Si vamos al otro lado, ahí vas. El arma se ve correctamente. Genial. Entonces todo está configurado. El único problema es que cuando miramos atrás, el jugador no cambia. Entonces, ¿cómo vamos a asegurarnos de que cuando no tengamos esta condición como cierta, ¿cómo vamos a volver a rotar al jugador? Bueno, es tu reto. Tu reto es crear una declaración else. Deberá agregar a las declaraciones if y las declaraciones else. Ya vimos cómo se ve eso. Esto se activará cuando la posición del ratón x sea más pequeña que el punto de pantalla x. En ese caso, necesitamos ajustar las escalas locales o todas las escalas locales de nuevo a una. Y te voy a dar una pequeña pista, que es establecer la escala a vector tres puntos uno, vector tres puntos uno. También puedes investigar sobre la documentación de Unity. Significa que es un vector 3, 1, 1, 1. Pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. ¿ Cómo conseguiste todo eso? Yo realmente, realmente espero que siempre estés tratando de reventar con estos retos. Entonces voy a crear una declaración else aquí. Y lo que voy a hacer es que voy a tomar la escala local transformada. Y va a ser igual al vector tres puntos uno. Guardemos eso. Y también voy a duplicar esto. Entonces la forma en que lo duplicamos como recordamos Control D. Y en lugar de la transformación, voy a usar las armas son, voy a guardar todo eso. Voy a volver a mi juego. Yo lo voy a ejecutar. Por lo que ahora miro a la derecha, mi arma gira correctamente. Todo está bien. Yo miro a la izquierda, el arma gira correctamente. El jugador está mirando en la dirección correcta. Ahora si vuelvo, ahí vamos. Para que veas que hemos arreglado nuestro problema. El jugador siempre mira en la dirección correcta. Tenemos el arma apuntando correctamente, y finalmente nos vemos increíbles mientras lo hacemos. Entonces ahora podemos andar por ahí. puede ver que es mucho más natural porque siempre está apuntando hacia el arma. No sólo el arma apunta correctamente hacia el arma, problema de arma apuntando hacia el ratón, sino también capa profunda, todo el cuerpo está girando y apuntando en la dirección correcta. Para que eso hecho, asegúrate de seguir adelante y comprometer los cambios que hicimos. Y en el siguiente video vamos a estar agregando más sabor a nuestros juegos. Cómo, al crear el caminar, el ralentí, y tal vez incluso las animaciones de torpedos para el jugador no pueden esperar para empezar a animar. Te veré en el próximo. 14. Animaciones en unidad: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a uno de los videos más emocionantes y largos, muy largos. Pero confía en mí, vale mucho la pena. En este video, vamos a inyectar más vida y a nuestro juego creando animaciones. Entonces ahora cuando iniciamos nuestro juego, no nos quedamos ahí parados como una estatua. Se puede ver que nos estamos moviendo. Por lo que nuestro jugador va arriba y abajo, arriba y abajo, arriba y abajo. Y no sólo eso, siempre que empecemos a caminar, mira eso. Empieza a mover los pies por ahí. ¿ Qué tan guay es eso? En serio, ahora no tenemos sólo al jugador de pie estatua de la suerte justa. En realidad tiene vida, su respiración. Está caminando, está mirando alrededor, está apuntando con su arma, está listo para empezar a disparar. Todavía necesita un poco de ajuste, pero lo manejaremos en el siguiente video. Entonces, ¿qué realmente, al final, qué video? No perdamos más tiempo pensando y lleguemos a animar. Ah, está bien. Por lo que actualmente cuando iniciamos nuestro juego, si nos movemos, como puedes ver, estamos muy rancio. No tenemos ninguna animación en particular, no vemos al jugador cambiar de estado cuando empieza a caminar o cuando está de pie tampoco. Entonces vamos a cambiar eso. Vamos a sumar animaciones a nuestro jugador. Y ya tenemos un par de hojas de cálculo y aquí, las que determinarán nuestra animación. Para que se pueda ver el ralentí, el caminar. vamos a poner de lado a lado y jugar a estos sprites mientras caminamos, como nos quedamos quietos, como hacemos el movimiento de torpedos. Entonces empecemos con las animaciones. Primero, entendamos qué son las animaciones. Un par de componentes clave que necesitamos. En primer lugar, contamos con el controlador animador, que permite organizar y mantener un conjunto de clip de animaciones. Contamos con el componente animador el cual agregamos a cualquier objeto de juego que queremos animar. Tenemos las animaciones reales, que son varios sprites se renderizan uno tras otro. También veremos que tenemos otro tipo de animaciones que nos permiten mover objetos para luego recordarlo y reproducirlo en ciertos momentos. Y finalmente tenemos el renderizador sprite. Ahora bien, ¿por qué te estoy recordando al renderizador sprite? Porque en solo un poco, necesitarás entender qué renderizador sprite realmente intentaría cambiar para crear las animaciones que tenemos para nuestro reproductor DOM. Está bien, basta de hablar. Empecemos con las animaciones. Entonces, vayamos a Unidad. Y lo primero que tenemos que hacer es conseguir las ventanas para la animación. Entonces vamos a crear la ventana de animaciones. Vamos a atracar por aquí. Y vamos a crear una, otra ventana para el animador. Ahí lo tienes. Entonces el animador como donde vamos a poner todas las animaciones. Y las animaciones como donde realmente vamos a crear las animaciones. Empecemos. En primer lugar, vamos a elegir a nuestro jugador de la perdición. Y como puedes ver de inmediato en la ventana de animación, tenemos que empezar a animar, hacer reproductor, crear un animador y clip de animación. Genial, Hagamos eso. Vamos a pegarle a Crear. Y como pueden ver, actualmente estamos en el tiempo tanto archivo invasor como los activos. Voy a crear una nueva carpeta aquí dentro, que van a ser las animaciones. O de animación. Ahí lo tienes. Y aquí crea una carpeta llamada el jugador. Y vamos a nombrar nuestro clip. Empecemos por crear un jugador, creo. Está bien, genial. Por lo que ahora tenemos nuestra nueva animación. Y si nos fijamos en el jugador de cúpula, se puede ver que tenemos un nuevo componente junto al cuerpo rígido y la cápsula, que es el animador. Entonces si entramos en escena, nada cambia pero dentro del animador, solo para refrescar todo, se puede ver que ahora tenemos estos pequeños rectángulos por aquí. ¿ Y qué son estos? Bueno, tenemos el cualquier estado, la entrada y salida. No nos preocupemos por el cualquier estado y la salida. Centrémonos en la entrada y el jugador real ralentí. Lo que esto significa es que en cuanto iniciamos nuestro juego, inmediatamente transitamos al jugador inactivo. Y verás que cada vez que tenemos un animador, siempre tenemos una animación por defecto con la que empezamos. Y en este caso, tenemos al jugador ralentí comenzando inmediatamente desde la entrada. Y como puedes ver, está conectada por esta línea con una flecha. A esto se le llama transición. Y más adelante estaremos haciendo nuestra propia transición para pasar de una animación a la otra. De acuerdo, sigamos. Lo siguiente que queremos hacer es que realmente queremos crear la animación. Entonces para hacer eso, necesitamos que nuestros sprites ralentí aquí mismo. Esos tres, queremos agregarlos al jugador y empezar a jugar con ellos. Pero aquí hay un pequeño detalle que debemos tomar en consideración. Vamos a estar cambiando los sprites del jugador. Y los sprites que estamos cambiando en realidad están en el cuerpo, no en lo inmediato. Haciendo juego de jugador objeto. Por lo que a través de esta animación, tendrá que agregar una propiedad aquí. Y permítanme que explique esta ventana aquí mismo. Esta es la línea de tiempo para la animación. Por lo que se puede ver desde 030, esto es 2.5a y 2 uno justo aquí. Esto es todo un segundo. Tienes la obra, el próximo fotograma clave de go-to, etcétera. Tienes el botón Grabar aquí y puedes crear un nuevo clip haciendo clic en este desplegable aquí mismo. Entonces agreguemos una propiedad. Al hacer clic en él, se puede ver que tenemos acceso a todos los componentes que están presentes en el jugador o el objeto de juego del jugador del doom, podemos cambiar las armas son el Chicago, el brazo, el cuerpo, todo. Entonces voy a acceder al cuerpo. Y se puede ver que puedo acceder al render sprite en él. Y si me desplaza hacia abajo, en realidad puedo acceder al sprite que está en el cuerpo justo aquí. Por lo que voy a dar click en el pequeño signo más aquí. Si hago esto un poco más grande, puedes ver que en realidad puedo ver este pequeño sprite y esto es lo que vamos a cambiar. Entonces si golpeo Play, notarás que nada cambia porque este sprite es exactamente el mismo que éste. Entonces cambiemos eso. Voy a atracar las animaciones y aquí sólo para tener un poco de espacio, voy a borrar la última, Mantén esto aquí mismo. Voy a seleccionar estos tres y añadirlos a la línea de tiempo aquí mismo, y puedo deshacerme de la primera. Entonces ahora déjame solo hacer esto, vale, Pero aparte. Voy a atracar la animación aquí atrás. Y ahora si traté de tocar la animación, ahí tienes. Se puede ver que nuestro jugador empieza a moverse. ¿ Qué tan guay es eso? ¿ Qué está pasando aquí dentro? Si miras de cerca, déjame hacer una pausa por un segundo. Simplemente haré que el tiempo entre cada uno sea un poco lejos. Entonces ahora cuando jugamos, notarás que vamos de un sprite a otro. Y puedes asegurarte de eso mirando aquí mismo en el inspector del cuerpo y ver que vamos de cualquiera de ellos, sea a inactivo, quiero dos ociosos. Y este de aquí mismo, que son los tres, apenas se juega porque en cuanto llegamos al final, entonces de inmediato empezamos desde el principio. Entonces una buena, digamos principal a tener en la creación de animaciones es que todo el tiempo, el primer fotograma se debe copiar presionando Control C y B, el último fotograma también. Por lo que ahora notarás cómo se ve mucho mejor la animación. Entonces voy a volver a tocar la animación. Ahí lo tienes. Se puede ver que ahora estamos ralentí. Podemos ver 1, 2, 3, 1, 2, 3 jugando uno tras otro. Por lo que ahora tenemos la animación del jugador ralentí. Y si corremos nuestra ganancia, se puede ver que en cuanto empecemos, el jugador inicia cualquiera de los enlaces. Y aún mientras nos movemos, seguimos en ralentí. Incluso si miramos hacia otro lado, seguimos ralentando. Y si revisamos el animador, se puede ver que todo el tiempo estamos en ralentí. Lo cerraré aquí mismo para que lo veamos con claridad y alejemos un poco. Entonces este es el jugador ralentí todo el tiempo mientras estamos parados, quietos. Genial. Ahora, el siguiente paso es seguir adelante y crear la animación a pie. Y va a ser tu reto. Tu reto es crear otra animación. Entonces consigue los sprites caminantes del sprite principal. Si aún no lo has rebanado, elige al jugador de doom en la jerarquía y crea un nuevo clip como te mostré. Agrega todos los sprites que caminan y sepáralos. Juega y haz que la caminata se vea bien. Y si te interesa un reto extra, puedes seguir adelante y crear la animación de torpedo. No estoy seguro si voy a seguir usando la animación de torpedo. A lo mejor debería ser algo diferente, tal vez v, rodando alrededor de la animación. No sé con ese non, pausa el video ahora mismo, ve a probar la animación. No te preocupes, aunque seas principiante, solo pruébalo. Ver un par de pasos. Cómo creé el ralentí. Pruébalo tú mismo, diviértete, disfruta. Y eso es todo. Pausa el video ahora mismo y ve a hacerlo cada reto. De acuerdo, entonces ahora vamos a crear la segunda animación, que es la caminata. Por lo que voy a dar click aquí. Voy a crear un clip nuevo. Ve al jugador de animaciones, elige ralentí, y en lugar de ralentí, lo voy a poner como el caminar. Por lo que ahora jugador está caminando. Muy bien. De acuerdo, entonces ahora vamos a añadir una propiedad aquí. Vamos a acceder al cuerpo porque recuerden los sprites que estamos cambiando están en el cuerpo. Renderizador Sprite, el sprite porque en realidad estamos cambiando cada sprite individual. Y vamos a añadir, vamos a mover la animación aquí. A lo mejor este no es el mejor lugar para agregar una animación, pero sólo tendremos que ver con lo que tenemos por ahora. Acude al proyecto, que son nuestra caminata. Entonces creo que estos últimos cuatro son los que salen caminando. Sólo tienes que añadirlos aquí. Voy a quitar el último y el primero. Eso inició la animación de nuevo hacia abajo. Escojamos todos estos y los voy a extender con un intervalo de 10. Hagámoslo 10. Por lo que 10, 10, 10. Y voy a copiar el primero y ponerlo como el último. Y ahora cuando intentamos tocar la animación, ahí vamos, se puede ver el caminar del jugador. Y correcto. Ahora bien, ¿cómo vamos a la transición? Y si realmente haces click en el animador, verás que ahora tenemos un nuevo clip aquí que es el jugador caminando. Pero, ¿cómo vamos a transitar de ampliar la plática? Esta es la pregunta de 1 millón de dólares. Antes de decirte cómo hacemos eso, déjame solo mostrarte lo que hemos creado en esta carpeta Animaciones dentro del jugador. Entonces tenemos al jugador de la fatalidad, tiene un animador, tiene un controlador. Y si hago clic en el controlador, por cierto, cada vez que se hace clic, por ejemplo, en el don 't player, se puede ver el cuerpo rígido donde está o las armas puestas, puede conseguir una referencia. Hacemos click en el controlador. Este es el controlador y estas son las animaciones del jugador y el caminar, el ralentí. Y se puede ver aquí mismo, podemos hacer un poco de modificación para el desplazamiento del ciclo, el tiempo del bucle, los polos del bucle. Pero por ahora, no vamos a ahondar en eso. Por ahora, centrémonos en el animador y en cómo vamos a crear transiciones. ¿ Cómo vamos a decidir cuándo hacemos la transición? Esto también es muy importante. Por lo que vamos a crear una transición aquí haciendo clic derecho en el jugador ralentí. Aquí tenemos el make transition y vamos a ponerlo en el jugador caminando. Entonces déjame acercar un poco. Por lo que ahora se puede ver que tenemos esta flecha pasando de jugador ralentí a jugar o caminar. Y también podemos crear una transición del jugador caminando al jugador ralentí. Por lo que ahora podemos ir y venir entre estas dos animaciones. Demos click en una de estas flechas y miremos y veamos qué tenemos aquí. Entonces tenemos algo llamado la hora de salida. Si pasas el cursor sobre él, puedes ver que esta transición tiene un tiempo de salida fijo. ¿ Qué significa el tiempo de salida? Significa que si voy de la ralentí a la caminata después de cierta cantidad, ¿quiero ir automáticamente de la caminata a la ralentí? Y nuestro caso, no queremos hacer eso. Queremos volver a la transición siempre que en realidad dejamos de caminar. Por lo que voy a apagar el Tiempo de Salida Tiene. Yo voy a hacer lo mismo en el camino hacia abajo. Entonces vamos a buscar la duración de la transición. Y se puede ver en realidad una vista previa, una pequeña ventana de vista previa aquí. Entonces cuando juego, estoy ralentí y luego empiezo a caminar. Tenemos la duración de la transición. Entonces, ¿cómo quieres terminar la animación del ralentí antes de que pasemos a caminar y nuestro caso, creo que no necesitamos eso. Entonces voy a fijar la duración de transición a 0 y también a eso en la transición del caminar. Entonces en ambas transiciones, ambas flechas yendo hacia y desde la caminata, vamos a quitar el tiempo de salida, quitar la transición más adelante cuando sí las necesitemos. Me aseguraré de contártelo. No te preocupes. Ahora, si nos desplazamos hacia abajo, podemos ver aquí que tenemos algo llamado las condiciones. Y esto es bajo qué condición pasamos del jugador al ralentí al jugador caminando? Y bajo qué condición pasamos del jugador caminando al jugador cualquiera de los enlaces? Por lo que vamos a tener que añadir una condición. ¿ Cómo agregamos una condición aquí en las transiciones? Si volvemos a mirar al animador, podemos ver que tenemos el paso de capa y tenemos algo llamado los parámetros. Y aquí dentro podemos agregar ciertos parámetros a los que luego podemos acceder desde nuestro código y hacer las condiciones. Por lo que voy a dar clic y traté de agregar uno de los parámetros. Se puede ver que tenemos float, integer, booleano, y un gatillo. Ahora, flotar y entero se explican. Un booleano, como saben, es un verdadero o falso y un gatillo es igual a lo que significa la palabra, un gatillo. Por ahora, centrémonos en el booleano. Entonces cuando hago clic en el booleano, obtienes la opción de llamarlo como quieras. Entonces este será el booleano que transita de cualquiera de los enlaces a caminar, lo voy a llamar, es. Caminando, golpea Enter. Y ahora puedes ver que puedo encenderlo, que significa que se vuelve verdad, o puedo apagarlo, que significa que se vuelve falso. Por lo que voy a dar clic en la transición, pasando de enlace de ID de jugador a caminar. Y voy a dar click en la condición. Y como se puede ver, porque sólo tenemos un parámetro, inmediatamente piensa que necesitamos el caminar o determina cuál es cierto. Entonces cuando es caminar es cierto, transitamos de jugador al ralentí demasiado caminando. Y si estamos caminando, queremos hacer la transición al ralentí. Queremos tener una condición donde está caminando es falso. Entonces ahora cuando está caminando es cierto, pasamos del jugador Ivan al juego o caminando. Cuando jugador está caminando y está caminando se vuelve falso. Estamos de vuelta en ralentí. Convertiremos eso en código y le agreguemos comportamiento. Voy a abrir mi guión. Y aquí lo primero que tenemos que hacer es conseguir una referencia del animador jugador. Entonces voy a crear animador privado, el animador de reproductores. Y puede que la puerta. Ahora es privado. ¿ Cómo vamos a sumar? No podemos acceder a ella desde el inspector de aquí. Si hago clic en el reproductor de cúpula en el guión, no tenemos acceso al mismo. Bueno, podemos usar algo llamado el componente get. Entonces aquí voy a escribir jugador animador va a ser igual para conseguir componente. Y vamos a añadir el tipo de componente que queremos obtener. Entonces, ¿qué está pasando aquí? Permítanme pasar el rato sobre el componente de la deuda. No tiene explicación. Te diré cuál es la explicación ya que también puedes seguir adelante y encontrar en la documentación de Unity, es muy fácil. Lo que hace es en cuanto empezamos, obtenemos el componente, que es de tipo animador adjunto al objeto de juego que tiene el controlador del jugador como guión. Entonces efectivamente lo que estamos haciendo es que este script está usando VI get component aquí mismo. Y consiguiendo el animador, que es éste. Y ahora tenemos una referencia al mismo. Por lo que ahora podemos acceder a muchas cosas usando este animador. Y también se puede pasar por unidad es documentaciones y ver todos los diferentes tipos de métodos, propiedades, y diversas cosas que podemos hacer con este animador. Entonces, ¿qué vamos a hacer en este animador? Queremos comprobar si hay algún padecimiento. Queremos comprobar si estamos caminando. Queremos poner el Caminando a verdadero y luego transitar hacia la animación de caminar. Entonces voy a crear una condición if aquí y comprobar si la entrada de movimiento es diferente al vector a 0. Entonces vector al 0 es igual que el vector 3 justo aquí. Punto uno, que significa 111 vector dos punto 0 significa 00. Esto significa que si la entrada de movimiento no es 0, eso significa que sí tenemos caminar aquí mismo. Tenemos velocidad, tenemos movimiento. Vamos a conseguir el animador jugador. Vamos a usar algo llamado el conjunto booleano. Y aquí dentro se puede ver que se necesita ya sea una identificación o una forma diferente de usar la cabina de set. Si hago clic aquí, se puede ver que puedo usar un nombre de cadena. Y esto es lo que voy a hacer. Y se puede ver que tenemos una referencia de cuerda. ¿ Y qué dijimos sobre las referencias encogidas? Siempre que tenemos uno, siempre vamos, lo copiamos porque si hay algún error, el IDE no nos dirá cuál es el problema, cuál es el error. El IDE, me refiero a la unidad o al Visual Studio. Y aquí dentro porque estamos caminando. Ah, y me olvidé. ¿ Qué significa este signo de exclamación? ¿ A qué se refiere el signo de exclamación igual? Entonces si ven justo aquí, hemos dicho que cuando las posiciones del ratón de x es menor que este punto verde, podríamos haber dicho que si la posición del ratón que AX es igual, siempre que queramos comparar dos valores, podemos establecer ellos como iguales, iguales. Eso significa que es la posición más x la misma que el punto del ratón punto x Pero aquí decidimos mantenerlo como menor o igual. Pero ¿y si queremos decir, si no es igual? Bueno, entonces usamos el signo de exclamación igual. Esto significa que cada vez que la entrada de movimiento es diferente al vector dos punto 0, tenemos el is walking establecido en true. De lo contrario. Eso significa que cuando la entrada de movimiento es igual a 0, vamos a duplicar esta línea. Y si mantenemos presionada Alt y usamos las teclas de flecha, podemos ponerlo aquí. Y vamos a poner el está caminando a falso. Eso lo ahorraremos. Vamos a repasar esto una vez más porque me olvidé de hablarte de esto y simplemente seguí usándolo, lo cual es muy malo. Entonces espero que eso no fuera demasiado confuso. De todos modos, creamos una condición if que aprendimos en un video anterior. Verificamos si la velocidad de movimiento es diferente a un vector 0, digamos diferente a usar un signo de exclamación e igual. Entonces si la velocidad de movimiento es diferente a 0, eso significa que estamos caminando. Vamos a acceder al animador jugador que va a utilizar el método set Bool. Y vamos a acceder al parámetro is walking y estar ajustándolo a true. Y recuerden, cuando lo pusimos a verdadero, tenemos la transición aquí que dice que si B está caminando es verdad, pasamos de ralentí demasiado caminando, y hemos hecho lo mismo usando otro. De lo contrario significa cuando la entrada de movimiento es igual al vector 2, 2, 0, eso significa que dejamos de caminar está funcionando como falso. Pasamos de jugador caminando a jugar o al ralentí. A ver si eso funciona. Entonces iniciamos el juego. Podemos ver aquí mismo que tenemos jugador ralentí. Si empezamos a caminar, ahí tienes. Se puede ver que ahora estamos caminando y es evidente por cierto, las piernas de nuestro jugador se están moviendo. ¿ Qué tan guay es eso? Entonces ahora tenemos animaciones. Tenemos transiciones de una animación a la otra. Hemos creado dos animaciones. A lo mejor has creado el tercero en ti mismo. No lo haré ahora mismo, aunque más adelante para el futuro Michel para manejar ese problema, me siento perezoso ahora mismo. Pero hay una cosa más que tenemos que cuidar si vamos justo aquí y al jugador de cúpula. Y vayamos a Animaciones. Si elegimos el ralentí, por ejemplo, y lo jugamos, notarás que tenemos nuestra pistola y nuestro brazo parados ahí mismo sin hacer nada. Esto no es nada bueno. Hace que el juego se vea muy, muy mal. Entonces, y también cuando se trata de caminar, así se puede ver aquí mismo que el brazo se está moviendo, el jugador se está moviendo, pero el brazo y se fue son muy rígidos. En el siguiente video, vamos a estar arreglando eso. Entonces antes de irme, asegúrate de escenificar todo, asegúrate de comprometer agregados y animaciones al ralentí y caminando en tu caso también la animación de torpedo al jugador, comprometer los cambios. Y te veré en el siguiente video. 15. Mejorar las animaciones de jugadores: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, cuando ejecutamos nuestro juego, nuestra mano y arma ya no son estáticas. Y cuando nos movemos a la izquierda y a la derecha, tal vez no sea muy perceptible, pero se puede ver que el brazo que sea solo hace que la velocidad del movimiento sea mucho más lenta. Entonces ahora cuando nos movemos, ahí vas. Se puede ver que el arma se mueve hacia arriba y hacia abajo y el brazo se mueve hacia la izquierda y hacia la derecha. Todo en realidad gira un poco. ¿ Qué tan guay es eso? Ahora ya no somos sólo un arma apuntando monstruo matando, perdición cazadora. En realidad somos una capa de condenas animadas que hace de las otras cosas. Entonces, no perdamos más tiempo y empecemos. O K. Entonces, ¿qué quiero decir con realzar nuestra animación? ¿ No tenemos ya una animación lo suficientemente buena? Bueno, no. Como puedes ver, cuando tocamos la animación, el arma no se mueve, el brazo no se mueve, y eso no es bueno. Entonces arreglemos esto. Adelante y empecemos con la apertura de ojos. Van a ver cómo lo hago, y luego lo van a implementar al caminar. Este será tu reto. Entonces incluso a mí me gusta que los retos sean una sorpresa, pero quiero que se centren en lo que estamos haciendo. Entonces tenemos este pequeño botón rojo justo aquí. Cuando hacemos clic en él, comenzamos a grabar. Se puede ver que tenemos la rata y podemos cambiar cualquier cosa que queramos. Por lo que durante esta animación, puedo aumentar la velocidad de movimiento. Por lo que notarás que cuando empecemos por el principio, mira la velocidad de movimiento a medida que me muevo en la línea de tiempo, verás que aumenta hasta el punto de que lo he dicho. Y luego por ejemplo, quiero disminuirlo. Y notarás que tenemos esta propiedad adicional siendo agregada. Entonces empezamos con ellos. Nos movemos hasta 72 y luego bajamos a menos cuatro. Entonces empezamos a ir hacia atrás. ¿ Qué tan guay es eso? Pero no estamos aquí para cambiar la velocidad de movimiento. Podemos cambiar todo lo que queramos. Por cierto, esto, por eso las animaciones, una herramienta tan asombrosa y poderosa en Unidad. Lo que queremos hacer es mover el brazo y el brazo se abrirá hacia arriba y hacia abajo. Entonces lo que vamos a hacer es que vamos a hacerlo, esta es nuestra primera animación. Déjame solo hacer el brazo un poco más grande porque quiero cubrir todo el lado del jugador. No quiero que nada sea visible detrás de él, así que voy a elegir el brazo y sólo lo haré alrededor de 30. Aplica eso. Entonces ahora el brazo es un poco más grande. Cubre el brazo del jugador. Y de vuelta aquí. Ah, ¿me cambié? ¿ Fue esto durante la animación Aquino? Entonces cuando bajamos, se puede ver que bajamos un poco. Voy a bajar el brazo y el arma. Sólo un poquito. Está bien. Y luego cuando bajemos aún más, voy a mover un poco más el brazo y el arma. Y luego cuando nos pongamos de pie, voy a copiar la posición original de la R y arma, copiarla y pegarla al final. Está bien, genial. Cuando terminemos de grabar, necesitamos asegurarnos de que teníamos esta línea de tiempo roja. Asegúrate de que dejamos de grabar. Por lo que ahora tenemos el set de animación. Se puede ver aquí mismo tenemos dos propiedades adicionales donde cambiamos la y, la x, sólo la posición del transporte. Podríamos haber hecho esto agregando una propiedad y accediendo a todo desde aquí, pero esto es un poco rápido. Entonces veamos qué tenemos aquí dentro. Déjenme cerrar esos. ¿ Qué pasa ahora cuando tocamos la animación? Ahí vamos. Se puede ver que el brazo y el arma van subiendo y bajando. Pero es obvio para mí y para ti que hay algo un poco mal. ¿ Qué pasa? Se puede ver que el jugador, déjame simplemente parar eso. Yo tocaré esto. El brazo comienza a bajar antes de que el sprite realmente se desencadene, antes del primer jugador pequeño dip NT. Y ahí tienes. Se puede ver que el brazo es más rápido, no más rápido. Pero el problema es que cuando se trata de animar sprites, tenemos estas cuatro imágenes, ¿de acuerdo? Entonces nosotros, tenemos la primera imagen. Pesamos estos 10 marcos, después tenemos la segunda imagen. Fuimos diez fotogramas, después tenemos la tercera imagen. Pero el brazo y otras animaciones funcionan de manera diferente. Si miro, por ejemplo, en las armas están, observe cómo cambia la y. No va de inmediato a menos 0.332. En realidad va lentamente de menos 28. Y cada cuadro va menos, menos, menos, menos, menos, menos hasta llegar a este punto. Y luego baja un poco menos, y luego baja un poco más. El petróleo sube. Posición original. Eso no es lo que queremos. Se ve muy mal. Si corro el juego, se puede ver que se ve muy mal. Parece como si el brazo no estuviera correctamente unido al jugador. Ahora, si quieres, si es parte de tu juego, Si esa es la peculiaridad que quieres tener en tu juego, entonces ve por ello. Te recomiendo jugar y crear tu propia animación. No tienes que seguir mis pasos exactos, pero quiero mostrarte lo que se puede hacer. Tienes aquí mismo la sábana de la droga. Hoja de droga. No estoy seguro de cómo se pronuncia, pero aquí es donde establecemos las diversas propiedades. Podemos hacer también algo más, que son las curvas. Y se puede ver ahora mismo que tenemos estas curvas muy diferentes. Entonces podemos cambiar la forma en que los sprites, las armas están en posición y cómo cambias la posición de los brazos con el tiempo. Entonces, por ejemplo, puedo seleccionar la x aquí. El por qué, cómo cambia un y la z. Déjame darte un ejemplo para que entiendas que tenemos esta palanca aquí mismo. Al hacer clic en el segundo fotograma, se puede ver que puedo ajustar qué tan rápido o lento o cómo va la curvatura de la animación. Entonces si creé así o lo hago así, te darás cuenta de que el y se incrementará y luego bajará y luego irá más bajo de lo previsto y luego llegará a la meta. Entonces cuando lo toco, mira cómo se ve eso. Ya puedes ver, ahí vamos. Entonces déjenme frenar esto. Entonces la y sube y luego baja y luego va a la posición en la que hemos pretendido que esté. ¿ Cuál es el punto de hacer esto? Podemos jugar con estos, hacerlos como queramos. Pero lo que queremos es que queremos tomar esto y tomarlo todo el camino hasta que se convierta en una pequeña plaza. ¿ Cómo se ve eso? Déjame mostrarte. Ahora cuando jugamos. Ahí vas. No es muy notable. Pero de nuevo, cuando nos movamos, notarás que el arma no se mueve hacia abajo sólo el brazo. Y cuando llegamos a este punto, el arma cae con el jugador y luego sube despacio. Por lo que hemos descubierto una manera de hacer esta transición al igual que los sprites. Entonces otra vez, tomamos éste también. Ahí vamos. Por lo que ahora notarás que el arma se mueve hacia arriba y hacia abajo. Fue exactamente el jugador. Hagamos lo mismo por el brazo. Si hacemos click en el porqué. Eso lo dijo aquí. Vamos a correr. Se puede ver cómo funciona el brazo. Escogeremos el segundo cuadro. Lo moveremos todo el camino. Escogeremos el marco también lo moverá todo el camino. Y ahora la animación debe verse perfecta cuando la revisemos. Ahí vas. Se puede ver que el brazo, el arma, y el sprite jugador se mueven todos juntos al unísono. Entonces espero que hayas entendido lo que estamos creando aquí. Déjame correr el juego para que podamos ver correctamente lo que está pasando. Ahí vas. Se puede ver que ahora los R y D pueden parecer realmente parte del jugador. Ahora, antes de que emita el reto, hay una cosa que tenemos que cuidar, en realidad no cuidar ni tener precaución mientras jugamos. Te das cuenta de que me has creado y lo hacen juntos. Hemos creado el arma teniendo una rotación. Por lo que giramos el arma alrededor para apuntar hacia nuestra masa. Si intentamos agregar rotación al arma ahora mismo mientras estamos caminando, o si tratamos de agregar rotación en esta animación, el señalamiento del chicle ya no funcionará. ¿ Por qué? Porque la actualización y la animación estarán en conflicto. Por lo que la animación quiere rotar el arma de una manera mientras el ratón quiere rotar el ido hacia el otro lado. Y lo que pasa es que la animación gana y ya no podemos apuntar se han ido. Entonces con eso dicho, ahora que ya sabes que no debemos agregar rotación al arma, sino siéntete libre de agregar rotación al brazo. Y ahora es el momento de tu reto. Tu reto es terminar la animación de caminar. Por lo que gira el brazo mientras caminas para que puedas cambiar la rotación del brazo, asegúrate de que cubra el brazo real del jugador para que no tengamos inconsistencias. Asegúrate de no girar el arma en la animación si quieres, Sé mi invitado, pruébalo, a ver si estaba mintiendo o no. A lo mejor yo era quien sabe. Así que pausa el video ahora mismo. Juro que no lo estaba. Yo nunca lo hago. Y hacer el reto. O K. Bienvenido de nuevo. Entonces voy a pasar de cualquiera de girar a caminar. Y yo voy a hacer lo mismo. Voy a dar clic en el botón Grabar. Y vamos a ver, voy a hacerlo, este es el primer cuadro que ya estamos caminando. Entonces, ¿qué debemos hacer aquí? Puedes ser creativo, hacer lo que queramos. Voy a hacer lo mío y las explica a paso si no has entendido ya lo que hacíamos antes. Entonces las armas en nunca rotar, vamos a mover un, digamos arriba un poco. Entonces sí, eso es alrededor de lo que quiero. Y el brazo, lo voy a girar un poco y cambiar su posición a la derecha. Está bien. Después pasamos a esta posición. Voy a bajar el arma y voy a mover el brazo un poco así y cambiar su posición. A ver, ¿dónde está? De acuerdo, así que justo aquí. Después nos movemos de nuevo, el arma arriba y el brazo posan así, y baja un poco o cambia la rotación. Y todo esto depende de tu preferencia. A lo mejor también deberíamos hacer el ARN pero más grande ahora mismo. Después pasamos al siguiente cuadro. El arma se mueve un poco hacia abajo. Y el brazo mueve eso. En tanto que el brazo debe el RMB. De acuerdo, así que la luz alrededor de eso y se mueve hacia arriba. Y por último, tenemos el último marco donde vamos a copiar estos tres. Por lo que se puede ver cada uno de estos cuadrados, los cuadrados invertidos o invertidos están representando la posición del brazo, la rotación del brazo y las armas del brazo no están en posición. Entonces voy a seleccionar los tres, copiarlos y pegarlos en el último fotograma. Entonces veamos cómo se ve eso. Está bien. Por lo que el arma se mueve hacia arriba y hacia abajo, lo cual es algo genial. Brazo va hacia adelante y hacia atrás. Hay un marco que no me gusta demasiado, que está aquí mismo. Y es porque el brazo es un poco pequeño. Entonces creo que el sprite en realidad hace que el brazo sea un poco más grande. Eso lo cambiaremos en un rato. En realidad podemos incluso cambiar la escala. Tratemos de hacer eso. Entonces estamos enlace Chris, oh, no, no tanto aumentará la escala a 1.2, tal vez en la X y la Y. Y bien, eso es demasiado grande. Hagámoslo 1.1 y reduzca un poco la rotación. Entonces ahora lo verás y se queda igual. Entonces voy a ver también la col rizada sigue aumentando en la audición. Sepan qué, no juguemos con la báscula. Sólo eliminemos. No es bueno, causa que nos capaces de de los animales sólo lo incrementará a partir de aquí. Entonces si nos metemos en el brazo, Hagamos esto tal vez un poco más. 28, quizá 29. Aplicar. Sí, creo que ya es suficiente. Y voy a detener la animación. Ahora. Voy a entrar en las curvas. Veamos qué tenemos aquí dentro. Tenemos el arma. Ahora qué creo que quizá quiera mantener el arma igual y veamos qué está cambiando aquí. Entonces la posición sobre la Y y la X. Así que voy a poner estos para que sean, elegir éste, moverlo hacia arriba para que puedas ver ahora mismo una representación visual de lo que queremos decir. Por lo que todavía tenemos la misma posición todo el tiempo. Hasta click bajamos, click bajamos. Y voy a cambiar este. También. Haga clic en la posición x visita mientras que la curva. En tanto que la curva, está bien, Así que está aquí abajo. ¿ Por qué quieres hacer mi vida más difícil? Giramos esta fila, esta fila, esta, y ahí vamos. El último se queda igual. Entonces ahora veamos. De acuerdo, algo bueno. El puesto que está ajustar la rotación. Entonces mientras nos movemos, la rotación alrededor, z está cambiando. De acuerdo, ¿Qué, qué pasa con eso? A ver. Entonces por alguna razón las escalas han cambiado, pero no se preocupe. Encontraremos una solución y luego nos moveremos. Ah, así podemos aumentar esto. Está bien, genial. Y ahí vamos. Entonces ahora veamos eso. De acuerdo, Entonces el brazo se ve lo suficientemente bien y el arma se mueve hacia arriba y hacia abajo. Y si tratamos de ejecutar nuestro juego, Veamos cómo se ve eso. De acuerdo, El Águila está bien. El caminar el arma sigue un poco molestando por ahí. No me gusta la forma en que se mueve arriba y abajo. Cambiemos eso. Y la animación, cierra esas dos cosas. Ir a la posición de caminar, curvas. ¿ Qué está cambiando? Está bien, es la posición y. ¿ Dónde está? De acuerdo, Entonces vamos a hacer esta plaza, ésta también. Y el último, salvo eso, yacía alrededor de la animación. De acuerdo, entonces ahí vamos. Tenemos el arma moviéndose arriba y abajo. Honestamente, no es perfecto, pero es lo suficientemente bueno. Vamos a probar la rotación. Si está funcionando, espero que lo pruebes tú mismo. Entonces ahora mientras caminamos, ahí vamos. Estamos señalando adecuadamente. Caminamos el arma se mueve arriba y abajo. Caminamos con la mano. Ya no tenemos una mano estática y un arma estática. En realidad tenemos al jugador caminando por ahí. ¿ Qué tan guay es eso? Tenemos animaciones increíbles. En el video final, vamos a estar ajustando la velocidad de los jugadores porque a lo mejor no te has dado cuenta, a lo mejor lo hiciste. Pero cuando caminamos hacia la derecha, tenemos cierta velocidad. Cuando subimos, tenemos la misma velocidad, pero si tratamos de caminar hacia abajo e izquierda, se puede ver que somos un poco más rápidos. Entonces puedes ver ahora mismo que si estamos caminando, entonces tratamos de subir. Te darás cuenta de que somos un poco más rápidos y te voy a explicar por qué así funciona la velocidad. Un poco de matemáticas sobre cómo funcionan los vectores y la normalización. Entonces matemáticas, él Yay, no puede esperar el siguiente video, ¿verdad? Te veré luego asegúrate de comprometer todos tus cambios. Mira lo lejos que hemos llegado. Mira todo lo que hemos hecho hasta ahora. Hemos creado, aprendemos a ordenar capas, hemos creado guiones. Ahora el jugador se mueve. Ahora nuestro jugador se mueve usando un nuevo cuerpo rígido y colisionador. Hicimos una punta de pistola en el ángulo. Hicimos que el jugador apuntara en la dirección correcta. Hemos añadido animaciones. Ahora hemos mejorado nuestras animaciones, también mejorará nuestra velocidad, y nos veremos en el siguiente video. 16. Velocidad del jugador 00: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Este es un video muy rápido y corto. Esto es sólo un pequeño retoque que queremos hacer. Y la forma en que nuestro jugador se mueve, no tenemos frío mayor, no tenemos principios mayores. Tenemos una pequeña lección de matemáticas, que se reconoce la parte más emocionante en el desarrollo de juegos. Yay, eso es lo que viniste aquí para las matemáticas, ¿verdad? De todos modos, no perdamos más tiempo. Y se puede ver que la velocidad cuando nos movemos en diagonal es la misma que cuando nos movemos hacia arriba o hacia abajo o hacia izquierda y derecha. De todos modos, no perdamos más tiempo y empecemos. Ah, está bien. Entonces veamos qué está pasando aquí. Como ya les he dicho, cada vez que nos movemos a izquierda y derecha, nos movemos a cierta velocidad. Pero cuando nos movemos a la izquierda o a la derecha y nos estamos moviendo hacia arriba, nos estamos moviendo a una velocidad mucho más rápida. Entonces si no estás convencido, probemos esto. A lo mejor estoy mintiendo. Voy a bajar aquí. Voy a escribir debug dot log. Y aquí dentro voy a decir caminar con una velocidad de y voy a seguir adelante y añadir la capa de velocidad cuerpo rígido. Guardemos eso y veamos qué tenemos. Ahora esto podría no funcionar. Si hago click en la Consola, notarás que tenemos 00. Entonces ahora si lo muevo, no lo verías en pie. Cuando me muevo, es menos 10 cuando me muevo arriba y a la derecha, se puede ver que es 10 por 10, y esa es la velocidad de movimiento que tenemos aquí mismo. Pero no queremos ver cómo está el vector de la velocidad. Queremos ver la magnitud. Entonces voy a añadir algo llamado la magnitud. Si no sabes cuál es la magnitud, se lo voy a explicar en tan solo un poco. Entonces otra vez, ejecutamos el juego. Ahora tenemos la magnitud 0. Si camino a la derecha, lo hemos hecho a la izquierda, tenemos diez. Si me muevo hacia arriba, sigue siendo 10. Se puede ver aumentando aquí. Si me muevo hacia abajo, sigue siendo 10. Pero ahora si me muevo a la derecha, termino, podemos ver que son 14. Entonces Michael, tu instructor, no miente. Nunca. Se puede ver que nos estamos moviendo más rápido cuando nos estamos moviendo diagonalmente, arriba o abajo presionando dos teclas. ¿ Por qué está pasando eso? Bueno, vuelve. Matemáticas simples. Se puede ver que tenemos la velocidad en la y y la velocidad en la x Eso es lo que estábamos viendo antes de agregar la magnitud, que es de 10 por 10. Entonces lo que pasa aquí es que estamos sumando ambos vectores ya que nos movemos diagonalmente. Y tenemos la velocidad final del jugador, que es más rápida que esos dos. Ahora, si quieres, puedes mantener esto en tu juego si es parte de tu jugabilidad. Pero normalmente no queremos que el jugador se mueva más rápido cuando se mueve en diagonal. Esto no es algo lógico. Entonces lo que haremos es normalizarnos. Lo hacemos normalizando es recrear este arco. Y esto significa que esto se convierte en un círculo, lo que significa que la velocidad en la x más la velocidad en la y es la misma la velocidad cuando nos estamos moviendo en diagonal. Entonces este es un vector normalizado, o cuando decimos normalizar un vector. Entonces sigamos adelante y hagamos justamente eso. Entonces de vuelta en nuestro código, vamos a Visual Studio. Y ahora veamos ¿dónde tenemos nuestra velocidad siendo agregada? Está justo aquí. Entonces voy a añadir una, otra línea o lo siento, antes de añadir esto a la velocidad, voy a tomar la entrada de movimiento y voy a normalizarla. Guarda eso. Entonces ahora cuando volvemos a nuestro juego, y por cierto, todo el proceso aquí, ya sabes que éste sólo está tomando un valor. La velocidad de movimiento no cambia. Entonces la única variable que está cambiando es la entrada de movimiento. Por eso normalizo la entrada de movimiento. De ahí que la velocidad se mantenga igual. Entonces solo si estuvieras confundido, por qué estamos cambiando la entrada de movimiento, no la velocidad. Entonces volvemos aquí, ejecutamos nuestro juego. Y ahora puedes ver que caminamos hacia la derecha. Se Stan, a la izquierda sigue siendo 10, arriba, Stan abajo, son 10. Cuando nos movemos en diagonal. Ahí vamos. Se puede ver que aún está hecho. ¿ Qué tan guay es eso? Es increíble. En una nota final, tal vez quieras quedártelo. A lo mejor quieres que el jugador sea más rápido a medida que te mueves diagonalmente. Eso no es un problema. Puedes hacer lo que quieras. Este es tu juego, agregarle tu propio sabor. Pero este es un hábito de desarrollo de juegos de batalla que debes tener a medida que avanzas en tu viaje. Bueno, eso dijo que este fue un video rápido y corto. Asegúrate de comprometer tus cambios. Olvidé comprometerlos la última vez, pero sin preocupaciones. Puedo quedarme con este controlador de jugador ya que sólo hemos cambiado el debug dot log in aquí. Y lo normalizado, puedo escenificar estos, cometer estos cambios y luego comprometer los otros. Entonces, bueno eso dicho, espero que lo disfruten. Y creo que este es el final de la sección 2 donde vamos a estar montando a nuestro jugador. En la siguiente sección, realidad vamos a empezar a usar nuestro arma para disparar añadiendo mecánica de tiro. Entonces te veré entonces. 17. Sección 3: configurar los mecanismos de rodaje de proyección y crear balas: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y cuando ejecutamos el juego, se puede ver que tenemos una bala que viaja por espacio y cuando golpea una pared, se destruye. Entonces, no perdamos más tiempo. Y empecemos. De acuerdo, así que sigamos adelante y creemos algunas balas. El primero que tenemos que hacer es conseguir unas balas sprite. Adelante y hagamos justamente eso. Voy a entrar en el proyecto. Y antes de hacer esas cosas, quiero cambiar un par de cosas aquí. Entonces voy a hacer clic con el botón derecho para crear una carpeta. Voy a llamar a esto las faldas. Y voy a añadir el controlador de jugador. Y aquí voy a crear una carpeta por primera vez ahora los sprites. Y voy a añadir a esta carpeta todos los sprites que tenemos. O incluso antes de eso, voy a crear una carpeta para el jugador y una carpeta para las armas. Armas. Ahí vamos. Por lo que ahora puedo abrir los sprites aquí dentro. Tomemos el arma y la pongamos aquí. Tomemos el precio del jugador y los pongamos en la carpeta del jugador. Genial. Ahora tenemos todo preparado. Tenemos este pequeño error. No creo que sea un problema mayor. Está bien, genial. Ahora sigamos adelante y creemos otra carpeta aquí que serán las balas. Y vamos a entrar en los recursos y conseguir los sprites para las balas láser. Ahora, tal vez te estés preguntando, ¿ por qué elegí tener balas láser y no balas para una escopeta regular? Bueno, antes que nada, mira estas balas, qué cool se ven. Eso es 4142. Yo quería que algo apareciera fácilmente. Entonces como puedes ver, estamos, Vamos a ponerlo en la capa de jugador, acuerdo, Así que quiero que algo sea claramente visible para nosotros. No quiero tener una pequeña bala que apenas podemos ver. Yo quiero tener una bala grande y brillante que podamos disparar. Entonces si quieres, podemos crear una capa de clasificación para las viñetas. Adelante y hagamos eso. Una nueva capa de clasificación, vamos a llamar a esto las balas y debería estar renderizando frente al jugador. Voy a elegir esto. Voy a renombrarlo a la bala del jugador. Y yo sólo elegí esto al azar. Puedes elegir cualquier bala que quieras. Creo que quizá una roja como escopeta. Conoce. Incluso mejor que esto. Mira lo que podemos hacer. Puedo elegir el jugador bala y un puedo cambiar el sprite aquí, arrastre el número 14 sobre. Ahí vamos. Entonces es una bala enorme. A lo mejor se podría cambiar un poco, por lo que la bala se renderiza frente al jugador. Y sí creo que tal vez haciéndolo 0.50.5. No, tal vez mantenerlo uno. Sí. Eso parece una bala de arma de tiro grande. Está bien, genial. Ahora tenemos que sumar un par de cosas a esto. Tenemos que, en primer lugar añadir un cuerpo rígido porque vamos a estar, Qué es eso, Perdón, habitación. Vamos a añadir un cuerpo rígido porque obviamente esta bala se estará moviendo. Vamos a asegurarnos de que congelemos la rotación. Vamos a asegurarnos de que la escala de gravedad 0. Y ahí vamos. Entonces vamos a añadir un colisionador a esto. Entonces voy a añadir un colisionador. ¿ A ver cuál deberíamos usar? Creo que el colisionador de cápsulas no funcionará porque está invertido, culminó en lo horizontal. Vamos a seguir adelante y usar un colisionador de cajas. Creo que ya es lo suficientemente bueno. Entonces, ¿dónde está el colisionador de cajas? Hagámoslo un poco más pequeño. Sí. Ahí vamos. Y siempre te recomiendo que hagas los colisionadores de cajas alrededor de cosas como balas un poco más pequeños de lo que tienen que ser. Entonces ahí vamos. Ah, está bien. Eso es bastante bueno, creo. Y ahora necesitamos cambiar el comportamiento de la bala. Queremos hacerla volar. ¿ Cómo hacemos eso? Hacemos eso agregándole un guión. Entonces voy a entrar en nuestros guiones aquí dentro. Voy a hacer clic derecho y crear un nuevo guión, que va a ser el controlador de bala jugador. Esperemos a que esto compile dot abra inmediatamente un script cada vez que cree uno, solo espere a que se compile. Y ahora podemos seguir adelante y arrastrar el guión a la bala del jugador. Y podemos ver en la bala del jugador tenemos el renderizador sprite vía cuerpo rígido, el colisionador de cajas, y por supuesto el guión del controlador de bala del jugador. Entonces, hagamos doble clic y abramos el guión. Por lo que tenemos un guión totalmente nuevo. ¿ Qué vamos a hacer aquí? Bueno, en primer lugar, queremos una forma de controlar la velocidad de esta bala. Entonces voy a crear un campo serializado de tipo float, que es la velocidad de bala. Y vamos a ponerlo por defecto 25 F porque nunca queremos tener un valor predeterminado de 0. Entonces 55, pero la velocidad de la bala. Entonces si es baja, pero es mejor que nada. Y lo siguiente que queremos hacer es añadir velocidad a esta bala. Entonces para hacer eso, necesitamos una referencia al cuerpo rígido. Y no tengo ganas de hacer esto, así que quiero dártelo como reto, necesitarás conseguir una referencia al cuerpo rígido. Por lo tanto, crear una variable de tipo cuerpo rígido se asegura de que sea privado. Y empieza a obtener el componente del cuerpo rígido tipo. Si ya sabes hacer esto, pausa el video y ve a hacer el reto. Si no, te daré una pequeña pista sobre cómo conseguir un componente. Usa el componente get con un tipo entre los dos signos poco más grandes o más pequeños. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces aquí voy a crear un cuerpo rígido privado 2D y el cuerpo rígido de bala. Guarde eso. Y ahora, porque tenemos el controlador de bala jugador en un objeto de juego que también tiene el cuerpo rígido. Podemos acceder inmediatamente a ella diciendo que las balas cuerpo rígido es igual al componente de deuda, cuerpo rígido 2D. Y ahora tenemos una referencia al mismo. Ahora y actualizar ¿qué vamos a hacer? Bueno, al igual que hicimos con el jugador, voy a seguir adelante y decir que las balas rígidas velocidad del cuerpo es igual al nuevo vector 2, porque la velocidad es un vector 2. Cuando estemos trabajando en el espacio, me voy a quedar uno para la x. Y voy a mantener el 0 F como la y. y lo voy a multiplicar por la velocidad de bala. ¿ Por qué estoy haciendo esto? Bueno, porque no quiero que la bala se mueva en el eje y. No quiero que se mueva verticalmente. Yo quiero mover la bala sólo horizontalmente por ahora. Entonces, vamos a guardar eso. De acuerdo, entonces volvamos a Unity y alejemos un poco y hagamos de la velocidad los dos para que podamos ver claramente lo que está pasando. Vamos a mover al patrón y la bala hacia atrás y ejecutar nuestro juego. Entonces ahí vamos, se puede ver que la bala está viajando por el espacio y cuando golpea, así que todo, se detiene por completo, tan genial. Nuestra bala se mueve perfectamente. Podemos dividirlo. Podemos hacer lo que queramos. Pero, ¿qué pasa, por ejemplo, si el libro es diagonal cuando ejecutamos nuestro juego? A ver qué pasa. Sí, así que claramente no es así como se supone que se esté moviendo una bala. Lo que queremos hacer es que la bala siempre se esté moviendo en la dirección que le hemos puesto. Entonces, ¿cómo vamos a hacer esto? Digamos, por ejemplo, tenemos nuestra escopeta aquí mismo, nuestro brazo, y está girado hacia arriba. Nuestra bala también se girará hacia arriba. Entonces si lo movemos, Es algo parecido a eso. Pero si hacemos clic aquí, arriba, aquí arriba, se puede ver el centro y lo global. Esto es para la rotación, esto es para el, bueno, cómo se representan los ejes. Por lo que si hago click en el local, puede ver esta es la dirección que la bala está mirando actualmente. Entonces así va a salir la bala y volar. Y se puede ver que es el rojo, que es el eje x, está mirando hacia arriba y la dirección de la bala. Entonces siempre que rotemos nuestra escopeta, queremos que la bala la rote con ella también. Entonces queríamos volar siempre en dirección a la x Entonces, ¿cómo vamos a hacer esto? Bueno, por suerte, hay un vector que se llama el punto de transformación, ¿verdad? Y déjame mostrarte qué es eso. Oops, lo siento, eso es para más tarde. Entonces transformar ese derecho es el eje rojo del transporte en el espacio mundial. Por lo que podemos acceder a este eje cuando queramos. Y esa es la dirección que vamos a estar haciendo volar nuestra bala. Entonces de vuelta en nuestro código y aquí voy a quitar el nuevo vector dos. Y voy a hacerlo en su lugar. Diga que la dirección se transformará punto, ¿verdad? Entonces ahora cada vez y la actualización, cuando la bala está volando, está volando a la velocidad de la velocidad de la bala que determinamos y en la dirección del transform.py, derecha, que es el eje rojo. Vamos a probar esto. Entonces si corro el juego ahora mismo, la bala se mueve bien. Genial. A ver si guardamos eso. Y cuando la bala apunta hacia arriba, si corro el juego, sí, ahí vamos, la bala se mueve hacia arriba. ¿ Qué tan guay es eso? Genial. Ahora, una cosa más. No es así como capaz se comporta. Por lo general una bala Siempre que sea así. Déjame sólo estirarlo. Bueno, funciona. Sí. Ahí lo tienes. Simplemente le encantó el edificio y seguirá para siempre hasta la eternidad. Y eso es un problema. Siempre que tengas una bala que no se destruya en algún momento cuando golpea una pared. Esto es lo que necesitamos arreglar. Eso es lo primero. Lo segundo, una bala no solo golpea una pared y se queda ahí. Una bala debería poder viajar a través de una pared. A lo mejor, tal vez viajó por un muro. Por lo que vamos a dar click en la bala de los jugadores. Vamos a bajar y al colisionador y vamos a convertirlo en un gatillo. Entonces, ¿qué es un gatillo? Un gatillo si el colisionador se comporta como un gatillo o no, eso no es muy útil. Un gatillo significa que si esta bala golpea una especie de superficie, no la impacta físicamente. Pero nos da la capacidad de llamar a algo llamado causa, algo llamado Eso es muy inteligente. Y en Trigger Entrar a la, entonces lo que esto hace, se puede leer la descripción enviada cuando un otro objeto entra en un colisionador disparado adjunto a estos objetos sólo a la física. Entonces, ¿qué pasa si esta bala es un gatillo mientras viaja por el espacio? Cuando golpea la pared aquí dentro, que está en el fondo. Cuando llegue a este muro, se llamará un método de entrada de azúcar, que creará en el controlador de balas de jugadores y wariness oro, podemos seguir adelante y hacer lo que queramos. Y una de esas cosas es destruir la bala. Déjenme demostrar. Eso es mucho hablar, no hay suficiente acción. A ver qué pasa. Voy a escribir en Trigger, Enter 2D, pulsa la tecla Tab. Entonces como puedes ver, es un vacío privado. No te preocupes si no sabes cuál es esa palabra. Posteriormente te explicaremos todo y cómo podemos crear métodos. No te preocupes. Y luego tenemos el Onsager enter y tenemos algo aquí dentro que se llama parámetro. También profundizaremos más en ello. Pero todo lo que necesitas saber que esta colisión es el objeto al que acabamos de golpear. Entonces, por ejemplo, si esta bala vuela y golpea al jugador, el jugador es la colisión aquí mismo. Pero de todos modos, ¿qué queremos hacer cuando la bala golpea algo? Bueno, queremos que esta bala se destruya a sí misma. Queremos que esta bala desaparezca. Ya no necesitamos en nuestro mundo. Hay un muy buen método para hacer esto, simplemente escribiría destruir el objeto del juego, y eso es todo. Entonces destruimos lo que deben tener los esteroides o elimina un objeto de juego, componente o activo? ¿ Y qué queremos quitar? Queremos eliminar el objeto de juego real. Y si pasas sobre él, puedes leer el objeto del juego. Este componente está unido a unos componentes de un objeto de juego. Entonces, vamos a guardar eso. Volvamos a Unidad, ese doblete conjunto aquí mismo. Y ahora cuando la bala impacta a cualquiera de los colisionadores, debería desaparecer de nuestra escena. Vamos a ejecutar el juego. Mantén los ojos en la vista de escena. Ahí lo tienes. Se pone esteroide. ¿ Notaste en la jerarquía que ya no tenemos la bala? Disculpe, esa es una actualización molesto. Probemos esto de nuevo sin ninguna actualización. Eso ha intentado poner la bala aquí mismo. Ejecuta el juego, mantén el ojo en la jerarquía cuando golpee, por lo que desaparece toda la bala. Entonces ahora cuando alguna vez entramos a una zona, bala se destruye porque es un disparador, lo que significa que desencadena el método Onsager enter siempre que en realidad golpea cualquier tipo de pared, puedes leer más sobre ello aquí en la documentación de la Unidad. Por lo que espero que hayas disfrutado creando tu nueva bala. Espero que no te moleste que las balas sean brillantes y muy futuristas en punto de la peculiaridad del juego que estamos creando. Y también estamos usando sprites libres. Entonces tenemos que trabajar en torno a las limitaciones que tenemos. El siguiente video, en realidad estaremos disparando estas balas desde el arma aprendiendo qué es el breve arriba. Nunca olvides cometer tus cambios. Espero que lo disfruten y los veré en el siguiente video. Y antes de que me vaya por cierto, hay algo que no queremos escenificar y nuestro juego, que son los sprites que acabamos de agregar. Entonces qué vamos a hacer, porque esto no es necesario poner en escena, comprometiendo los sprites. Lo que voy a hacer es que voy a entrar aquí. Voy a hacer clic derecho y voy a ignorar e ignorar todo debajo de los activos, sprites. No queremos guardar nada que esté dentro de los sprites. Porque uno, siempre tendremos los sprites en nuestra computadora para, quizás nunca habríamos borrado los sprites por error. Y aunque lo hagamos, siempre podemos volver a ponerlos. Y 3, ocupan mucho espacio innecesario. Entonces ignora todo bajo los activos sprites golpearon Vale, Todo debería haberse ido, sólo las balas y demás y así sucesivamente. Entonces espero que hayas disfrutado de escenario todo y te veré en el siguiente video. 18. Aminar hojas (prefabs y de instantiation): Bienvenido de nuevo mis compañeros desarrolladores de juegos a un nuevo video ultra emocionante. Hemos creado balas previamente, las hicimos volar, pero ahora usando el poder de breves arriba, el poder de entrada, el poder de la instanciación. Es decir, hemos aprendido tanto en este video, podemos empezar a disparar balas en varias direcciones. ¿ Qué tan guay es eso? Como pueden ver, tenemos múltiples balas disparando desde nuestra escopeta. Entonces, no perdamos más tiempo. Y empecemos. Oh, bien, entonces es hora de empezar a disparar balas de hora. Pero queremos que se disparen múltiples balas. No sólo queremos tener una bala. Entonces, ¿qué vamos a hacer? ¿ Deberíamos duplicar esta bala varias veces? Por cierto, lo estoy haciendo usando Control D. Bueno, obviamente no, esta no es una gran idea. Lo que necesitamos hacer es crear algo llamado prefab. ¿ Qué es un prefijo? Déjame mostrarte. Un prefab básicamente significa que es un objeto de juego previamente fabricado que podemos usar varias veces. Hay mucho, muchos beneficios de tener prefabs a la hora de crear nuevas escenas y hacer cosas diferentes. Repasemos un par de cosas importantes sobre las prefabs. Se trata de una plantilla para cierto objeto de juego. Entonces al igual que tenemos la bala con sus componentes específicos en colisionador específico, podemos crear un prefabricado fuera de él y crear múltiples balas con los mismos componentes, con los mismos sprites, el mismo colisionador, etcétera. sistema Prefab permite almacenar un objeto de juego con todas sus propiedades. Entonces tal como dije, puedes crear un prefab de la bala y luego crear múltiples balas con las mismas propiedades, componentes de juego, etcétera. ¿ Para qué lo utilizamos? Podemos reutilizar un objeto de juego configurado de una manera particular. De ahí la bala podemos crear múltiple, pero vamos a ver, veremos cómo en tan solo un poco podemos editar muchos objetos a la vez. Entonces, por ejemplo, digamos que queremos que las balas sean más rápidas. ¿ Deberíamos ir a cambiar todas las balas o cada vez? No, podemos cambiar sólo el prefab y se cambiarán todas las demás formas de este prefab. Podemos usar el mismo objeto en diferentes escenas, mucho más fácil cuando empezamos a crear múltiples niveles. Ya sabrás a lo que me refiero con esto, y eso es todo. Entonces vamos a crear un prefabricado. Ahora bien, el proceso de creación de un Prefabs es extremadamente, extremadamente duro. Así que sé muy, ponte las gorras, detente todo, y mira lo que hago. Esto es muy importante. En primer lugar, creamos una carpeta que es la prefabs. Voy a entrar aquí y ahora voy a crear un prefabricado a partir de esta bala. Entonces lo que debemos hacer es primero que tenemos que arrastrar esta bala aquí. Y eso es todo. Es así como creamos un prefabricado. Entonces ahora lo que podemos hacer es simplemente arrastrar esta bala aquí mismo y crear múltiples balas. Y se puede ver que bala tres, Dos bala 1 todos tienen los mismos componentes en el inspector. Y puedes saber que un objeto de juego es un prefabricado mirando a su erudito. Por lo que se puede ver el fondo no es un prefabricado, pero la bala del jugador es porque es un poco azul. Entonces digamos por ejemplo, quiero crear un prefab fuera del jugador de sala. Ahí vamos. Por lo que ahora la capa de volcado es un prefabricado y puedo agregar otra y una tercera. Y si corro el juego, ahora tenemos tres jugadores de la condenación caminando por la a ¿Qué tan guay es eso? Ahí vas. Tenemos un ejército fresco. Los Tres Mosqueteros, los llamaremos los tres. No estoy seguro. Está bien. Mosqueteros, ya basta. Adelante y borremos todas las balas que tenemos. Podemos incluso eliminar este original y aún así podemos añadirlo de nuestros prefabs. Y mantengamos aquí al jugador como prefabricado. Tan muy agradable. Ahora tenemos todo casi listo y podemos empezar a crear, disparando las balas. Entonces vayamos al controlador del jugador y empecemos a hacer justamente eso. Ahora, voy a estar disparando estas balas desde el controlador del jugador. Pero ten en cuenta más adelante necesitaremos otro guión para hacer el disparo por nosotros. A partir de ahora sólo una cabeza arriba. En primer lugar, voy a crear un campo serializado el cual es de tipo objeto de juego. Y esta será la referencia a la bala, o podemos llamarla jugable. No se preocupe. Por ahora, mantengámoslo como bala. Vamos a necesitar una referencia a algo llamado la transformación o la posición de fuego transformado. ¿ Y por qué necesitamos eso? Bueno, ¿de dónde saldrá nuestra bala? Por lo que obviamente saldrá de nuestra escopeta. ¿ Y dónde está el punto de disparo de la escopeta? En caso de que saliera de medio de la escopeta, eso no sería muy bonito. Lo que haremos es añadir un punto de fuego. Y este punto de fuego será un objeto de juego vacío, que será hijo de las armas son. Entonces punto de fuego. Y nota lo que pasa ahora, porque no capas es un prefabricado. Notarás que el bono de archivo tiene un poco más en él. ¿ Qué significa eso? Si hago clic en la capa superior aquí, puedo hacer doble clic sobre él y abrirlo por separado. Te darás cuenta de que no tiene el punto de fuego porque aún no se ha ajustado el prefabricado. Y lo puedes ver desde el color del punto de fuego y el del pequeño plus. Para que podamos entrar en el do player. Aquí tenemos la anulación. Si hacemos click hacia abajo, notarás que cosas que hemos cambiado pero aún no se han aplicado a la prefabricada. Y se puede ver que podemos o bien aplicar lo específico o podemos, podemos aplicar todo. Entonces cuando golpeamos el aplico todo, ahora, el jugador de la condenación, cuando hacemos doble clic sobre él, tiene el punto de fuego, el prefab del jugador de la fatalidad también tiene el punto de fuego. Entonces moveremos el punto de fuego aquí y frente a la escopeta. Pero si agregamos otros 11 de los jugadores de cúpula, notarás que el punto de fuego sigue en el medio, mientras que el punto de fuego en el jugador de condenación aquí está frente a la escopeta. Ah, y además, se puede ver cuando hago clic en el punto de fuego, la transformación, la posición tiene esta pequeña línea azul y esto representa que hemos cambiado algo de la prefabricada. Por lo que entraré en el jugador de la perdición, haga clic en anular y aplique todo. Pero no siempre aplicamos todo. Tengan eso en mente. Cuando golpeo Aplicar todo. Si vuelvo al jugador de doom aquí dentro, selecciono el puntero de archivo y apareció mágicamente en el extremo de la escopeta. Por lo que estás empezando a entender lo útil que puede ser un prefab a la hora de modificar múltiples elementos de prefab que hemos creado. Posteriormente. A medida que avanzamos por el curso, hacemos cosas más complejas. Ya verás lo eficiente que es el sistema. Por ahora eliminaremos al jugador de la fatalidad y sigamos adelante. Entonces tenemos nuestro punto de fuego, tenemos nuestra bala. Lo siguiente que queremos hacer es empezar a disparar 0. Por lo que he añadido esto en el lugar equivocado, discúlpame. Estábamos trabajando en el controlador de bala del jugador y deberíamos haber estado trabajando en el controlador de capa, no en el controlador de bala del jugador. Esto es un poco confuso. No noté la bala del jugador. No se preocupe. Nosotros solo controlaremos X, que los cortará desde aquí, y los pegamos aquí. Perdón por la confusión. Pido disculpas por mi falta de concentración. Guarda eso. Vuelve atrás. Ahora, veremos que tenemos una referencia a la bala, una referencia a la posición del expediente o punto de fuego, ese debería ser punto de fuego. Guarda eso de nuevo en nuestro juego. Por favor, no pierdas mi tiempo y nada se pega. Punto de incendio y la bala serán los activos. Prefabs. Arrastra la bala. Y ahí vamos. También podemos aplicar los cambios y aquí. Entonces, ¿qué tenemos que hacer? Queremos, cada vez que presionamos un botón, que será la tecla izquierda del ratón, queremos disparar una bala. Entonces hagámoslo. Vamos a crear una condición y la actualización donde comprobamos si presionamos cierto botón del ratón. Pero cómo si entramos en unidad son las documentaciones. Podemos ver que tenemos una entrada para bajar el botón del ratón. Si leemos la descripción, podemos ver que devuelve un verdadero durante el fotograma el usuario presionó el botón del ratón dado e incluso podemos ver un ejemplo aquí. Entonces si input dot get boss button down 0, presionamos el botón primario, que será el botón izquierdo del ratón, el que como d botón derecho del ratón. Y los dos es el medio, que es la rueda pequeña. Entonces de vuelta aquí, voy a eliminar este registro de puntos de depuración. Voy a comprobar si el punto de entrada consigue el botón del ratón abajo el 0. ¿ Qué vamos a hacer aquí dentro? Bueno, queremos hacer algo llamado instanciación. ¿ Qué es eso? ¿Atrás? Y la documentación de Unity, podemos ver que podemos instanciar un objeto. Leamos la descripción. Devuelve un objeto que instanció ropa o creamos un clon de la prefabricada que tenemos. Clona el objeto original y devuelve el clon. Esta función puede copiar un objeto similar al duplicado, etc. Se puede leer todo al respecto, y así es como podemos usarlo. Por lo que simplemente podemos instanciar el objeto, sea lo que sea sin ninguna adición. Podemos instanciar un objeto y convertirlo en hijo de cierto padre que queremos, lo cual es muy útil. Podemos instanciar en cierto mundo y espacio. Podemos agregar rotación de posición y un padre. Por lo que todos estos son muy importantes. Entonces ahora que ya sabes cómo funciona la instanciación, es hora de un reto. Y tu reto va a ser instanciar a los prefabs de bala. lo tanto, revisa el ejemplo de instanciación en la documentación de Unity. Los objetos deben ser o el objeto original debe ser la bala prefab. Asegúrese de que la posición esté en la posición cinco. El giro también está en la posición cinco. Y te daré una pequeña pista si no lo necesitas, ya sabes crear. Adelante y haz el reto. De no ser así, para acceder a la posición y rotación del punto de fuego, utilice la posición superior y la rotación. Así que pausa el video ahora mismo. Sé que aún no sabes crear instanciaciones, pero este es un momento perfecto para probarte, para ir más allá de tus límites o lo que crees que son tus límites. Así que pausa el video ahora mismo. Ve al Shalon. Lo que vamos a hacer es que vamos a instanciar, vamos a abrir los corchetes. Y aquí mismo podemos ver todas las opciones que tenemos. Pero ya sabemos por las documentaciones cómo usarlo. ¿ Cuál es el objeto original que usaremos? Será la bala a la que nos llegó la referencia. Cuál es la posición que queremos establecer esta viñeta sumar. Se va a agregar la posición de punto de fuego. Y debido a que hemos agregado una posición, también queremos agregar una rotación y simplemente va a ser la rotación de punto de fuego. Guarda eso. Por lo que ahora cuando hacemos clic en el botón del ratón distinto de cero, vamos a instanciar la bala, a la que obtuvimos una referencia en la posición del punto de fuego que hemos creado con la rotación de puntos lejanos. ¿ Por qué estamos especificando la rotación del punto de fuego? Porque si hago clic en el punto lejano, se puede ver cómo se está girando aquí mismo. Si giro el brazo ahora mismo porque el punto de fuego es hijo de las armas son, te darás cuenta ahora que esta es la dirección, pesar de que la rotación sigue siendo 0. Pero la dirección que se puede ver aquí mismo, si se puede ver cambió esto de global a local. Ya verás cómo se dirige el punto de fuego. Entonces voy a satisfacer de nuevo a 0. Y las rotaciones a veces son raras. No se trata sólo de 0. Si miramos la posición, si cambiamos la rotación, notarás que la posición también cambia. Es un poco confuso. Es por eso que usamos generalmente las rotaciones cuaterniones en Unidad son muy dudosas. De todos modos, vamos a guardar eso. Corriremos nuestro juego y ahora podemos disparar nuestras balas. ¿ Qué tan guay es eso? Mira cuántas balas hemos creado. Pero como puedes ver, cuando disparamos muchas balas, se destruyen a sí mismos. Entonces eso es un no-no. Entonces con eso hecho, espero que lo disfruten. Asegúrate de comprometer los cambios en el siguiente video, haremos nuestras balas lejos automáticamente sin tener que presionar el botón cada vez. A pesar de que se trata de una escopeta, haremos una escopeta automática. Entonces comete los cambios, y te veré en el siguiente video. 19. Mostrador de fuego: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, vamos a añadir disparo automático. Por lo que puedes ver aquí mismo que tenemos un tiempo entre tomas. ¿ Cuánto tiempo quieres entre tomas? Puedo oírte. ¿ Quieres decir 0.5? Está bien, señor, ahí va. Jugamos correr. Teníamos el botón Play. Corremos la ganancia, y mantenemos pulsado el botón izquierdo del ratón. Y ahí tienes. Se puede ver que debemos cada fotograma y se puede ver que son muy consistentes. Entonces no estoy jugando un juego y aquí estoy manteniendo pulsado el botón y sigue disparando cada 0.5 segundos o cada uno tiene segundo, seguimos disparando capaz. Entonces, no perdamos más tiempo. Vamos a aprender sobre los contadores. Y empecemos. O k Por lo que queremos tener la capacidad de disparar automáticamente las balas cuando se mantiene pulsado el botón del ratón. Por lo que actualmente cada vez que presionamos el botón, una vez podemos disparar, pero lo que queremos es tener algún tipo de disparo automático mientras mantenemos presionado el botón, igual que un rifle, pesar de que estamos usando una escopeta aquí mismo, solo usaremos nuestra imaginación e imaginaremos que se trata de una escopeta automática. Y mientras mantenemos pulsado el botón, sigue disparando. Entonces, ¿cómo vamos a hacer esto? Actualmente, si miras aquí mismo, puedes ver que este método, el botón get mouse down, devuelve un verdadero durante el fotograma el usuario presionó el botón del mouse dado. Por lo que sólo devuelve true una vez en el fotograma que el jugador o el usuario ha pulsado el botón. Lo que queremos es que queremos usar algo llamado el botón input dot get mouse. Por lo que note que esto era botón del ratón hacia abajo. Este es el botón get mouse. Y si lees la descripción, puedes ver que devuelve un verdadero si el botón del ratón dado se mantiene pulsado. Entonces mientras estamos aguantando, esto sigue volviendo verdad. Y esto nos permitirá seguir instanciando balas todo el tiempo, cada fotograma. Pero se nos ocurre un problema. Te has dado cuenta de que cuando ejecutamos el juego, si te acuerdas, podemos ver las estadísticas aquí mismo. Por lo que tenemos alrededor de 800 a mil cuadros por segundo. Entonces cada fotograma, mientras mantenemos pulsado el botón del ratón, vamos a estar instanciando una bala, lo cual es muy malo. Entonces vamos a tener alrededor de las 1000 balas cada segundo. Ahora, es divertido. Es un arma muy OOP, pero eso no es lo que queremos. Queremos tener cierto tiempo entre disparar cada libro mientras estamos sosteniendo como un arma real. ¿ Cuál es la materia aquí? De acuerdo, así que no se preocupe. Creo que esto se resolverá por sí mismo. De todos modos. Empecemos. El primero que vamos a hacer es crear un campo serializado, que va a ser un flotador, y va a ser el tiempo entre tomas. Una segunda variable que tendremos como flotador privado y el contador de disparos. Y lo que haremos es en cuanto empecemos, vamos a poner el contador de disparos para que esté alrededor de 0, o podemos ponerlo de inmediato aquí en lugar de ponerlo y el inicio. Por lo que empezamos a las 0. Ahora si nos desplazamos aquí abajo, vamos a crear otra condición. Y diremos que si el punto de entrada consigue el botón del ratón, que devuelve si el botón de modos dado se mantiene pulsado. Y también utilizamos el índice 0 para el botón izquierdo del ratón. Vamos a empezar a usar el contador de disparos y a quitar de él el tiempo de punto delta. Entonces, ¿recuerdas cuando usamos el plus igual en algún lugar aquí arriba cuando estábamos usando la transformación, ahora no la tenemos. Bueno, esto es similar al plus igual. Por lo que esto representa el contador de disparos menos tiempo.Deltatime. Y sabes qué, voy a duplicar esto, comentar esto. Y entonces haré de esto un minuss igual. Por lo que recordarás que estas son las mismas cosas. Y hasta lo moveré abajo junto a la línea justo aquí. Se puede guardar esto como un recordatorio de por qué estamos estableciendo menos iguales, más iguales y todas estas cosas. Es mucho más fácil de leer y es mucho más fresco y te hará mucho más profesional buscando siempre que estemos mostrando a alguien tu juego. Entonces sigamos uno, ¿qué necesitamos aquí? Si bien mantenemos pulsado el botón del ratón, el contador de disparos se está contando hacia abajo. Entonces lo que queremos es siempre que este contador de disparo termine o se convierta en 0, queremos disparar una bala y luego refrescar el contador de disparos de nuevo al tiempo entre disparos. Entonces, ¿cómo vamos a hacer esto? En lugar de instanciar de inmediato, voy a emitir un reto. ¿ Fue esa una transición mejor que la última vez? De todos modos, tu reto es comprobar si el contador tiene, y así crear una condición if que revise el contador de disparos. Si el contador de disparos es menor o igual a 0, ¿por qué es menor o igual a 0? Podría estar preguntando ¿por qué no inmediatamente 0? Bueno, porque como estamos contando. 20. Bullets de la masa con los otros: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos en este video, cuando fijamos el tiempo entre disparos a 0.1 y empezamos a disparar a nuestros pájaros. Te darás cuenta de que a pesar de que están uno encima del otro, no se destruyen a sí mismos, pero aún así se destruyen cuando golpean cualquier pared. No sólo eso, si tengo muchas balas siendo disparadas y caminar al jugador por ellas, notarás que el jugador también, o las balas y el jugador no interactúan entre sí y no se destruyen al golpear la capa, que es un buen mecánico. No queremos que el jugador use la bala para poder suicidarse. Se trata de un mecánico de juegos. Entonces con eso dicho, no perdamos más tiempo, y empecemos aprendiendo capa y física matriz 2D K. Así que ahora cuando ejecutemos nuestro juego, verás que podemos despedir nuestros libros. Pero el problema es que si intentamos presionarlo varias veces o si establecemos el tiempo entre tomas, por ejemplo, 0.1, verás que no vemos ninguna bala volando lejos. ¿ Por qué? Porque aviso a la izquierda, tenemos las balas disparando y destruyendo ellos mismos porque están interactuando entre sí. Y eso no queremos. Queremos solucionar este problema. ¿ Cómo vamos a hacer esto? Ahora antes de continuar, tal vez sea algo que sí quieres mantener en tu juego. Pero honestamente para mí, es un poco molesto que tus balas sean destruidas. Entonces otra vez, ¿cómo vamos a arreglar esto? Bueno, si miramos justo aquí a la derecha y al inspector de cualquier objeto de juego, podemos ver que tenemos algo llamado la capa. Y ya te lo he mostrado anteriormente cuando hablábamos de clasificar capas, pero no hemos profundizado en ello. Entonces si vuelvo a capas, se puede ver que tengo etiquetas de las que hablaremos En el futuro. Tenemos las capas de clasificación que determinan qué Sprite o qué capa renderiza frente a qué otra capa. Y también tenemos las capas. Y se puede ver que ya tenemos los afectos transparentes por defecto , ignorar el agua reechada. Todos ustedes son de estas diferentes capas que ya están presentes en Unity. Entonces lo que vamos a hacer es que vamos a poner las balas en cierta capa. Podría estar preguntando, pero ¿por qué deberíamos estar poniendo estas balas en cierta capa? Bueno, déjame mostrarte primero creando la capa de balas de jugador. Ahora, queremos entrar en los proyectos. Entrar a nuestro ¿dónde están los prefabs, lo placentero? Y solo pongamos la bala del jugador en la capa de balas del jugador. De acuerdo, Entonces este fue el prefabricado. Por lo que todas las posteriores creaciones o clones de este prefab también estarán en la capa de bala del jugador. Pero aún así, ¿cómo nos ayuda esto? Bueno, si entramos en nuestra edición, en la configuración de nuestro proyecto, y si entramos en la física 2D y nos desplazamos hacia abajo, podemos ver aquí mismo esta matriz de colisión de capas. Y si tú, lo siento, si inclinas la cabeza, puedes ver, déjame maximizar esto. Se puede ver que tenemos las balas de jugador recast transparentes por defecto, IU de agua, y de este lado también. Entonces, ¿cómo funciona esta matriz? Digamos que tenemos la capa predeterminada, que anteriormente era la capa de viñetas. Y podemos ver que también interactúa aquí mismo con la capa predeterminada de este lado. Entonces lo que podemos hacer es que realmente podemos apagar esto. Por lo que ahora la capa predeterminada no interactúa con las otras capas predeterminadas. Pero obviamente no queremos que eso suceda porque cada vez que crees un objeto de juego, lo tendrás como predeterminado. Y tal vez sí queremos que algunos de los objetos de juego por defecto interactúen con otros objetos de juego por defecto. Y por eso creamos la bala del jugador. Lo que podemos hacer es decir que la bala del jugador, que está aquí mismo, no interactúa con la bala del jugador. Entonces apagamos esto. Y ahora las balas del jugador no deben destruirse entre sí porque no podrán interactuar entre sí. Vamos a probar esto. Voy a volver. Yo voy a correr el juego. Y voy a ir al jugador DOM y está bien, así que el tiempo entre disparos será de 0.1. Y tratemos de mantener pulsado el botón del ratón. Ahora cuando mantengo pulsado el botón del ratón, ahí tienes. Se puede ver que las balas, pesar de que están uno encima del otro, no se están destruyendo, pero aún se están destruyendo al chocar contra una pared. Por lo que se puede ver eso claramente cuando disparamos hacia la pared, pero están encima uno del otro y no se destruyen a sí mismos. ¿ Qué tan guay es eso? Tenemos esta poderosa herramienta en nuestro arsenal ahora donde podemos establecer diferentes objetos en diferentes capas y asegurarnos de que no interactúen entre sí. Ahora, otra cosa que quizá queramos cambiar es las balas de jugador golpeando al jugador. Otra vez. Te digo, si sí quieres mantener a este mecánico en tu juego, siéntete libre de hacerlo. Si no lo haces, vamos a cambiar la forma en que las balas interactúan con el jugador. Ahora, actualmente, el colisionador de cápsulas jugador es muy pequeño. Lo que podemos hacer es añadir otro colisionador de cápsulas. Tendremos que hacerlo más adelante porque qué pasa si uno de los enemigos nos dispara una bala en la cabeza y no tenemos un colisionador ahí que no registre que nos han disparado. Eso lo arreglaremos. Pero por ahora, solo mantengamos las cosas simples e intentemos pegarle al jugador en las piernas. Entonces voy a correr el juego. Voy a disparar una bala. Y si me detengo ahí, se puede ver que golpea al jugador y puede matarlo. Otra vez. Quieres quedarte con esas mecánicas. Quieres que las balas del jugador ayuden al jugador. Eso está bien. Pero tendrás a este reto. Tendrás que asegurarte de que el jugador y las balas no interactúen. Por lo tanto, crea una capa, capa. Asigna al jugador a esa capa, y asegúrate de que el jugador y las balas del jugador no interactúen a través de la matriz física. Dicho eso, pausa el video ahora mismo, ve a crear la capa de reproductor. Asegúrate de que las balas no maten a nuestro jugador. De acuerdo, bienvenido de nuevo. Entonces, ¿cómo te pusiste con eso? Antes de continuar, sólo quiero hacer algo. Te dije que no querría hacerlo, pero hagámoslo por ahora. Voy a añadir un colisionador de cajas al jugador. Aquí no será donde interactúe el jugador. Esto será sólo un colisionador de caja para determinar que el jugador está siendo golpeado. Entonces lo voy a hacer alrededor del tamaño del jugador y lo voy a hacer un gatillo porque no quiero que este colisionador de cajas interactúe con el mundo físicamente. Quiero mantener este colisionador de caja como registrado a si alguien tiene capa profunda o algún tipo de capa. Entonces voy a guardar esto. Yo voy a correr el juego. Obviamente, tendremos que anular el prefabricado. Voy a disparar esto y si caminé hacia la bala, se puede ver que golpea al jugador. Entonces sigamos adelante en que aparezcan las capas. En las capas, abre las capas. Voy a añadir la capa de jugador. Y ahora voy a entrar al jugador de la perdición. Voy a entrar en las Capas y voy a poner esta capa a la capa de jugador. Y puedes ver que cuando cambias la capa de un padre, obtienes la opción. ¿ Quieres configurar el jugador, el jugador a jugador para todos los objetos infantiles también. ¿ Te gustaría hacer eso o no? Creo que no haría daño si pusiéramos a los niños también. Entonces voy a poner esto, voy a guardar esto. Voy a entrar a la configuración del proyecto, a la física, y voy a asegurarme de que las balas del jugador y el jugador no interactúen. Por lo que se puede ver donde hay una intersección entre las balas del jugador. El jugador. Voy a asegurarme de que aquí no hay letrero. Ahí vamos. Ahora si ejecutamos el juego, las balas deben viajar por el jugador. Y sí, ahí vamos. Por lo que podemos disparar las balas tantas veces como queramos, y no golpean al jugador. Siguen flotando hasta que golpean a algún tipo de enemigo. Entonces espero que disfrutes, espero que te guste esta nueva herramienta que tienes. También podemos aplicar todos nuestros cambios al prefabricado que tenemos del jugador de cúpula. Y en el siguiente video, notarás que tenemos estas balas, está bien, están disparando. Es, todo está bien, pero cuando golpean una pared, no hay nada que esté pasando. El balazo está desapareciendo y eso no es muy emocionante. Queremos tener algún tipo de impacto, algún tipo de efectos, o podemos sentir el peso de esas balas golpeando una pared. Y eso es exactamente lo que haremos en el próximo video agregando los efectos especiales a la bala tras impacto. Por lo tanto, no olvides cometer tus cambios. Y te veré en el siguiente video. 21. Efecto impacto de balas: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Por lo que acabamos de hacer que nuestro juego sea mucho más fresco. Entonces ahora cuando debemos premiar, no sólo tenemos nuestras balas desapareciendo. Tenemos nuestra bala va en una bocanada de humo. Entonces cuando disparamos por ahí, se puede ver que tenemos este pequeño efecto fresco que se destruye. Observe aquí mismo que se destruye después de un cierto tiempo, que es algo que sí tenemos que tomar en consideración. Entonces, no perdamos más tiempo y empecemos. Ah, así que es hora de agregar algo de peso a nuestros impactos de bala. Y lo haremos agregando un efecto de impacto. Entonces voy a entrar a los activos y voy a entrar a la carpeta sprites, y voy a crear una nueva carpeta aquí dentro, que será el hecho de las balas. Y aquí dentro vamos a entrar a los recursos. Y les he proporcionado un par de hechos que encontré. Puedes usar el que quieras. O también puedes encontrar algunos en el sitio web, open game art.com o cualquier otro sitio web. Por lo que se puede ver aquí mismo tenemos tres efectos. Este con un poco de humo, éste con un poco menos de humo, pero es un poco raro. Y éste, ahora voy a usar el OH, así que ven que tiene el impacto metálico de impacto. Metal impacto metal. No se preocupe por eso. Sólo tendremos que ver con lo que tenemos. Usaremos el metal de impacto. Usaré el primero. Seguro. ¿ Por qué no? Entonces, ¿cómo vamos a hacer esto? Vamos a rebanar el sprite. Vamos a crear una animación y luego vamos a reproducirla cada vez que golpeemos el objeto. Voy a rebanar esto si quieres. Podemos hacer esto juntos al mismo tiempo y ver quién lo hace más rápido o mejor. Por lo que a primera hora, seleccionamos el primero 1. Primer impacto, hazlo múltiple. Aplicar cambios. Hagámoslo punto. A lo mejor no hace falta que lo apunte. Adelante y Sprite Editor. De acuerdo, la partícula de humo o no visible, pero vamos a seguir adelante y rebanar esto por tamaño de rejilla. Veamos qué tan grande es esta cuadrícula. Entonces tenemos 1, 2, 3. De acuerdo, así que voy a conseguir mi calculadora a mano. Y la forma en que voy a rebanar esto es porque tenemos este 960. Se puede ver aquí abajo a la derecha, 960 en la horizontal y 576 en la vertical. Por lo que 576 dividido por, porque hay tres líneas, creo que son 192. Entonces en el eje Y, es 192. Y aquí dentro tenemos 12345, lo que 960 dividido por 5 también 192. Genial, debería haber visto venir eso. Por lo que hemos rebanado cuadrados. Muy bonito. Aplicar los cambios. Ahí vamos. Ahora tenemos todos estos. Voy a crear un nuevo objeto de juego aquí dentro, y este será el impacto de bala. Por lo que impacto de bala en pared. Y ahí vamos. Aquí está. Voy a seguir adelante y agregarle un renderizador sprite. Entonces sprite renderizador, y yo sólo le voy a dar este efecto aquí mismo. ¿ Dónde está? Añadamos este impacto de hecho aquí mismo. ¿ Podemos verlo? ¿ Es visible? Está atrás. ¿Deberíamos crear una capa de clasificación? Seguro. ¿Por qué no? Vamos a seguir adelante y crear o podemos hacer una capa profunda de clasificación de viñetas. Las balas. Claro, dejémoslo así porque obviamente es parte de las balas, así que es lógico hacerlo en la capa de balas que lo colocará aquí. ¿ Eso es lo suficientemente grande? A lo mejor queremos hacerlo más grande. Vamos a seguir adelante y hacerles pensar que 50 es mucho. Hagámoslo 75 y veamos qué tan grande es eso. De acuerdo, tal vez podamos agregar, hacer 50, aplicar eso, y tal vez quitar el punto, hacerlo bilineal para que sea un poco más suave. Sí, eso me gusta más. Entonces ahí lo tienes. Este será nuestro impacto. Voy a agregar un componente de animador aquí. Y elijamos éste. Animaciones en realidad. Claro, Vamos a seguir adelante y crear. Esto será en las animaciones patrimoniales. Y a esto se le llamará el muro de impacto de bala. Y yo lo llamo la bala impactante. Bueno, porque más adelante tendremos diferentes tipos de impactos. Entonces aquí dentro vamos a tener la bala. Pared de bala golpeando. Guarde eso. Ahí vamos. Entonces puedes ver de inmediato porque ya teníamos el componente animador, el controlador es enviado aquí que ha movido un poco la animación para que podamos conseguir todos estos, ponerlos aquí, y ahora volver a poner la animación. Ahora, juguemos esto. Está bien, muy bonito. Creo que es un poco rápido. O tal vez eso sea perfecto. A ver. Simplemente lo haré un poco más amplio. Está bien, genial. Creo que eso es suficiente. Pero sigo pensando que 50 es un poco demasiado. A lo mejor hagámoslo 18 son no, guarde eso. Y animaciones. Vamos a jugar esto. De acuerdo, creo que ya es lo suficientemente bueno. Entonces voy a guardar esto. Voy a entrar a los activos, ir a los prefabs, y voy a hacer de esto un prefijo o el impacto de bala ahora es un prefabricado. Está en la visita, los sprites están en la capa de bala y tenemos todo preparado. Espero que hayas hecho lo mejor posible y creando esto o si no lo hiciste, espero que te hayas seguido y no fui demasiado rápido para ti. Entonces ahora, ¿qué vamos a hacer? Ahora necesitamos instanciar este efecto cada vez que una bala golpea una pared. El modo en que hacemos eso es emitiéndote un reto. Por lo que tu reto es instanciar el efecto. Por lo tanto, encuentra tu propio efecto de impacto si lo necesitas. Para que puedas pasar por el juego abierto, nuestro sitio web, o a través de HIO o simplemente buscando en Google. A lo mejor si eres un buen artista, puedes crear el tuyo propio y conseguir una referencia al impacto en el script del controlador bullet. Y asegúrate de instanciar el efecto antes de que la bala se apoye. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Por lo que de vuelta en nuestra bala de jugador aquí dentro, voy a crear una referencia al campo serializado a la bala. O va a ser un objeto de juego, el efecto impacto de bala. Guarde eso. Y lo que haremos es antes destruir o ser destruidos o antes de que la bala sea destruida, vamos a instanciar el efecto Impacto de bala. Y va a ser dónde, ¿dónde debería estar? Va a estar en la posición de transformación, la punta de bala, y la rotación de transformación de esa bala. Entonces voy a guardar todo eso. Voy a volver a Unity. Voy a elegir la bala del jugador. Ahora tenemos un hecho de impacto. Podemos agregarlo aquí mismo. Podemos ahorrar eso. Nosotros sólo vamos a revisar al enemigo a 1 segundo. Entonces, ¿qué pasa aquí dentro? ¿ Por qué estamos tan confiados y creando esto? Y por qué hay un pequeño problema. Aún así, lo que pasa es que en cuanto instanciamos, se ve que la capa predeterminada aquí mismo es la bala que golpea la pared. Por lo que inmediatamente al entrar, empezamos a golpear de bala a paredes, hecho. Entonces veamos cómo funciona eso. Permítanme que me quite esto de aquí. Sí, creo que puedo quitarlo. Y una cosa más que quería hacer, me he dado cuenta de que estos Z estaba en 0, que yo solo reinicié todos estos, guarde eso, ejecute el juego. Entonces ahora debería disparar un muro y al impacto se puede ver que hay una explosión, pero por alguna razón se puede ver que sigue en marcha. Entonces si tengo muchas balas, te darás cuenta de que tenemos muchos hechos y ninguno de ellos se va a ir. Se puede ver aquí mismo en el impacto de balas en la pared. Entonces lo que vamos a hacer, y eso es por la naturaleza de la animación que acabamos de crear. Si entro en las animaciones, si entro en la bala, se puede ver aquí mismo que tenemos el controlador y tenemos la animación. Y te he dicho anteriormente hace un par de videos cuando estábamos haciendo las animaciones del jugador, que hay este tiempo de bucle aquí mismo. Entonces solo lo voy a quitar, guardar eso, ejecutar el juego. En caso de que la bala. Ahí tienes, explota en la pared. Ahí vas. Se puede ver en este momento que el impacto se juega sólo una vez, pero hay un ligero problema y es que los impactos de bala en la pared siguen presentes y no están siendo destruidos. Entonces, ¿cómo vamos a arreglar eso? Y hay una forma muy sencilla de hacer esto. Y mientras te enseño a hacer esto, te mostraré una herramienta extremadamente efectiva dentro de la animación. Entonces lo que vamos a hacer es que vamos a entrar en los activos. Vamos a ir a prefabs. Agregaremos la bala Impacto de nuevo. Y aquí. Y lo que vamos a hacer es retroceder activos, guiones, y crear aquí un nuevo guión C-sharp que será el, veamos, impacto, efecto, destructor. Y va a ser un guión extremadamente, extremadamente sencillo. Vamos a golpear Enter. Y más adelante, me van a recordar poner cada guión y una carpeta porque a medida que vamos tendremos muchos más guiones. Voy a añadir el destructor de efectos de impacto. Voy a abrir esto. Voy a quitar el inicio y la actualización y sólo voy a hacer un método. Y eso va a ser un vacío público. Destruir. Y lo que vamos a hacer, no, no enDestruir, sólo destruir. Y lo que vamos a hacer aquí es simplemente destruir el objeto del juego. Genial, ¿cómo vamos a llamar a esto? Ahora bien, podríamos llamar a este método desde aquí, pero eso no es muy efectivo. ¿ Por qué? Porque cuando instanciemos el boletín aquí, está bien, vamos a pasar por la lógica. Instanciamos la bala al impactar, y luego destruimos el objeto del juego, que es la bala, porque el controlador de bala del jugador está en la bala. Por lo que las placas de impacto. Entonces después de destruir este objeto de juego, ya no tenemos el controlador de bala del jugador. No está disponible y podemos demostrarlo. Entonces voy a crear este hecho de impacto. Por lo que acabo de poner la bala creada aquí. Y después de que destruyamos el objeto del juego, trataré de obtener el efecto de impacto dot get componente y voy a acceder al destructor de impacto. Y desde aquí voy a acceder a la destrucción. Entonces este es el método. Y ahora si juego mi juego, te darás cuenta de que tendremos un error. Entonces voy a mover esto y asegurarme de que aplique los cambios. Por lo que todo el impacto de bala en la pared tiene este método y mira lo que pasa cuando disparamos en la consola. Ahí vamos. ¿ Qué pasa? Ni siquiera vemos el impacto. ¿ Por qué es eso? Porque hemos sido destruidos. Y si tratamos de hacer esto antes de destruir el objeto del juego, veamos esto. Ejecuta el juego. Ahí vamos. Por lo que no hay efecto. Se está destruyendo antes de que siquiera lo veamos. Entonces voy a comentar esto y podemos mantenerlo como está. Eso no es problema. Pero creo que voy a quitar esto. Y esto será para las pruebas tal vez más tarde recuerden cómo lo intentamos pero no funcionó. Entonces ahora tenemos aquí el método de destruir que destruye el objeto del juego. Y cómo vamos a llamar a esto después de que terminemos nuestra animación, esta es la parte complicada. Entonces ahora si voy a la animación mientras tengo el efecto de impactos de bala, puedo tocarla y veo que al final, te darás cuenta de que cuando todo el humo se haya ido, nos queda nada que hacer. Lo que podemos hacer es aquí dentro tenemos esta pequeña llave y aquí y yo estoy teniendo, vale, así que agrega un evento. Podemos sumar un evento en algún momento de la animación, y esto será crucial más adelante a medida que vayamos por el curso. No esperaba hacer el solo temprano, pero no se preocupe por eso. Podemos agregar un evento. Y cuando agregamos un evento, vemos aquí mismo que tenemos animaciones, evento y funciones que podemos elegir. Y si hacemos click aquí, vemos que tenemos la paja. ¿ Por qué sólo tenemos que destruir? Esta es la destrucción, que está justo aquí. Entonces, ¿qué sucede cuando añadimos un evento también, la animación que tenemos sobre un objeto determinado, podemos acceder a todos los métodos que están presentes de los métodos públicos aquí mismo. Y no te preocupes si te sorprendiste un poco de cómo creamos esto más adelante en el curso, voy a pasar por cada paso de crear métodos. Pero por ahora, sólo sepan que podemos acceder a todos los métodos públicos que están disponibles para nosotros en el objeto. Entonces, ¿qué pasará ahora? Al tocar nuestras animaciones, veremos la explosión, la bocanada de humo. Y cuando lleguemos al último cuadro, se activará este evento, que es el destructor. ¿ Y qué hace esto destruye? Entra aquí y destruye el objeto del juego, que está sosteniendo el destructor de efectos de impacto, que es el impacto de bala en la pared. Por lo tanto, asegúrate de aplicar todos los cambios y la anulación. Voy a la cabeza la bala Impacto. Yo voy a correr el juego. Y cuando disparo un muro, deberíamos ver el efecto, pero no lo hacemos. ¿Por qué es eso? Volvamos aquí. ¿ Guardamos estos cambios? Probemos esto otra vez. Creo que eso es porque no hemos guardado el guión. Corrimos el juego. Vemos la bocanada de humo. Y ahí tienes. Se puede ver que ha desaparecido de la jerarquía. Entonces ahora vamos a probar esto un poco mejor. Ahí lo tienes, puedes ver el efecto de impacto que ocurre a nuestro alrededor. Y entonces todo el efecto desaparece. Y es mucho más efectivo. Es mejor que tener muchos objetos de juego en nuestra jerarquía, ocupar espacio, ocupar memoria RAM crucial, y la obstrucción del sistema. Entonces espero que hayas disfrutado, espero que estés haciendo lo mejor de ti en cada reto. Espero que estés disfrutando de las cosas nuevas que agregamos cada vez. Voy a escenificar todos estos. Voy a decir que agregó bala Hecho de impacto y lo destruyó, destruido después. Usando eventos con un signo de exclamación, porque esto es, los eventos son una herramienta increíble que no verás muy a menudo la gente usa. Entonces espero que lo disfruten y los veré en el siguiente video donde estaremos agregando los efectos de trail a nuestras balas, de ahí, haciendo órgano mucho más fresco. 22. Agrega rastro a los Bullets: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, hemos agregado un Renderizador de Trail a nuestra bala. Voy a hacerlo un poco exagerado para que veas claramente lo que está pasando cuando ejecutamos nuestro juego. Cuando disparamos a nuestra bala. Ahí lo tienes. puede ver que tiene algún tipo de remolcado detrás de él. Voy a hacerlo un poco más grande. Entonces se ve claramente lo que está pasando. Disparo una bala. Bueno, ahí tienes. Se puede ver nuestro sendero de aspecto fresco, los senderos detrás de la bala. En realidad no es perfecto. No es tan bonito. Pero te dejé la parte de la creatividad porque si bien me conozco, no soy tan creativo con eso dicho, no perdamos más tiempo. Arreglamos un pequeño problema que teníamos, pero no vimos antes tal vez lo has notado y pensado luna, Michael olvidó algo. ¿ Cuál es E tal carga te estructura. No, no, estoy bromeando. Eso no es perder más tiempo y empecemos. De acuerdo, entonces queremos agregar un pequeño rastro detrás de nuestra bala mientras vuela por el espacio. ¿ Cómo vamos a hacer esto? En realidad es muy sencillo. Simplemente vamos a entrar en la bala del jugador. Y aquí dentro podemos agregar un componente que es el Renderizador de Trail. Por lo que cuando hacemos click en él, se puede ver que podemos añadir un rastro. ¿ Cómo vamos a estar probando este rastro? Ya que vamos a hacer doble clic en el prefabricado, ábrelo aquí y ver qué podemos hacer. Entonces, antes que nada, no conozco todos los elementos aquí dentro. Se puede jugar alrededor de todo. Se puede ver que una de las cosas que tenemos como capa de clasificación. Para que podamos elegir si es una bala, si es un jugador con lo que quieras, voy a elegir ambos. Entonces, ¿cómo vemos el rastro? Simplemente tomamos nuestra bala y empezamos a moverla. Entonces ahora mismo, este es el rastro que tenemos. Sí. Sé que no es tan bueno. ¿ De qué vamos a hacer? Lo primero que quiero hacer es querer cambiar el material. Entonces cada vez que en unidad tienes esta cosa rosa detrás de ti, eso significa que hay algo mal con el material. Entonces me voy a desplazar hacia abajo, encontrar donde tenemos material si lo quito por completo, verás que ya no tenemos rastro alguno. Puedes agregar múltiples tipos de material aquí. Por cierto, hay mucho y hay cosas que pueden importar a Unity como el rock, como, no sé, relámpagos o cualquier cosa que se quiera. Entonces por ejemplo, podemos añadir a este oscuro algún tipo de material oscuro. No sé qué es eso. Es uno de los materiales por defecto que tenemos. Yo sólo voy a usar podemos usar, por ejemplo, el sistema de partículas por defecto. Por lo que parece como si hubiera un rastro de humo detrás de él, lo cual no está mal. Podría quedármelo. Y por cierto, sólo me estoy divirtiendo. No estoy seguro de qué vamos a hacer. Y veamos ¿qué podemos hacer? Y se puede ver que este rastro es un poco raro. De todos modos. Lo siguiente que quiero hacer es que quiero cambiar el ancho de este sendero para que veas que puedo aumentarlo o disminuirlo a medida que nos movemos por el espacio. Y también podemos añadir otro punto aquí mismo. Entonces, por ejemplo, puedes iniciarlo como ser grueso y después tener este pequeño rastro al final, por lo que se vuelve más pequeño a medida que avanzamos. Y veamos ¿qué más tenemos en esta partícula? Podemos agregar este tipo de partículas, este tipo de materiales en realidad. Está bien, bien, no está mal. Se puede agregar esto, un sprite normal. Y lo que esto hace es que en realidad podemos cambiar el color. Y aquí se puede hacer con incluso para tener colores de mezcla o fijos. Entonces 11, solo color o una mezcla de colores. que puedas elegir, por ejemplo, aquí, el primer color debe ser, hagámoslo alrededor de rojo casi. Y el color final debe ser tal vez blanco. De acuerdo, Entonces ahora te darás cuenta de que a medida que nos movemos, tenemos al principio leer y luego justo aquí al final tenemos un color blanco. Se puede cambiar el ancho. Entonces, por ejemplo, se puede ver aquí mismo que es un poco grande para la bala y así se estará moviendo el barco porque sólo se está moviendo en la dirección correcta. Entonces hagámoslo un poco más pequeño, más delgado. Ahí vamos. Por lo que ahora tenemos este pequeño rastro a medida que nos movemos por el espacio. Veamos cómo se verá eso. ¿De acuerdo? Y otro problema es el tiempo. Entonces si pasamos por encima de él, ¿cuánto tiempo durará la cola B? Entonces son cinco segundos. No creo que cinco como algo que queramos. Creo que uno vamos a hacer suficiente, tal vez incluso menos. Entonces ahí lo tienes. Este es el rastro. Creo que hasta 0.5 será suficiente. Entonces ahí lo tienes. Consígueme la bala. Quitar. Este será nuestro rastro detrás de la bala. En realidad blanco y no tan bueno de un color. Yo sólo voy a elegir algún tipo de naranja, amarillo, algo así. A ver. Ahí vamos. Entonces creo que se ve lo suficientemente bien. A lo mejor me gustaría hacerlo un poco más delgado. Sólo un poco más delgado. Y probemos un material diferente solo por diversión. A ver cómo se ve eso. Agradable. No está mal, creo. No, no, En realidad, no, no me gusta. A lo mejor debería hacerlo un poco más grueso. Podemos aumentar el grosor al final. Entonces es por eso que el principio, como se puede ver y luego es muy pequeño. Se puede jugar alrededor probado cuánto se quiere agregar, espesor incluso se puede cambiar justo aquí, se puede ver que se inicia bajo sube. Puedes agregar otro punto de inflexión aquí mismo. Entonces por ejemplo, así. Recuerda cuando estábamos haciendo las animaciones. Entonces ahí lo tienes. Este tipo de cola de zorro detrás. Mira lo genial que es eso. Puedes crear muchos efectos bonitos usando trail si tienes tiempo para probar todo esto, solo vas a eliminar esto. Y hagámoslo normal otra vez. Entonces ahí lo tienes. Este es nuestro rastro. En realidad, el último fue mucho mejor honestidad, pero no se preocupe por eso por ahora, Vamos a ver qué. También puedes cambiar las sombras. Se puede tener auto destruct. Hay muchas, muchas cosas con las que puedes jugar. Puedes entrar en la documentación de Unity y revisar todo, ver qué otras opciones tienes. Por ejemplo, las sondas, movimiento de la cámara, algo así. No estoy seguro. Seguro. Entonces voy a guardar esto. Voy a volver a nuestro juego y vamos a ver si tenemos un buen rastro. Entonces cuando disparo la bala, puedes ver que tengo un pequeño rastro detrás de ella. No es tan bueno. No es como me gustaría que fuera. Pero se puede ver que es sólo un pequeño rastro detrás. Entonces espere a que se destruyan las balas. Vuelve a intentarlo. Y si has notado que no hay una bala, aquí hay dos balas. ¿ Y por qué es eso? ¿ Cuál crees que el problema no está aquí? Y la razón por la que tenemos dos balas es porque si volvemos a nuestro guión aquí mismo, notarás que si presionamos el botón del ratón durante un fotograma o si seguimos presionándolo, nosotros nuestra instanciando una bala. Entonces para solucionar esto, vamos a darle la opción al jugador de elegir si esto va a ser un arma automática o no automática. Ahora, les recordaré que esto se moverá a otro guión porque no queremos manejar esto en el guión del jugador. Vamos a profundizar en el porqué. Porque déjenme decirles a partir de ahora, porque tener un arma automática no es el trabajo del controlador del jugador. Debería estar en un guión diferente. Pero por ahora, sólo arreglemos este problema. Voy a crear un campo serializado el cual será de tipo Boolean. Y voy a llamarlo es arma auto magia. Entonces si el arma es automática, vamos a cambiar las condiciones. Entonces si el arma no es automática y presionamos el botón más hacia abajo, inmediatamente vamos a instanciar. Entonces al igual que teníamos el o qué guión, no estoy seguro, ¿fue el guión? ¿ Qué guión que agregamos un o? O no lo tenemos todo, vale, así que tenemos el final. ¿ Qué significa este símbolo? Déjenme terminar. ¿ El arma es automática? Y así como hemos dicho anteriormente, cuando tenemos un signo de exclamación, esto significa que si éste, si el arma es automática, toda esta condición será falsa. Entonces si es automático es cierto, este signo de exclamación detrás de eso lo hace falso. Pero eso entendió este n significa que ambas condiciones deben ser ciertas para poder crear instancias. Entonces, ¿qué tenemos aquí? Si el arma no es automática con el signo de exclamación, si el arma no es automáticamente, toda esta condición se hace realidad. ¿Por qué es eso? Porque si el arma no es automática, esto es automático por sí mismo sin que el signo de exclamación sea falso. Con el signo de exclamación, se hace realidad. Y si estamos presionando el botón, instanciamos la bala de inmediato. Y si el que estamos manteniendo pulsado el botón y el arma es automática, entonces vamos a tener nuestro contador de disparos. Déjame hacer esto otra vez. Y en realidad déjame seguir adelante e imprimir aquí en el registro de puntos de depuración. Si el signo de exclamación es automático. Para que puedas ver por ti mismo, guarde eso. Entonces otra vez, ¿qué está pasando aquí? Podemos ir ahora mismo y elegir si un arma es automática o no. ¿ Cómo nos ayuda esto si el arma es automática? Y estos dos símbolos aquí mismo, y estamos manteniendo pulsado el botón del ratón. Tendremos el contador de disparos y tendremos rodaje constantemente dependiendo del tiempo entre los disparos. Pero si el arma o el arma no es automática, eso significa que el arma automática es falsa. Lo que significa que cuando agregamos un signo de exclamación detrás de él, lo hace cierto. Por lo que toda esta condición aquí mismo es cierta y estamos tocando el botón del ratón una vez que instanciamos inmediatamente sin demora alguna entre ellos. Y también tenemos esto para exhibir para asegurarnos de que entiendas cómo funciona el signo de exclamación. Puedes ver aquí mismo signo de exclamación automático. De vuelta en nuestro juego. Corrimos nuestro juego. Notarás consola, ahí vamos. Este es un pequeño error. No te preocupes por ello. Voy a aclarar esto y se puede ver que es falso. False, false wild es automático, es verdadero. Cuando lo apago, puedes ver que se hace realidad. Se puede ver que los mensajes que se envían aquí mismo se derrumbaron unos sobre otros. Entonces ahora, si no tengo un arma automática como falsa, si mantienes pulsado el botón del ratón, puedes ver que solo disparo una vez. Si lo tengo encendido automático, mantengo pulsado el botón del ratón. Tengo muchos tiros. Y lo grandioso de esto es sólo esperar a que se destruyan todas las balas. Ahora cuando presiono el botón, una vez, ahí tienes, sólo tenemos una bala. Por lo que arreglamos el problema de tener una bala mágica ahorrará que si quieres, podemos ajustar el rastro. Simplemente lo hice un poco rápido. Ten tu tiempo, diviértete, disfruta creando algún rastro raro con muchos colores y así sucesivamente. Y creo que este es el último video de esta sección, y el siguiente apartado, vamos a estar montando a los enemigos que queremos matar. Porque de qué sirve tener balas si no tenemos a nadie con quien matarlos. Así que asegúrate de comprometer siempre tus cambios. Y te veré en el siguiente video. 23. Sección 4: configurar los enemigos - configurar un Enemy: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a un nuevo video extremadamente largo. Sé que estás harta de eso. Pero como siempre, vale la pena extremadamente porque aprendemos tanto. En primer lugar, creamos un enemigo. Le agregamos un rango. Agregamos una forma de dibujar ese rango. Y también ejecutamos el juego. Podemos disparar al enemigo. Obviamente no muere por ahora, pero podemos meternos en el rango. Se puede ver aquí mismo el jugador está en rango Chase. Se está enviando cada vez. Si salimos de esta pequeña burbuja, ahí tienes, ya ves que el jugador está fuera de alcance. Entonces, no perdamos más tiempo. Y empecemos con este largo video. Ah, así que es hora de algunos enemigos. Empecemos. Lo primero que vamos a hacer es que vamos a hacer clic derecho para crear un objeto de juego vacío. Asegúrese de que se restablezca su posición. Y la rotación y escala y etcétera. Y lo llamaremos enemigo por ahora hasta que decidamos qué enemigo va a querer usar. Lo siguiente que tendremos que hacer es que vamos a tener que ir a los sprites. Vamos a hacer clic derecho para crear una carpeta aquí para los enemigos. Y dentro de los enemigos entrarán a los recursos y vamos a arrastrar en el monstruo y las criaturas. Y vamos a ponerlo aquí. Por lo que esperaremos a que todo importe. Abriremos esto. Y como pueden ver, tenemos cuatro tipos de enemigos que he descargado de artes de juego abierto. Por supuesto, como siempre, puedes ir a buscar a tus propios enemigos. Estos son los que he usado y estarán en el enlace, en los recursos. ¿ Y qué debo elegir? Creo que voy a elegir cuatro ahora, el, veamos cuál. Realmente no he pensado en esto. Los enemigos. Sólo elijamos el esqueleto y seamos muy genéricos. Entonces como pueden ver, tenemos ataque tres muerte ya sea etcétera, etcétera. Entonces sólo voy a entrar en el ocioso. Voy a hacer que se aplique múltiple Sprite Editor. Y vamos a seguir adelante y rebanarlo, no automáticamente, sino por un tamaño de cuadrícula. Y si estabas un poco confundido por lo que hice la última vez, solo reviso la longitud de todo el sprite. Entonces son 600 y lo divido por cuantos esqueletos tenemos. Entonces tenemos cuatro o una sola fila, tan divididos por cuatro. Eso significa que es 150 por 150, como siempre. Por alguna razón, me sorprende. Entonces entramos en el empalme, rebanamos. Empalme, piensa que eso es empalme de película, claro, rebanada. Ahí vamos. Aplicar. Ahora tenemos nuestros pequeños esqueletos aquí mismo. Voy a arrastrarlo. Y la escena, whoa, eso es un esqueleto enorme, ¿no? Eso es ironía. Si no lo has recogido. De todos modos, lo haremos 50. Ahí vamos. Todavía no lo podemos ver porque necesitamos tener y aplicar. Vamos a seguir adelante y crear una capa aquí dentro que será el enemigo o enemigos. Y voy a poner las balas para renderizar frente al enemigo y también al jugador para renderizar una trama del enemigo. Y sigamos adelante y pongamos al enemigo justo aquí. Entonces ahí lo tienes. Sigue siendo un enemigo muy pequeño. Guardemos eso. Hagámoslo un poco más grande. Entonces un inactivo 50, Hagámoslos 32. Aplica eso. A lo mejor aún más grande. Hagámoslo 16. Por lo que 16. Sí. Ahí vamos. Está bien. Eso es demasiado grande. Cuando D tal vez 20. Sí, creo que 20 es lo suficientemente bueno. Eso ha cambiado estos dos puntos. A ver si eso ayuda. Sí, ahí vamos. Se ve mucho mejor, aún un poco granulado, pero no se preocupe por eso. Lo tenemos de forma gratuita. De todos modos. A ver, este es el cuerpo. Este sería el cuerpo. Y voy a pegarla al objeto de juego enemigo. Entonces ahora tenemos al enemigo justo aquí y el cuerpo. Vamos a ponerlo a 00. El puesto es relativo, por supuesto a los objetos del juego enemigo o ahora nos movemos por ahí usando al enemigo y se puede ver que se renderiza detrás del jugador, detrás del arma y también se debe renderizar detrás de las balas. Ve a la derecha. Ahora que tenemos esto, lo siguiente que tenemos que hacer es obviamente en algún comportamiento o una forma de controlar el comportamiento de nuestro enemigo. Entonces vamos a entrar a los activos, a los guiones, vamos a hacer clic aquí dentro, crear una nueva carpeta tal vez, y llamémoslo los enemigos. Entrar. Quizás también cree uno aquí para el jugador, que será el controlador del jugador. Y veamos, también crearemos uno para las balas y el tiempo ahora. Por lo tanto, crea una nueva carpeta para las balas. Y vamos a mover estos a la bala. ¿ Por qué? Porque tenemos la bala, el controlador de bala del jugador y el efecto de impacto. Entonces y dentro de los enemigos hará clic con el botón derecho, creará un nuevo guión C Sharp, y lo llamaremos el controlador And EMI golpeó Enter. Espere a que esto se compile. Está bien, genial. Y ahora en el enemigo, podemos seguir adelante y añadir un componente que es el controlador enemigo. Y vamos a abrir el guión. ¿ De acuerdo? Entonces algo te habrías dado cuenta de que todas las pestañas se han ido. Eso no es porque los cerré, Eso es porque hemos cambiado el directorio de ellos. Entonces movimos, por ejemplo, el controlador del jugador de los scripts de carpeta a los scripts del jugador de carpetas. Por eso no lo tenemos, pero no te preocupes, sigue siendo, si hacemos doble clic, podemos abrirla fácilmente. Sigamos adelante. ¿ Qué necesitamos aquí dentro del controlador NMI? Si bien necesitamos, en primer lugar, una variable que mantenga en jaque la velocidad de los enemigos. Y necesitaremos una variable que representará a los enemigos cuerpo rígido. Entonces voy a hacer justamente eso. Estas son cosas muy sencillas. No hace falta mucha explicación. Este es un campo serializado, un flotador, y la velocidad enemiga. Y otra variable que será un cuerpo rígido privado 2D. Y acabo de recordar. Y EMI, cuerpo rígido. El cuerpo no necesita ser capital. Guarda eso. Y sólo recuerdo que nos olvidamos obviamente de agregar un par de cosas al enemigo, que está aquí. Vamos a añadir un componente el cual será un colisionador de cajas. Y sigamos adelante y hagámoslo. Entonces tal vez sin el escudo, por lo general es mejor mantener los colisionadores de caja un poco más pequeños que el cuerpo real. Esto hará que el jugador de tu juego deseara ser más preciso. Y también podemos sumar la sombra, por cierto, bajo el enemigo, lo cual es una idea bastante buena. Voy a añadir otro componente, que será el cuerpo rígido 2D. Obviamente vamos a hacer 0 la escala de gravedad. Guarde eso, y cerraremos ambos, ambos abajo. Mueve el guión debajo de los dos componentes, o simplemente podemos dejarlo ahí. ¿ Cuál es la velocidad del enemigo? Cuál es la velocidad del jugador primero, vale, Es entonces, hagamos que la velocidad enemiga 5.5 de eso. Guarda eso. Está bien, genial. Entonces ahora tenemos al enemigo. Tenemos un cuerpo rígido y un colisionador sobre él para que podamos dispararle e interactuar con él físicamente. Ahora lo que quieres hacer es empezar a mover al enemigo hacia el jugador, pero no todo el tiempo, sólo cuando el jugador se acerca lo suficiente. Por lo que necesitamos una variable para el rango al que el jugador estará en una orden para que el enemigo deje de perseguirlo. Y también necesitamos la dirección en la que se va a mover el enemigo. Entonces primero que lo primero, vamos a crear un campo serializado, que será un flotador con el jugador o el rango de persecución del jugador, llamémoslo el rango de cadenas de jugadores. Por lo que el rango que debe ser el jugador para empezar a perseguirlo. Y crearemos un factor privado tres. Y esta será la dirección para moverse en la dirección para moverse y guardar eso. Está bien, genial. Volvamos aquí. ¿ Y cuál es el rango de persecución? ¿Y sabes qué? Guardémoslo para más adelante. Y te mostraré una forma muy astuta de cómo podemos dibujar. Entonces, ¿cómo vamos a saber cuál es el rango de persecución? Entonces puedo, por ejemplo, empezar a hacer el rango de cambio cinco o diez, o 21. Pero, ¿qué significa? ¿ Qué significa el rango de persecución aquí dentro. Entonces tenemos que cada vez calcular estas casitas aquí para determinar qué tan lejos o cerca está declarar. Bueno, claro que no. Lo que vamos a hacer es dibujar aquí un círculo que sólo aparecerá en el modo de escena, pero no dentro del modo de juego. ¿ Cómo vamos a hacer esto? Si volvemos y aquí tenemos algo llamado los artilugios de sorteo. Y eso lo puedes encontrar en la documentación de Unity. Y el aquí vamos, se puede ver que tenemos algo bajo el comportamiento mono, que es onDraw gizmo select. Y se puede ver aquí mismo implementar el OnDraw se selecciona para dibujar objeto gizmo está seleccionado. Observe lo que dijimos, si el objeto está seleccionado y se puede ver aquí mismo, tenemos la prueba de artilugios y cómo podemos usarlo. Por lo que creamos un vacío onDraw gizmo. Y aquí dentro podemos crear el color del gizmo por lo que seleccionamos qué color queremos que se dibujen. Y qué queremos dibujar, que es la esfera. Entonces podemos hacer click en la troposfera y la podemos ver aquí mismo, que es que el público dibuja miedo, dibuja una esfera sólida con centro y un radio. Entonces pongamos en práctica esto. Y úsalo para dibujar nuestro propio círculo o esfera alrededor del enemigo y conocer el alcance del mismo. Y si miramos de cerca el método y aquí podemos ver que dibuja el miedo, necesitamos un centro y necesitamos un radio. Entonces, ¿cuál debería ser el radio? Piénsalo mientras creamos este método. Entonces aquí, vamos a decir en sorteo artilugio seleccionado. Y antes que nada vamos a elegir un color. Entonces va a ser el color de punto de artilugios y va a ser igual al color, digamos rojo. Guarda eso. A continuación vamos a acceder a los artilujos punto Dibujar alambre, esfera. Entonces, ¿por qué son la mirada de la esfera que dibuja una esfera de estructura alónica con un centro y el radio. Entonces es un poco diferente a la esfera, pero como estamos jugando en 2D, no necesitamos dibujar toda la esfera, solo necesitamos el cable alrededor de ella. Y veamos cuál debería ser el centro. El centro obviamente debe ser las posiciones de punto transformado o transporte es el transporte del objeto que tiene el controlador enemigo. Sé que lo he dicho un millón de veces, pero para aquellos de ustedes que aún están confundidos, sé que estaba un poco confundida cuando empecé a hacer esto hace un par de años, hace muchos años. Y recuerdo, entonces ¿de dónde viene esto? Bueno, es la transformación del objeto que tiene el controlador enemigo sobre él, lo que significa que es éste, V enemigo. Este es el transformador que habla aquí atrás. ¿ Cuál es el radio? Bueno, ¿lo has pensado? ¿ Cuál debería ser el radio? Obviamente, es el rango de persecución del jugador. Eso lo vamos a salvar. Vamos a volver a la Unidad. Y bueno, mientras que el círculo que podrías estar preguntando, bueno, si recuerdas hace un par de videos apagamos los artilugios. A lo mejor ya lo viste, no te diste cuenta, pero si hacemos clic en él, ahí vamos. ¿ Y por qué lo apagamos? Porque teníamos esta cámara e ícono molesto de la cámara. Lo que podemos hacer es abrir los artilujos. Se puede ver que aquí podemos anular la selección de muchas cosas, pero una de las más importantes es que podemos hacer que estos iconos sean un poco más pequeños. Entonces ahí lo tienes. Ya no vemos a la molesta cámara ir, ¿correcto? Así que mira ese círculo grande, enorme. Hagámoslo un poco más pequeño. Y se puede ver que cambia de inmediato. Yo lo voy a hacer sí grande. Voy a poner al jugador ahí. Y lo siguiente que tenemos que hacer es calcular la distancia entre el jugador y el enemigo y ver si es menor que el alcance. Si es menos, podemos empezar a perseguir al jugador. Si no es menor que, no perseguimos al jugador. Entonces, ¿cuál es el primer paso a hacer? Bueno, tenemos el alcance, tenemos la posición transformadora del enemigo. Lo siguiente que necesitamos es una referencia al jugador. ¿ Cómo vamos a conseguir la referencia del jugador? Bueno, antes que nada necesitamos entender un método que les voy a mostrar, que es el objeto dot find objetos de tipo. Y lo que esto hace, el objeto t significa que depende de cuál sea el objeto que estás buscando. Entonces cuando encuentras el objeto, d se convierte en ese tipo de objeto. Entonces el objeto, el primer acto de objeto cargado que coincide con el tipo específico. Por lo que devuelve el primer objeto cargado de los tipos de tipo o puedes darle tu tipo. Y si miramos aquí, podemos ver un par de ejemplos. Entonces digamos que queremos encontrar el renderizador de Canvas. Si no sabes cuál es el renderizador de Canvas , no te preocupes, lo revisaremos más adelante. Pero por ahora, mira el renderizador de Canvas. Creamos una variable de tubería de renderizador de lienzo con el nombre Canvas, y usamos objeto finito de tipo y obtenemos el render de lienzo. Por lo que ahora obtenemos una referencia al mismo. Y como sólo tenemos un jugador, podemos usar esto. Si tuviéramos múltiples jugadores, no podíamos tener porque, bueno, obviamente encontramos sólo el primer acto de uno. Entonces busca este método, encuéntralo , estudialo, entenderlo. Y entonces tendrás que hacer este reto. Tendrás que encontrar el objeto jugador. Entonces crea una variable de tipo transformada para representar al jugador que queremos perseguir y empezar a usar encontrar objetos del tipo 2, encontrar al jugador. El tipo debe ser el controlador del jugador. ¿ Por qué? Porque necesitamos encontrar algún tipo específico del jugador. Entonces, ¿cómo identificamos al jugador? Es igual que todos los demás objetos. ¿ Qué lo hace único? No es solo el nombre que puedes encontrar a través del nombre o el cuerpo o el on. Tenemos que usar algo específico. Y eso es algo específico es el guión del controlador del jugador. Por eso el tipo de objeto que quieres encontrar es el controlador del jugador. Y finalmente usa la transformación de puntos en el objeto que encuentres y asígnalo a la variable que hemos creado, y dot transform. Deberías saber esto porque el tipo que vamos a crear es la transformación. ¿ Por qué se transforma? Bueno, porque queremos conseguir la distancia. ¿ Cómo obtenemos la distancia? Bueno, obviamente porque es una transformación. Así que pausa el video ahora mismo. Ve a hacer el reto. De acuerdo, entonces lo primero, primero, vamos a crear una transformación privada y el jugador a perseguir. Ahora dentro de inicio, vamos a decir que el jugador a perseguir es igual para encontrar objetos de tipo. Y el tipo que buscamos es el controlador del jugador. Y cuando sí lo encontramos porque declaró de dos Chase como una transformación, sólo vamos a acceder a la transformada inmediatamente de mí. Entonces espero que hayas hecho el reto. Espero que no fuera demasiado duro. Sé que aquí hubo un poco de trucos, pesar de que es la primera vez que usas encontrar objeto de tipo, estoy seguro de que al menos fuiste capaz de hacer esta parte si no te hubieras dado cuenta de esto, no te preocupes sobre que era su debido tiempo, lo entenderá todo. Pero ahora, el siguiente paso es seguir adelante y calcular la distancia. Entonces voy a crear en primer lugar, una declaración if. Y luego voy a escribir vector 3 punto. Y se puede ver que aquí tenemos un método que es la distancia y devuelve la distancia entre a y B. Así que vamos a abrir esto. ¿ Cuál es la a? Va a ser la posición de punto transformado. ¿Y cuál es la B? Va a ser el jugador para perseguir posición de punto. Ahí vas. Y cuál es la condición si la distancia entre la posición transformada, que es el enemigo y el jugador a perseguir, que es el jugador y es menor que el rango de persecución del jugador V. Entonces vamos a estar moviendo a nuestro enemigo. Pero eso es por otro video. Por ahora, solo voy a usar el registro de puntos de depuración. Y voy a decir que el jugador está en el rango Chase. Y una declaración else que diremos que duplican esta línea, muévala hacia abajo. Y va a decir, jugador fuera de Chase está fuera de alcance de persecución. Guarda eso de nuevo en nuestro juego. Vamos a saber lo que sólo quiero hacer algo. Haré público esto solo por ahora, sólo para que veamos qué pasa. Por lo que notarás que en el enemigo ahora mismo tenemos un jugador que perseguir, pero no hay nada. No vamos a añadir nada. Nosotros sólo vamos a ejecutar el juego. Ahí vas. Se puede ver que ahora el jugador de la perdición, si hago clic en él, ahí está la referencia y ahora el esqueleto, nuestro enemigo tiene una referencia al jugador. Hasta puedo dispararle. Entonces voy a entrar a la consola. ¿ Qué es esto falso? Hagamos doble clic. De acuerdo, Entonces este y jugador está fuera de alcance de persecución. Déjame poner la ventana de juego al lado la escena cuando esos para que podamos ver claramente el círculo aquí dentro. Entonces si me acerco lo suficiente, Ahí vamos, se puede ver que ahora jugador está en rango Chase. Si salgo, jugador está fuera de alcance. Si voy y juego como NJ extraño, ahí tienes, todo está funcionando perfectamente bien. Por lo que espero que lo disfruten. Y el siguiente video en realidad estará moviendo a nuestro enemigo, no solo imprimiendo algo a la depuración, al registro. Permítanme eliminar este registro de puntos de depuración. Guarda eso. Déjame volver a hacer esto privado porque no necesitamos verlo. Yo sólo quería demostrarme. No olvides escenificar todos tus archivos. Y antes de irme, ¿Qué quería también contarles a todos. Espero que lo disfruten. Nos vemos la próxima vez. 24. Pasar a la persona del jugador: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y como pueden ver, ahora tenemos un círculo amarillo. ¿ Qué hace este círculo amarillo cuando ejecutamos nuestro juego? Se puede ver que si entro al círculo amarillo, no pasa nada y simplemente hacer que el enemigo se acelere un poco menos. Si entro en el círculo rojo como normal, empieza a perseguirnos. Traté de escapar. Yo estoy dentro del círculo amarillo, pero él todavía nos persigue. ¿ Qué está pasando? El único modo de ganar es salir del círculo amarillo. Además, así es como te alejas del enemigo porque él empezó ahora ya no te quiere perseguir. Entonces, no perdamos más tiempo. Empecemos. Y me olvidé de decirte que necesitas comprometer tus cambios al final. No olvides hacer eso. Entonces empecemos k Así que ahora tenemos al enemigo sabiendo dónde está el jugador en base a cierta distancia que está de él. Cuando el jugador llegue a cierta distancia, un cierto rango de persecución, el enemigo lo sabrá y comenzará a perseguir al jugador. Bueno, él no hace eso físicamente, pero podemos ver por la lógica y el código que conoce, ¿cómo vamos a hacer esto? En primer lugar, vamos a determinar la dirección en la que se estará moviendo este enemigo. Entonces si la distancia es menor que el rango de persecución del jugador, voy a detener la depuración y voy a guardar que la dirección para entrar, va a ser igual al rango de persecución del jugador o no alineación Eclair para perseguir capa para perseguir posición de punto menos la posición de transformación. Entonces esto es igual a la fórmula que usamos. El 2 el arma y la dirección correcta, elegimos la posición, quitamos la posición del jugador a perseguir. Le restamos la posición del enemigo al jugador para perseguir posición y de esa manera obtenemos la dirección. Entonces es similar a la forma en que estamos señalando nuestro ido, puedes volver atrás y ver cómo funciona eso. Ahora lo que vamos a hacer después de conocer la dirección en la que nos estamos moviendo, vamos a normalizar esa dirección. Porque no queremos que el enemigo sea más rápido cuando se mueve diagonalmente. Entonces normalizamos. Y luego vamos a acceder al cuerpo rígido. Por lo que el cuerpo rígido enemigo consigue la velocidad y va a ser igual a la dirección para mover n veces el enemigo. Habla. Guarda eso. Y ahora volvamos a nuestro juego. Veamos cómo funciona eso. Voy a establecer la vista de juego junto a la vista de escena para que podamos ver cómo funciona el rango. Cuando lleguemos a rango, voy a correr el juego. Entonces ahora mientras me acerco al enemigo, sí, allá vamos, no pasa nada. ¿ Por qué es eso? Bueno, porque aquí tenemos el pequeño error y que el objeto, no tenemos referencia al ancho. ¿ Por qué es eso? Porque estamos tratando de acceder al cuerpo rígido enemigo, pero no lo hemos puesto. Por lo que el cuerpo rígido NMI, el punto es igual al componente de deuda, cuerpo rígido 2D. Ahí vamos. De acuerdo, ahora todo debería estar funcionando bien. Detengamos el juego, corremos de nuevo. Y ahora nos estamos acercando. Y ahí tienes. Se puede ver que el enemigo en realidad nos persigue. Y obviamente necesitamos arreglar un par de cosas, pero está funcionando. ¿ Qué pasa si estamos fuera de alcance? Estoy tratando de salir de rango. Está bien. Entonces no funciona. Déjame solo en primer lugar, bueno al menos está funcionando. No es perfecto, pero está funcionando. Entonces déjenme fijar éste. Déjame hacer el rango un poco más pequeño porque quiero demostrar algo. Y hagamos la velocidad también para que podamos escapar. Yo voy a correr el juego. Voy a acercarme al enemigo y luego me voy a parar, soy pasarela. Entonces como puedes ver, el enemigo sigue caminando y finalmente golpea una pared. Entonces, ¿cuál es el problema aquí? El problema es que el enemigo seguirá teniendo el impulso con ellos. Entonces me acerco, me alejo. Y aunque no lo esté y el campo de tiro sigue caminando sin pensar, ahora, esto no estaría muy mal si fuera un zombie, pero al parecer es un esqueleto, por lo que debería parar. De acuerdo, debería parar aunque bromas. Y veamos qué podemos hacer. Entonces aquí dentro, lo que debemos hacer es cuando estamos a alcance, estamos persiguiendo al enemigo. Si estamos fuera de rango, la dirección para movernos será igual al vector 3, 0. Ahí vamos. Esa fue la dirección para entrar y el vector tres, vale, Sí, lo fue. Entonces guarde eso. Entonces ahora cuando salgamos del alcance, debemos dejar de perseguir al jugador. Entonces házmelo saber qué. Usemos una vista diferente, un diseño diferente. Podemos usar el dos por tres. Ahí vas. Esta es una buena manera también de ver el motor Unity. Por lo que puedes ver ahora mismo cambiar esto de tres aspectos a 19 para 1920 para 1080. Ahora podemos verla vista de escena con claridad y la vista del juego con claridad. Corremos el juego y nos acercamos y al rango de persecución. Ahí vamos. puede ver que nos sigue persiguiendo cuando estoy fuera de ese rango. Se puede ver que se detiene de inmediato. Ahí vas. Se puede ver en cuanto entre yo, se detiene. Cuando estoy fuera, deja de perseguir. Está bien, genial. Entonces, ¿qué hizo eso? Espero que lo disfruten. Ahora podemos hacer que la persecución alcance un poco más grande porque sabemos si nos alejamos lo suficiente del enemigo. Ahí vas. Se puede ver que deja de perseguir a las chicas. Ahora, puedes agregar una capa extra de inteligencia al enemigo si quieres, puedes crear un rango de parada. Por ejemplo, digamos que tenemos este rango, tenemos otro rango. Y si el jugador, si podemos salir de ese rango, el segundo, entonces el enemigo dejará de perseguirnos. Y eso va a ser en realidad un reto para ti. Entonces, ¿cómo te gustan las transiciones al reto ahora, hay mejores, ¿verdad? Te tengo desprevenido ahí, ¿no? Por lo que espero crear una variable de rango de seguir persiguiendo. Tendrás que dibujar ese rango usando los artilujos. Necesitas crear un booleano está persiguiendo. Eso es cierto al perseguir y falso cuando estamos fuera del cierto rango. Y por último, necesitarás crear una declaración else if que verifique si estamos persiguiendo y estamos dentro del rango de seguir persiguiendo. Por lo que espero que hayas entendido el reto. Es un poco duro. Necesitará un poco de configuración, pero estoy seguro de que estás a la altura del reto. Así que pausa el video ahora mismo y ve al caso Shalon. Entonces lo primero que vamos a hacer es que vamos a crear una nueva variable aquí dentro, que va a ser el seguir persiguiendo. Y lo llamaremos el jugador mantenga a alcance Chase. Y entonces estamos creando un booleano. Y aquí que vamos a llamar, lo haré privado o saber qué, hagámoslo público para que lo veamos y luego lo haremos privado. Y booleano público está persiguiendo. Entonces el siguiente paso, cuál fue el siguiente paso y el reto que vemos, dibujar, vale, entonces vamos a dibujar el círculo aquí mismo. Yo sólo voy a tomar esto y duplicado. Entonces Control D como siempre, hagámoslo amarillo. Y este será el rango de las persecuciones de mantener. Guarda eso. Y ahora qué tenemos que hacer a continuación? Tenemos que crear un booleano como rastreo con eso. Y bien, entonces, ¿cuándo es verdad? Es cierto aquí cuando estamos dentro del rango y empezamos a ir tras el jugador. Así es perseguir es igual a verdad. Entonces, ¿qué pasa si salimos de este rango? El está persiguiendo se vuelve falso. Pero en el medio, queremos crear un if else o else, if. De lo contrario, si el vector o la distancia del jugador y el enemigo sigue siendo menor que v0, mantén el alcance de Chase. Y así esto es para, es perseguir. Lo que vamos a hacer es que vamos a mantener la dirección tal como está. Ahí vas. Guardemos eso. Veamos una vez más y este código y a ver si todo funciona. Por lo que hemos creado el rango, lo hemos hecho amarillo. Lo que pasa aquí es cuando el jugador entra al rango de perseguir, la dirección se convertirá en el jugador a perseguir. Y entonces vamos a poner el está persiguiendo a la verdad. Entonces vamos a comprobar si el jugador puede salir o si el jugador sigue dentro del rango de Keep Chase. Y estamos persiguiendo, entonces tendremos la dirección para movernos y aún en el jugador. De lo contrario. Si estamos afuera, tanto los jugadores persiguen rango y ellos mantienen alcance Chase, entonces es perseguir es falso. Y lo que es genial de esto es que si vamos dentro del jugador mantener a alcance Chase, el enemigo no nos seguirá porque está persiguiendo tan falso. Entonces, veamos si eso realmente funciona. Y voy a aumentar el alcance de Keep Chase. Hagámoslo. Sí, ahí vamos. Creo que ya es suficiente. Yo voy a correr el juego. Y ahora veamos si camino dentro del rango de Keep Chase. No pasa nada. Si entro dentro del rango de persecución, el enemigo empieza a perseguir. Si lo soy, en realidad puedo empujarlo. Si estoy fuera del rango de persecución, todavía me sigue. ¿ Y si salgo fuera de ambos rangos? Deja de seguir. Y se puede ver aquí mismo que está persiguiendo es falso. Para que no me persiga. ¿ Cuándo es la persecución es verdad? Sigue persiguiendo hasta que salgo del círculo amarillo. Por lo que espero que hagan el reto. Espero que no fuera demasiado duro. Sé que cuando hice este reto, sentí que podría ser un poco demasiado duro, un poco demasiado confuso. Pero espero que hayas entendido cuál era el punto del booleano. Espero que hayas entendido cómo funcionaban las demás si las declaraciones aquí. Si no volviste a ver el video, creo que lo expliqué bastante bien, así que espero que lo disfrutes y te veré en el siguiente video donde realmente estaremos animando a nuestro enemigo. Porque como puedes ver, actualmente es muy aburrido. Hasta entonces, que tengas un buen día y te veré entonces. 25. Animación Enemy: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video completamente nuevo donde estaremos agregando animaciones a nuestro enemigo. Mira, está ralentí. Yo estoy ralentí. Si me acerco lo suficiente y noto que me está mirando. Si me acerco lo suficiente, Ahí tienes. Se ve que empieza a caminar, empieza a tratar de matarme. Todavía puedo empujarlo hacia atrás. Yo huyo. Ahí está parado. Yo huyo. Se detiene. Empieza a abrir los ojos. Yo me acerco. Empezó a enseñar. Puedo dispararle. No siente nada. De acuerdo, así que dejemos de perder el tiempo y empecemos a animar a nuestros enemigos. 0 caso. Entonces vamos a animar a nuestro enemigo. Entonces si entramos en los sprites y a los enemigos, el monstruo, Monstruos, y tú tienes el esqueleto y tienes todos estos sprites diferentes. Entonces lo que voy a hacer es que voy a seguir adelante y diseccionar todos estos. Y sólo voy a mostrarles cómo voy a hacer esta animación de manera diferente. Y luego vas a hacer todo el resto porque ya sabes crear animaciones. Ahora, la única diferencia esta vez, Como voy a seguir adelante y hacer las animaciones de inmediato en el cuerpo. Y luego voy a acceder al animador desde la escritura de guiones enemiga. Vamos a acceder al animador en el cuerpo. ¿ Por qué? Bueno, honestamente, siempre es mejor usar las animaciones y crearlas como lo hicimos con el jugador del doom. Pero por una parte, creo que un cambio en la forma en que creamos las cosas te dará una mejor perspectiva y una comprensión más amplia de cómo funcionan las cosas. Además, tenemos la oportunidad de utilizar un nuevo método, que es conseguir el componente y el niño, que me gustaría mostrarles todos los métodos que son posibles y así. Entonces sigamos adelante y agregamos un componente y luego podrás elegir cuál es la mejor manera para ti. En tanto que la ventana de animación, vale, vamos a Windows. Entonces tal vez cuando cambiamos el diseño, la animación desapareció. Voy a poner la animación aquí mismo. Voy a seguir adelante y crear una animación sobre el cuerpo del enemigo. Entonces crea y los enemigos activos animaciones, haz clic derecho, crea el esqueleto y las animaciones. Este será el esqueleto. Esqueleto ralentí. Guarda eso. Voy a elegir el ralentí. ¿ Dónde está? Escogeré todos esos, los arrastraré aquí. Entonces ahora cuando corremos, se puede ver que está ralentí muy rápido. Está sumamente emocionado de estar ralentí. Voy a mover esos. A ver cómo se ve eso. Y por alguna razón. Entonces creo que el primero, segundo 1 son lo mismo. ¿ Y por qué es eso? Es eso. Entonces vamos a correr. No, espera. Ah, bien, entonces el primero, segundo 1 por alguna razón que no elijo el Cisne. No se preocupe. Adelante y hagamos esto. Está bien, genial. Por lo que se puede ver la última ya es similar a la primera. O no. Copiemos esto. Ponlo como el último. A ver cómo se ve eso. Sí, ahí vamos. Esto se ve mucho mejor. ¿ Deberíamos hacerlo más rápido? No lo sé. Pero vamos a salvar esto. Y ésta es la entrada. Entonces solo quería mostrarles cómo estamos haciendo esto. Vamos a continuar y he escrito esqueleto mal, no se preocupe por eso. Y vamos a seguir así en el cuerpo. Y luego voy a usar la magia de la edición para hacer todo esto en un par de segundos. Pero te tomas tu tiempo, crea la rebanada de animación de los sprites. Y te iba a mostrar un reto que es elegir a uno de los enemigos. No tiene que ser el esqueleto. Por lo tanto, crea el ataque a pie del CIE-10. Tienes el ataque de lanzar un alma y tienes la animación lanzando espada. Entonces creo que hay una animación lanzando espada. Así que pausa el video ahora mismo. Abaladiza los sprites, crea las animaciones. Te veré en sólo un rato. Oye, ¿cómo te llevaste con eso? Entonces he estado rebanando sprites. He estado creando animaciones. Déjame mostrarte lo que hice. Si hago clic en el enemigo, en el cuerpo, tú, puedes ver que tengo ralentí, atacando , caminando y lanzando el tipo. Entonces tiro la espada, así como así. Ataco a este tipo. Correr y caminar bastante fácil. Así lo hice todo. Espero que no fuera demasiado difícil para ti. Espero que se haya asegurado de que todos fueran 150 por 150. Para que veas que todas las rebanadas necesitan ser exactamente iguales igual como te dije cuando estábamos rebanando al juego de la perdición. De acuerdo, y déjame mostrarte el animador para que veas que tengo todos esos cuatro ahora no vamos a estar haciendo nada. No nos van a tirar la sal o el esqueleto atacante lo mantendrá para. Más tarde, estaremos caminando. Entonces voy a crear una transición del esqueleto caminando al esqueleto ralentí. Voy a elegir ambos al sostener Control, eligiendo ambos. Eliminar en el tiempo de salida en ambos, eliminar la duración de transición en ambos. Voy a crear un parámetro aquí dentro que se va a llamar como caminar. Entonces es lo mismo. Oh, no, espera, creé el parámetro equivocado. Creé una capa. Voy a crear un parámetro booleano aquí es caminar. Ahí tienes, y yo me voy a quedar. De acuerdo, entonces estoy en esta transición, voy a sumar los parámetros aquí. Entonces si estoy caminando es verdad, empezamos a caminar y caminar, falso, dejo de caminar. Di todo eso. Ahora, volvamos a nuestra escena y abramos nuestros guiones aquí. Entonces, ¿qué deberíamos estar haciendo? El primero que necesitamos es una referencia al animador. Entonces en el controlador enemigo aquí mismo, voy a crear un privado y va a ser el enemigo. Y lo hizo hacia eso, oops, es de tipo animador. Y puede, hacia salvar eso. Voy a conseguir el componente. Pero como viste, el animador no está en realidad sobre el enemigo, así que no puedo acceder a él. Cuando yo, como hemos dicho, Get component, los componentes deben estar en el mismo objeto que el script. Entonces para arreglar esto, voy a tener que acceder al animador en el cuerpo. Para hacer eso. Simplemente voy a decir que el animador, me refiero al animador enemigo, es igual para conseguir componente en los niños. Y ya puedes ver ahora mismo, déjame solo terminar esto. Vamos a rondar sobre él. De acuerdo, entonces no hay explicación, pero creo que es bastante autoexplicativo get componente igual que éste, pero en niños, así que encontramos al animador en los niños, y como sólo tenemos un animador, eso no es problema. Pero lo usamos con cuidado. Entonces lo siguiente que vamos a hacer, vamos a comprobar cuando sumemos una velocidad. Entonces aquí, vamos a comprobar si la dirección a movernos y es diferente a vector al 0 o vector 3, discúlpame, porque éste, recuerdo que fue un factor tres. Ah, ahí tienes. ¿ Cómo se autocompletó eso? Ni siquiera lo sé. Voy a acceder al set de puntos del animador enemigo Bool. Por lo que esto es extremadamente fácil. Creo que todos lo hemos hecho. Por lo que solo consigues un pequeño pico en el detrás de las escenas. Copie esto, péguelo aquí, y vamos a ponerlo en verdad. Entonces otra declaración. Vamos a duplicar esta línea para ella aquí y ponerla en falso y eliminar el espacio en blanco extra. Entonces, ¿qué pasa aquí dentro? En cuanto tengamos dirección para avanzar, es diferente al vector 3 0. La animación está caminando se establece en verdad y pasamos a la animación. Si no estamos caminando, es falso. Está bien, genial. Vamos a probar esto de nuevo en nuestro juego. Pongamos al animador. ¿ Dónde debemos ponerlos todos? Vamos a mantenerlo aquí. Juego, ejecuta el juego. A ver. De acuerdo, entonces el enemigo está ralentí. Si me acerco a él, empezará a caminar. Y ahí tienes. Se puede ver que está caminando, pero hay un ligero problema. Siento como si hubiera algo. Está bien. Por lo que está rondando un poco. ¿ Por qué sigue flotando, no nos pareció bien. Por lo que obviamente no quitamos el tiempo de transición de este. Vuelve a ejecutar el juego, debe empezar a caminar inmediatamente en cuanto empiece a moverse. Ahí vas. Él está caminando hacia nosotros. Excelente. Ahora, una cosa más que necesitamos tomar flecha y esa es la dirección que está mirando el enemigo. Entonces voy a hacer algo similar, igual que aquí. Si la posición del ratón no actúa igual que volteamos a nuestro jugador, vamos a voltear a nuestro enemigo. Pero en lugar de mirar el punto de pantalla, vamos a comparar la dirección o la x del jugador con los actos del enemigo. Entonces si la capa para perseguir punto, el jugador para perseguir posición de punto, punto x es menor que la posición transform.py x Lo que vamos a hacer es acceder a la escala local de transformación. Y va a ser igual a un nuevo vector 3 y minús1 f ¿Qué es eso? Minus1 f. Y vamos a mantener la y igual. Y la z, Z, Z, Z, como quieras llamarla, igual. Y de lo contrario, si el jugador está del otro lado, la escala local de transformación es igual a un nuevo vector, tres puntos uno. Si no me equivoco, No.1, uno, ¿cuál es el problema? Vector 3. Está bien. Entonces no debería poner, déjame ver. De acuerdo, entonces nada nuevo, discúlpame. Entonces siempre que no estamos creando un nuevo vector 1, solo tenemos un vector uno que estamos estableciendo la escala local para guardarlo de nuevo en nuestro juego. Veamos esto en acción. Ejecuta el juego. Y ahí tienes. Se puede ver que está mirando en la dirección correcta. En cuanto nos acercamos, empieza a caminar hacia nosotros. Está bien, genial. Traté de huir. Nos mira y sigue persiguiendo. Ahora el único problema que noté es que el enemigo está golpeando las paredes o justo como ya tenemos el problema con anterioridad. Recuerda cuando queríamos tener a los enemigos. Por lo que se puede ver por el colisionador sobre el enemigo, no puede moverse más allá de este muro aquí mismo se puede ver que estas son sus limitaciones. Si quieres que tu juego sea más detallado, sí te recomiendo que agregues dos colisionadores, igual que hicimos en el Doom Player. Uno de ellos será sólo para que se escuchen. El segundo solo será donde caminemos. ¿ Dónde está nuestra limitación? Siéntase libre de hacer eso. Yo los animo a que hagan eso. Este es tu juego. Puedes hacerlo lo más perfecto que quieras. Con eso hecho, obviamente vamos a poner todo aquí dentro. Se puede ver cuántas animaciones he creado. Espero que lo disfruten. Voy a escenificar todo eso y nos vemos en el próximo video donde estaremos realmente dañando a nuestro enemigo. Actualmente podemos dispararle, pero no siente nada. Eso es lo que vamos a arreglar en el futuro. Y sí te recomiendo que también crees la animación para el boleto y la animación para Sordos, que será muy divertido hacer el siguiente video. Entonces te veré entonces. 26. Enemy Damaging (métodos): Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en este video, cuando ejecutemos nuestro juego, cuando hacemos clic en el enemigo, notarás que aquí tiene una variable extra, que es la salud enemiga y phi dispararle con un par de balas. Observe cómo su salud se deteriora de 100 a 40. Y si le sigo disparando de 40 a 0 y desaparece porque está muerto. Entonces vamos a aprender muchas cosas en este video. Ponte tus gorras de pensamiento y empecemos. Ah, está bien, Así que ahora es hora de empezar a dañar a nuestros enemigos usando el método. Entonces lo primero que vamos a hacer es que vamos a crear una forma agregar salud o de quitarle salud a nuestro enemigo. Entonces voy a entrar al controlador enemigo. Y aquí, Abramos Visual Studio. Y voy a crear una variable entera que representará la salud del enemigo. ¿ Por qué es un entero? Bueno, porque queremos mantener las cosas simples. No queremos que sea una carroza. Entonces lo voy a agregar justo aquí bajo la velocidad. Entonces vamos a crear un campo serializado el cual será de tipo entero. Y se va a llamar la Salud. Y voy a fijarlo para que sea 100 al principio, para que nunca tengamos la Salud a 0. Voy a volver a mirar al inspector y ver cómo se ve eso. Y ahora ellos, bien, genial. Por lo que ahora puedes ver que tengo la opción aquí dentro de cambiar la salud de nuestro enemigo. Ahora, ¿cómo vamos a asegurarnos de que cada vez que el enemigo sea golpeado, eliminemos una factura de salud. Vamos a crear un método para hacerlo. ¿Cuáles son los métodos? Bueno, ya me has visto crear métodos. El actualización es un método. Empezamos como método y también el gizmo seleccionar como método. Pero profundizemos un poco más en la estructura real de un método y veamos cómo lo usamos. Entonces déjame ponerme mi láser, y esta es la estructura del método. Por lo que es similar a la forma en que creamos variables en que tiene una accesibilidad. Entonces un tipo de acceso, ¿qué es? ¿ Es un privado, un público? No podemos convertirlo en un campo serializado, pero podemos crear ya sea un público, lo que significa que podemos acceder a este método desde cualquier parte de nuestros scripts, en cualquier otro guion. Si es privado, sólo podemos acceder a él dentro de la clase donde estamos usando. Entonces tenemos el tipo de devolución. Por ejemplo, devoluciones nulas, nada. ¿ Qué es un tipo de devolución? medida que avanzamos por el curso, entenderás todos los diferentes tipos de retornos. Pero lo que esto significa es que en realidad podemos devolver un valor de este método. Si no devuelve nada, eso significa que está vacío. Entonces, por ejemplo, déjame mostrarte aquí. Esto es un vacío porque no devolvemos ningún valor. No esperamos que se devuelva ningún valor de este método más adelante cuando sí tengamos un método que devuelve algo, may, me aseguraré de señalarlo por ti. A continuación, tenemos el nombre del método. Por lo general, siempre que quieras nombrar un método, tienes que nombrarlo por lo que realmente hace este método. Y puedes notar cómo creamos el nombre de un método. Es, a diferencia de las variables fueron la primera palabra tiene que estar siempre en la clase inferior, o la primera letra de la primera palabra tiene que ser de clase inferior. En un nombre de método, todas las palabras dentro del nombre del método tienen que ser mayúsculas. Por lo que se puede ver que agregando velocidad, por lo que este método es un privado, por lo que sólo lo usamos en un vacío de clase. No devuelve nada y su nombre está agregando velocidad. Eso significa que agrega velocidad a algunos tipos de objetos. ¿ Y cuáles son los paréntesis al final? Si bien estos se llaman el parámetro, parámetro significa que podemos enviar un cierto valor a ese método. Y puede usarlo con el fin de hacer cálculos o cualquier cosa que quiera. Demostraremos cómo funciona todo esto en el método que dañará a nuestros enemigos. Ya basta de hablar, empecemos. Voy a abrir Visual Studio y aquí, y voy a crear un método dentro del controlador enemigo. Desplazaré hacia abajo en la Tierra, la actualización. Y aquí voy a crear un método para dañar al enemigo. Primero, ¿qué necesito que sea? ¿ Tiene que ser un privado? Entonces sólo puedo usarlo dentro de aquí y el controlador enemigo, ¿ o tiene que ser público? Eso significa que puedo acceder desde cualquier lugar. Bueno, lo más probable es que necesite que sea público porque quiero que las balas dañen al enemigo cada vez que golpeen al enemigo. De lo que va a ser un vacío público, y voy a llamarlo el enemigo del daño. Y es un vacío porque no necesitamos devolver nada del enemigo daño. Todo lo que necesitamos hacer es quitar un poco de salud que ya tenemos. Y aquí, por lo que la salud enemiga. Y cambiemos esto o no, te voy a mostrar un truco muy cool y solo quedate mordido. De todos modos, sigamos con nuestro enfoque principal. También quiero enviarles un parámetro de tipo entero, que va a ser el daño. Ellos pueden. Entonces ahora lo que puedo hacer es poder acceder a la salud y puedo quitar de ella. Perdón, los daños tomados. Entonces, ¿ahora qué pasa? Ya sabes lo que significa el signo menos. Eso significa que quitamos de la salud los daños tomados. Y por último, tenemos que asegurarnos de que si la salud es menor o igual a 0. Eso significa que solo agregas un poco de espacios aquí. Eso significa que nuestro enemigo ha muerto y quiero destruir el objeto del juego. De acuerdo, Así que veamos en otro momento a esto. Y antes de hacer eso, creo que el nombre salud de una variable no es tan específico. Creo que necesitamos cambiarlo a la salud de los enemigos. Entonces, ¿qué puedo hacer aquí? Puedo cambiar el nombre aquí por salud enemiga. De acuerdo, y luego desplácese por aquí y cambie estos dos justo aquí. Pero esto es un poco engorroso, sobre todo si hemos usado la salud tal vez 10 veces en nuestro código. Entonces, ¿cómo podemos evitar esto? Simplemente haz doble clic en salud, haz clic en Control R, R. Y ahora verás que puedes agregar esto. Entonces voy a llamar a esto la salud enemiga. Voy a pegarle a Enter. Y si me desplazo hacia abajo, verás que la salud enemiga ha cambiado. Entonces como recordatorio, controla o nuestro click en él dos veces, mantén pulsado Control R. Y podrás cambiar el nombre de la variable y cambiarlo en todas partes y el juego. Ahora, lo siguiente que vamos a hacer es que realmente vamos a llamar a este método. ¿ Y de dónde lo llamamos? Tenemos que ir al controlador de balas. Y déjame encontrar el controlador de bala por aquí en alguna parte. ¿ Dónde está en los guiones? En las balas, en la ley terrible a controlador. Y aquí dentro cuando activemos algo así que golpeamos a un objeto, lo que vamos a hacer, vamos a dejarme sólo quitar esta línea de aquí. Por lo que instanciamos el impacto y vamos a seguir adelante y acceder a la colisión. Entonces, ¿cuál es la colisión aquí mismo? Como puede ver, este es un parámetro que se está enviando al método en Trigger Enter. ¿ Cuál es la colisión? Es el objeto con el que acabamos de chocar. Entonces, por ejemplo, si golpeamos un muro, la colisión sería la pared que hemos golpeado. Y en nuestro caso, la colisión será el enemigo al que hayamos golpeado. Y voy a conseguir el componente, discúlpame. Entonces voy a conseguir el componente que está en esta colisión y va a ser el controlador enemigo. Y en el controlador enemigo, porque he hecho público este método aquí dentro, puedo acceder aquí mismo, que es el daño y la amina. ¿ Y qué debo enviar a este enemigo daño? Se puede ver ahora mismo, aquí, no hay argumentos, por lo que necesitamos dar el daño tomado. Te darás cuenta de todo esto aquí mismo. Entonces le voy a mandar la cantidad de daños. Pero no hemos creado una cantidad de daño. Entonces vamos a seguir adelante y crearlo aquí. Por lo que la bala también tendrá una variable que será un entero. Y eso sólo va a copiar esto, que va a ser la cantidad de daños y voy a ponerlo en torno a 10. Entonces, ¿qué está pasando aquí? Cada vez que la bala choca con algo, obtenemos la información de esa colisión. Obtenemos la colisión, obtenemos el componente del controlador enemigo, y accedemos al método enemigo de daño ahí. Le enviamos la cantidad de daños. Vamos al controlador enemigo. Es público, todo lo que obtenemos la salud enemiga, quitamos los dañados tomados. El daño tomado como obviamente el monto del daño justo aquí. Y luego comprobamos si la salud es menor o igual a 0. Si lo es, destruimos el objeto del juego porque el enemigo lo ha hecho. Entonces. Guardemos todo eso. Y vamos a seguir adelante y probarlo en Unidad. Entonces voy a hacer clic en el enemigo, asegurarme de que veamos la salud enemiga. Voy a ejecutar el código. Voy a tratar de disparar a nuestro enemigo. Por lo que lo mostré hasta que las balas se ponen tercero. Veamos la salud enemiga. Se hizo. Ahí lo tienes. Se convirtió en 90. Déjame tratar de dispararle dos veces ahora su salud debería llegar a ser 70 aquí mismo. Guárdate ese 80, 70, ahí tienes. El enemigo está siendo dañado. Y si sigo disparándole con todas mis balas, notarás que 70 se convierte en 0 y el enemigo desaparece. Pero ten en cuenta lo que pasa ahora mismo. En primer lugar, nuestras balas seguían volando por todas partes. ¿ Por qué sucedió eso? Déjenme alejar. Se puede ver que las balas no interactuaron con el muro. No fueron destruidos. Y tenemos un error aquí mismo. Y déjame abrir la ventana de la consola para que podamos ver cuál es el problema. Ahí lo tienes. Se puede ver que tenemos por errores para las cuatro balas de aquí que interactuaron con el muro. Y hagamos doble clic en esta flecha y veamos qué pasó. Ah, para que veas que nos lleva a la línea que tenemos un error y déjame mostrarte esto una vez más. Haga doble clic. Estamos en esta línea. Se puede ver aquí mismo. Y debido a que esta línea no se ejecutó correctamente, la destrucción no se ejecutó adecuadamente solucionable, Se mantiene volando. Esto es sólo una nota al margen. De todos modos, ¿cuál es el problema? El problema es que estamos accediendo a la colisión, ¿verdad? El choque debe ser el enemigo porque estamos tratando de acceder al controlador del NMI. Pero el problema es que en este momento acabamos de golpear un muro, y este muro no tiene el guión enemigo en él. Interesante. Entonces, ¿cómo vamos a salvar esto? Bueno, por suerte tenemos una herramienta muy, muy poderosa. Déjame hablar de esto aquí mismo. Permítanme aclarar todos estos errores desagradables. Tenemos una herramienta extremadamente poderosa de la que aún no hemos hablado. Si entro en las capas de edición, como vimos, tenemos las capas de las capas de física, tenemos las capas de clasificación. También tenemos esta etiqueta aquí mismo. Y lo que podemos hacer, podemos etiquetar al enemigo, fue una etiqueta enemiga. Y entonces cada vez que estamos tratando de comprobar por el controlador enemigo, antes de hacerlo, podemos crear una condición que compruebe si la etiqueta en la colisión es un enemigo, entonces podemos seguir adelante y dañarla. Si no es un enemigo o el objeto que encajamos no está etiquetado como enemigo, entonces no podemos acceder al controlador enemigo. Entonces déjame volver aquí. Déjame mostrarte dónde podemos crear daga. Simplemente podemos hacer clic en este botón más, nombrar la etiqueta, lo que sea que queramos, guarde eso, volver al enemigo. Y puedes ver aquí mismo que podemos etiquetarlo con una etiqueta que acabamos de crear. Déjenme volver atrás. Elimina la pila aquí mismo. Sí. Está bien. También porque el enemigo fue etiquetado que puede sin etiquetar. No estoy seguro de por qué lo hice. Entonces ahí lo tienes. Se eliminará de esta lista la próxima vez que se cargue el proyecto. De acuerdo, Entonces esto fue un gran error, pero no se preocupe por ello porque ahora es el momento de un reto y tu reto es etiquetar a nuestros enemigos. Entonces, antes que nada, crea una etiqueta enemiga tal como te mostré. Asegúrate de etiquetar al enemigo dentro de la etiqueta enemiga. Antes de conseguir el controlador enemigo, comprueba una condición si el objeto de colisión, para ya sepas cuál es el objeto de colisión, tiene la etiqueta enemiga sobre él. Y te recomiendo que pases por Google, encuentres una forma de cómo podemos comprobar la etiqueta y comparar la etiqueta. Si quieres seguir por ti mismo, adelante y hazlo. Si no, te daré una pequeña pista. Puedes usar algo llamado the.com DAG, ir a comprobarlo en perros de Unity, usar tu información, hacer tu propia investigación. Hay otra forma de comprobar la etiqueta. Sí te recomiendo que lo encuentres. Pausa el video ahora mismo y ve a hacer las compras. Hey, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Por lo que esta es la unidad de documentaciones, component.com, declaración DAG. Devuelve un bool, sea cierto o no o ningún bool público. También la etiqueta compare es un bool y la vamos a utilizar en nuestra declaración if porque como sabemos, una condición en la declaración if es una verdadera o falsa. Por lo que también podemos ver cómo se usa y se usa en el Trigger Enter, qué conveniente para nosotros. Entonces usamos este otro, lo llamaron otro, lo tenemos como colisión. Es lo mismo, no se preocupe por eso. Entonces veamos cómo podemos hacer con aquí dentro. Por lo que antes de comprobar si hay una colisión, he añadido una pestaña aquí mismo. Voy a ver si la colisión que acabamos de hit.com etiqueta es un enemigo. Y antes de que hagamos eso, debemos crear este tipo que es el enemigo. Hit Enter. Entonces voy a asegurarme de que lo escribamos correctamente. Entonces enemigo, y voy a etiquetar a nuestro enemigo como el enemigo. Entonces ahora aquí, si es un enemigo, entonces vamos a seguir adelante y hacer la colisión y otros trucos astutos, Este video está lleno de trucos astutos. Si solo tienes una línea bajo la condición if, no necesitas agregar estos corchetes aquí mismo. Entonces si solo tienes una línea, no necesitas agregar los corchetes si agrego otra línea. Entonces, por ejemplo, el destructor no forma parte de la condición if. Aunque lo tome y lo ponga aquí mismo, aún no será parte del padecimiento. Y si estás un poco confundido por eso, no te preocupes. Puedes añadir tus propios corchetes. Esto es sólo una pequeña prueba. Incluso puedes añadir un comentario aquí para decir que esto es lo que pasa. Entonces voy a ahorrar eso ahora. Y sólo si la colisión una etiqueta enemiga en ella. Bueno, llamamos al controlador enemigo y se los damos. Vamos a probar esto. Voy a correr el juego y voy a empezar a disparar las paredes. Y ahí tienes, puedes ver que no tenemos errores. Si disparo al enemigo, entonces miraré el daño que ha sufrido el enemigo. Ahí lo tienes. Se puede ver que está a los 40. Le dispararé tres veces más, por lo que se convierte en 30, 20, 10. Y por último, le dispararé por última vez y queda destruido sin ningún error. Entonces espero que disfruten, espero que estén cometiendo todos los cambios que estamos haciendo. Es muy importante. En ocasiones estaré haciendo esto fuera del ámbito del video. Y con eso dicho, espero que lo disfruten. Si estas disfrutando de este curso, por favor déjame una reseña. Me ayuda mucho. Hace saber a todos que este es un buen curso. Así que asegúrate de dejarme una reseña. Muchas gracias por ver. Te veré en el próximo video donde estaremos haciendo la profundidad de nuestros enemigos sea un poco más brutal. Entonces te veré entonces. 27. Splatter de sangre: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, como lo prometimos, hemos agregado un poco de brutalidad a la forma en que muere nuestro enemigo. Entonces ahora cuando le dispare con balas de DO, mira lo que pasa. 1, 2, y se puede ver la sangre salpicando de él. Ahora a pesar de que es un esqueleto, técnicamente no tiene sangre. Pero usemos nuestra imaginación y descubramos algo. De todos modos, no perdamos más tiempo. El reto en este video será un like, digamos yo contra ti que pueda hacer el reto más rápido. Por lo que necesito toda su atención y concentración. No perdamos más tiempo. Empecemos. Lo cual es un nuevo tipo de reto. ¿ Y quién puede hacer con más rápido? ¿ Por qué? Porque tienes todas las herramientas necesarias. Estamos haciendo algo que hemos hecho muchas veces antes. Entonces mi objetivo ahora mismo es ver quién puede hacerlo más rápido. ¿ Puedes hacerlo más rápido que yo? Y vamos a tener una petición de taza pequeña antes de empezar a crear un sprites salpicaduras. Entonces la Animación crea un campo serializado de la salpicadura de la muerte, ¿dónde debería estar? Y por último, antes de destruir al enemigo, vamos a instanciar esta salpicadura de muerte. Entonces espero que estés a la altura del reto. No perdamos más tiempo y empecemos. No pausas el video. Vámonos. Vámonos. De acuerdo, entonces lo primero, sin presión, sin presión. No es como si fueras en contra del instructor. De todos modos, salpicaduras de sangre, estamos dentro de este Bghts. Yo voy a ir aquí y ya tenemos todo rebanado. Voy a añadir este archivo abrir. Ahí vamos. Se puede ver aquí mismo. Vamos a seguir adelante y hacer clic con el botón derecho en crear un objeto de juego vacío. Voy a restablecer su posición aquí mismo. Voy a seguir adelante en las animaciones, gran animación. Esto será en los activos y animaciones. Haga clic derecho. Ahí vas. Lado de V, haga clic derecho. Oh, no, Así que mucho chapoteo. Después. Enemigo. Nombre muy largo para una animación. Ahora voy a elegir todos los sprites, adelante y añadirlos aquí. Vamos a correr esto y ver cómo se ve eso. Está bien, eso es mucho. Entonces voy a elegir todo eso y tal vez hacer que los píxeles por unidad sean un poco más, tal vez 120 o 150. Aplica eso. Probemos de nuevo esta animación. Libro. Ah, está bien. Es un poco más pequeño. Hagámoslo diez segundos. Está bien. A lo mejor hasta lo guardo por 20. A ver. De acuerdo, entonces creo que 20 es lo suficientemente bueno. Vamos, vamos, vamos, vamos. Lo siguiente que vamos a hacer es entrar al controlador del NMI aquí. Haremos referencia a la salpicadura de sangre. Voy a seguir adelante y después de los daños. Por lo que el campo serializado, que va a ser el maduro, lo llaman un objeto de juego como la salpicadura de la muerte. ¿ Por qué la mantequilla? Ni siquiera estoy seguro. Simplemente lo mantendré al final porque todos los efectos, siempre es mejor agregar los efectos al final. Guarda eso. ¿ Qué más debemos hacer cuando nos destruyan aquí mismo? O, oh, yo, bueno, un enorme error por mí, no en el controlador de jugador justo aquí y el enemigo, guarde eso. Oh, bien, entonces ahora tienes una cabeza-arranque sobre mí por mis estúpidos errores. No se preocupe, guardamos ese pergamino hacia abajo hasta el enemigo. ¿ Dónde murió antes de que lo destruyan, voy a instanciar a la salpicadura sorda en la posición de punto transformado. Entonces espero que estés bien en tu camino porque estoy casi terminado de transformar rotación de puntos y tal vez solo me estás esperando y riendo. Entonces guarde que todo esté bien. Vuelve aquí, el objeto del juego, estas son las salpicaduras de carga. Guarda eso. Y el enemigo también, vamos a preferir esto, así que entraremos en los reembolsos. Ahí vamos. Sangre salpicada, agregada y aquí van al enemigo. Se le quita la salpicadura de la muerte de la jerarquía, salvo eso, ejecuta el juego. ¿ Debería el enemigo dos veces? Él sí. Y puedo ver la salpicadura de sangre, pero oh, creo que nos olvidamos de asegurarnos de que el renderizador sprite esté en el ¿dónde debería agregarlo? Lo cual, o puedo agregar una capa de clasificación. A ver, pensemos en esto por un segundo. Puedo agregar 0, así que los enemigos, Vale, genial. Entonces para el enemigo, guarde eso. Y ahora cuando disparemos dos veces al enemigo, deberíamos ver la sangre. Está bien, genial. Entonces, pero como pueden ver, lo tenemos en bucle. Entonces voy a entrar en las animaciones, sangre y quitar el tiempo de bucle, guardar eso, volver a ejecutar el juego. Y deberíamos tener un muy bonito, muy bonito chapoteo de sangre. Y ahí tienes, desaparece. Tenemos que asegurarnos de que haya un par de inconvenientes. Entonces, al final, quizá queramos seguir adelante y destruir esto. Entonces para hacer eso, vamos a entrar en nuestros guiones aquí dentro. Y ya hemos creado algún tipo de guión que fue el destructor de efectos de impacto. Podemos, por cierto, sigamos adelante y entramos en las Prefabs, escojamos la salpicadura de sangre. Tenemos este candado aquí, así que esto ya no forma parte del reto. Esto es algo extra que se sumará. Hasta me olvidé de la destrucción de esto. Y podemos seguir adelante y sumar el efecto de impacto, destructor, destructor. Entonces ahora puedo acceder a esto aquí mismo y puedo decirle que cuando lleguemos al último fotograma y tal vez incluso podamos mantenerlo por tal vez un par de milisegundos justo aquí, así que la sangre está en el suelo. Después de terminar, agregamos este pequeño hecho, quitamos el candado y el evento de animación. ¿ Cuál parece ser el problema aquí? Algún tipo de llave, está abierta. De acuerdo, Entonces tenemos los destruidos, pero por alguna razón la sangre salpicando tras el enemigo. Hey, bienvenido de nuevo. Entonces hubo un pequeño problema cuando agregué el evento, tuve algo diferente. El problema era que si no tienes la salpicadura de sangre, por ejemplo, en la jerarquía, cuando añades un evento, se ve un poco raro. Déjame mostrarte otra vez. Entonces elegí la salpicadura de sangre y la animación elijo la salpicadura de sangre. Por lo que se puede ver que no hay animación. Primero necesitamos agregarla aquí en la jerarquía y en nuestra escena. Entonces podemos seguir adelante y agregar el pequeño evento de que yo sólo haga esto una vez más. Entonces ahí lo tienes. Y alrededor de 50, voy a agregar esta función aquí mismo. Voy a acceder al destruir, guardar eso, ejecutar el juego. Ahora, mato al enemigo con un par de balas. El salpicadero sucede libro, y luego se retira por sí mismo. Ya no lo tenemos en nuestra jerarquía. Por lo que espero que lo disfruten. Espero que hayas hecho el reto. A lo mejor no lo hiciste tan rápido como yo. Pasa el video, probaste un par de cosas tú mismo. Está un poco avanzado. Todo lo que usamos, ya conocemos la instanciación. El cuál es el efecto que creamos, la animación, la posición transformada, todo eso que hemos hecho, tal vez el único trozo de reto, tal vez no sabías dónde debiste haber agregado esto. A lo mejor agregaste después de la destrucción. No creo que eso funcione si lo has agregado después de destruir tan bien hecho, asegúrate de cometer tus cambios, espero que hayas disfrutado. Y en el siguiente video vamos a sumar algo de brutalidad a la forma en que lastimamos a nuestro enemigo. Por lo que actualmente cuando le disparemos, no siente nada, pero nos aseguraremos de que lo haga. Y por cierto, también, tenemos la animación de muerte que puedes crear para el enemigo y añadirle cuando muera, algún tipo de gatillo. A lo mejor lo haremos más tarde. Si no quieres demasiado tarde para mi perezoso trasero, puedes seguir adelante y hacerlo ahora mismo entre videos. Entonces te veré en el próximo. 28. Efecto en sangre Enemy (Armas): Bienvenido de nuevo Mis desarrolladores de juegos favoritos a un nuevo video muy largo. Y éste, hemos creado animaciones para la sangre. Hemos aprendido acerca de las matrices. Y ahora se puede ver en la jerarquía cuando disparamos a nuestro enemigo, se puede ver que tenemos diferentes tipos de sangre siendo instanciados. Entonces por ejemplo, ahora la sangre para entonces tenemos la sangre para, entonces tenemos los tres. Entonces, ¿qué está pasando? Tenemos un montón de Bloods y ellos están instanciando tipo de aleatoriamente porque usamos una matriz. Entonces, no perdamos más tiempo y empecemos. Por lo que es hora de añadir algún efecto rebaño a nuestros enemigos. Adelante y antes que nada, creemos todos estos efectos. Entonces voy a entrar a los sprites, tenemos la salpicadura de sangre. Voy a crear una carpeta para la salpicadura de impacto sanguíneo. A lo mejor deberíamos haber llamado a esto la muerte, pero sin preocupaciones, lo llamaremos las salpicaduras de impacto. Entonces sabemos que la Francia y yo vamos a entrar a los recursos y se puede ver que te he proporcionado más sangre. Puedes usar estos y rebanarlos o puedes usar estos cinco aquí mismo. Entonces, elegámoslos todos y arrástrelos hacia abajo a la carpeta aquí mismo. ¿ Por qué los estamos usando todos? Porque queremos tener un poco de diversificación entre el 1D 2D, 3D y etcétera. Por lo que se puede ver que cada uno de ellos es sólo un poco diferente a los otros. Entonces voy a guardar esto y voy a crear las animaciones. Y es bastante fácil creo. Entonces voy a hacer con y usar la magia de la edición para hacerlo en 1 segundo. Entonces o k, bienvenido de nuevo. Entonces, ¿cómo conseguiste todo eso? Déjame mostrarte lo que hice. Entonces, en primer lugar, creé cinco sangres para el 55 de impacto sanguíneo que tenemos ahora no son muy diferentes entre sí, pero hay una ligera diferencia. Entonces cuando ejecutamos esto, se puede ver que éste es el primero. Este es el segundo que es un poco diferente. El primero es un poco más chapoteado. El tercero, vamos a ver. puede ver que cae más que el segundo. Por lo que se puede ver que son los dos. Este es tres. Es un poco más cayendo. No estoy seguro de cómo llamarlo. El cuarto, se puede ver que es muy pequeño y muy concentrado. Y la quinta que puedes ver es muy GUI. Entonces, ¿qué vamos a hacer? Vamos a salvar todo eso. Voy a entrar a los Prefabs aquí y voy a crear una carpeta para las salpicaduras de pestañas respaldadas por lote y voy a arrastrar la sangre 1, 2, 3, 4, y 5. Voy a guardar todo eso. Voy a eliminarlos de la jerarquía. Y ahora tenemos la sangre aquí. Ahora creo que probablemente tendremos que destruirlos y sólo un poco, pero por ahora, no se preocupe por eso. Eso lo arreglaremos cuando surja el problema. Entonces, ¿qué vamos a hacer? ¿ Queremos instanciar estas sangrientas cada vez que el enemigo sale lastimado? Y la forma en que hacemos eso es antes que nada, obteniendo obviamente una referencia al mismo como hicimos con la salpicadura de la muerte. Por lo que a esto se le llamará el efecto de daño. Por los daños. El efecto de daño. Vamos a mantenerlo en eso o puedes llamar al daño salpicaduras de sangre como quieras. Y ahora lo que vamos a hacer es simplemente vamos a instanciarlo cada vez que salgamos lastimados. Entonces aquí abajo, vamos a duplicar esto. Subirlo un poco. Y si recuerdas cómo duplicamos Control D, cómo movimos esto muy bien manteniendo presionada Alt y usando las teclas de flecha. Entonces ahora instanciamos v. ¿Qué debemos instanciar el efecto de daño? Y está en la posición de transformación de la. Entonces voy a guardar todo eso. Voy a volver a nuestro juego. Voy a elegir al enemigo aquí tenemos el efecto dañino, y elijamos uno azul. Guarda eso. Y ahora vamos a correr el juego. Y ahora voy a disparar a nuestro enemigo. Ahí vamos. Se puede ver la sangre. Obviamente está en repetición. De acuerdo, entonces ahora tenemos que empezar a instanciar estos efectos cada vez que el enemigo sale herido. Entonces, ¿dónde estamos instanciando el efecto o los efectos de impacto de las balas? Bueno, los estamos instanciando en el controlador de bala de capa. Para que veas aquí es donde los instanciamos. Ahora qué queremos hacer cada vez que estamos golpeando una pared, tenemos este efecto Impacto de bala. Pero siempre que estamos golpeando a un enemigo, queremos tener algún tipo de efecto de carga. Entonces voy a duplicar esta línea aquí mismo. Y voy a llamar a esto el maduro. Yo lo llamo el hecho del daño. Porque esto significa que habrá algún tipo de daño cuando tengamos daño significa que hay sangre significa que hay algo diferente. Y lo que haremos aquí es que cada vez que golpeemos a un enemigo, voy a abrir los corchetes. Y voy a añadir aquí mismo que instanciamos e instanciamos el efecto de daño en la posición de transformación y la rotación de transformación. Pero lo que no queremos tener como cuando estamos golpeando al enemigo y aún instanciamos un efecto bala. Entonces lo que voy a hacer es ir a otra declaración aquí. Y voy a mover toda esta línea hacia abajo a esa declaración else. ¿ Cómo estoy haciendo esto? Al mantener presionada Alt y usar las teclas de flecha en una de las líneas que quiero mover. Entonces ahora qué pasa cuando la bala Impacta o tiene una colisión y esa colisión tiene una etiqueta de enemigo, entonces tendremos esta salpicadura de sangre y accederemos al controlador animal e infligirá daño. Si no, si no es el enemigo, lo que significa que estamos golpeando, no sé lo que sea. Vamos a tener el efecto bala y espalda. Entonces voy a guardar esto. Voy a volver aquí. Y aquí, voy a buscar mi bala en los prefabs, prefabs V bala bilayer aquí dentro, deberíamos tener al jugador, pero yo debería tener el efecto de daño. Voy a bloquear esto en el inspector que tengas este pequeño login aquí, puedes hacer click en él. Ahora, lo que sea que presiones, no cambias del inspector de libros de jugadores. Y esto es útil. ¿Por qué? Porque ahora podemos abrir este archivo, elegir el de sangre, y sumémoslo aquí dentro al daño de hecho, guardar todo eso, ejecutar el juego. Y ahora deberíamos ver que cuando estamos disparando al muro, tenemos este impacto. Cuando disparamos a un enemigo. Ahí vamos. Tenemos la sangre jugando en repetición, lo que significa que tendremos que cambiar las animaciones. Y no te dije que he creado animaciones. Simplemente puede quitar eso. Y déjame borrar esta carpeta. Lo tuve por error. Entonces chapotea uno, quita esto. Splash para quitar esto del looping del, oops, lo encendí por error. Apagarlo. Apague. Entonces ahí tienes. Tenemos todas las animaciones no en looping, vale, guarda eso, corre el juego ahora cuando deberíamos el enemigo, deberíamos ver la salpicadura de sangre de sangre uno. De acuerdo, Así que eso está bien y dandy y todo está bien. Pero tenemos cinco hechos por una razón. ¿ Cómo vamos a asegurarnos de que uno de ellos se renderice? Y no sólo eso, ¿cómo vamos a asegurarnos de que se renderice un número aleatorio de éstos? Entonces necesitamos múltiples objetos de sangre aquí. Ahora, lo que podemos hacer es simplemente seguir adelante y duplicar esto cinco veces. Daños 123, etc. Así que tenemos cinco daños a los que podemos llamar aleatoriamente. Esa es una solución, pero no es la solución óptima porque por ejemplo, digamos que queremos tener tal vez 17 efectos de daño. ¿ Tenemos que seguir adelante y crear 17 variables? Bueno, puedes, pero antes que nada, es muy engorroso. En segundo lugar, no es una buena forma de utilizar los recursos. ¿ Cuál es una buena forma de utilizar los recursos como crear algo llamado matriz? Entonces, ¿qué es una matriz? Una matriz permite almacenar múltiples objetos del mismo tipo en una sola variable. Para que podamos seguir adelante y crear un int. Entonces, por ejemplo, una matriz de enteros, por ejemplo, que es el número de enemigos. que pueda almacenar, por ejemplo, 4, 6, 11, y 71. Y cada uno de estos pequeños datos está en la matriz. Se puede ver que tenemos en primer lugar, el tipo al igual que una variable, pero la única diferencia, agregamos estos dos corchetes. Tenemos el nombre y tenemos los valores. Y cada uno de esos valores es o tiene un índice en su interior. Entonces, por ejemplo, los cuatro se indexan en 0. Y recuerda que siempre empezamos a indexar a 0, no a 10. El seis está en el índice uno, el 11 está en el índice dos, y el tres está en el índice. Es decir, 71 está en el índice 3 y podemos tener tantos como quisiéramos. Entonces ahora que tienes un poco de comprensión de lo que son las matrices, y una cosa más podemos determinar la longitud de una matriz. Entonces, por ejemplo, la longitud de esta matriz es de cuatro porque tenemos cuatro valores. Entonces fuera del camino, esta pequeña explicación, intentemos implementarla un poco y se puede ver cómo funciona eso. Entonces voy a volver atrás y unidad o en realidad no aquí. ¿ Y cómo convertimos este efecto de daño en una matriz? Simplemente agregamos estos dos corchetes. Y ahora creo que es apropiado nombrar esto no efecto de daño, sino efectos de daño con una S al final, porque ahora es plural. Por lo que usaremos nuestra útil herramienta de control o, o, y simplemente añadiremos una S al final, pulsa Enter. Ahora el efecto de daño aquí es diferente, pero se puede ver que la instanciación ahora está equivocada. ¿ Por qué? Porque estamos tratando de instanciar una matriz de efectos que no funciona bien, pero lo arreglaremos, o en realidad lo vas a arreglar más adelante en el reto. En primer lugar, sumemos todos los daños y veamos cómo se ve en el inspector. Entonces si voy a mi bala, en la bala de jugador prefabs, se puede ver aquí mismo, ¿dónde está? Entonces algo anda mal. ¿ Cuál es el problema? Y la consola? Hagamos doble clic y veamos. Ah, así que déjame comentar esto. Guarde que a veces cuando se tiene un error, el script no se monta correctamente. Entonces ahora que arreglamos este problema, y podemos ver aquí mismo que tenemos efectos de daño, ya no un solo elemento, sino que podemos abrirlo y tener una lista de elementos. Lo que podemos hacer es decir que el tamaño de la matriz es de dos. Hit enter. Ahora tenemos dos elementos, o podemos hacerlo de la manera anticuada y golpear el plus justo aquí y agregar un objeto. Pero te voy a mostrar un truco incluso astuto. Voy a encerrar al inspector aquí. Voy a ir a mis prefabs. Voy a dar click en el primero, mantener pulsado, cambiar, dar click en el último. Por lo que los tengo seleccionados a todos y los voy a arrastrar al efecto dañino. Y voila, ahora tienes ¿por qué usé agua? Ahora tenemos las 50 sangres y se pueden ver los elementos numerados desde 0, 1, 2, 3, y 4. Ahora el siguiente paso es instanciar a uno de ellos de forma aleatoria. Y puedo mostrarles, primer lugar, esto será un reto. No estoy seguro de cuál debería mostrarte primero. Déjame en primer lugar, mostrarte esto. Entonces tenemos algo llamado rango aleatorio, que devuelve un número aleatorio. Adelante, mira hacia arriba. Ahora es el momento de tu reto. Y tu reto es crear un efecto aleatorio. Así que número uno, crea un splash aleatorio a partir de 0 como el valor mínimo y la longitud de la matriz como el valor máximo. Entonces ahora estás un poco confundido. ¿ De qué está hablando Michael? Nuevamente, volvemos a este. El mínimo, el máximo. Ahí vas. Usa esto, búscalo. De vuelta aquí. Asigne ese valor a una variable entera que creará localmente. Por lo tanto, crea un entero aleatorio, asígnale un número aleatorio. Busca letrinas aleatorias 0. De acuerdo, así que he añadido eso. Y por último, te voy a dar una pista. Si no quieres la pista, Se trata de cómo obtenemos la longitud de la matriz. Te daré la pista. Si no, pausa el video, ve al reto. Quieres tener la pista, usa la longitud de punto para obtener la longitud de la matriz. Incluso puedes buscar un par de ejemplos son no, esto es un reto un poco duro. Yo añadiría en una escala de uno a 10 como principiante, este es un 10 porque antes que nada, acabas de aprender matrices. En segundo lugar, estás usando al azar. Sé que es difícil. Tómate tu tiempo, pausa el video, usa tus habilidades de resolución de problemas, todo lo que has adquirido, y no te preocupes por ello cuando termines el reto. Si no sabes cómo hacerlo, lo haré frente a ti, pero inténtalo. Lo más importante, al menos dete cinco minutos para intentarlo. Así que pausa el video ahora mismo y ve a hacer lo mejor que puedas y el caldeo. De acuerdo, bienvenido de nuevo. Entonces siempre que golpeemos a un enemigo, lo que vamos a hacer es que vamos a crear una variable aleatoria y localmente, por lo que localmente significa dentro de aquí, cada vez que golpeamos a un enemigo, voy a decir que tenemos un entero que va a ser la salpicadura seleccionada. Y va a ser igual a un rango aleatorio. Entonces al igual que tenemos en los ejemplos, y la documentación de Unidad va a estar entre 0 y la salpicadura de la muerte o no, lo llamamos, aparecen el daño afecta. El daño afecta la longitud de los puntos. Guarda eso. Entonces ahora lo que pasa aquí dentro, tenemos este entero. Es igual a un rango aleatorio. Y se puede ver aquí mismo que tenemos el mínimo. Entonces, ¿por qué es 0? Porque queremos elegir un número aleatorio de la matriz que tenemos aquí. Y el primer índice es 0, y el último índice va a ser la longitud del daño. Pero hay algo muy importante que quiero señalarles. Y si miramos aquí la explicación, se puede ver que el mínimo es inclusivo mientras que el máximo es exclusivo. ¿ Qué significa eso? ¿Inclusivo? Eso significa que podemos elegir un aleatorio desde 0 hasta el máximo. Entonces 0 está dentro. 0 puede ser uno de esos números aleatorios. Pero el máximo, que es la longitud, no puede. Y esto es importante porque la indexación en una matriz, si elegimos la longitud, la longitud siempre es mayor que el último índice. Porque si vuelvo atrás y el ejemplo aquí dentro, déjame mostrarte. Entonces, digamos ¿cuál es la longitud de toda esta matriz? Son cuatro porque tenemos cuatro puntos. Pero si trato de acceder al cuarto número en esta matriz, obtendré un error porque tenemos el índice es 0, 1, 2, 3 si trato de acceder al cuarto, así que para no hay nada, obtengo un error y empiezo a llorar. No necesariamente, pero espero que consigas el punto. Lo siguiente que vamos a hacer es que queremos instanciar. Entonces ahora que tenemos nuestro número aleatorio, qué podemos hacer a partir de entre los efectos, puedo abrir los paréntesis y puedo usar el salteador seleccionado aleatorio. Entonces ahora tengo un número aleatorio que está entre 0 y la longitud menos uno, obviamente porque es exclusivo. Y ahora puedo instanciar los efectos de daño o uno de los efectos de daño aleatoriamente usando este número. Entonces podría haber dicho el 0 V1, pero he seleccionado la salpicadura aleatoria. Entonces, vamos a guardar eso. Espero que lo entiendas todo. Si no, solo échale otro vistazo, tal vez reproduzca el video, entienda todo. He tratado de ser lo más detallado posible mientras soy un aburrido. Creo que este es uno de los videos más largos, pero no se preocupe. Voy a entrar a mi juego. Vamos a quitar esto aquí mismo es como el enemigo. Y por cierto, también me aseguré de que toda la sangre que puedas ver aquí mismo, la capa de clasificación como enemigo. Para que lo veas. ¿Y dónde está el enemigo? Yo le voy a dar mil o 10 mil salud sólo para que podamos ver adecuadamente todas las salpicaduras de sangre. Entonces voy a llegar pero cerca, voy a disparar 12345. Entonces ahí tienes. Se puede ver que algo no está del todo bien, así que voy a disparar. ¿ Y cuál es el problema con este caso 1, 0? Entonces acabo de encontrar el problema y la sangre 5 que he agregado aquí mismo, la sangre. Mira cuando tocas la animación, la última es un punto rojo. Entonces lo que voy a hacer, voy a quitar el último. Y ahí tienes. Ahora, sólo tenemos esto cuando la sangre termina a las lanzas. Guarda todo eso. Y déjame simplemente elegir la luna. El sangre 5 y un vivo cambia. Vuelve a borrarlo en la bala. Déjame ver. A lo mejor porque cambiamos algo, quizá prefabs bala. Está bien. Sigue trabajando, guarda eso, vuelve a nuestro juego. Obviamente tendremos que quitar todos estos para que un zapato, el enemigo, vamos a ver. Tenemos diferentes sangres. No, sigue ahí por alguna razón. ¿ Por qué es eso? Es muy molesto. Está bien. Por lo que descubrí que la sangre para también tiene su último marco como este rojo molestos puntos. Entonces lo voy a borrar y guardar eso. De inmediato lo estoy borrando dentro del prefabricado. Entonces simplemente voy a la prefab, haga doble clic en las tres. Veamos si este también tiene el pequeño molesto punto rojo que subes. De acuerdo, Así que ahí tienes. También lo tiene guardar eso y sangre para hacer zoom y ver la animación. De acuerdo, otro trabajo sangriento. Este video se está saliendo de control. Entonces ahí vamos, el último, también borramos eso. Y una cosa que noté, quiero elegir todas las prefabs y asegurarme de que todas sus posiciones estén en 0 para que no se instancien. Y algún lugar raro. De todos modos, de vuelta a nuestro juego. Espero que esta vez todo esté funcionando a la perfección. Entonces voy a correr el juego y voy a disparar al enemigo. Ahí vas. Esta es la sangre espesa. Otra vez azúcarlos. De nuevo, es un tipo diferente de sangre. Se puede ver que está bloqueado. Tres. Sangre por Sangre uno. Ahí vas. Se puede simplificar de nuevo, sangre uno. Entonces como pueden ver, cada vez que estamos disparando al enemigo, tenemos diferentes tipos de sangre que se está poniendo instanciado. Para que veas que es un número aleatorio al que le disparan. Entonces espero que hayas disfrutado. Obviamente, hay un par de cosas que tendremos que arreglar con que nuestra sangre no se destruya al final, podríamos encontrar una forma diferente de arreglarlo una vez que aprendimos algunas herramientas extra, o tal vez podamos simplemente eliminarlas usando el eventos y nuestras animaciones, lo cual también es muy útil. Entonces espero que hayas disfrutado, espero que estés disfrutando este curso. Espero que no estés siendo un poco desmotivado por la duración del, algunos de los videos porque entro en un par de detalles. Espero que te guste el hecho de que cometa errores y los guarde aquí para que podamos arreglarlos juntos y dejarme una reseña si estás disfrutando. Sé que lo he dicho antes. mejor diré un par de veces, así que asegúrate de hacer la revisión para que no tengas que escucharla más. Y asegúrate de por supuesto, hacer los commits. Te veré en el próximo video donde estaremos dando al enemigo y capacidad para dispararnos. Por lo que actualmente se encuentra muy débil. Nosotros queremos darle una forma de defenderse. Entonces nos vemos. 29. Ataque en los enmende Aten (cortines): Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en éste en realidad hemos hecho que nuestros enemigos sean ligeramente estúpidos. Entonces a pesar de que pueda disparar, pero sólo el ligero problema es que se dispara a sí mismo, lo cual a veces es bueno, sobre todo si es un enemigo muy duro. Pero en nuestro caso, lo estaremos arreglando más adelante. Pero por ahora, todo lo que necesitas saber es que podemos cambiar el tiempo entre tomas a, por ejemplo, tres. Y se puede ver que se tarda tres segundos en disparar, pero eso no lo hacemos usando un contador. Hacemos eso usando algo llamado corutina, que es un miedo muy duro pero en herramienta creíblemente poderosa para aprender en Unidad. Por lo que necesito tu concentración y tu total atención. No perdamos más tiempo y empecemos. De acuerdo, entonces tiempo para darle a nuestro enemigo la capacidad de disparar al jugador, o al menos atacar al jugador. Tenemos dos tipos diferentes de ataques que vamos a implementar en nuestro juego. Uno de ellos será el malayo, uno de ellos estará simplemente disparando desde lejos o lanzando la espada y el ejemplo de los esqueletos. Pero vamos a enfocarnos más por ahora en el tiroteo desde distancia y hacerlos ataques cuerpo a cuerpo más adelante. A lo mejor en una sección diferente, puede estar en la sección de jefe donde tenemos el esqueleto gigante. De acuerdo, con eso fuera del camino, sigamos adelante y empecemos. El primero que vamos a hacer es que vamos a crear un par de variables y el caso del controlador enemigo 0. Entonces vamos a entrar al controlador enemigo. Y aquí dentro vamos a crear un par de variables. Entonces antes de la salpicadura de la muerte aquí mismo, vamos a sumar ataque, solo un común para que sepamos qué es todo y va a ser un campo serializado de tipo booleano y va a ser un ataque cuerpo a cuerpo. Entonces si se trata de un atacante cuerpo a cuerpo, lo vamos a revisar en el inspector y atacará usando cuerpo a cuerpo. Entonces vamos a crear un campos serializados, que va a ser un objeto de juego y va a ser el proyectil enemigo. Entonces esto es lo que el enemigo estará tirando de su mano si sí dispara. Por último, vamos a crear un punto de transformación. Ah, lo siento, posición de fuego. De acuerdo, entonces ahora tenemos el proyectil. Crearemos una posición de archivo. Y también queremos tener un tiempo entre los disparos que hace el enemigo. Por lo que es similar a la forma en que manejamos nuestro arma. Por lo que el tiempo de flotación entre tomas. Y finalmente vamos a crear un bool privado listo para disparar. Entonces, ¿qué pasa aquí? Cuando estamos listos para disparar, el enemigo dispara, y cada vez que dispara y entre los disparos de tiempo se va a calcular. Entonces lo hicimos usando, creo el contador. Creamos un contador donde contamos atrás el tiempo hasta que terminamos cierta cantidad de tiempo entre tomas cuando esté terminado, entonces podemos mostrarlo de nuevo. Esa era una vieja manera. Ahora vamos a usar algo llamado la co-rutina. Por lo que antes de hacer eso y presentarles a las corutinas, permítanme en primer lugar poner a la realidad la lista para rodar aquí. Por lo que siempre que el enemigo empiece, está listo para disparar y una actualización. Vamos a seguir adelante y crear algo aquí dentro que es una condición. Y si El atacante malayo, o si no somos un mero atacante, no lo somos. Cuando volvemos a poner el signo de exclamación y estamos listos para disparar. Entonces lo que vamos a hacer es que vamos a seguir adelante y decir eso listo para disparar como falso. Y luego aquí dentro vamos a empezar un recubrimiento. Entonces, ¿qué es una co-rutina? ¿ Por qué lo necesitamos aquí? Tengamos un poco de explicación. Entonces, ¿qué es un coltán? Una co-rutina es un método que puede suspender la ejecución de instrucciones hasta que se cumpla una determinada condición o ciertas condiciones. Estas suspensiones se conocen como rendimiento. Y en nuestro ejemplo, estará suspendiendo el tiempo hasta que nuestro enemigo esté listo para disparar de nuevo. Entonces volvamos a nuestro código y veamos qué significa todo eso. Por lo que actualmente lo que tenemos, revisamos la actualización que se llama cada fotograma individual. Verificamos si no estamos apuntando atacante y estamos listos para disparar, luego listos para disparar, configurados en falso. Y por ejemplo, aquí vamos a disparar la bala. Pero lo que queremos, al igual que teníamos en el mostrador, queremos después de cierto tiempo poder disparar. Nuevamente, tenemos este set en falso porque no queremos disparar a cada marco una bala y tener gazilones de balas. Entonces la forma en que solucionamos esto es mediante el uso de una co-rutina. Entonces déjame solo seguir adelante y crear una coroutine aquí mismo va a ser de tipo enumerador de ojos. No necesitas preocuparte mucho por lo que es nuestro enumerador, solo debes saber que es el tipo de recubrimientos. Vamos a crear el nombre corutino como enemigo de fuego, proyectil. Voy a abrir los corchetes y vamos a suspender el tiempo. Entonces voy a decir ese rendimiento. Está bien, Focus, rinde. Eso significa que estamos suspendiendo. Retorno. Nuevo. Espere cuatro segundos. Voy a abrir los corchetes. ¿ Y cuántos segundos queremos ponderar como el tiempo entre tiros? Y después de eso, podemos seguir adelante e instanciar la bala o instanciar el proyectil, que es el proyectil, proyectil enemigo donde hacer instanciado en la posición cinco, esa posición y la posición pero la estación rho. Y entonces lo que podemos hacer es poner a la lista para volver a disparar en realidad. Y ahora lo podemos volver a mostrar. Complicado, ¿no? Sé menos explicar. Ah, y antes de que me olvide, y aquí después de que tengamos el disparo, iniciamos la co-rutina, que es el proyectil enemigo lejano. De acuerdo, ahora estás aún más confundido. Probemos esto de nuevo y actualicemos. ¿ De qué tenemos cada actualización de fotogramas como siendo frío, tenemos todas estas declaraciones justo aquí las cuales estaremos convirtiendo en métodos en tan solo un poco. Pero en lo que nos enfocamos es aquí, si no somos un atacante cuerpo a cuerpo y estamos listos para disparar, entonces listos para disparar, establecidos en falso, y comenzamos un Colton. Entonces, ¿qué pasa aquí dentro, listo para disparar un set a falso? Eso significa que este método o esta condición aquí mismo es falsa. Por lo que no volvemos a disparar cada fotograma. Por eso lo pusimos en falso. Pero, ¿cómo lo vamos a volver a hacer realidad? Solíamos hacer eso usando el contador. Ahora estamos usando algo un recubrimiento. Y así como dije, corutina se llama Usando inicio coroutine. Ponen el nombre aquí y lo llaman yo enumerador. No se preocupe. No te preocupes por eso. Por ahora. ¿ Quieres ahondar más en eso? Sé mi invitado. No tienes que saber exactamente qué significa eso. Tenemos el proyectil enemigo lejano, entonces tenemos esta expansión, que es el rendimiento. Después tenemos el regreso nuevo, espera cuatro segundos. Entonces debido a que tenemos un numerador iónico, tenemos que devolver un nuevo peso cuatro segundos. ¿Qué hace esto? Al igual que dice, espera una serie de segundos, que es el tiempo entre tomas. Y después de que espere esto, entonces instanciamos al proyectil enemigo. Enemigo dispara, y está listo para disparar otra vez, una y otra vez. Entonces, ¿qué pasa aquí dentro? En primer lugar, empezamos, tenemos los listos para disparar a la verdad. Deberíamos. Es falso, ya no disparamos. Y cuando termine el tiempo entre tomas, lanzamos el proyectil y luego estamos listos para disparar de nuevo. Probemos esto y veamos cómo funciona. Voy a volver a Unidad. Voy a ver dónde tenemos realmente nuestro cuchillo 0. Entonces no tenemos un cuchillo. Entonces lo que haremos es simplemente usar la bala que ya tenemos. Por lo que en las prefabs, tenemos los folletos de jugador. Solo usa eso por ahora, la posición de fuego, déjame agregar clic derecho, crea un objeto de juego vacío. Y lo voy a poner justo aquí, se corren casi justo aquí. Por lo que esta será la posición de fuego sobre el enemigo. Nosotros le proporcionamos la posición FAR definida entre disparos sería de 1 segundo. Eso lo salvaremos. Y ahora vamos a asegurarnos de que no sea un, hizo un atacante. Corremos el juego y veamos qué pasa. Entonces ahora, ahí tienes. Se puede ver que está instanciando la bala, pero Se está disparando a sí mismo y a la cara. Entonces si hago una pausa por un segundo, se puede ver que la posición cinco, así es como se está dirigiendo. Y sabemos que la bala de los jugadores solo viajó en la dirección correcta. Sé que es un poco gracioso. Probemos esto de una manera diferente. Pero en todo caso, no nos preocupemos demasiado por eso por ahora porque en el siguiente video estaremos creando balas enemigas adecuadas que en realidad van muy lejos hacia el jugador o no. Incluso las balas crearán el proyectil, que es el noveno del enemigo. Lo estará tirando como el jugador y no disparándose a sí mismo. Pero se puede ver en este momento que esto está funcionando usando el Colton. Si hago clic atrás en el enemigo justo aquí, se puede ver que puedo aumentar el tiempo entre disparos a 2. Entonces ahora cada dos segundos tenemos este ataque. Entonces espero que hayan disfrutado el video. Sé que el mecánico de tiro no es perfecto, pero como dije en el siguiente video, estaremos creando mejores balas. Espero que estén cometiendo todos sus cambios. Y en el siguiente video estaremos haciendo unas balas enemigas adecuadas, gentiles, o como quieras llamarlo. Entonces te veré entonces. 30. Hacer viñetas enables: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, vamos a sumar balas. Nosotros les llamamos balas, pero son espadas a nuestro esqueleto. Entonces cuando ejecutamos nuestro juego, mira lo que pasa. Se puede ver que el esqueleto en realidad ahora está lanzando clases. Y no sólo eso, si caminamos por ahí, las espadas empiezan a seguirnos. Y si te das cuenta, si cambiamos la fuente que ya están volando, sigue volando en dirección porque hay algo muy reciente que sucedió. Descubrieron que las clases no cambian de dirección en medio del aire. Descubrimiento increíble. No perdamos más tiempo con nuestros, no les llamemos bromas estúpidas. Y empecemos. Ah, está bien, entonces es hora de crear algunas balas enemigas adecuadas. Entonces lo primero que vamos a hacer es que vamos a seguir adelante y conseguir los sprites de nuestra espada o la clase de enemigo. Entonces si entro a los sprites, si entro al enemigo, los enemigos musulmanes, al esqueleto. Y aquí dentro tengo el sprite para dónde está? ¿ Dónde están los pensamientos voladores? Entonces ahí lo tienes. Este es el volador ordenado. Creamos cualquier cosa para ello. Creo que no lo hemos hecho. Entonces voy a crear un objeto de juego vacío, restablecer su posición. Y le voy a dar una de las, ¿dónde está, las clases? Entonces démosle sólo éste. Sumaré cuatro. Simplemente puedo añadir la espada aquí mismo. Basta con quitar este objeto de juego y lo llamaré la espada de esqueleto volador. Ahí vas. Y voy a crear una animación. Entonces voy a ir a los Activos y animaciones, y voy a la animación esqueleto. Y sólo llamémoslo el platillo volador. Haga clic en Guardar. Ahí vamos. Entonces ahora tenemos al animador y déjame simplemente elegir todos los sprites de tipo. Y vamos a seguir adelante y arrastrarlos aquí. Entonces ahora si ejecutamos la animación, ahí vamos, se puede ver que tenemos una espada extremadamente rápida Eso es moverla alrededor. De acuerdo, así que eso está casi bien. Entonces ahí lo tienes. Se puede ver que así funciona nuestro tipo. Y explota antes de que llegue al enemigo. Por lo que tiene alrededor de 40 marcos de tiempo de vuelo. Y eso es bueno. Nosotros sí queremos tener la espada al menos puede destruir a algún alcance. No queremos que la sal esté volando todo el tiempo ahora, si sí quieres tener tu sal volando todo el tiempo, necesitarás agregar un par de cosas. Entonces, por ejemplo, solo puedes ponerlo en un bucle y la sal seguirá volando y volando sin que nunca se destruya hasta que llegue al jugador. Y por último, justo puede ser destruido con algunas condiciones. Pero no nos preocupemos demasiado por eso ahora mismo. Lo que vamos a hacer es que vamos a abrir los guiones aquí dentro. Vamos a entrar en las balas y vamos a hacer clic derecho y crear un nuevo guión C-sharp, que va a ser el controlador de bala enemigo. Y sólo llamémoslo bala o proyectil, pero por ahora lo llamaremos bala. Entonces voy a guardar eso. Y voy a hacer doble clic y abrir esto. Entonces lo primero que vamos a necesitar es un campo serializado, que es un flotador para la velocidad de bala. Y yo, voy a usar bala y especie de proyectado a medida que avanzamos. Y vamos a necesitar una referencia a la dirección de los jugadores. Entonces voy a crear un vector privado 3 y va a ser la dirección del jugador. Entonces, ¿cómo va a funcionar realmente la bala enemiga? Lo que vamos a hacer es entonces empezar, vamos a determinar la dirección de los jugadores. Entonces va a ser igual encontrar objetos de tipo. Y va a ser el controlador de capas. Y desde aquí vamos a seguir adelante y utilizar la posición de punto de transformación del jugador que encontramos menos el punto de posición transform.py o.Eso es todo. No, no normalizado, No, ahora mismo no. Entonces, ¿por qué estamos haciendo esto instalado y no una actualización? Porque no queremos que la bala siga siguiendo al jugador. Nosotros sólo queremos tener la dirección del jugador en cuanto se dispare la bala. Entonces cuando se dispara la bala, estamos instanciando esa bala. Y esa bala. En cuanto se despierte. Inicio. Empezaremos. Encontrará el objeto jugador, obtendrá la dirección del jugador. Y luego vamos a asegurarnos de que la dirección del jugador se normalice. Ahí vamos. Entonces de esa manera no es más rápido si se mueve en diagonal. Está bien, genial. Ahora lo siguiente que queremos hacer es que queremos asegurarnos de que esa bala sea destruida cada vez que golpee un obstáculo. Pero no sólo eso, queremos también reducir la salud del jugador más adelante cuando lo golpee. Entonces una de las cosas que tendremos que hacer. ¿ El tema te es un reto? ¿ Qué tal esa transición? El paja, la bala, y revisa al jugador. Por lo que necesitarás crear, este debería ser M en Trigger Enter a D para la bala. Necesitas comprobar si lo que golpeamos fue al jugador por su etiqueta, tendrá que destruir la bala cuando golpee algo. Y te daré una pequeña pista, necesitarás usar la pajita. Bueno, esto no es en realidad, fue bastante fácil, pero pensé que tal vez porque es la primera vez que usas destruido, tal vez lo necesites. Por lo tanto, recuerda que también necesitarás agregar un gatillo a esto. Pausa el video ahora mismo y ve a hacer el Shalon k Así que hay algo que me dejé Del reto. Sí lo mencioné un poco y espero que ese zapato que esto por tu cuenta, voy a tener que añadir un colisionador. Entonces un colisionador circular 2D, Es bastante grande. Voy a poner el radio arriba, toma grande. Voy a hacerlo, de acuerdo, Así que creo que este radio es lo suficientemente bueno. Veamos cómo va a estar volando esto. Entonces este es el círculo completo. Entonces lo voy a mover un poco hacia abajo, un poco así o bien, genial. Entonces ahora tenemos el colisionador, nos aseguramos de que sea un gatillo. Voy a guardar esto y voy a seguir adelante en el o y añadir también los guiones del controlador de bala enemigo. Ahí vamos. La velocidad del barco será, hagámoslo 34. Ahora, haga doble clic en esto, abra esto. Y ahora lo que vamos a hacer es crear un on sugar entra, así que en Trigger Enter to D. Y aquí vamos a comprobar si la etiqueta collision.com. Y si es el jugador, obviamente tendremos que crear la pila en un poco. Si es el jugador simplemente va a usar el registro de puntos de depuración. El estrato fue golpeado. Y entonces simplemente vamos a paja esto, cualquiera que fuera el objetivo, alma destruyendo objeto de juego. Guarda eso. Ahora el paso final es que queremos mover nuestra bala. ¿ Y cómo vamos a mover nuestra bala? Bueno, obviamente podemos volver a usar cuerpo rígido, igual que hicimos con la bala del jugador. Pero creo que soy este caso, es mucho mejor usar la anticuada manera que se mueve la transformación del libro. En primer lugar, hay muchas razones. En primer lugar, podemos hacer esto con bastante facilidad y es muy efectivo. Y la segunda razón es que no queremos tener muchos cuerpos rígidos y nuestro juego, porque siempre que tengas un cuerpo rígido, eso significa que el motor de física está funcionando. Y cuando hay un motor de física está funcionando, eso significa que hay más potencia computacional. Entonces la última que usamos la mantequilla corre nuestro juego. Entonces una actualización, voy a acceder a la transformación. Yo voy a, me refiero a la posición sobre la transformación. Y voy a seguir aumentando. Al entrar en la dirección del jugador, tiempo la velocidad de la bala. Entonces esta velocidad, y por supuesto voy a usar el tiempo, el tiempo delta. Por lo que en cuanto se instancie la bala, se encuentra la dirección del jugador. Y todos y cada uno de los fotogramas la transformación se mueve hacia ese jugador. Y en cuanto golpea al jugador, entonces se destruye el objeto del juego. Y si teníamos capa profunda o cualquier otro objeto que se destruya, pero si teníamos al jugador específicamente, entonces el jugador fue golpeado se va a poner o imprimir en la consola. Entonces voy a guardar esto. Voy a volver a mi otra vez. Y vamos a ver, vamos a hacer de esto un prefabricado. Prefab. Voy a hacer clic derecho y aquí y crear una carpeta, 40 balas. Y el jugador bala aquí dentro. Haga doble clic aquí, establezca el tipo de esqueleto volador aquí. Voy a borrarlo. Guardemos esto. Y sigamos adelante y corremos el juego y veamos qué pasa. Entonces, está bien, no cambiamos el montón. No hemos cambiado las balas reales del jugador. Entonces ahí vamos. Vamos a añadir este esqueleto volador, ordenar astron el juego. Y como puedes ver, no pasa nada porque la bala está en las capas de clasificación equivocadas. Entonces en la capa de clasificación enemiga, ahora deberíamos salvar esto. Ahora cuando corremos, deberíamos. Sí, ahí vamos. Se puede ver que tenemos este tipo volando hacia el jugador. Y cuando tuvimos al jugador, no tenemos nada impreso en la consola. ¿ Por qué es eso? Bueno, vamos a revisar, va a guardar esto. Entonces olvidé el paso más importante y lo que debiste haber hecho en el reto, supongo que sabrías qué hacer y el reto, porque estamos revisando la etiqueta de jugador, pero aparentemente por memoria, ¿no es genial? Entonces el problema aquí es que no etiquetamos al jugador también, al jugador. Como pueden ver, ya tenemos la etiqueta aquí mismo. Tan gran error, no se preocupe por eso. Vivimos, aprendimos, aplicamos nuestros cambios. Guardamos todo esto, ejecutamos el juego. Y ahora lo que deberíamos ver es que ahí vas. Tan pronto como el arreglado el jugador, tenemos, el jugador fue golpeado y lo puedes ver múltiples veces y aquí 4, 5, etc Ahora, lo que quería mostrarles es si muevo al jugador, las espadas que ya van en dirección al jugador no va a cambiar. Entonces ahí lo tienes. Se puede ver que ahora ordenar seguir al jugador a medida que se mueve y podemos destruirlos? Sí, podemos. Si lo desea, puede agregar otra capa, que es la capa de bala enemiga, y asegurarse de que las balas del jugador no interactúen con el enemigo de bala. Esa es tu elección. ¿ Qué mecánica de juego tienes en tu juego? ¿ Hacer eso, aplicarlo? Me encantaría verlo si me muestras. Y fue que ninguno, espero que lo disfruten. Espero que estés cometiendo tus cambios cada video individual. Y en el siguiente vamos a sumar un alcance al disparo enemigo para que no queremos dejar que nuestro ME saque desde cualquier parte del mapa queremos tener un, algún tipo de alcance en el que el enemigo nos pueda disparar. Entonces te veré entonces. 31. Gama de tomas Enemy: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, agregamos un campo de tiro. Es bastante sencillo. Ya hemos hecho esto. Se puede ver en este momento el enemigo ya no nos dispara a menos que nos detengamos en este círculo rojo. Cuando hacemos cosas adentro, empieza a lanzar sus flechas tipo. Si estamos fuera, él no los tira. Ahora, no perdamos más tiempo. Este video no se trata solo de crear el rango. También teníamos un extra, llamémoslo lección. Y aquí, un punto extra para crear. Utilizamos el conocimiento de nuestros métodos. Entonces, no perdamos más tiempo hablando y empecemos. Ah, está bien, entonces es hora de añadir un campo de tiro a nuestro enemigo. Pero antes de hacer eso, hay una cosa que tenemos que cuidar y es que la espada no se estaba destruyendo cuando golpeó algún tipo de gatillo. Y podría estar pensando, bueno, ¿por qué está pasando eso? A pesar de que tenemos la bala enemiga en gatillo, todo está funcionando. Hay un pequeño detalle que debería haberte dicho que cometí el error. Aquí sí necesitamos un cuerpo rígido 2D, pero necesitamos hacerlo cinemático. Entonces ahora cuando la sal voladora tenga un cuerpo rígido hasta el final Es Kinematic, será destruida cuando golpee una pared con eso fuera del camino. Discúlpame por no decir eso antes de que te dijera que no deberías tener un cuerpo rígido. Deberíamos, pero debería ser cinemático. Entonces sigamos adelante. ¿Qué necesitamos? Necesitamos tener la capacidad de mostrar al jugador sólo a un cierto rango. ¿ Cómo hacemos eso? Al darte un reto? Y tu reto es crear un campo de tiro con color. Por lo tanto, crea una variable flotante para el rango de tiro. Antes de poder disparar, asegúrate de estar en el campo de tiro comprobando la distancia entre el enemigo y el jugador y dibujando un amarillo. No estoy seguro de por qué dije el amarillo porque ya tenemos amarillo. Elige el color que quieras y asegúrate de que ese sea el campo de tiro. asegura de que el enemigo no dispare a menos que el jugador esté en ese campo de tiro. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces voy a entrar al controlador enemigo. ¿ Y dónde disparamos? Ahí vamos. Este es el tiempo entre disparos. Y sigamos adelante y sumamos. Creo que este es un buen lugar para agregarlo. Entonces voy a crear un campo serializado, que será un flotador, y va a ser el campo de tiro. Guarde eso. Y luego me voy a desplazar por aquí. Voy a comprobar si no somos un atacante masculino y estamos listos para disparar, entonces voy a seguir adelante y arriba aquí justo antes de revisar la condición, crear una variable que va a ser el flotador. O saber qué, no vamos a crear una, una variable extra. Vamos a ponerlo aquí. Agregaremos otra condición. Y esa condición será que un vector tres y calcule la distancia entre la capa a perseguir. Ahí vamos el jugador a perseguir punto de transformación posición de punto. Y vamos a comprobar la posición de punto transformado del enemigo. Y si es menos que el campo de tiro, entonces vamos a iniciar el padecimiento. Ahora te has dado cuenta de que esta línea es un poco larga. Entonces lo que podemos hacer es simplemente ir esto, golpear entrar, entrar aquí, golpear Enter. Por lo que ahora están en líneas separadas. Podemos verlas con mayor claridad. Si lo deseas, puedes mantenerlos en la misma línea. Y esta es una mejor manera de ver las condiciones. También podemos agregar esto aquí mismo para que lo sepamos todo. Con eso hecho, vamos a salvar oh, y necesitamos dibujar el más largo. Entonces voy a seguir adelante y duplicar estas dos líneas. Y voy a hacer que el color no sea amarillo. Hagámoslo azul. Y este va a ser el campo de tiro. Guarda eso de nuevo en nuestro juego. Vamos a ver al enemigo. Ahora bien, ¿cuál quieres que sea el campo de tiro? Por supuesto, dependerá de cómo será el juego. Entonces, por ejemplo, puedes hacer que el campo de tiro sea un poco más grande, pero tal vez solo tal vez querrías que la persecución del jugador esté por ahí así. Por lo que el enemigo podría necesitar perseguir un poco al jugador. Y cuando está en el rango empezó a disparar, o podemos hacer lo que quieras. Depende de tu juego. Simplemente agregará la diapositiva aquí, círculo etiquetado más grande, guarde eso, ejecute el juego. Y ahora deberíamos ver que el enemigo no dispara hasta que tengamos un alcance. Entonces ahí vamos. Empieza a disparar al jugador. Si salimos, ¿ sigue disparando? No paga, no lo hace. Se detiene. Estamos en sus frutos. Estamos fuera. Deja de disparar. Está bien, genial. Entonces que trabajando, creo que todavía tenemos un poco de tiempo y usaremos ese tiempo para arreglar todo lo que tenemos aquí dentro. Entonces, ¿cuál es el problema? Se puede ver que todo está funcionando. No tenemos errores. Pero el código es muy API. Se puede ver aquí mismo que tenemos esta actualización y esta actualización hace mucho, y esto no es algo que queremos un par. Y el jugador, se puede ver jugador controlador. Tenemos muchas líneas de código y son desordenados. ¿ Qué pasa aquí dentro? ¿ Qué hacemos? ¿ Deberíamos hacer una jugada para reproducir lo que está pasando aquí dentro. Entonces vamos a, por supuesto, arreglar esto creando o utilizando nuestros nuevos conocimientos encontrados de creación de métodos. Lo que podemos hacer es, por ejemplo, digamos ¿por dónde está caminando el jugador? Entonces este es el movimiento que normalizamos, damos velocidad. Por lo que desde la primera línea hasta esta línea, estamos moviendo al jugador. Sigamos adelante y seleccionemos todos estos. Voy a seleccionar estas líneas. Voy a hacer clic derecho. Y se puede ver aquí mismo que tenemos las acciones rápidas y refactorización. Entonces cuando hago clic en él, se puede ver que nos da la opción de extraer un método. Voy a dar click en Método Extraer y ahora tienes un nuevo método. ¿ Cómo quieres llamarlo? Llamémoslo el jugador en movimiento. Hit Enter. Entonces ahora se puede ver que todas las líneas se han ido, pero están almacenadas en este método poco inteligente, muy práctico aquí abajo. Entonces ahora sabemos que empezamos moviendo al jugador y luego tenemos todo esto. Entonces lo que pasa aquí, la posición del ratón y el punto de pantalla, calculamos el desplazamiento, obtenemos el ángulo, giramos el brazo y luego comprobamos si debemos ir de una dirección a el siguiente. ¿ Qué más tenemos aquí? Separemos en primer lugar , el tiroteo. Entonces vamos a separar el tiroteo. Y cómo llamamos a esto el jugador en movimiento. Y llamemos a esto el tiro de capa entrar. Eso se llama así en lugar de mover jugador. Eso se llama así, el jugador Moverse y controlar RR, claro. ¿ Y cómo queremos separarnos? Podemos llamar a esto animando al jugador si queremos. Y podemos llamar a éste poniendo al jugador en la dirección correcta. Y éste lo será. Pero, por ejemplo, ¿cómo debemos llamar a esto? Entonces honestamente, todo esto se basa en tu preferencia. ¿ Cómo lo quieres hacer? Entonces voy a llamar a esto el clic derecho. Y se llama el señalador. Señalando en nuestro caso. Por lo que obviamente se puede ver aquí mismo lo que pasó. Tenemos esta posición más alejada y fuera punto de grito. Eso significa que estamos devolviendo estos valores. ¿ Por qué los estamos devolviendo? tanto? Porque usamos el punto de pantalla en algún otro lugar de nuestro código. Eso se acaba de decir aplicar por ahora, haga doble clic en punto de flujo y ahí lo tienes. Se puede ver que estamos usando la posición del ratón y el punto de pantalla en esta condición si. Pero lo estamos calculando dentro del punto en apuntar. Yo no cambié el nombre. Para que veas aquí es donde calculamos y aquí es donde lo necesitamos. Entonces creamos esto fuera, pero no quiero esto. Siento Es un poco malo. Ups. Demasiado. Control Z, capa. Mudanza entrar. lo guardamos. Ahora sigamos adelante y usemos todos estos hacemos clic derecho. ¿ Y cómo llamaremos a este enorme método? Lo llamaremos, ¿qué hacemos aquí dentro? Apuntar con arma de fuego al ratón, a Enter. Por lo que necesitas el nombre del método para describir lo que está sucediendo. Y por último, podemos decir que esto está animando al jugador Extract Method. Animating V player hit Enter and whoa, qué enorme diferencia que acaba de hacer ver seriamente la actualización, qué tan limpia está ahora, sabemos que el jugador se está moviendo. Está apuntando con el arma al ratón. Estamos animando al jugador y el jugador está disparando. Y tal vez incluso puedas extraer un método extra dentro de las pistolas señaladoras para que sea aún más limpio. Porque por ejemplo, lo que estamos haciendo aquí es que estamos, puede estar girando o apuntando al jugador en la dirección correcta. Incluso puedes extraer estos dos métodos, incluso hacer esto más limpio. Por lo que su tiempo como reto, les voy a dar la libertad de extraer los métodos en el controlador del NMI. Y te veré en el próximo video donde ya habré hecho esto. A lo mejor te mostraré lo que quieras. Hazlo tú mismo, diviértete. Aquí no hay presión. Simplemente ten esta práctica de hacer las cosas por tu cuenta. Por supuesto, te mostraré los resultados más adelante, pero espero que lo disfrutes y te veré en el siguiente video. Nunca olvides cometer tus cambios. Mi cuerpo. 32. Diseño de juegos: Bienvenidos de nuevo, mis compañeros futuros desarrolladores de juegos. ¿ Por qué dije futuros esta vez no como las palabras regulares que digo. Bueno, porque este es el video donde decides si quieres convertirte en un verdadero desarrollador de juegos o solo quieres seguir los pasos que hago. Porque este video, todo lo que hacemos, extremadamente sencillo. Ya lo hemos hecho. Ya lo hemos hecho todo. No hay nada nuevo que aprender. Este video se trata de usar tu imaginación y entrenar esos músculos de desarrollador de juegos que tienes. Te he dicho todo el tiempo que necesitas sumar tu propia creatividad y al juego. A este punto, siempre has estado siguiendo lo que he hecho al 100%. Este es el momento de pensar realmente en diferentes formas que puedes usar o en diferentes diseños de juego que puedes usar en tu juego. Entonces sin más preámbulos, no perdamos más tiempo y empecemos. Hey, bienvenido de nuevo. Por lo que este video es todo sobre el diseño de pandillas. No va a ser muy largo. Simplemente va a ser un ejemplo de cómo te gustaría diseñar tu ganancia. Entonces obviamente ahora mismo ya sabes que cuando el enemigo nos está disparando, a medida que te acercas, puedes ver que podemos disparar sus balas cada vez que el disparo hacia nosotros. Está bien, genial. Ahora bien, eso ya es suficiente. Pero y si el tiempo entre tiros es, digamos 0.1 del juego otra vez. Por lo que se puede ver ahora mismo que las balas del enemigo se están destruyendo. ¿ Por qué? Porque así es como hemos configurado las capas. Y una cosa más también, si seguimos adelante y tratamos de venderlo de nuevo a uno, vale, Así que el enemigo dispara flechas. Veamos qué está pasando. 0 veces 0, 0 saber, de vuelta aquí elegimos al enemigo. Si los ponemos, se puede ver ahora mismo que el enemigo empieza a dispararse a sí mismo. Ahí vas. Se puede ver que la bala del enemigo en realidad lo mata. Entonces, ¿cuál es el punto completo de este video? Es para emitirte este reto. Y tu reto va a ser crear una capa de bala enemiga. Entonces crea una capa de bala enemiga, asígnala a las balas enemigas o a las balas, obviamente la, sea lo que sea, la espada o tal vez has creado la tuya propia, no lo sé. Y luego decide si quieres que las balas enemigas interactúen con las balas de los jugadores en función de tu juego. Si quieres que los enemigos balas maten al enemigo. Si quieres que las otras balas enemigas interactúen con balas enemigas. Al igual que este es el punto en el que decides cómo quieres que se vea tu juego. A lo mejor enemigo matándose si son estúpidos, es una buena idea a voluntad potenciará el realismo o la sensación del juego mejor que tener la bala simplemente atravesando al enemigo. A lo mejor no quieres que tus balas destruyan las balas de los enemigos. Por lo que esto agregará un juego más desafiante a tu juego. Tómate el tiempo para pensar en todas las formas en que Sure game puede desarrollarse. Entonces con eso dicho, pausa el video ahora mismo, ve al reto. De acuerdo, bienvenido de nuevo. Entonces voy a seguir adelante y añadir una capa aquí dentro la cual será la entrada de balas enemigas. Ve al flanco, el esqueleto ordena como las balas enemigas. Vayamos a la Edición. Comprobemos la configuración del proyecto. Las balas enemigas no deben interactuar con las balas enemigas, y las balas enemigas no deben interactuar con el enemigo, pero no tenemos una capa enemiga. Bueno, sigamos adelante y añadimos, si reviso al enemigo, éste debería ser el enemigo esqueleto. Entrar. Adelante y lo prefabricado. Vamos a crear una nueva carpeta para las prefabs enemigas. Porque a lo mejor solo quieres crear otro más adelante. Ahí vas. Pongamos su capa como la, vale, no hemos creado la capa. El enemigo golpeó Enter. Selecciona al tipo. Y hagámoslo sí, cambiemos de niños salvo eso, ejecutemos el juego. Entonces ahora si nuestro enemigo esqueleto tiene un tiempo entre disparos de 0.1 y veamos cómo se ve eso. Ahí vas. Dispara muchas balas y no se destruyen a sí mismos. Son feos, pero no se destruyen a sí mismos. Es decir, detengamos esto por un segundo. Mantén esto a la una. A lo mejor aumentar el alcance del fuego. Entonces su rango de casos, ¿dónde está el campo de tiro? Ahí vamos. Incrementarlo un poco. Yo no movería al jugador al rango. Y voy a seleccionar el, ¿dónde está el enemigo? Yo lo voy a mover frente a las balas. Entonces se está destruyendo a sí mismo con las balas z Está bien, así que sigue siendo. Por lo que necesitamos ir agregados ajustes del proyecto. Y el enemigo no interactúa con las balas enemigas, o tal vez el enemigo ni siquiera interactúa con el enemigo. Entonces te va a ti, ¿cuál es tu preferencia? Te dije que vas a estar agregando tu propia creatividad y al juego. Este es el momento si aún no has hecho nada, haz algo diferente a mí. Trata de hacer los retos todo el tiempo. Asegúrate de que intentes lo mejor posible cada vez que puedas llegar a un código que es mejor que el mío no está recibiendo. A veces consigo sugerencias, sugerencias de estudiantes que son increíbles y cosas que ni siquiera he notado. Por lo que siempre te recomiendo que vayas a hacer lo mejor que puedas con eso. Espero que disfruten. Si aún no has dejado una reseña, hazme el favor, haz la revisión, asegúrate de que siempre cometes tus cambios. Me ayuda mucho cuando dejas una crítica en deja a todos saber que este es un buen curso. Vale la pena ver. Espero que estés disfrutando y te veré en el siguiente apartado, quizá sea donde empecemos a configurar el sistema de salud si no me equivoco. Entonces dicho eso, nos vemos en el siguiente video y sección. 33. Sección 5: crear habitaciones - introducción a la unidad en la unidad: Bienvenido de nuevo a mis compañeros desarrolladores de juegos. Y como se puede ver por primera vez, en lugar de seguir adelante, hemos retrocedido y ya no tenemos antecedentes. Simplemente tenemos este extraño mundo frente a nosotros. No te preocupes por ello. Tenemos las herramientas adecuadas para resolver este problema. Entonces como pueden ver en este momento, no sólo tenemos antecedentes, sino que podemos dibujar nuestro propio trasfondo. Puedo agregar lo que quiera. Yo quiero sumar este y nuestro mundo. Nope manera. Voy a añadir éste y actualmente no es perfecto, pero funciona. Entonces voy a, por ejemplo, a este y hagámoslo en el suelo. Ahí vas, con un poco de espacio azul detrás de él, pero sin preocupaciones, estaremos arreglando eso más adelante. Pero por ahora, vamos a entender cómo convertimos los sprites y a los activos de mosaico en paletas biliares, en dibujarlos en la pantalla, como se puede ver, extremadamente profesionalmente. Entonces, no perdamos más tiempo. Y empecemos. Ah, está bien, Así que ahora tenemos un jugador sólido, tenemos un enemigo sólido. Tenemos balas, tenemos capas, Tenemos efectos, tenemos animaciones, tenemos todo. Lo que no tenemos es el control sobre la creatividad de nuestro juego. Por lo que actualmente todo lo que hemos creado está justo en este fondo. Ya es bastante bueno. Tenemos los planeadores de caja, tenemos todos los límites en ella, pero no es suficiente. ¿ Y si queremos crear nuestro propio nivel? Obviamente, no podemos simplemente ir en busca de diferentes orígenes. Esto es lo que haremos en este video y en toda esta sección. Ahora, vamos a dar click en el conjunto de fichas. He creado una carpeta dentro de los sprites llamada el conjunto de pila. Voy a entrar a los recursos y voy a usar las catacumbas. Obviamente, si quieres usar un conjunto de azulejos diferente, sí te recomiendo que vayas a hacer algunas investigaciones sobre arte de juego abierto y añades las tuyas propias. Entonces ahí vamos. Ahora hemos agregado la carpeta. Si abro esto o tal vez debería abrirlo desde aquí y mostrarte un par de cosas. Para que veas que tenemos estas velas, tenemos un sprite. Aquí tienes. Se puede ver que este es el sprite. Es exactamente el que se usa en el fondo. Y en realidad he creado una, luego usé una captura de pantalla y la convertí en un fondo. Pero ahora aprenderemos a usar estos cuadrados para crear un mapa. También tenemos las decoraciones, y te he dejado, digamos capturas de pantalla o imágenes y los recursos que puedes revisar y ver cómo se crea el mundo. Entonces, sin más ni hacer, ¿cómo vamos a hacer esto? Lo primero es que vamos a entrar a la ventana. Vamos a entrar en 2D. Y se puede ver aquí mismo que tenemos algo llamado la paleta de azulejos. Entonces voy a dar click en esto y lo voy a agregar aquí. ¿ Y qué es la Paleta de Azulejos? Bueno, es la herramienta que tiene Unity la que nos permitirá dibujar diferentes tipos de, digamos estos sprites o los azulejos o los activos del azulejo. Y tal vez estás confundido. ¿ Qué vamos a hacer? ¿ Cómo vamos a convertir esta imagen aquí mismo y dos fichas y empezar a unirnos? Bueno, déjame explicarte usando mi astuto láser. Entonces lo primero que tenemos la lámina sprite. Ya has visto esto, te has dado cuenta mientras te estaba mostrando tenemos la hoja de sprite. Lo que haremos es que vamos a cortar la hoja de cálculo. Y vamos a tener rebanadas de esta lámina sprite. Después de tener las rebanadas, lo que haremos es convertirlas en activos de teselas. Y después de convertirlos en activos de azulejos, los vamos a tener en nuestra paleta de azulejos. Entonces solo resuelves la paleta de azulejos que acabo de agregar. También lo verás en solo un poco cuando convertamos nuestro sprite y a éste. Y por último, los dibujaremos y agregaremos al enemigo y crearemos todo tipo de cosas geniales. Por lo que antes de continuar, solo quiero mostrarles el reto ahora mismo. No debería, pero lo haré porque ahí está el primer paso aquí lo cual es importante lo que otros sprites y azulejo elijas usar para tu ganancia. Entonces si no te gustan las catacumbas, tal vez no sea tu estilo, no es parte de tu juego. A lo mejor tienes diferentes jugadores enemigo es que necesitas un ambiente diferente. Yo sí lo recomiendo cierto. Ve a buscar sprites 2D. A lo mejor tener, no sé, alguna ciudad futurista de ciencia ficción. A lo mejor puedes crear las tuyas si eres así de bueno, entonces necesitas dimensionarlas. Y finalmente añadido a la Paleta de Tile y crea tu nuevo conjunto. No voy a decir pausa el video porque ahí vas. Es bastante sencillo. Estas son las instrucciones del reto. Yo lo voy a hacer frente a ti. Entonces primero que antes, necesitamos rebanar este mapa de teselas. Y esto es algo complicado de hacer porque a veces no obtienes la mejor calidad y necesitarás determinar cuánto o cuál es el tamaño de estas rebanadas. Entonces si trato de hacer automático, Ahí tienes, puedes ver que es una especie de rebanada, pero no puedo agregar, por ejemplo, una parte de esto o un pequeño cuadrado de estas piezas. Entonces lo que tendré que hacer es que voy a tener que seguir adelante y elegir en lugar de cuadrícula automática por tamaño de celda. Y voy a usar, Vamos primero a probar 64 por 64. Cuando rebano esto, ahí tienes. puedes ver ahora tenemos rebanadas adecuadas, pero no son lo suficientemente buenas porque digamos que quiero dibujar esto, necesito recoger estas cuatro rebanadas y ves que ésta no está sola. Tendré que elegir a estos dos. Por lo que necesitamos hacerla aún más pequeña. Y sé el tamaño. Debería ser, creo, 16 por 16. Y si lo rebano, Ahí tienes. Se puede ver que tengo mucho más control sobre cómo funciona todo esto. Y se puede ver cómo se rebanan éste, cómo se cortan todos estos. Son lo suficientemente buenas, no perfectas, pero son lo suficientemente buenas, creo que tal vez si tienes las habilidades, puedes seguir adelante y añadirlas tú mismo. Ver qué funciona, ver qué no. Pero sí te recomiendo que las guardes todas 16 por 16 y verás por qué en tan solo un poco. Entonces voy a aplicar esto. Y obviamente si descargaste tus propios sprites, entonces tendrás que, por supuesto, encontrar tu propio tamaño de corte. Y por alguna razón hoy la unidad es extremadamente lenta. Entonces he aplicado los cambios, he rebanado todo. Entonces ahora cuando salgo de la Editora Sprite, ahí tienes. Se pueden ver todos los azulejos. Ahora bien, ¿cuál es el siguiente paso? El siguiente paso es seguir adelante y añadirlos a la Paleta de Azulejos. Entonces ahora lo hemos cortado todo. El siguiente paso es crear los activos de teselas y tenerlos en la Paleta de azulejos. Entonces lo que voy a hacer es que voy a recoger estos rebanados Sprite y voy a arrastrarlo a la nada. Necesitamos en primer lugar, crear una paleta. Entonces, ¿cuál será el nombre de la paleta? Sólo llamémoslo las principales catacumbas. Catacumbas, así es como escribimos las catacumbas crean. ¿ Dónde debemos crear esto? Bueno, puedes agregarlo ya sea en los sprites o puedes seguir adelante y crear un nuevo activo aquí, que será el conjunto de archivos o paleta de mosaicos o como quieras llamarlo, entra, selecciona la carpeta, y ahí tienes. Ahora puedes arrastrar esto. Para que puedas arrastrar toda la imagen, así que arrástrela a la paleta de mosaicos justo aquí. ¿ Dónde quieres guardarlo? Por supuesto, esta también es tu elección, pero lo haré es entrar en el conjunto de teselas aquí, y llamaré a esto la carpeta Activos de archivos. Y dejémoslo solo en los sprites porque ya lo hemos ignorado. Y creo que es mejor ignorar los conjuntos de teselas porque ya dependen de los sprites. Por lo que depende de ti. A lo mejor si quieres conservarlos, si quieres asignar un poco más de recursos en tus commits, te recomiendo que hagas eso. Si no, voy a seleccionar esta carpeta. Y ahora se puede ver que los sprites se están convirtiendo en activos de teselas. Entonces usaré el poder de edición y lo haré en un segundo. Oh, bien, bienvenido de nuevo. Entonces ahora tenemos todo preparado. Si hago esta paleta de azulejos un poco más grande, ahí tienes, puedes ver todos los sprites que inicialmente estaban aquí están ahora mismo. Aquí. Ahora, puede que hayas encontrado muchos problemas aquí, sobre todo si intentas hacer algo diferente de 16 por 16, notarás que todos están encima el uno del otro. Es una cosa un poco complicada de agarrarse. Lo que recomiendo es tener siempre todos los sprites rebanados del mismo tamaño para que no tengas ninguna confusión y arrastre toda la imagen, no cada uno 11 por uno. Entonces ahora tenemos esto. ¿ Cómo empezamos a dibujar? Bueno, se puede ver que tenemos una paleta, tenemos los activos, pero el mapa de archivos activo no es nada. Entonces lo que vamos a hacer es que voy a hacer clic aquí y voy a entrar en el objeto 2D. Por lo que he elegido la jerarquía a los objetos, y se puede ver que tengo la opción de crear un mapa de teselas. Y tengo muchas opciones. Puedo crear isométrica, rectangular x, ordinal, y etcétera. Pero voy a hacer es crear un mapa de pila de forma rectangular. Y puedes ver de inmediato que tengo un mapa de teselas activo aquí mismo. Y lo que puedo hacer es que en realidad puedo duplicar esto y tener un segundo mapa de teselas. Y puedo llamarlo, por ejemplo, el suelo. Y puedo llamar a éste los muros. Y ahora puedo elegir entre las paredes y el suelo. ¿ Y por qué es esto importante? Porque más adelante necesitaremos diferentes niveles a nuestro juego. Ya verás que en el siguiente video cuando empecemos a añadir colisionadores y etcétera. Pero por ahora, lo que vamos a hacer, vamos a salvar la escena muestral. Y voy a entrar en la carpeta de escenas. Y se puede ver esta es la escena muestral. Voy a llamar a esto el tal vez prueba uno o algo o puedes llamarlo nivel uno, como quieras. Yo lo llamaré el mejor. Nos pedirá que recarguemos. Recargar. Voy a ir a no estoy seguro. Mantengamos la grilla aquí mismo. Y voy a duplicar esa. Por lo que ahora tenemos esta herramienta. Vayamos a la prueba2. Se puede ver el nombre del cambio de escena aparece, por lo que fue prueba uno. Ahora son dos. Voy a borrar el fondo. Entonces ahora tenemos al jugador y al esqueleto apenas flotando en medio del aire. Y ahora lo que vamos a hacer es que voy a seleccionar la grilla, voy a elegir el suelo por ahora. Mantengamos todo en el suelo y voy a empezar a dibujar. Entonces, ¿qué debemos usar como tierra? Se puede ver que este es el, y te recomiendo que vayas a mirar a través de las imágenes. Te he dejado los ejemplos que puedes seguir. Pero por ahora, primero lo primero es que vamos a dibujar el suelo. Podemos elegir entre uno de estos ahora, obviamente no está muy bien. Pero no se preocupe. Hablemos de un par de herramientas que tenemos aquí. Entonces, antes que nada, siempre que quieras escoger, asegúrate de saber en qué mapa de teselas estás. Sabrás por qué en el próximo video. ¿ Por qué es tan importante esto? Elige una de las fichas. Entonces voy a elegir estos cuatro. Y ahora se puede ver que simplemente puedo hacer clic aquí, pero son muy pequeñas. Entonces lo que siempre hacemos, iremos al conjunto de teselas, iremos a la imagen que hemos usado. Y vamos a terminar con el Inspector. Hagámoslo 50. Aplicar los cambios. Veamos qué tan grande se vuelve eso. De acuerdo, entonces no es suficiente. Hagámoslo 16. Aplicar los cambios y éstos deben llenar toda la plaza. De acuerdo, ahí vamos. Por lo que cambiamos el píxel por tamaño. Pixeles por unidad, tal vez incluso ser, deberíamos hacerlos aún más grandes porque se puede ver aquí mismo, hay una pequeña línea azul delgada que no queremos. Entonces hagámoslo alrededor de los 15. Aplicar los cambios. Y ahí vamos. Entonces ahora ya no tenemos más de estos contornos. Está bien, genial. Vamos a asegurarnos de que sean filtros de punto aplicar. Por lo que se volverán mucho más crujientes. De acuerdo, ahí vamos. Ahora de nuevo en la Paleta de Tile, Vamos a alejarnos. ¿ Qué tenemos aquí dentro? Tenemos el suelo, tenemos los diferentes azulejos, y tenemos las herramientas que aparecen. Entonces si pasas por encima de ellos, puedes ver qué significan cada una de esas herramientas. Este para el selecto, éste se puede utilizar para el movimiento. Pero los tres más importantes, creo, es el pincel. Entonces el pincel, ¿cómo funciona? Entonces por ejemplo, lo que quieras aquí mismo, obtienes el pincel y ahora puedes pintarlo en tu escena justo aquí entre las plazas. Por ejemplo, puedes usar también esta pintura, una caja llena. Entonces lo que puedes hacer es elegir uno de esos o puedes elegir múltiple obviamente. Y luego puedes crear este tipo de look, puedes crear todo este mapa usando éste. Por lo que es una herramienta muy poderosa para dibujar más rápido. Entonces ahí tienes, puedes ver, puedes crear mucho más, mucho más rápido, pero no es muy preciso. Entonces, ¿qué más tenemos? Tenemos el pico o marquesina selecto. Nunca lo he usado honestamente, el relleno de inundación nunca lo usó. Y las matrices, que es muy importante. Entonces, ¿cómo se hace esto? Tienes igual que las matrices y si quieres, puedes elegir un cuadrado grande, seleccionar el borrador, y ahí tienes, puedes quitar todo. Entonces con eso hecho, espero que hayas entendido lo que hicimos. Espero que hayas entendido cómo convertimos de los sprites a la rebanada, a los activos de teselas, a la Paleta de Azulejos. Y finalmente cómo estamos creando el mapa de mosaico. Pero por ahora, te voy a dejar a tu propia creatividad. Así que pausa el video ahora mismo e intenta crear un mapa de pila o azulejo o cualquier mapa que quieras. Pero por ahora, no te tomes demasiado tiempo porque en el siguiente video, vamos a crear dos mapas de teselas diferentes. Y usando esos mapas de teselas, vamos a entender por qué necesitamos diferentes mapas de teselas para diferentes niveles. Y otra vez, para que ninguno. Espero que lo disfruten y los veré en el siguiente video. 34. Colliders: Hey, bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Entonces como puedes ver lo que te he prometido que lo vamos a hacer un poco mejor. He cumplido mi promesa. Ahora cuando ejecutemos el juego, notarás que no hay manchas azules, ni líneas azules. Y si caminaba, traté de caminar por esto. Es un muro. Si me acerco, Es un muro. Obviamente, tenemos un par de cosas que podemos cambiar. Si miras de cerca en modo Escena, obviamente, aún no es perfecto, pero puedes ver cuando disparo un muro, es un muro desde atrás, desde el frente, y el enemigo aún nos persigue. Todo está bien, todo funciona bien. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Entonces ahora que hemos configurado todo el tiempo para usarlo de una manera adecuada. Entonces lo primero que necesitamos entender es el mapa de teselas y lo que hace el inspector de ese mapa de teselas. Por lo que hemos creado los muros, el suelo, y se puede ver que también tienen, cada uno de ellos tiene un componente de mapa de azulejos y un renderizado de mapa de azulejos. Debido a que el renderizador de mapa de teselas funciona igual que el renderizador sprite, también podemos elegir una capa. Entonces, por ejemplo, puedo ir al suelo y elegir el fondo de capa, las paredes, el fondo de capa. Y puedo hacer, por ejemplo, las paredes una y la Zona Cero. Puedes jugar por ahí si quieres. Incluso puedes crear tu propia capa de clasificación dependiendo cuántas cosas quieras estar en primer plano o fondo. Entonces voy a, en primer lugar, borrarlo todo o borrarlo todo, ¿debo decir? Entonces lo borro todo y se puede ver por qué esto no se borra. Entonces déjame solo hacer la pantalla más grande. ¿ Por qué esto no consigue un aumento? Bueno, porque estamos usando ¿dónde está? El mapa de teselas activo es el suelo. Por lo que sólo podemos eliminar las cosas que están en el terreno. Si elijo las paredes. Ahí vas. Ahora puedo borrarlo porque cuando creé esto, usé muros. Entonces, solo hagamos una pequeña prueba. Ahora que tenemos la configuración de las capas de clasificación, voy a crear esta gran plaza aquí mismo, que es, oops, no el suelo, discúlpame, el suelo. Y ahora voy a crear este pequeño terreno aquí mismo. Y ahora si me meto en las paredes y sigamos adelante y sumamos éste. Entonces, ¿recuerdas por qué teníamos las líneas azules antes? Porque teníamos estos contornos aquí mismo. Se puede ver que son transparentes, por lo que sólo reflejan lo que estaba atrás. Entonces ahora porque estos son, déjame dar click en este. Entonces ahora porque esto son los muros y los muros se renderizan frente al fondo. Cuando los pongo aquí, ahí vas, puedes ver que ya no hay líneas azules detrás de las cuales representen el color del fondo de la cámara. También puedo hacer esto aquí mismo. Entonces voy a seleccionarlos. Y se puede ver porque son muros, inmediato puedo dibujar encima de ellos. Pero se puede ver ahora mismo a la inconsistencia, cómo hago yo, por ejemplo, la sequía es tener un tercer muro continuo y cuarto muro. Bueno, en ese caso, tendremos que seleccionar algo diferente, que son estas líneas aquí mismo. Y ahora podemos sumar la ilusión o crear la ilusión que tenemos. Permítanme simplemente crear la ilusión de que tenemos todos estos conectados juntos. Y si miras en el juego, si corro el juego, También, no importa. Déjame hacer más grande esta ventana de juego. Ahí vas. Se puede ver cómo se ve todo eso, se ve como si tuviéramos todo normalmente configurado y solo podemos correr el juego y caminar por ahí. Y luego te vas, puedes ver que yo puedo caminar encima de esto. Todo funciona perfectamente bien. Pero el problema es que ahora puedo caminar por las paredes y esto no suele ser un problema enorme, pero tener a tu jugador se vaya para siempre más, además cuando estamos disparando, puedes ver que las balas seguirán yendo para siempre porque no están interactuando con nada. O ya no tenemos más muros, no están interactuando con los muros. Entonces, ¿cómo vamos a arreglar esto? Bueno, podemos seguir adelante y empezar a agregar colisionadores y todo eso bueno. Pero obviamente esta no es la solución más eficiente para resolver el problema. Lo que podemos hacer, por otro lado, agregar algo llamado colisionador de mapa de teselas. Entonces si voy a las paredes, y por eso hemos creado muros, no sólo el suelo. Acude al Inspector. Puedo agregar un componente aquí que va a ser el colisionador de mapa de teselas 2D. Y ahí tienes. Se puede ver que ahora todo debajo de las paredes tiene el colisionador verde sobre él. Y se puede ver que se están cruzando. ¿ Por qué? Porque los hicimos un poco más grandes que ¿dónde está la imagen? Ahí vas. Los hicimos sólo un poco más grandes que 16. Nosotros los hicimos 15. Si los hago 16, creo que podemos empezar a ver grietas entre cada sprite. ¿ Ahora sabes qué? Se ve lo suficientemente bien. Creo que no hay discrepancia en. De acuerdo, así que vamos a mantenerlo a los 16. Por lo que cambié los píxeles por unidad a 16. Y ahora si elijo las paredes, todavía hay una intersección, pero eso está bien, eso no es un problema enorme. Permítanme simplemente demostrar que esto funciona. Entonces ahora si corro, puedes ver que golpeo una pared y ya no puedo pasar por ella. Excelente, todo está funcionando. Están en la capa predeterminada. Puedes cambiar la capa si quieres también de cada mapa de teselas. Pero ahora hay algo que necesitamos agregar esto, agregar este planeador no es suficiente. Lo que hacemos es que necesitamos agregar algo llamado planeador compuesto. ¿ Por qué? Déjame mostrarte cómo eso cambiará todo y lo entenderás tú mismo. Entonces ahora que he agregado un Collider compuesto, notarás que también agregué un automáticamente un cuerpo rígido. Por lo que se requiere un cuerpo rígido cuando se tiene un colisionador compuesto. Y si miras justo aquí en el colisionador de mapa de azulejos, puedes ver que tenemos algo llamado usado por la brújula. Si enciendo esto, ahí tienes. Ya ves que ya no tenemos muchos planeadores. Eso significa simplemente hacer eso de nuevo, desmarcar EU por compuesto notará que tenemos muchos colisionadores. Cuando sí uso el compuesto, sólo tenemos un colisionador en todas las formas. Esto es extremadamente útil. No puedo enfatizar el hecho de cuánto esto ahorra energía y potencia computacional de nuestro cómputo. Esto nos permitirá crear un solo colisionador alrededor de una gran cantidad de planeadores enredados. Así que asegúrate de agregar un colisionador compuesto 2D con eso. Entendido. Ahora, es hora de un pequeño reto. O antes de que hagamos eso, solo quiero correr el juego para tal vez hacerte entender cuáles son los retos. Si corro el juego. Y ahí tienes, puedes ver que algo definitivamente está en serio hacer de esta parte de tu juego algo, en algún tipo de mecánica del juego. Por lo que el jugador juega con el juego y con el mapa. Entonces oye, el, déjame simplemente alejar un poco para que veas que el mapa no se está comportando completamente como debería ser. Creo que eso es una subafirmación. Déjame solo tratar de empujar eso y ahí tienes. Entonces ahora ya no tenemos un mapa y sigue cayendo tan bien que entendió. Fuera del camino, esa cosa que pensaríamos que no estoy arreglada el problema fue el siguiente mapa. Si no quieres ningún indicio, ya sabes arreglarlo. Pausa el video ahora mismo, ve al reto. De lo contrario, revisa el inspector en el mapa de azulejo, verás un cuerpo rígido. Esto significa que tenemos una gravedad que se está aplicando. Ya sea eliminar la escala de gravedad o aún mejor, puedes hacer que todo el objeto sea cinemático o estático. Yo recomendaría estática porque estática significa que nunca se moverá y obviamente nuestro mapa no debería moverse a menos que quieras, no sé, agregar el mapa giratorio. Cosa extraña que acabamos de experimentar. Entonces con eso hecho, pausa el video ahora mismo, ve a hacer el caldeo. De acuerdo, bienvenido de nuevo. Entonces, ¿cómo te pusiste con eso? Voy a seguir adelante y mientras que las paredes cuerpo rígido hacen lo estático, corre el juego. Y ahora deberíamos ver que ya no hay nada cayendo y todos los colisionadores funcionan perfectamente bien. De acuerdo, con eso hecho, espero que lo disfruten. Y en el siguiente video, asegúrate de crear algún tipo de mapa. Debería ser más grande que la cámara porque estaremos implementando un campamento de otoño. Entonces, ¿por qué es eso? Bueno, si digamos agregar un poco más de terreno aquí, asegúrate de que tenemos el terreno seleccionado. Yo agrego el suelo. A ver si hago de esto un terreno enorme. Yo dirijo el juego. Yo quiero poder caminar por nuestro mapa y pista, al igual que el juego que vimos al principio. Por lo que quiero tener la libertad de caminar. Pero obviamente, si miro en el menú de juegos, no puedo ver nada. Lo puedo ver en el modo escena. No lo puedo ver en nuestro juego. ¿Por qué? Porque la cámara aquí mismo, puedes ver, déjame solo esta es la cámara, esta es la cámara principal, así que tendremos que moverla para que siempre podamos seguir al jugador. Y eso es algo que vamos a aprender en el próximo video cuando se trata de cine, espero que estés disfrutando, espero que siempre estés cometiendo tus cambios. Y espero que hayas dejado una crítica porque me ayuda mucho. Nos vemos en el siguiente video. 35. Crear una habitación más grande (Cinemachine): Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, lo que hemos hecho es cuando corremos nuestro juego, te darás cuenta de que mientras estamos caminando por ahí, podemos pasar por toda la habitación y la cámara nos sigue. Y lo hacemos usando algo llamado la máquina del Senado, que es una herramienta extremadamente poderosa que vamos a estar implementando en este video. Entonces, no perdamos más tiempo. Y lleguemos a crear estos cines. Whoo, Mira qué guay es eso ahora, nuestro juego es mucho, mucho más bonito, se siente mucho más profesional, ¿no? Cuando tengas una cámara siguiendo, No perdamos más tiempo. Empecemos. De acuerdo, así que bienvenido de nuevo. Como pueden ver, he creado una especie de mapa, una especie de mapa. Creo que eso acaba de hacer que esto me haga más grande. Por favor desacoplarlo, por favor. De acuerdo, ahí tienes. Abre esto. De acuerdo, Entonces este es el nivel que creé. No es mucho, pero funciona. Entonces como pueden ver, he añadido este par de ventanas. Espero que te tomaras el tiempo para jugar y entender cómo funciona todo esto. Me tomó alrededor de dos a tres horas de jugar alrededor, asegurándome de cómo se ve y funciona todo y así sucesivamente y así sucesivamente. Pero este es el resultado que tenemos. Ya puedes ver tengo un par de, vale, esto es un error aquí mismo, por ejemplo, puedes ver que he añadido mucho negro y el fondo. Ya sabrás por qué en tan solo un poco. He hecho las paredes justo aquí que no podemos cruzar. Y he hecho un par de paredes aquí mismo se infunden un par de cosas juntas para crear todas estas. Entonces un par de paredes negras, un par de causas naturales, erudito, incluso paredes rojizas y así sucesivamente y así sucesivamente. Pero el problema es que si hago más pequeña esta ventana, ponla aquí mismo. Phi 12, ejecuta el juego. Entonces ahí tienes. Si corro el juego, puedo andar por ahí y todo este mapa, pero no puedo verme en la vista del juego. Entonces imagínense si no tuviéramos la vista de escena, ¿cómo podríamos vernos a nosotros mismos? Y en realidad puedes probarlo. Puedes maximizar en el juego. Entonces cuando ejecutemos el juego, tendremos una pantalla completa. De acuerdo, entonces ahora quiero irme, pero ahí tienes. No se puede ver nada. En tanto que el jugador, por favor, oh, ahí tienes. Ahí estamos. Y ahora tratamos de disparar. Hay un poco de retraso, un poco de retraso, pero no se preocupe por eso. De todos modos, ¿cómo vamos a arreglar eso? Bueno, lo que podemos hacer es seguir adelante y adjuntar la cámara al jugador de la perdición y convertirla en un niño. Y recuerda que la cámara o un niño siempre se mueve con el jugador. Entonces si corro el juego ahora mismo, ahí tienes, problema arreglado ahorita tenemos un campamento de otoño. Espero que hayas disfrutado el video y te veré en el siguiente. Yo sólo estoy consiguiendo. Y lo que vamos a hacer es usar una técnica mucho más sofisticada para tener nuestro folículo. Entonces solo voy a quitar la cámara principal del jugador de la condenación, niño o padre, como quieras llamarlo, guarda eso. Y luego vamos a entrar a la ventana. El encargado de paquetes espera a que Riunite recoja nuestros paquetes. Y cualquier día ahora. Y aquí dentro vamos a entrar al Registro de la Unidad y vamos a encontrar esta máquina aquí mismo. Cuando encuentre algunas máquinas, simplemente haga clic en Instalar, espere a que se instale. Y cuando termine de instalar, puedes leer más sobre. Por lo que puedes ver aquí mismo es una herramienta de cámara inteligente para creadores apasionados. Muy bonito. Entonces haremos que aparezca esta pestaña extra, que es la máquina de cine. Y se puede ver que podemos crear muchas cosas con la máquina de cine. Y la que realmente queremos es crear una cámara virtual. Entonces hagámoslo. Vamos a crear una cámara virtual. Lo verás aquí mismo. El C y V Canvas simplemente lo llaman la cámara virtual. Hit Enter. Yo lo voy a poner justo aquí al lado de la cámara principal. Y en la cámara principal, voy a entrar al inspector. Y de inmediato puedo ver aquí mismo que hemos añadido algo llamado el cerebro de la máquina de cine. Y si aún no tienes este componente en tu cámara, asegúrate de añadirlo porque esto es lo que nos permitirá usar la cámara virtual. Entonces, ¿qué es la cámara virtual? puede ver que es sólo una transformación con este componente, que es una cámara virtual de máquina central. Ten esto en cuenta. Voy a abrirme y se puede ver que tenemos un montón de cosas que podemos agregar, podemos cambiar, podemos jugar. No voy a entrar en cada detalle aquí porque hay mucho. Lo que voy a hacer es que voy a primero que nada, haga clic derecho y la jerarquía. Y en realidad voy a poner esto todo 200 000. Y se puede ver que tenemos algo que acaba de desaparecer. Y lo que parece ser el problema aquí dentro, cámara virtual. Entonces la cámara principal. De acuerdo, entonces si entro en el modo 3D, notarás que cuando la z es 0 significa que está al frente, así que no podemos, en realidad estamos mirando desde atrás. Lo que necesito hacer es simplemente moverlo un poco. Atrás para que podamos ver la vista y puedes ver la cámara en 3D justo aquí. Estas líneas blancas representan lo que ve la cámara. Voy a volver a 2D, y luego voy en la cámara virtual. Se puede ver aquí mismo que tenemos una opción para el seguimiento y el objeto con el que la cámara quiere moverse o el cuerpo y el objetivo. Entonces, ¿cuál es el objeto que quiero mover con el jugador de la perdición? Entonces voy a añadir al jugador de la fatalidad, y voy a guardar todo eso. También asegurémonos de que tengamos estas cámaras muy bien emplumadas. Entonces voy a crear un objeto de juego vacío, restablecer su posición van a ser las cámaras. Y solo asegurémonos de que estas dos cámaras sean un hijo de las cámaras. Y ahora los tenemos configurados adecuadamente. Ahorra eso cuando corra el juego, Ahí tienes. Se puede ver que ahora tengo una cámara de seguimiento muy agradable que sigue al jugador a donde quiera que vaya. Pero hay muchas cosas que podemos cambiar usando esta cámara. Entonces voy a primero que nada, salir del molde de arcilla, asegurarme de que no maximizamos en juego. Y voy a entrar a la cámara virtual. ¿ Y qué son todas estas cosas aquí? Se puede ver que podemos cambiar esto de transponer a otras cosas. Como ya he dicho, Ve a buscar lo que todas estas cosas. Pero una de las cosas que principalmente queremos cambiar está descompuesta aquí mismo. Y se puede ver que se requiere el look. Se puede elegir algo diferente. Se puede elegir no hacer nada con el objetivo. Estas son todas las opciones que puedes usar. Y aquí dentro se puede ver que podemos cambiar esto a encuadre transponer. Entonces cambia el cuerpo a encuadre transponer. Si añades el lookahead, si añado el jugador de cúpula y la mirada hacia adelante, mira lo que cambia. Entonces ahora cuando juegue el juego, verás algo apenas un poco diferente. Creo que saber hasta ahora parece ser lo mismo. Puedes mantener la mirada por delante. Puedes cambiar, jugar con las opciones. Yo sólo voy a mostrarles las principales cosas aquí dentro. Entonces en el cuerpo, en primer lugar, se pueden ver las ventanas aquí mismo, los diferentes colores en el juego. Es porque el juego Windows guía aquí mismo en el Inspector, puedo encenderlos y apagarlos. Entonces, ¿qué tenemos? En primer lugar, tenemos la mirada adelante, tenemos el suavizado lookahead, tenemos la x amortiguación, amortiguación y así sucesivamente y así sucesivamente. Ni siquiera sé la mayoría de las cosas qué hacen exactamente. Pero un truco muy bueno que puedes hacer es que realmente puedes ir adelante y aumentar esto a su máximo y luego jugar el juego y ver qué pasa. Entonces como puedes ver, sí, ahí vamos. Por lo que la cámara es más rápida que el jugador. Y esto se debe a que la mirada por delante es muy fuerte. Entonces si suavizo la mirada hacia adelante, notarás que mientras estamos caminando las cámaras empiezan a moverse frente al jugador y está representado por este pequeño punto amarillo. Y aquí se puede ver que el punto predice a dónde está el jugador a punto de ir y pone la cámara para que vaya allí un poco más rápido que el jugador. Si lo pongo a 0, simplemente se moverá con el jugador a medida que va. Podemos aumentar el suavizado un poco más mirada hacia adelante suavizado. Entonces ahora puedes ver que es un poco más suave, un poco más agradable. Y eso, Ahí tienes. ¿ Qué más tenemos? Podemos ignorar la y, por lo que eso cambiará la forma en que se ve en la dirección y. Y veamos ¿qué más tenemos? Tenemos la amortiguación x, así que pongamos esto a 20 y veamos qué pasa. Entonces ahí tienes. Se puede ver que cuando el jugador golpea el lado rojo de este cuadrado o rectángulo, se puede ver que entonces la cámara comienza a moverse y si no, va lentamente, va lentamente a la x, o se puede establecer en 0. Y en ese caso, cada vez que nos estamos moviendo, es inmediatamente siguiendo la capa. Volvamos a ponerlo de nuevo a uno. Veamos qué más tenemos. Tenemos la amortiguación y, V, z amortiguación. A ver, tenemos la pantalla x. veamos si la movemos para poder jugar nuestro juego con el jugador pudiendo a la derecha. Podemos configurarlo para que esté en el medio, o podemos configurar la pantalla ancha para que esté en la parte inferior. Entonces ahí tienes. Tenemos la distancia de la cámara, que es un toque muy bonito, y actualmente no está funcionando. A lo mejor es porque la cámara de aquí mismo debería tener un tamaño más grande. No estoy seguro de cuál es el problema aquí. Y vamos a reiniciarlo. Entonces de vuelta aquí, restablece todo. Entonces vamos a mantenerlo a las 10. Tenemos el ancho de zona muerta. Entonces si aumento el ancho de la zona muerta en la y y en la x, mira lo que pasa. Si me muevo arriba y abajo e izquierda y derecha, se queda en su lugar. Y si salgo fuera de los límites, entonces empezamos a ir mientras la cámara empieza a ir con el jugador. Por lo que esto también es algo que puedes retocar y jugar. Y en realidad me gustaría hacerlo sólo un poco pequeño. Entonces, por ejemplo, si camino por ahí, no pasa nada y luego cuando empiezo a moverme, la cámara empieza a seguir al jugador. De acuerdo, hagámoslo alrededor del punto cero dos por 0.2. Y ahí vamos. Para que podamos movernos un poco. Pero cuando salimos fuera de los límites que las cámaras empiezan a seguirnos. De acuerdo, Muy bonito. ¿ Qué más tenemos? Tenemos la profundidad de zona que se intenta ponerla a 100, a ver qué pasa. No estoy seguro de qué hace exactamente. Pero vamos a mantenerlo en 0. ¿ Ves qué pasa ahora? Sí. Ah, está bien. Parece que cambia mucho. Creo Pongámoslo a 20. Nada, no pasa nada. Mantengámoslo a los 20. El ancho de zona blanda, creo que la Zona Sur es la plaza roja. Entonces si lo pongo a, digamos, siendo pequeño, ¿qué pasa entonces? Ni siquiera puedo salir afuera por el corazón o el ancho de la zona muerta. De acuerdo, no se preocupe por eso. Restablecer la posición. A ver tenemos el sesgo. Entonces, ¿qué pasa? De acuerdo, Entonces ahora la zona roja está sesgada hacia la zona azul, y puedes seguir adelante y buscar todos estos tú mismo. Y lo único aquí es esa cámara virtual como todo un mundo por sí misma. Entonces si quiero entrar en cada detalle, creo que necesito una sección entera por sí misma. Pero usar la máquina de Cine como una increíblemente poderosa y una de las herramientas más modernas que tenemos en nuestra posesión. Entonces sí te recomiendo lo que haces es jugar con todos estos ajustes. Ver qué funciona, ver qué no. Pero recuerda como viste ahora mismo, todos los cambios que hicimos retrocedieron o se restablecieron. ¿ Por qué? Porque todos los cambios que realizamos dentro del modo de juego se reinician después cuando dejamos de jugar el juego. Con esa información, te recomiendo que pases por la documentación de Unity de la máquina del Senado, veas qué pasa, veas qué puedes usar. Entonces, por ejemplo, tenemos algo llamado el ruido, que estaremos usando en un par de videos para hacer que nuestra mecánica de tiro sea un poco más impactante. Y se hizo eso antes de irme, déjame emitirte un pequeño reto y tu reto va a ser montar tu máquina. Así que juega con todos los ajustes que tienes en la misma máquina. El mejor modo de saber qué hace cada cosa es llevándolo al máximo y ver qué pasa entonces. Bueno, esa información, espero que la disfruten. Y en el siguiente video, vamos a estar creando las puertas o como quieras llamarlas, puedes llamarlas puertas, o puedes llamarlas los lugares donde nos movemos de un nivel a otro a los niveles de salida, como quieras llamarlos. Tan bien eso hecho. Espero que lo disfruten y los veré en el siguiente video. 36. Crear puertas cerradas (bucle de bucle para forcada: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Como puedes ver, hemos añadido un par de habitaciones a nuestro juego. Hemos añadido un par de caminos a nuestro juego ahora nuestro nivel, o en realidad debería haber dicho nuestro nivel. Ahora nuestro nivel se ve un poco muy bonito. Ya sabes que la máquina Cinna realmente sí le agregó algo de sabor al juego, lo que nos dio la capacidad de correr y hacer niveles más grandes y otros más interesantes. Pero eso no es lo único que es muy cool. Si corro el juego, mira la escena, puedes ver que ahora tenemos puertas que están bloqueando nuestro camino para movernos. Y estas serán las puertas que solíamos ir al siguiente nivel después de matar a nuestros enemigos, obviamente necesitamos matar a nuestros enemigos. Pero esto no es de nuestra preocupación ahora mismo. Posteriormente lo será. Pero por ahora, no perdamos más tiempo y empecemos. Y estaremos aprendiendo lleno de cosas increíbles, increíble 0 caso. Entonces vamos a seguir adelante y crear puertas. ¿ Cuáles son las puertas? Ya he creado la puerta, los puedes ver aquí mismo. Te daré la puerta y los recursos, pero es bastante sencillo. Todo lo que hice fue recortado ¿dónde está? El foto principal? El cuadro principal. Y solo usa la puerta que ya estaba disponible ahí. Entonces ahora podemos seguir adelante y agregar la puerta o sumémosla aquí. Entonces tenemos la puerta, ponemos la capa tal vez en el jugador o podemos establecer la capa en el, en una puerta separada. Y lo que van a hacer esas puertas es que va a seguir adelante y cerrar estos dos caminos que también he creado y no he hablado de esos. Entonces, ¿cuál es el punto de nuestro juego? ¿ Cómo vamos a pasar de nivel a nivel? Al igual que vimos en el juego del hades. Cada vez que matemos a todos los enemigos, tendremos estas dos barricadas. Tendremos esta puerta y una segunda. Entonces aquí dos puertas. Y cuando matemos a todos los enemigos, simplemente vamos a desactivar las puertas. Y esto permitirá a nuestro jugador moverse por y hasta el camino donde encontrará aquí dos portales y podrá atravesarlos. Pero no nos adelantemos a nosotros mismos. Primero que nada empecemos asegurándonos de que estas puertas funcionen y ¿qué más quería decirte? Ah, está bien. Entonces si entras en esa paleta de azulejos aquí mismo, puedes ver que podemos agregar estos dos anclajes o donde tú, estos caminos aquí. Pero el problema con estos caminos, si hago clic en la rejilla y pared, se puede ver que también evitarán que el jugador se mueva. Entonces, ¿a qué me refiero? Me he asegurado de que este es el suelo y estos son el muro. Y si yo, por ejemplo, corro el juego, verás que puedo caminar por todas partes. Y si paso por aquí, se puede ver que ya no puedo moverme. Y eso es porque tenemos un colisionador debajo y eso es algo que tendremos que arreglar para poder movernos por ellos, obviamente. Entonces, ¿cómo vamos a arreglar esto? Bueno, si entramos en nuestro conjunto de azulejos justo aquí, los conos, si nos desplazamos hacia abajo, podemos encontrar la imagen aquí mismo. Entra en el inspector, selecciona el Editor Sprite. Abre esto. Si vamos del Sprite Editor a la forma física personalizada, Vamos a hacer clic aquí. Se puede ver que si nosotros, Dónde está, ok, así el ancla y aquí, si hacemos click en uno de esos, podemos generar. Y ahora tenemos los puntos de anclaje de la física. Entonces así es como se renderizará el colisionador en este sprite. Entonces voy a asegurarme de que sea muy o ni siquiera diminuto. Me aseguraré de que sea alrededor de 0. Entonces acciona esto así, así, y finalmente, miente esto. Aplicaré los cambios y esperaré apenas un segundo. Tomará un poco de tiempo cambiar los colisionadores y el juego Además, podría que tengamos que volver a dibujar estos precio. De acuerdo, genial, Así que éste está terminado. Generemos en este bloque. También. Muévete aquí. No necesitamos moverlo hacia abajo como el del medio. Podemos simplemente moverlo a la derecha. Aplicar. Ahora el colisionador sólo estará de este lado. Y por último, encontrar cualquiera, cualquier día. Ahora, podemos dar click en el último, generar OK. No dura uno. En realidad, aún nos quedan dos más por hacer. Entonces. Ahora que ya sabes cómo se hace esto, voy a hacer el de arriba y estoy herida de esperar obviamente que estés haciendo esto al mismo tiempo conmigo. Esto no es un reto. Esto solo somos nosotros haciendo nuestro juego mucho mejor. Entonces genere, genere, mueva esto a la izquierda, aplico los cambios. Y por alguna razón es extremadamente lento. Pensé que podría ser un poco más rápido. Entonces vamos, Generar. Mueve esto aquí. Es así, así como así. Aplicar. Y estoy tan emocionado de mostrarles cómo va a funcionar todo esto. Final uno, generar lo aburrido que es esto? Sí, lo es. Sé que es por el tiempo de espera que tenemos que esperar la unidad para generar física. Entonces creo que deberíamos haber bajado esto también. Déjame ver algo también debería haberse movido hacia abajo. Igual que eso. Ahora aplicamos los cambios. Ahora si volvemos, quizá debamos hacerlos retroceder. A lo mejor no deberíamos. Ese es el problema con limitado. Si nos acercamos cuando la unidad que la abra, tal vez no encontremos este problema. Entonces veamos qué tenemos. Entonces ahí tienes, las paredes siguen ahí, pero si elijo esto otra vez, y dibujo eso, Digamos aquí. De acuerdo, Entonces obviamente hay algo muy mal aquí. Ah, está bien, así que tuvimos un pequeño problema técnico. Ahora si hago clic en las paredes, pensé que para una secundaria no funcionaba, pero sí. Ahora si ves las paredes, el colisionador ya no está aquí y solo en los lados en los que se pretende que esté. Ahora cuando corro el juego, miro aquí. Si me muevo arriba, ahí tienes. Puedo caminar a través de ellos. Ahora, obviamente hay un problema que es que estoy caminando sobre ellos. Vamos a arreglar esto en tan solo un poco, pero por ahora tenemos esto funcionando. Esto quizá debería estar en una capa diferente. No se preocupe por eso. Sigamos adelante. ¿ Qué es lo que realmente necesitamos hacer aquí? Y tenemos que sumar las dos puertas cerradas. Tenemos que conseguir una referencia a ellos y necesitamos asegurarnos que cada vez que el jugador esté en la sala, queremos cerrarlos. Entonces, empecemos. El primero que queremos hacer es que queremos seguir adelante y sumar las dos puertas. Entonces voy a entrar a las puertas y voy a seleccionar en el inspector aquí dentro. Y solo lo voy a agregar en la jerarquía, crear el objeto primero Gore encaja aquí. Voy a seguir adelante y ponerlo como la Charlotte lo puso como el jugador. No se preocupe por eso. Estableceremos eso como la capa, capa. Entonces esta es la puerta uno, y la voy a duplicar. Esta va a ser la puerta 2 y la voy a mover al otro lado. O sabes qué, no duplicemos esto ahora mismo. En primer lugar necesitamos añadir un colisionador de cajas por ahí porque no queremos jugar ni movernos por esta puerta. Por lo que voy a añadir un colisionador de cajas 2D. Y veamos cómo se ve esa caja. De acuerdo, creo que eso se ve bastante bien. Y ahora voy a duplicar esta puerta. Esta será la puerta 2, y la voy a mover justo aquí. Por lo que ahora estas dos vías están cerradas. Yo correré el juego. Voy a tratar de caminar por la puerta y ahí vas. Se puede ver que no puedo caminar. Excelente. Ahora bien, ¿cuál es el siguiente paso? El siguiente paso es que voy a prefabricar esto. Voy a entrar en el prefabricado, haga clic derecho. Crear Carpeta, habitación, o habitaciones o mal. Esto será por cualquier cosa que implique una habitación. Y voy a prefabricar esto y lo llamaré simplemente la puerta. Ahí vas. Y ahora sólo voy a añadir esto de nuevo en las prefabs. Por lo que está apegado al prefabricado. Entonces si alguna vez cambiamos algo, esos cambios están sucediendo para todo. De acuerdo, así que sigamos adelante ahora y creamos un objeto de juego aquí dentro, que se va a llamar la habitación. Voy a restablecer su posición. Y esta habitación tendrá un niño en ella llamado las puertas. Y este será el objeto que sostendrá todas las puertas que tenemos en la habitación. Ahora vamos a crear un nuevo guión aquí. Y lo vamos a adjuntar a la habitación, y éste será el encargado de la sala. Entonces scripts, haga clic derecho, vamos a crear una carpeta para los gerentes. Y aquí dentro vamos a crear un guión C-sharp para la habitación. Gerente. Hit Enter, espere a que se compile. No, gracias. No lo necesito ahora mismo. Y espere a que se compile. De acuerdo, Así habitaciones, Vamos a añadir el guión aquí. Abramos al encargado de la sala. ¿ Y qué necesitamos aquí? Bueno, necesitamos tener un, una matriz de objetos de juego que representen las puertas que queremos cerrar. Entonces el juego objeto y array, que son las puertas para cerrar. Guarda eso. Y ahora lo que queremos hacer es que queremos crear un disparador enorme alrededor de todo el mapa. Y luego comprueba cuándo el jugador está dentro de esta sala de gatillo. ¿ Y por qué necesitamos estar dentro del cuarto de azúcar? Porque tal vez. Por ejemplo, quieres que tu juego tenga solo un poco de un nivel más grande. A lo mejor cuando atraviesas algún tipo de puertas, las puertas se cierran y luego arranca el nivel y hasta que mates a todos los enemigos, entonces puedes salir de la habitación. Entonces por eso quise ir con este proceso de parada de tener puertas cerradas sólo cuando el jugador está dentro del trono. Entonces, primero que nada sumemos estas dos puertas al venir a cerrar esto en las dos puertas a las puertas para cerrar. Ahí vamos, guarde eso. Y ahora voy a volver atrás y mi guión. Y aquí dentro voy a crear un booleano que será un campo serializado. Y esa será la puerta cerrada en capa. Entrar. Guarda eso. Y qué vamos a hacer aquí dentro mientras vamos a pasar por todos estos en el, sobre el azúcar. Entrar. De acuerdo, esto debería haber sido demasiado profundo. Y en realidad vamos a crear el empresario entrar al inmediato. Y aquí dentro vamos a comprobar si la etiqueta collision.com es la capa. Ahora voy a hacer trampa porque ya sé cómo se escribe jugador. Y vamos a comprobar si puerta cerrada en el jugador entrar. De acuerdo, Entonces ahora queremos seguir adelante y cerrar nuestras puertas. Ahora tenemos esta matriz aquí mismo. ¿ Qué debemos hacer? ¿ Deberíamos pasar por todos ellos y cerrarlos uno por uno? Entonces debería escribir puerta para cerrar, por ejemplo, 0 punto activo a verdadero, y luego hacer puerta uno, puerta a puerta tres. Podríamos hacer eso, pero hay un problema y no sabemos cuántas puertas tendremos. Entonces lo que podemos hacer es que podamos recorrer a través de ellos. Y uno de los primeros bucles completos o los primeros que quiero enseñarte es el para cada bucle. Entonces, ¿qué es un para cada bucle? Veamos cómo funciona esa estructura. Permite pasar por cada cosa en una colección de cosas del mismo tipo en una matriz. Entonces, ¿qué quiero decir con cosas? Entonces digamos que tenemos un tipo que en nuestro caso es el objeto del juego. El asunto es la puerta en las puertas que queremos cerrar. Entonces lo que hacemos, al igual que dice, por cada puerta, que es de tipo objeto de juego en las puertas para cerrar, podemos seguir adelante y hacer cosas con ella. Entonces, por ejemplo, podemos acceder a algún método sobre la cosa. Podemos usar la cosa en algún otro método y podemos ejecutar otras cosas. Entonces, ¿eso fue explicado qué queremos hacer? Nuestro objetivo en este video es seguir adelante y acceder o recorrer mediante el uso del For Each, queremos recorrer todas las puertas y asegurarnos de que ponemos todas ellas activas a verdaderas. Por lo que tan pronto como el jugador entre a la habitación, todo estará cerrado hasta que mate a todos los enemigos más adelante. Entonces con eso explicado, les voy a emitir un reto para pasar por todas las puertas y cerrarlas. Así que crea un para cada bucle que pase por todas las puertas avaladas cerradas. Set, cada puerta a activa. Y sólo te daré una pista. Utilice el conjunto activo a true. Ya te lo he enseñado. Traté de darte tantas manos como sea posible. Sé que esta es quizás la primera vez que ves bucles. Esta es una gran oportunidad para tratar de ver algo por primera vez y tratar de implementarlo frente a ti sin que yo te enseñe eso de antemano. Sé que es un poco difícil. Yo lo bebería como uno de los retos más duros, pero no te preocupes por ello. Tómate tu tiempo. Pausa el video, intenta hacer lo mejor que puedas y te veré en solo un rato. K, ¿Cómo conseguiste todo eso? Espero que no fuera demasiado duro. Entonces lo que vamos a hacer es crear un bucle para-cada. Y como ya he dicho, vamos a pasar por los objetos del juego. Y podemos llamar a esto como queramos las puertas, las puertas podemos llamarlo ABC lo que queramos en puertas para cerrar. Y lo que haremos aquí es simplemente acceder a la puerta, punto set activo. Cierto. Guarda eso. De vuelta en Unidad. Vamos a seguir adelante y activar estas puertas. Entonces digamos que están abiertos. primera hora entramos a la habitación. De acuerdo, Además, no debería haber hecho clic aquí. Voy a encender atrás la habitación. Entonces, ¿qué pasó aquí? Y eso es algo a lo que siempre me caigo como he tenido la habitación y la he tenido encerrada. Por lo que elegí las dos puertas y hice clic en ésta. Por lo que apagué la habitación. En realidad, puedes ver justo aquí lo que elijas, sigue siendo la habitación. Entonces lo que voy a desbloquear esto muestra las dos puertas. Y yo voy a hacerlo. Adelante y apáguelos. Entraré a la habitación. Voy a añadir un componente el cual será un enorme colisionador de cajas. Ahora, el único problema aquí es que tal vez el colisionador comprobará por el jugador y cuando en realidad aún no haya entrado a la habitación. Entonces volvamos aquí y veamos en Trigger Enter. Cuando entramos al gatillo, es entonces cuando se llamará a este método. Entonces vamos a ver. No estoy seguro, a veces es por cómo se ejecuta el guión. Por lo que el guión de la sala FVA se ejecuta primero, después tendremos la habitación, y después tendremos al jugador. Por lo que de esta manera el jugador realmente entra. Entonces voy a guardar esto. Voy a hacerlo, vale, así que este es un disparador cuando tengo un error. De acuerdo, entonces este error no es nada de qué preocuparse. Ejecuta el juego. De acuerdo, Entonces las puertas no se cerraron. Elegamos cerrar las puertas en el jugador entrar. De acuerdo, Así que ahí vamos. Funcionó. Entonces espero que hayas entendido cuál era mi preocupación. Yo a veces esto es lo que pasa cuando por primera vez estaba creando este juego. Esto es lo que pasa. Entonces tuve que crear algo diferente. Pero noté que a veces funciona, a veces no. Yo sólo quería hacerte saber de antemano para que no pienses Oh, Michael, cada vez un error. Ahora en realidad, así que espero que lo disfruten. Espero que hicieras el para cada reto. Sé que fue un complicado, pero esta es una buena manera de practicar tus habilidades de desarrollador de juegos. Entonces te veré en el próximo video donde estaremos atrapando todos los enemigos que tenemos para poder matarlos y luego abrir las puertas cuando mueran. Entonces te veré entonces. Asegúrate de poner en escena todos tus archivos. Perdón por eso. Y asegúrate de dejarme una reseña si aún no lo has hecho. Me ayuda mucho. Gracias. Nos vemos la próxima vez. Oye, Michael aquí del futuro, pensaste que te deshiciste de mí, pero no lo has hecho. Cuando ejecutamos el juego, noté algo que se puede ver que me preguntaba por qué el esqueleto no nos estaba disparando y si traté de disparar, se puede ver eso de inmediato. Tengo el efecto de impacto de bala. ¿ Cuál es el problema aquí? Bueno, porque estamos sentados dentro del colisionador de habitaciones, estamos disparando y de inmediato está interactuando con él. Entonces el problema aquí es obviamente que son las capas. Entonces lo que queremos hacer es que vamos a añadir una capa. Podemos llamar a esto los intocables o como quieras llamarlo. Simplemente lo llamaré la capa de habitación. Hit Enter. Y voy a entrar en la matriz y aquí proyectar ajustes. Y me aseguraré de que la capa de habitación no interactúe con las otras capas de habitación con las balas enemigas. Y tal vez incluso podamos asegurarnos de que no interactúen con nada. Honestamente, no los necesitamos excepto el jugador. Nosotros queremos seguir adelante. Pero por ahora, solo asegurémonos de que no interactúen con las balas de la literatura sobre si sí encontramos un problema, esto podría ser problemático y saber qué. Sólo por esa razón, apaguemos todo, guardemos eso. Cerrado del juego. Deberían cerrarse las buenas puertas. Y si disparamos, algo sigue mal. Ah, obviamente necesitamos configurarlo como la capa de habitación sí. Cambiaron de niños si quieres correr el juego o no, tal vez los niños no deberían haber cambiado. Está bien. Por lo que la puerta se cierra y podemos disparar con normalidad. A lo mejor los niños no deberían haber cambiado porque no quiero que las puertas se vean afectadas. Cambiemos esto por defecto. Sí. Niños cambiados. Está bien. Entonces ahora podemos disparar a las puertas, pero podemos disparar alrededor si las paredes, si las puertas. Sí. Todo está funcionando bien. Entonces desde el futuro, me voy. Nos vemos en el futuro. 37. Atraer todos los enemigos (listas): Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Como puedes ver ahora tenemos tres enemigos, x2, muy aterradores. Déjame maximizar en el juego. Y tenemos un mal con no sólo tener puertas, también tenemos enemigos, que son tres esqueletos. Estos esqueletos son los tipos a los que necesitamos matar para poder abrir las puertas. Pero por ahora lo que hacemos es simplemente atraparlos en el acto usando una lista. Por lo que me he maximizado en el juego, no debí haber hecho eso. Ahora voy a correr de nuevo. Si miro en las habitaciones y hoy ahora, puedo ver que aquí tengo a los enemigos y tengo las dos puertas, pero la magia es que los atrapamos sin agregarlos manualmente. puede ver que sucede automáticamente usando filtros de contacto, usando listas, usando muchas cosas geniales. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Por lo que ahora tenemos las puertas que se cierran. Es hora de empezar a abrirlos. ¿ Cómo abrimos las puertas? El modo en que les vamos a permitir que se abran es cuando nos deshacemos de todos los enemigos que tenemos en el mapa actual. Entonces lo que vamos a hacer es crear una variable que primero se asegurará de que el, todas las puertas se abran cuando todos los enemigos sean asesinados. A lo mejor sólo el nivel que creaste no tiene que matar a todos los enemigos. A lo mejor es un nivel para la tienda, por ejemplo, igual que teníamos en Hades. Entonces por eso vamos a añadir esta variable. Entonces, empecemos. Entonces aquí tenemos al controlador enemigo. Como pueden ver, lo he organizado todo. De todos modos, no perdamos tiempo porque en el gerente equivocado, vamos a sumar el volumen aquí mismo. Y eso es abrir o abrir puertas. Cuando y yo es dy. Ahí vas. Eso lo guardamos. Volveremos aquí y nos aseguraremos de que esta, esta habitación en particular se abra de verdad cuando los enemigos mueran. Está bien, genial. Lo siguiente que tenemos que hacer es conseguir una referencia de todos los enemigos. Bueno, ¿cómo hacemos eso? Tendremos obviamente múltiples enemigos. Eso significa que lo más probable es que tengamos que conseguir algún tipo de matriz. Pero, ¿por qué no queremos usar una matriz? Porque cuando tenemos una matriz, ¿cómo voy a demostrar esto? Entonces por ejemplo, puedes ver aquí mismo, si hago clic en una de esas matrices aquí mismo, y si uso el menos, esto simplemente quitará la puerta de nuestro juego. En realidad no elimina todo el elemento. Por lo que todavía tenemos dos puertas aquí mismo, pero falta una de ellas. Ahora cuando se trata de la puerta, esto no es un problema enorme porque ya sabemos que sólo tendremos dos puertas. No los vamos a contar. No vamos a deshacernos de ellos. Están ahí, son estáticos, no se están moviendo. Pero cuando se trata de los enemigos, lo que queremos es conseguir una referencia a todos los enemigos en el mapa. Y luego a medida que lentamente los matamos uno por uno, los vamos a contar. Y si encontramos que todos han desaparecido, entonces abriremos la puerta. Y esto causará un problema cuando estemos usando una tarifa. Por eso vamos a usar algo un poco mejor, que es la lista. Entonces una lista es igual que una matriz. Representa una lista de objetos fuertemente tipada. Y por cierto, estas son las documentaciones de Microsoft para el C-sharp, no la documentación de Unity, pero es más o menos lo mismo. Podrás encontrar ejemplos, puedes encontrar lo que quieras y enumera lo grandioso de ellos ya que son mucho mejores en ordenar, son mucho mejores en ordenar y manipular. Entonces lo que podemos hacer es a medida que muere cada enemigo, podemos sacarlo de la lista sin preocuparnos de ningún tipo de error, la lista se ajustará por sí misma. Por lo que se explicó, te dejaré encontrar la lista, la clase, encontrar la documentación de este. Y te voy a volver a emitir el reto igual que el último reto que conozco. Tan molesto cuando tienes que hacer algo por ti mismo sin ver lo que hice primero. Pero es hora de crecer, hora de convertirse en verdaderos desarrolladores de juegos, buscar problemas y hacer cosas que nunca antes nos habíamos encontrado. Esta es la belleza de la misma. Mira a través de la documentación y encuentra cómo podemos instanciar un nuevo. Vamos a crear una lista de campos serializados. Queremos ver la lista en el inspector. Posteriormente, obviamente necesitamos hacerlo privado, pero queremos comprobar si todo está funcionando. Y finalmente, el tipo de la lista será un colisionador a D. Así que encuentra la documentación, pasa por ella, crea una nueva lista, que es la lista de enemigos de tipo colisionador 2D. Te veré en sólo un rato. De acuerdo, bienvenido de nuevo. Entonces, ¿cómo te metiste en eso? Espero que no estés demasiado enojado conmigo. De todos modos, sigamos adelante y creemos un campo serializado. Y esto va a ser una lista. Y como puedes ver, bueno, lo viste en el ejemplo, solo comprobemos dos veces y veamos cómo se crea. Por lo que puedes ver que necesita las colecciones de puntos de los sistemas, que está justo aquí. Oops, lo siento, que es justo aquí que nos permite crear listas. Vayamos a ver qué tenemos aquí. Digamos que me estoy desplazando hacia abajo, ¿cómo se crean listas, por favor? ¿ Cómo creo una lista? ¿ Dónde está? ¿Dónde está? De acuerdo, Así que ahí tienes. Es así como se crea una lista. Entonces necesitamos teclear el tipo de esto que tenemos dentro de estos dos antinaturales, lo que se llaman y decir que es igual a una nueva lista. Entonces de vuelta aquí, el tipo colisionador 2D, ya te lo he dicho. Y verás por qué es un colisionador 2D en tan solo un poco. Entonces enemigos, y es igual a una nueva lista de Collider a los enemigos y la cerramos con estos dos paréntesis. Ahora, obviamente te tomó sólo un poco más de tiempo encontrarlo todo, tal vez mirar a través de la documentación, pero eso es bueno. Ahora puedes decir que con orgullo ese zapato mira a través la documentación descubierta por ti mismo cómo se crean las listas, y esto te dará mucha más confianza a medida que avanzas por tu viaje de desarrollo de juegos. No siempre voy a estar aquí. A veces no voy a estar a veces no tengo tiempo para responderte. Entonces este es un gran ejercicio. Me encantan estos ejercicios. Espero que no estés demasiado enojado. Sigamos adelante. ¿Qué tenemos que hacer ahora mismo? Tenemos que entrar a las habitaciones aquí mismo y vamos a crear un nuevo objeto de juego vacío, que serán los enemigos. Y esto sostendrá a todos los enemigos que tenemos. El enemigo esqueleto justo aquí que C necesita algo? También el campo de tiro. Hagámoslo un poco más pequeño para que no queremos que los enemigos nos disparen. Sabemos que todo funciona. Eso es bueno y vamos a hacer su salud. Pero más pequeño, tal vez tres. Por lo que toma tres hits, aplica los cambios. Y yo lo voy a mover a los enemigos. También voy a entrar a los Prefabs y añadir un par de enemigos. Y aquí, así el enemigo, el esqueleto agregará otro. Aquí. Otra, tan grande. Ahora tenemos tres esqueletos vagando por ahí que perseguirán y dispararán al jugador. Eso lo salvaremos. Está bien, genial. Ahora lo siguiente que queremos hacer es que queremos conseguir el, una referencia a todos esos enemigos y poder contarlos. Ahora qué podemos hacer, obviamente, como podemos seguir adelante, seleccionar estos tres y arrástralos aquí y configurarlos manualmente. Eso sería bueno, eso estaría funcionando. Pero queremos tener una forma más dinámica de acceder a estos enemigos. Una de esas formas dinámicas es utilizar objetos de hallazgo de tipo, donde pasamos por todos los objetos y los encontramos todos. Esto también es una buena idea, pero es muy gravador para el sistema. Tienes que pasar por todos los elementos, empezando desde la cámara y hacia abajo hasta encontrar a todos estos enemigos de tipo u objeto de tipo. No vamos a hacer eso. En cambio, vamos a hacer algo mucho más complicado al principio, pero mucho más efectivo y menos gravar al sistema. Y es una gran manera de aprender algo muy nuevo. Y ya tenemos la, digamos la infraestructura para eso establecida al tener los colisionadores de los enemigos y el colisionador de la habitación. Entonces, ¿de qué estoy hablando? Acabas de verlo. Es el colisionador, Colisionador de superposición 2D. ¿ Qué hace esto? Se necesita un filtro de contacto, que veremos en tan solo un poco. Y nos da los resultados de todos los objetos 2D del colisionador. Por lo que un filtro de contacto utilizado para filtrar los resultados de manera diferente. ¿ A qué nos referimos con eso? Nos referimos a que tenemos el colisionador de la habitación justo aquí. Entonces tenemos el colisionador, tenemos todos los objetos dentro. No queremos atrapar al jugador, por ejemplo, sólo nos interesan los esqueletos. Por lo que necesitamos agregar este filtro de contacto que entenderá cómo se usa. Pero sigamos adelante. Entonces filtro de contacto y el resultado, ese resultado, Es la matriz. Para recibir los resultados. Podemos usar una matriz, podemos usar también una lista. No te preocupes por eso. Sigamos uno. ¿ Qué necesitamos? Por lo que devuelve el número de resultados si queremos un retorno, y luego vamos a revisar qué es un filtro de contacto. Entonces te estoy dando todas las formas de cómo creamos. Entonces honestamente, no tenía ni idea de lo que era un filtro de contacto. Esta es la primera vez que me encontré cuando estaba creando este juego, pesar de que he tenido mucha experiencia en desarrollo de juegos, esta es realmente la primera vez que realmente lo usé en el, así que fui y lo busqué. De acuerdo, Así que mira, tenemos un montón de propiedades. Y si vuelves atrás, aquí podemos ver los resultados de manera diferente. ¿ Y qué más tenemos? Tenemos algo llamado máscara bi capa. Sé lo que es la máscara de capa, así que tengo que mirar y me encuentro. Set Máscara de Capa, excelente. Esto establece la máscara de capa en función de algún tipo de proporcionado un parámetro o algo así. Genial. Doy click en él, veo filtro de contacto, máscara de capa. Le doy una máscara de capa. Sé cuál es la máscara de capa y te mostraré cómo la vamos a usar. Pero de todos modos, estos son los pasos que incluso yo doy a veces. Entonces no pienses eso NUEVO, no lo recuerdes todo y debes saber, no, debes hacer tu propia investigación. Siempre mira a través de la documentación y ahora sigamos adelante y empecemos. Entonces voy a volver aquí y voy a crear, en primer lugar, un colisionador privado 2D, y este será el colisionador de habitaciones. Guarda eso. Y luego un, otro contacto privado filtrado a D y va a ser el filtro de contacto a D. Simplemente me quedaré el nombre tal como está. Entonces ahora y empezar, ¿qué vamos a hacer? Bueno, en primer lugar, necesitamos una referencia al colisionador de habitaciones. Por lo que colisionador de habitación es igual para obtener componentes. Y va a ser el colisionador 2D. Genial, Así que ahora tenemos una referencia al colisionador en la habitación. Lo siguiente que queremos hacer es que queremos obtener el filtro de contacto 2D. Y vamos a poner la máscara de capa igual que vimos. Y qué dijimos necesitamos dentro del conjunto Máscara de Capa, necesitamos la Máscara de Capa. ¿ Cómo obtenemos la máscara de capa? Bueno, sabemos qué capa es, pero ¿cuál es la máscara? El mascarilla es una forma de dejarnos decir convertir, de entender cuáles son las capas. Entonces, ¿qué podemos hacer? Podemos usar algo llamado la máscara de capa. Y podemos usar un método aquí dentro que diga conseguir la máscara. ¿ Y cómo conseguimos la máscara? Podemos conseguirlo realmente comprar el nombre de las capas. Genial, por lo que ahora tenemos acceso al nombre de la capa. Y qué hace la capa, es el enemigo. Y debido a que esto es una referencia de cuerda, asegura de que el zapato haya macetas correctamente, ve incluso copiarlo si tienes que hacerlo. Pero lo que está pasando aquí, tenemos el nombre de la capa. Utilizamos la máscara get, que es un método disponible en la biblioteca de máscaras de capas. Utilizamos esta máscara de capa entera y colocamos la máscara de capa en el filtro de contacto. Complicado, lo sé. Y ahora usamos el colisionador de habitaciones, pensamiento solapamiento colisionador. Y aquí dentro, ¿qué necesitábamos? Necesitamos el filtro compacto al, ¿cuáles son los resultados? ¿ Dónde queremos lanzar nuestros resultados? Y puedes ver justo aquí la flecha, si haces clic en ella, ahí vas. Puedes añadirlo a una lista o podemos añadirlo a un colisionador 2D en base a lo que le demos. Entonces si le damos una matriz aquí, entonces este resultado será una matriz. Pero debido a que actualmente le estamos dando una lista, esto será como una lista, guarde ese registro. Entonces otra vez, pasemos por esto una vez más. Creamos un filtro de contacto. Entendimos qué filtros de contacto son a través de las documentaciones de la unidad. Hemos añadido un colisionador 2D. Eso es muy sencillo. Obtuvimos una referencia usando el componente get. Ya sabemos cómo hacemos eso. Accedemos al filtro de contacto. Utilizamos un método llamado Set Layer Mask. Este conjunto Máscara de capa requiere una, algo llamado máscara de capa, no sólo una capa, una máscara de capa. Entonces lo que hacemos, buscamos obtener Máscara de Capa. Y esto en realidad será un reto a la vista para ti. Ve a buscar Máscara de capa, consigue Máscara de capa y ponte de pie cómo encontramos este método. Por lo que este es un proceso completamente diferente. Utilizamos la máscara get layer, que forma parte de la máscara de capa y la máscara de capa de motor Unity, y utilizamos el nombre de la capa enemiga. Entonces, ¿ahora qué pasa en cuanto empiece este gerente de sala? En primer lugar, en Trigger Enter se encuentra al enemigo. En segundo lugar, mira a través de todos los enemigos que ya están aquí. Y como ya he dicho, hay muchas formas de atrapar a los enemigos. Ahí hay hallazgo objetos de tipo. Podemos haber utilizado el emprendedor enter, pero pensé que esta es una gran oportunidad para aprender sobre listas. Aprende sobre el filtro de contacto en nunca se sabe cuándo. ocasiones podría encontrarse en una situación y programación en la que simplemente no puede hacerlo sin un filtro de contacto. Entonces guarde todo eso. Volvemos a Unidad y veamos a nuestros enemigos ahora en cuanto corremos, deberíamos ver aquí a los tres enemigos. Esperemos que ejecute el juego. Ahí vamos. Excelente. Y puedes ver que tenemos todos los colisionadores de esqueleto uno, esqueleto a y esqueleto tres, o como quieras llamarlo. Excelente, Tenemos una referencia a ellos. Entonces ahora el siguiente paso es matarlos a todos y abrir las puertas con azul que en el siguiente video, asegúrate de completar tus cambios. Asegúrate de dejar una reseña y te veré en el siguiente video. 38. Abrir puertas 00: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, estamos haciendo que el juego sea mucho más fresco. Por lo que finalmente, este video hace que todo se vea increíble. Entonces empezamos el juego. Empezamos a correr por ahí, oh no, hay una puerta. Está cerrado. Oh, no. Vayamos a la puerta de al lado. Oh, no, aunque está cerca. Aquí hay tres enemigos. Ah, intentaron disparar mientras tratan de seguir como no, matamos al primero. A lo mejor se lleva mucho es el segundo. ¿Cuántos se necesita? Uno golpeó sus muere y su placer, sangre. A éste lo llamamos. Tratamos de matar al último. Nosotros le estamos disparando mientras él retrocede. No, no lo es. Espera, pero Tim shu Vale, No es disparar. Entonces deberíamos tener, hay cosas volando en nuestra dirección. Deberíamos rodearlo y él muere. Increíble. Entonces ahí lo tienes. Las puertas están abiertas. Caminamos y ahora podemos ir al siguiente nivel o podríamos usar la otra puerta porque también se abre cuando matamos a todos nuestros enemigos. Entonces, no perdamos más tiempo. Arreglaremos esto aquí mismo, viendo las cosas azules que nos rodean, y empecemos. Ah, caso. Entonces ahora es el momento de abrir las puertas cada vez que maten a los enemigos, entremos a los enemigos aquí mismo o a la habitación. En realidad ejecutar el juego. Y voy a tratar de matar a un par de enemigos que se ha abierto. Ahí lo tienes. Disparemos al enemigo justo aquí. Tres balas deberían ser suficientes, y está muerto. Y se puede ver aquí mismo que ahora es un desaparecido. Muy bien. Él está desaparecido. Falta el segundo. El tercero también falta, por lo que ya no tenemos enemigos. Debe abrirse la puerta. El único problema es que todavía tenemos estos elementos aquí. Pero por suerte, cuando estamos trabajando con listas, en realidad podemos quitar el elemento muy fácilmente. Entonces la forma en que hacemos eso, conforme entramos en nuestra actualización aquí en la actualización de gerente de habitaciones. Y vamos a crear otro bucle. Y esta vez este bucle va a ser un bucle for. Entonces, ¿qué es un bucle for? Déjenme explicarles. Entonces, ¿qué es un bucle for? Los bucles pueden ejecutar un bloque de número de código. Tiempos. Los bucles son prácticos si quieres ejecutar el mismo código una y otra vez cada vez con un valor diferente. Ahora, estoy profundizando un poco más en los bucles de lo que hicimos con el para cada uno, pero no te preocupes porque los bucles son similares a los loops for-each. Pero esta vez en lugar de usar los ítems, usamos los índices y el lado de la lista o la matriz. Por lo que se puede ver que esto sigue ejecutando código en su interior hasta que llegue a cierto límite. ¿ Qué significa eso? Echemos un vistazo a esta sintaxis aquí mismo y entenderla mejor. Empezamos por escribir para, Eso es bueno. Instanciamos una variable que es un entero, muy probablemente cuál es un I igual a 0. A continuación añadimos este punto y coma. Entonces le decimos cuál es el límite por el que seguiré trabajando el yo. Y luego nos detenemos y cada vez agregamos uno al ojo. Entonces puedes ver aquí mismo, este plus, plus significa que soy yo más uno. Entonces empezamos a 0, digamos que el cierto límite es de tres. Seguiremos dando vueltas hasta que ya no sea menos de tres. Entonces empezamos a 0, hacemos algunas cosas, ejecutamos el código I plus, plus. Eso significa que me convierto en uno. Todavía son menos de tres. Genial, seguimos adelante. Tenemos yo más dos, ya que sigue siendo menos de tres. Es, seguimos. Yo igual a tres es aún menos de tres. No, no es porque necesitemos ser menos de 3 o menos que el cierto límite. Y vamos a estar usando eso para ver vamos a contar a través de todos los enemigos. Y cuando estemos en el último enemigo, vamos a seguir adelante y detener el bucle. Y en cada nivel vamos a comprobar si ese enemigo es un objeto de juego vacío, entonces vamos a eliminar todo el elemento de la lista. Entonces, empecemos. Esto será un poco complicado, pero ten cuidado conmigo. Entonces voy a seguir adelante y crear un bucle for. Y en lugar de pasar del primer elemento al último elemento, voy a empezar por atrás. Por lo que voy a tener un int I igual a enemigos dot count minús1. En primer lugar, ¿cuál es el conteo? conteo de puntos de enemigos es el número de artículos que tenemos en la lista. Y nuestro caso, estos serán los tres esqueletos. ¿ Por qué estoy sumando menos uno? Porque las listas funcionan igual que las matrices lo hacen donde empezamos, el conteo de lo indexado desde 0. El último elemento de los tres esqueletos serán dos. Tenemos los ceros esqueleto, esqueleto uno esqueleto también. Entonces el recuento es igual a tres porque tenemos tres esqueletos. Por lo que el primer elemento debe ser el recuento menos uno. Espero que eso se entienda. Ahora porque estamos empezando desde atrás, ¿cuál es nuestro objetivo? Seguiremos dando vueltas. Si bien i es mayor que menos uno. ¿ Por qué esta minús1? Bueno, porque cuando llegamos a 0, aún queremos recorrer la lista. Y uno nos dan dos menos uno porque déjame simplemente terminar esto. Ahí lo tienes. Porque nos vamos. Menos menos. Entonces al igual que Plus, Plus agrega uno, menos, menos quita uno. Entonces otra vez, ¿qué está pasando? Estamos empezando desde el reverso de la lista. Estamos asegurándonos de que siempre somos mayores que menos uno, lo que significa que no queremos tener 0 como último elemento por el que pasamos. Y por último, estamos sumando yo menos menos. Entonces sigamos uno. ¿ Qué vamos a hacer aquí dentro? Bueno, vamos a comprobar si los enemigos o el enemigo en la posición I es igual a nulo. Tan nula significa que está desaparecido. Vimos previamente en un video anterior cuando matamos a los esqueletos, el elemento ahí dentro quedó desaparecido. Eso significa que no lo es. Entonces si el enemigo o el colisionador 2D falta en este enemigo, lo que vamos a hacer es que vamos a acceder a los enemigos. Dot remove at, y lo vamos a quitar en la posición I. Así que otra vez, vamos a verlo una vez más y entender lo que está pasando. Estamos empezando al fondo de la línea porque queremos quitar las cosas de abajo a, hasta llegar a la primera. Por lo que estamos empezando desde atrás. Estamos usando el recuento menos uno porque el recuento es el número de elementos, pero los elementos dentro están indexados desde 0. Entonces empezamos en 0, 1, 2, pero el conteo es de tres, así que quitamos uno. Seguimos quitando uno usando AI menos menos hasta que ya no seamos mayores que menos uno y Quiero decir, cuando somos menos que menos uno, ¿por qué? Porque el último va a ser 0, tan minús1, cuando nos volvamos minos1, eso significa que hemos terminado y ya no queremos seguir con el bucle. Y cada vez que encontremos que faltan a los enemigos o es nulo, vamos a eliminarlos de la lista. Genial, Guardemos eso. Volvamos a nuestro juego y sigamos adelante e imprimamos aquí a los enemigos. De acuerdo, Así enemies.gov. Y vamos a ver qué pasa. Por lo que de vuelta en nuestro juego, voy a correr la ganancia. Tengo la lista de enemigos, voy a disparar primero 1, segundo 1, y tercero. Entonces esperemos a que aparezcan los libros. Ahí lo tienes. Se puede ver un pop-up. Ah, está bien. Por lo que ahora se puede ver que la lista está vacía. Hay algo que olvidé decir. Entonces podemos ver que tenemos estos y no miramos al Consejo ni siquiera eso pueda aparecer. Por lo que el número de enemigos un tres, cuando les disparo, uno de ellos muere, se retira el último elemento. Por eso vamos de abajo a arriba. Por lo que el número de enemigos es a 0. Por lo que las balas que funcionan para eso siguieron yendo. También. Este, ahí tienes, El número de elementos o el número de enemigos es 0. Genial. Entonces ahora sabemos que somos capaces de matar a los enemigos. Estamos en condiciones de eliminarlos de la lista. Por último, queremos abrir la puerta siempre que el número de enemigos 0, y eso va a ser parte de tu reto. Tu reto es abrir las puertas después de que mueran los enemigos. Por lo que comprueba para ver que la lista de enemigos está vacía. Esto será, no sé, lo dejaré a ti. Después tendrás que atravesar todas las puertas y las puertas para cerrar. Y necesitarás activar todas las puertas. Y te daré una pequeña pista. Es necesario revisar la longitud de la lista. Puedes usar el conteo de puntos. Bueno, ya hemos hecho esto. Si quieres. Puedes usar un para cada bucle para pasar por las puertas o puedes intentar usar el bucle for que acabamos de aprender y para obtener la longitud de la matriz, este es un buen ejercicio en bucles. Tenemos muchos bucles. Eso es bueno. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces sólo voy a mantener el depurador aquí mismo. Y lo que vamos a hacer, vamos a comprobar si el conteo de puntos de enemigos es igual a 0. Entonces vamos a usar el bucle for. Voy a crear un int I igual a 0. Por lo que estamos partiendo de la 0. Vamos a seguir buceando mientras estoy menos que las puertas para abrir o lo siento, puertas para cerrar longitud de punto. Cuando queremos acceder a la longitud de una matriz, usamos longitud de punto cuando queremos acceder a la longitud de la lista, usamos conteo de puntos. Entonces ahí lo tienes. Ahora tienes dos ejemplos. Incluso puedes agregar un comentario aquí para asegurarte de que recuerdes. Y en cada paso vamos a sumar uno. Por lo que ahora puerta para cerrar o en realidad puerta para cerrar. Sí. Y voy a acceder a ella usando el yo porque cada vez estoy aumentando. Entonces digamos que ya tenemos dos puertas. Por lo que tenemos índice 0 e índice uno. Empezamos a las 0. Conseguimos cerrar la puerta a las 0. Ponemos activo en falso. Ahí vamos. Ya no tendremos la puerta. Nosotros comprobamos es el I, que actualmente es 0, es menor que la longitud de punto puertas, que es 2. Entonces sí, 0 es menor a 2. Yo plus, plus, o en realidad hacemos esto y luego yo plus, plus. Volvemos aquí, yo sí, vale, así que ya no volvemos aquí ahora soy uno es uno menos que dos? Sí, lo es. Tenemos r igual a 0 dot-dot-dot activo, lo siento, yo igual a 1. Nos pusimos activos. Ahí vamos. Es falso. Por último, me convierto en dos. ¿ Dos son menos de dos? No, no lo es. Salir del bucle. Ahorramos todo eso. Volvemos a nuestro juego. Corremos la ganancia, tenemos la consola justo aquí, por lo que el número de enemigos, F3, los puedes ver. Deberíamos 12, vale, los enemigos que le disparamos. Segundo, ¿cuántas balas toma? ¿ Uno? Sólo se necesita uno. Agradable. A ver ¿por qué está? Porque recuerdo que le agregamos su vida a ser tres. Ahí lo tienes. El enemigo murió. Se puede ver que a 0 las puertas se abren y podemos caminar. ¿ Qué tan guay es eso? Entonces, finalmente, todo parece estar funcionando, de acuerdo. Hay un par de bichos. Una de ellas es que la sangre no está desapareciendo por las animaciones. Todavía no hemos agregado la llave al final. El esqueleto justo aquí. ¿ Qué tan grande es su vida? La casa de los enemigos es de tres, por lo que parece haber un problema. Se está muriendo de inmediato. ¿Por qué? Porque si entramos al controlador de bala de capa, la cantidad de daño es de 100 k Por lo que se estandariza la cantidad de daño. Vida de los enemigos es 3. Piensa que ese es el problema. Entonces déjame hacer la mitad de este tipo. Entonces solo quiero asegurarme de que no estamos teniendo algo mal guardar que ejecute el juego. Porque a veces podríamos llamar demasiadas veces a un método así que estamos dando demasiado daño. Entonces si lo reviso, está bien, así que ahí vas. Necesita varias balas. 123 y ahí va. De acuerdo, entonces todo está funcionando bien. Se abren las puertas cada vez que estamos matando a todos los enemigos, todo parece estar funcionando. Hemos aprendido mucho sobre bucles en esta sección, realidad hemos aprendido mucha información. Espero que estés disfrutando. Espero que te estés divirtiendo. Espero que estés aprendiendo mucho. Espero que estés haciendo tu investigación. Espero que siempre estés cometiendo tus cambios. Espero que tus cerebros de desarrollador de juegos se estén haciendo más fuertes con todos y cada uno de los videos. Espero que no estés muy frustrado, y espero que estés muy contento. Entonces te veré en el siguiente apartado. No olvides añadir una reseña. 39. Sección 6: flujo de nivel - Gestión de escenas y hilado): Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y este es verdaderamente uno de los videos más cool que hemos hecho hasta ahora, en mi opinión. Entonces lo que vamos a hacer es que sólo vamos a ejecutar el juego. Y antes de hacer eso porque estamos experimentando, sólo voy a sacar esta puerta del camino otra vez. Entonces estamos jugando, abrimos la puerta con algún tipo de asesinato y whoa, venimos aquí. ¿ Qué es eso? Wow, un portal. ¿ Qué crees que pasaría si intentara tal vez saltarlo? Bueno, ¿Qué pasó? Bueno, estamos en el nivel 2 o quiero decir en el nivel uno, estábamos en el nivel dos, debería haberlo señalado, pero se puede ver aquí mismo que sí iniciamos en nivel dos y luego vamos al nivel 1. Aprendimos sobre los portales, aprendemos sobre el manejo del pecado, y aprendemos a usar una variable de cadena. Entonces, no perdamos más tiempo. Empecemos. Ah, entonces tiempo para algún nivel de flujo. Y lo primero que necesitamos para el flujo de nivel como la gestión de escenas y la forma en que manejamos las escenas es a través de un gestor de escenas, ¿qué tan conveniente es eso? Pero antes de que hagamos todo eso, lo primero que tenemos que hacer es realmente crear algún tipo de portal. Por lo que un portal que nos llevará a otro nivel. Ahora, antes de hacer eso, necesitamos un otro nivel real al que ir. Entonces voy a entrar en las escenas aquí dentro y voy a duplicar s2. Voy a abrirla. Por lo que ahora hemos visto tres. Es lo mismo, es exactamente lo mismo que el s2, pero todo lo que voy a cambiar son los azulejos en el suelo. Entonces entraré en paleta de azulejos. Voy a elegir suelo, y voy a hacer de esto un color de verde. Y voy a cambiar esto un poco. Ahí vas. Entonces eso es un pelozo lo que quiero hacer. Cubriré esta parte, esta parte, y esta parte sólo para que podamos diferenciar entre ellas. No quiero pasar tiempo creando un nivel completamente diferente. Tomará mucho y no hay propósito real, pero para ti mientras creas tu juego, sí te recomiendo que pases por la molestia de hacerlo. Es una buena práctica si quieres crear tu propio juego a partir de los estilos. Basta de hablar, empecemos. Guarda eso. Volvamos a Test2. Por lo que ahora tenemos a los amigos entre test2 y test3. Creo que es hora de llamar a este nivel 2 y nivel 3. Entonces Nivel 2, nivel 1 o no. Mantengamos esto como un, esto fue en realidad una prueba. Y nivel tres. En realidad, esto debería ser, vale. Espera un segundo. Mantengamos este nivel 3. Claro, cargamos, esto se convertirá en el nivel uno. Y este es el nivel dos. Entonces tenemos solo uno, nivel uno, nivel dos, vale, así que de vuelta en el nivel 2, y aquí vamos a tener algún tipo de portal de salida. Te he proporcionado los recursos para los portales, y elegí éste. Y puedes ver que tienes 25 o 20 portales, no lo sé. Y tú también tienes este verde, pero yo voy a usar el 15. ¿ Fue 15 año? Eran 15. Por lo que de vuelta aquí en los sprites, haga clic con el botón derecho Crear carpeta, portal en Enter. Haga doble clic aquí, y voy a agregar todas las imágenes y esperar a que se agreguen. Muy bien. Voy a hacer clic derecho en crear un objeto de juego vacío el cual se llamará el portal enter specter. Establezca z en 0. Ahí vamos. Vamos a moverlo aquí. Agregar un componente o qué? No agreguemos un componente. Añadamos un animador. Vamos a ir a la ventana. Y en realidad, antes de hacer eso, agreguemos una de las imágenes aquí dentro al portal. ¿ Podemos agregarlo de inmediato? No, no puedo. Añadamos un render sprite. Y vamos a añadir justo esta imagen aquí mismo. Y pongámoslo como el jugador. Y ahí vamos. puede ver que es un poco pequeño. Escojamos todas las imágenes y hagamos que se apliquen 50. Por lo que se duplicará en tamaño, vale, tasa de chicas y que apunte. ¿ Será mejor? Vamos a acercar y ver a veces el punto no es el mejor filtro. A veces lo mantienes bi-lineal, es mantequilla, y en este caso lo es. Tan bilineales, son más suaves, te darás cuenta ahora que es un poco más suave. A mí me gusta más, haz lo que quieras con él. ¿ Y sabes qué? En realidad soy porque la habitación ya es grande, voy a hacerla 25. Sí, ahí vamos. Está bien, 25 está bien. Bonito. Entonces ahí vamos. Tenemos este portal aquí mismo. Vayamos a la ventana. Animaciones, animaciones. Por lo que ya hemos cubierto cómo hacemos esto. No voy a entrar en demasiados detalles. Voy a crear activos, animaciones, portal. Asegúrate de crear siempre carpetas y mantener todo pequeño. Entonces portal remolino. O esto será sólo el animador o nano, y esta es la animación. arremolinó porque el portal está arremolinando. Voy a seleccionar todos estos y arrastrarlos aquí. Ahora cuando jugamos, ahí tienes. Creo que esto es lo suficientemente bueno. No necesitas hacerlo más grande o más pequeño. Excelente. Por lo que ahora tenemos funcionando este portal. Lo siguiente que vamos a hacer es obviamente que vamos a añadir algún tipo de Collider aquí. Entonces agrega un círculo, colisionador de círculo 2D, y es un poco grande. Hagamos el radio un poco más pequeño para que el enemigo necesite, el enemigo, el jugador necesita saltar al portal de inmediato para ser teletransportado al siguiente nivel o cualquier nivel que queramos distinguir también. Y esta es la parte donde elegimos cuál, ¿ dónde queremos ser teletransportados? ¿ Es siempre el siguiente nivel no tiene que ser porque más adelante en el, creo la sección donde generamos niveles, creo que es el último. Estaremos eligiendo niveles aleatorios igual que tenemos en Hades. Por lo que crearemos diferentes tipos de diseños, tendremos diferentes tipos de niveles por los que atravesamos. Entonces vamos a entrar en los guiones. Añadamos aquí un guión para el portal. Lo vamos a llamar salida de nivel. Llamémoslo los niveles, flujo de nivel que se ralentizará. Creo que eso es bueno. Haciendo clic derecho aquí, crea un script C-sharp cual será la salida de nivel. Ni siquiera recuerdo si estaremos teniendo otros guiones relacionados con nivel SOPA. Vamos a mantenerlo en eso. Entonces voy a dar click aquí. Y por supuesto que vamos a convertirlo en un gatillo. Este colisionador debe ser un gatillo. Y sumemos el nivel de salida. Y finalmente, entraré a los Prefabs y voy a ir aquí y crear un prefab para el, debería hacer un portal aquí dentro? Digamos que podemos agregar, crear aquí, algo así como tal vez, vale, sólo hagamos los portales, portales. Abre esto. Portal. Y tal vez portal uno, tal vez no puerto uno. Sólo lo mantengamos en el portal, guardemos todo eso. Y ahora abramos el guión aquí. Entonces tenemos la salida de nivel se abre y ¿qué queremos hacer aquí? Entonces lo primero que queremos tener como obviamente un campo serializado, que va a ser una cadena de tipo string. Esta es la primera vez que creamos una variable de tipo string, creo. Y este va a ser el nivel a cargar. Genial, así que ahora podemos volver aquí, muestra el portal. Y podemos seleccionar el nivel al que queremos ir. Y la forma en que hacemos eso es que necesitamos asegurarnos de que obtengamos el nombre exacto que queremos. Entonces y escenas que copiamos, por ejemplo, nivel también estamos en el nivel 2 en este momento. Y no pesa preocupaciones. Vamos y dos, vamos del nivel dos al nivel uno. Seguro. ¿Por qué no? Por lo que vamos a bloquear esto hacia abajo, seleccionar nivel para seleccionar Nivel 1. Copia esto, pégalo aquí. Oh, no, espera, espera, espera, espera. Deberíamos seleccionar éste y ahora lo copiamos aquí. Por lo que ahora este portal, cuando lo activemos, deberíamos ir a carga de nivel 2. Pero, ¿cómo vamos a hacer esto en realidad? Voy a volver aquí. Y eliminemos iniciar una actualización por ahora. Tan solo por ahora los necesitaremos curso. Y aquí dentro voy a crear un emprendedor entrar d Ya sabemos cómo funciona esto. Por supuesto vamos a asegurarnos de que la colisión, la etiqueta, sea igual a Jugador O. Así que ahora estás pensando, Oh, Michael, bueno, ¿qué es esto? ¿ Qué, cuál es la etiqueta de comparación? Bueno, puedes usar compare tag es mucho mejor, pero quería mostrarte una manera diferente y ahora es el momento de cargar la siguiente escena. ¿ Cómo vamos a hacer esto? ¿ Cómo nos movemos realmente de una escena a otra? Déjame mostrarte solo un poquito. Entonces este es el encargado de escena y se puede ver aquí mismo que tenemos un montón de cosas que podemos usar métodos estáticos, eventos. Te lo voy a dejar porque más adelante en tan solo un poco tendremos un pequeño reto. Pero con lo que te voy a ayudar es que me voy a asegurar que aquí siempre que queramos usar escenas, necesitamos añadir el uso Unity engine dot scene management. Guarda eso. Y ahora podemos hacer muchas cosas con nuestras escenas o realmente podemos manejar nuestras escenas. Entonces antes te emitiré el reto de encontrar qué método vamos a usar o ¿cómo puedes usar esta unidad? ¿ Dónde está el encargado de escena? Te voy a mostrar cómo acceder realmente y porque quiero este reto para que trabajes de inmediato cuando empieces. Si entras al archivo aquí mismo tenemos algo llamado la configuración de compilación. Si hacemos click en él, podemos ver las escenas en construidas. Y aquí es donde realmente construimos nuestro juego. Y se puede ver que tenemos múltiples opciones. Podemos usar Windows, podemos usar iOS o lo que sea esto, tvOS, ios, PS4, PS5, xbox One, etcétera, etcétera. Se pueden crear cosas para diferentes plataformas, y la PC es la que vamos a usar. Podemos hacer cosas diferentes. Y aquí es donde agregas todas las escenas o los niveles que tendrás en tu juego. Entonces, por ahora, la única escena que se suma al proyecto de ley es la prueba de escena1. Y sin agregar temporada aquí, no podrás viajar de una a otra usando Scene Manager. Tan bueno que claro, voy a sumar el nivel uno. Y también podemos hacer esto por escenas abiertas de AD. Ahí vas. Se puede ver en la escena 2 porque es una escena abierta. Está bien. Genial. ¿Podemos sumar otra vez? No, no podemos. Y se puede ver también que estas escenas tienen índices en ellas. No vamos a estar usando índices de las escenas en este momento, pero tenlo en cuenta porque más adelante subirán. Entonces configuración, guarde eso de nuevo, File BuildSettings. Ahí vas. En todas las escenas que tienes siempre que quieras usar Scene Manager para ir de una a otra, cierra eso. Ahora, ¿qué vamos a hacer? Te vamos a emitir el reto para cargar la siguiente escena. Así que mira a través del gerente de escena en la documentación de Unity, encuentra la función adecuada que nos pueda ayudar a ir a una escena diferente. Entonces este es el uso de astronautas. Y por último, asegúrate de que sea un método que use una cadena como argumento. Así que pausa el video ahora mismo y ve al caldeo. De acuerdo, bienvenido de nuevo. Entonces digamos que soy estudiante de Michael Moore y sólo soy más, más lo que todo el mundo está diciendo. Y solo estoy aprendiendo a usar el gerente de escena. Está bien. ¿Cuál es el objetivo, cuál es el reto? Me pidió que cargara la siguiente escena. Está bien, genial. Echemos un vistazo. ¿Qué tenemos? Por lo que hemos visto contar, parece contar edificio no parece que ayude a crear visto. No. Se ve. No. No creo que eso se lleve a cabo. Se mete en el no. Edificio por nombre, se ve. Cargar, cargar una escena, carga la escena por su nombre. Espera, ¿cuál fue el reto? String como argumento, o k Esto es un poco más rápido de lo que debería, pero sin preocupaciones. Cargar escena, Vamos a dar click en Cargar visto. Esperemos que tengamos Internet lo haga. Declaración, está bien, cargamos visto. Podemos usar el índice de símbolos o podemos usar el mismo nombre, excelencia, tu nombre, nombre. Scription carga la escena. Excelente, Esto es lo que voy a usar. Entonces ahora en Trigger Enter, si es el jugador, qué vamos a hacer ya que vamos a ver cómo se hace realmente esto. Entonces si me desplaza aquí abajo, está bien, Así gerente de escena punto carga los vio. ¿ Hay algo más que necesito? No, nada. Sigamos adelante. O tal vez en este punto podrías estar pensando, bueno ¿cuál es esta carga vista aditivo Moldau? Bueno, si no lo sabes, probémoslo. Entonces gerente de escena, escena de carga de puntos. Voy a abrir los corchetes y puedo ver aquí mismo estos uno de seis. Por lo que la escena construir índice. No, no quiero eso. De acuerdo, a ver que nombre esto es lo que quiero, pero tenemos otros cuatro y este es un buen momento para enseñarte eso. En ocasiones un método puede tomar 12 o tal vez incluso más argumentos basados en lo que le des, funcionará. Entonces, por ejemplo, podemos agregar el modo. Se puede ver aquí mismo, cargar el modo Escena, esto es de lo que estábamos hablando aquí mismo. Entonces carga Modo de escena, aditivo. Ni siquiera sé qué es eso. Pero aquí dentro se puede ver que hay una opción para ello. De todos modos, esta fue una nota paralela. ¿ Qué queremos usar? ¿ Qué escena? Bueno, ya lo tenemos con el nivel a cargar. Por lo que Lovell para cargar como esta escena que vamos a cargar. Entonces todo debería estar funcionando bien. Voy a volver a Unidad. Guarda eso, haz el juego un poco más grande. Además, necesito matar a todos los enemigos. Y honestamente no tengo tiempo para matarlos a todos. Eso es solo conseguir que se abran las puertas, corre el juego. Además, se va a cerrar en todo caso. Y tenemos estas líneas, ¿de acuerdo? Entonces, antes que nada, no maximices en el juego. Ahora ejecuta el juego. Estas líneas me están molestando un poco, así que voy a elegir la puerta 1, voy a desactivar. Voy a caminar por qué es que puedo dispararlo? Creo que puedo. No se destruye. No, no lo hace. Entonces si camino de cerca, se puede ver que estoy en el nivel 2, estoy fuera a través de él a 0. ¿ Qué pasó? ¿Qué pasó? Yo estoy en el nivel 1. Wo, ¿qué tan genial es eso? ¿ En serio, chicos? Esta es una de las cosas más geniales que han pasado hoy. De repente pasamos del nivel 2 al nivel 1 a través de un portal. Muy bonito. Entonces ahora todo está funcionando, pero es muy rápido. Y honestamente no queremos que suceda tan rápido. Queremos hacerlo un poco lento y añadir un poco más de carácter al juego a medida que avanzamos por él. Entonces te veré en el siguiente video. Por supuesto, no olvides comprometer tus cambios. Mira lo lejos que hemos llegado. Mira por qué me encanta cometer mis cambios. Bueno, empezamos con un commit inicial, agregamos ralentí y hast animaciones creado jugador añadió balas, creó animación para el enemigo, daño, deterioro enemigo. Ni siquiera sé cuál es la cerradura, cuánto hemos logrado y quizá ni siquiera estamos a mitad de camino. Bueno, muy bonito. Entonces espero que te estés divirtiendo, espero que estés disfrutando y te veré en el siguiente video. 40. Gerente de nivel: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, vamos a estar no sólo transitando al siguiente nivel, también vamos a estar transitando. Están de una manera mucho más fría. Entonces ahora cuando caminamos por el portal, no vamos de inmediato. Esperamos dos segundos y luego nos vamos e incluso podemos ajustar esto desde el manager de nivel tanto como queramos. Para que veas ahora tenemos una figura central que es el encargado de nivel. Vamos a usar coroutines, gerente de escena, y todas esas cosas buenas. Entonces, no perdamos más tiempo y empecemos. Ah, bien, así que ahora necesitamos un gestor de nivel porque, vale, Todo es divertido y juegos cuando el portal nos está transicionando. Pero cuando se trata de juegos grandes, no queremos que este objeto en particular tenga el control de la forma en que nos movemos por las escenas. Es mucho mejor que el cisne determine por qué nivel queremos movernos y luego tener un objeto más central, que es el gestor de nivel que manejará el proceso de movernos de nivel a nivel. Esto más adelante a medida que creces. Por ahora, no tiene que ser así. Simplemente puedes usar el portal. El juego funcionará para siempre. Cuando se trata de juegos grandes, el objeto real no hace el trabajo. Tienes un más, digamos una autoridad más grande, una cabeza más grande, que es el encargado de nivel que maneja eso. Por lo que voy a hacer clic con el botón derecho crear un vacío, restablecer su posición. Y este va a ser el encargado de nivel. Podrás satisfacer donde quieras. Y puedes entrar en los guiones justo aquí y a los gerentes, haz clic con el botón derecho en crear guión C-sharp. El encargado de nivel. Pulsa Enter y espera a que solo un poquito para que compile el gestor de nivel de gol en el scripting aquí. Y vamos a seguir adelante y abrirla. Ahora, lo primero que queremos hacer es hacer este nivel manager y instancia. ¿ Qué es una instancia? El ejemplar nos permitirá llamar a este gestor de nivel dondequiera que estemos y utilizar lo que alguna vez sea valioso como público y cualquier método que sea público disponible para nosotros se crean, que sea una instancia y luego llámalo, y entenderás cómo funciona eso. Entonces lo que podemos hacer es en primer lugar, vamos a hacer un gestor de nivel estático público de eso significa que esta variable será fuera de tipo level manager y llamar a esta instancia. Y luego en inicio, vamos a establecer la instancia igual a esta guardada. De acuerdo, entonces, ¿qué está pasando ahora mismo? En primer lugar, público, sabemos lo que el público es estático. ¿ Qué es estático? Estático significa que a través de todo el código, vamos a tener esto el fregadero. Entonces si lo llamamos desde el controlador del jugador, desde el impacto de bala, desde el gerente de sala. La instancia de level manager siempre es la misma en todo momento cuando instanciamos el libro, por ejemplo, cada viñeta es un clon. ¿ Te acuerdas? Entonces si dirijo el juego, déjame solo mostrarte lo que quiero decir. Por lo que disparo un par de balas, pausa el juego. Se puede ver que cada uno de ellos es un clon. Entonces si trato de acceder al controlador de bala del jugador, por ejemplo, si no es estático, alguna variable a la que accederá, será diferente a, por ejemplo, una variable que está aquí o aquí. Pero si creo una variable estática en la bala del jugador, entonces cualquiera que sea la bala a la que acceda, la variable que es estática, será la misma. Por lo que estática significa que es lo mismo a lo largo de toda la ganancia, donde y cuando accedas a ella. Eso es muy importante cuando se trata de una estática. Entonces es de tipo level manager que es bastante fácil de entender y su nombre es instancia. Podemos llamarlo como queramos. Podemos llamarlo Michael si quieres, qué lo mantendrá como instancia. Y entonces tenemos este juego de palabras irónicamente pensado y ¿qué? Tenemos instancia igual esto. Esto significa la clase real. Por lo que estamos usando la instancia en cuanto iniciamos el juego. Instancia es ésta. Entonces ahora dondequiera que estemos en el código, podemos seguir adelante y escribir instancia punto manager de nivel, y acceder a cualquier variable que sea pública obviamente, o método que tengamos aquí dentro. Entonces lo siguiente que vamos a hacer es quitar la actualización por ahora. Úsalo lo volverá a crear. Y necesitamos crear algo llamado campo serializado. Flotar. Y va a ser el momento de cargar. Entonces, y va a ser igual a 2 f ¿ Por qué creamos una carga de fuente? ¿ Cuál es en realidad nuestro objetivo? De todo esto, olvidé decírtelo. Lo que queremos hacer es que queremos retrasar la transición al siguiente nivel, por lo que no queremos que suceda instantáneamente. Queremos tener al menos dos segundos, así que llegamos al portal, esperamos dos segundos, y luego viajamos al siguiente nivel. Esto solo agregará un poco de nosotros autenticidad como sabes, siempre que estés jugando a un juego, no lo haces. Y reportar y luego iniciar de inmediato el siguiente nivel. Se quiere tener un poco de tiempo, dos segundos tal vez repensar su decisión, pero se acabará. ¿ Y cómo vamos a hacer esto? Obviamente vamos a estar usando un recubrimiento. Entonces no te voy a decir que crees la cuarentena ahora mismo porque tendrás que ver con, creo que sí tengo un reto en algún lugar donde creas la coroutina. Así que presta atención muy de cerca. Sé que los llamados adolescentes son muy difíciles de aprender al principio. Una vez que lo consigues, es extremadamente fácil. Empecemos. En primer lugar, porque estaremos accediendo a esta co-rutina desde un guión diferente. Voy a escribir enumerador de ojos públicos. Por lo que la coroutina es de tipo I y numerador. Y lo vamos a llamar la carga siguiente, siguiente nivel. Y aquí dentro vamos a estar tomando una discusión. Entonces va a ser de tipo string y va a ser el siguiente nivel, así como así. Y aquí lo que vamos a hacer es esperar el tiempo para cargar y luego cargar la escena. Entonces como dijimos, rendimiento, retorno, nuevo, espera cuatro segundos. Y esta espera cuatro segundos, vamos a utilizar el tiempo para cargar. ¿ Qué tan grande es eso? Y por último, después de que esperemos 42 segundos, vamos a entrar al encargado de escena. Agregamos el manejo de escena aquí y ahora podemos acceder al gestor de escena. Entonces, ¿te diste cuenta de lo que pasó ahora mismo? No me permitió usar al gerente de escena hasta que tuve los criterios diciéndole a la unidad que estamos usando esto. Entonces Encargado de Escena, no Unity, discúlpame , el guión aquí mismo todo este archivo que estamos usando, visto manejo. Entonces Encargado de Escena, carga de puntos vista. Y como la siguiente escena que vamos a 0 o quiero decir, siguiente nivel que vamos demasiado bajo. Está bien, genial. Ahora lo siguiente que tenemos que hacer es entrar en la salida de nivel. Y en lugar de usar aquí el Gestor de Escenas, simplemente usamos la instancia para iniciar la co-rutina. Y honestamente, ya estoy muy cansada, así que creo que es mejor que hagas esto en lugar de mí. Así que adelante, inicia la corutina. En primer lugar, desde el nivel de script de salida, Kali, llama al gestor de nivel y pasa al siguiente nivel. Hay un pequeño truco que necesitarás tener cuidado. Te voy a dar una pequeña pista, que es que no puedes simplemente llamar a una co-rutina. Es necesario comenzar una calidad. Así que pausa el video ahora mismo y ve a iniciar la co-rutina. Oh, bien, bienvenido de nuevo. Entonces, ¿cómo te llevaste con eso? Y aquí voy a quitar esto. Y en cambio voy a decir que voy a empezar una co-rutina. Voy a usar el gestor de nivel. Espero que esta no fuera la parte más difícil si lograste usar instancia, te felicito, pasas al siguiente nivel de desarrollo de juegos. Si no, no te preocupes por ello, probablemente sea mi error porque no te dije que no te di la pista. Pero vamos a estar cargando el siguiente nivel. Por lo que este método para cargar siguiente nivel es en realidad un enumerador de ojos del gestor de niveles y requiere una cadena de siguiente nivel justo aquí, como se puede ver como un argumento. Entonces se lo voy a dar. ¿ Y qué debería ser? Debería ser el lote de nivel dos. Guarda eso. Y una cosa muy bonita. Se puede ver que cuando dejamos de usar el gestor de escena, el motor de Unity ya no es tan ancho como el motor Unity solo. Entonces las cosas que no usamos están un poco encanecidas. Por lo que en realidad puedo quitar esto, guardar un poco de memoria. Y ahora la salida de nivel solo asigna o llama al gerente de nivel la cabeza central, y le dice que cargue el nivel. Esto será útil cuando tengamos múltiples portales. Ya verás, confía en mí, es mucho mejor hacerlo de esta manera. Entonces guarde eso. Vuelve y a nuestro juego aquí mismo. Inicia el juego, caminó hacia el portal. Estoy tocando en el modo de escena. Por lo que ahora cuando llegue al portal, deberíamos tener dos segundos antes de votar. Y lo podemos ver aquí mismo en tiempo de manager de Londres para cargar dos segundos. Entonces ahí vamos. Aquí no va nada. 112 arriba. Ahí vamos. Entonces ahora estamos en el nivel 1 y no fuimos a ahí de inmediato. Por lo que espero que lo disfruten. Asegúrate de indicar y todos tus cambios. Y en el siguiente video vamos a hacer las transiciones aún más frías. ¿ Te imaginas eso incluso más fresco que esto? Asegúrate de dejar una reseña para las transiciones frescas. Te veré entonces. 41. Hacer que la transición más fríos: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en esta vamos a hacer un par de cosas. En primer lugar, hemos añadido un combinador de máquinas de cine. ¿ Qué es eso? Eso significa que nuestra cámara ya no sale de límites. Es movimiento es un poco raro, pero porque no le dimos tiempo suficiente, recuerda, pudimos ver las líneas azules y aquí ya no las vemos. Y ahora cuando nos movemos por el portal, Whoa, se puede ver que nos movemos en cámara lenta y luego vamos al siguiente nivel. Entonces hay un poco de retraso y la escala de tiempo de nuestro mundo. Entonces, no perdamos más tiempo. Y empecemos. Oh, bien, Así que ahora es el momento de hacer nuestras transiciones un poco más cool. Y lo primero que quiero hacer es que quiero entrar a la consola y ver este mensaje aquí mismo. Y yo sólo voy a borrar esto. Ya no lo necesitamos. Esto fue solo con fines de depuración. Y siempre que tengas algún tipo de error o no estés seguro de algo, usar debug dot log at ayuda mucho solo para ver si alguna condición está funcionando. Alguna condición no es si la cantidad de enemigos que ha terminado y así sucesivamente y así sucesivamente. Entonces debug dot log es mejor, increíble. Me salvó el trasero tantas veces. Entonces sigamos uno, ¿qué queremos hacer aquí? Bueno, lo primero que queremos hacer es una vez que pasemos por el portal. Entonces cuando vamos al portal, no queremos que nuestro jugador simplemente corriendo como un loco loco loco después de que entre ahí, queremos realmente detenerlo y hacerle esperar un par de segundos. Peso. Entonces hay una diferencia. ¿ Queremos detener por completo al jugador? O podemos hacer algo aún mejor? Y en realidad podemos frenar el tiempo en el que se mueve, por lo que su movimiento se volverá mucho lento. ¿ Qué tal eso? Creo que es una mejor solución. Entonces voy a abrir el encargado de nivel. Y aquí dentro después de que empecemos a cargar el siguiente nivel, lo que voy a hacer es que voy a acceder al tiempo y voy a acceder a la escala de tiempo en el mundo. Y puedes ver aquí mismo ¿cuál es la escala temporal? Es la escala a la que pasa el tiempo. Por lo que actualmente el tiempo pasa normalmente en nuestro juego, lo que haré es cambiar esto a 0.2. Por lo que ahora estará funcionando al 20% de su velocidad original. Y veamos cómo se ve eso. No te recomiendo que hagas esto todo el tiempo porque no sólo el juego se ralentiza, sino que todo se ralentiza, así que hasta la animación. Entonces voy a correr, voy a entrar al portal y te darás cuenta de que ahora, whoa, ¿qué tan guay es eso? El arma sigue apuntando correctamente, obviamente, pero la animación es mucho más lenta. Entonces ahí tienes, Michael Jackson. Y estamos en el nivel dos. Muy bonito, pero seguimos moviéndonos. Ah, y mira las balas. Pero las balas, ¿qué tan cool son estas balas? Te recomiendo que recuerdes esto y agregaste algún tipo de mecánico a tu juego. Entonces todo se ralentiza y déjame solo disparar un par de balas y largarme de ahí. ¿ Qué tan guay es eso? ¿En serio? No me digas que eso no es realmente genial. Entonces ahora lo que queremos hacer es volver atrás. Entonces como viste desde el nivel 2, nos estamos moviendo en cámara lenta, pero cuando vamos al nivel 1, estamos de vuelta en este momento realmente malo. Entonces lo que hacemos es que vamos a emitir este reto. Hacemos retroceder la escala. Entonces obviamente no queremos tener la escala temporal así. Entonces encuentra donde necesitamos volver a ajustar la escala de tiempo a su forma original. Y les daré un indicio de qué o cómo devolverlo a su forma original para volver a la normalidad, volver a ajustar la escala de tiempo a 1. A-flat significa que es 100% no 0.1, o puedes hacerlo aún más rápido. ¿ Eso afuera disfruta, diviértete. Asegúrese de volver atrás la báscula a su forma original. ¿ Dónde debemos hacer eso? Pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Espero que se te ocurra eso. ¿ Dónde debemos hacer eso? Bueno, empezamos la escala temporal. Esperamos dos segundos, y luego después de que terminemos, antes de cargar, la siguiente escena, accederá a la escala temporal de punto de tiempo y la venderemos accederá a la escala temporal de punto de tiempo de nuevo a una f Di eso de vuelta en nuestro juego. Del juego, sube, pasa por portal, y no hagas algo que ahora se tarda más de dos segundos en cargar nivel. Entonces uno. Dos, ¿Por qué es eso? Bueno, porque la escala temporal se ralentiza. Ahí vamos. Entonces ahora estamos de vuelta aquí y todo está funcionando bien. Entonces lo último que tenemos que arreglar es el hecho de que tenemos que esperar tanto tiempo a que se cargue el nivel . ¿Por qué es eso? Bueno, obviamente porque aquí estamos esperando segundos, el tiempo para cargar, pero antes de hacerlo, la escala temporal se ha fijado en 0.2, lo que el 20 por ciento del tiempo original. ¿ Cómo vamos a arreglar esto? Bueno, afortunadamente, hay algo realmente bonito y aquí, realmente conveniente que dice que hay que esperar segundos en tiempo real. Por lo que esto pasa el tribunal en ejecución a una cantidad determinada de segundo utilizando tiempo no calificado. ¿ Puedes leer esto? Es que creo que deberíamos hacerlo más grande. No, tiempo no calificado. Entonces, ¿espera a dónde está? Espera cuatro segundos en tiempo real, ahorramos eso. Y ahora la co-rutina ya no se ve afectada por la escala temporal. Entonces ahora solo probemos esto. Corre, corre, corre, corre, llega a este 112 y estamos en el nivel uno. Realmente agradable. Espero que lo disfruten. Espero que te estés divirtiendo. Y vamos a ver, todavía tenemos un par de minutos. Es un video muy corto. Hay algo que quería abordar. Entonces aquí cuando ejecutemos el juego, en realidad hagamos esto un poco más grande para que podamos ver. Entonces ahora caminamos por ahí, OK, así que todo es negro. Sentimos que estamos en el juego apropiadamente, pero vemos este azul justo aquí, y no me gusta. Ahora, podríamos cubrir esto con un par de forúnculos negros. Esa sería una buena solución, no una mala, por supuesto, pero hay una manera mucho mejor y una propiedad dentro de máquina de Cine que vamos a aprovechar, y ese es el confinamiento. Entonces voy a hacer la escena un poco más grande. Voy a alejarme. Y si hago clic en la cámara virtual aquí mismo, se puede ver aquí abajo que tenemos algo que dice, ¿dónde está? De acuerdo, así que ahí vamos, Agregar máquina Centro de Extensión confinada, y crea un componente adicional aquí. Y se puede ver que tenemos la forma delimitadora y se requiere la forma delimitadora y debe ser un colisionador de polígonos. ¿ Qué es un polígono? Polígono significa que al igual que tenemos un círculo, un rectángulo, triángulo, un polígono significa que podemos dar la forma que queramos. Entonces, ¿qué hace esto? Agrega un atado a la forma en que la cámara o cuánto puede moverse la cámara. Déjame explicarte. Voy a ir en el donde es el nombre de la grilla? Haga clic con el botón derecho aquí. Voy a añadir tal vez un componente. Y sigamos adelante y lo llamemos el verdadero por el colisionador de polígonos 2D. Ahí vamos. Puedo editar esto. Se puede ver que este es el polígono, así que podemos, ahí vamos. Hazlo así. Si mantienes pulsado Control, puedes ver esta línea roja. Esto significa que se eliminará. Entonces voy a seguir adelante y hacer los límites por los que se está moviendo nuestra cámara o la cámara de la máquina, los límites por los que no atraviesa. Entonces voy a asegurarme de que, por ejemplo, no podamos mirar aquí y mirar lo que podemos hacer. En realidad, podemos agregar otro punto. Por eso necesitamos un colisionador de polígonos, y ahí vamos. Por lo que la cámara no podrá salir fuera de estos bonos y no podremos ver el azul aquí dentro. ¿Podemos? ¿ Michael dice la verdad? No siempre. Eso lo vuelve a ejecutar y ver por nosotros mismos. Entonces, Vale, estoy fuera del vínculo porque hay algo muy importante y tiene que ser un gatillo. No queremos que afecte nada. Y mejor aún si podemos hacer esta grilla un jugador diferente. Entonces creo que tendremos que convertirla en una capa diferente, sin embargo tendremos que convertirla en una capa diferente. Entonces por eso quería llamar a la grilla el intocable, llamarla la capa equivocada. Y el Norte este objeto sólo porque afectará sólo el polígono tenemos las paredes, quizá queramos que las paredes interactúen con el jugador. Así que corre el juego, vale, con las balas de los jugadores. Ahí vamos. Ahora no estamos interactuando. Y si subimos aquí, solíamos ver las líneas azules. Recuerda, seguimos viendo las líneas azules porque cometió uno de los mayores errores. Ni siquiera asignamos el colisionador de polígonos aquí mismo. Así que arrastra la cuadrícula, y ahí tienes. Ahora tenemos el colisionador de polígonos, corre el juego. Podemos mostrarlo y luego nos vamos. Entonces, ¿no te lo dije? Está bien. Entonces como puedes ver, ya no puedo oh, y mira en el modo escena. Se puede ver que ahora la cámara se mueve sólo con cuánto le permite el confinamiento. Entonces en cuanto golpeamos a uno de los otros, Ahí tienes, la cámara ya no funciona y se puede ver que se ve obligada a subir por ahí. Muy bonito. Entonces este es un truco muy inteligente que has aprendido. Se puede bajar, como se puede ver, ya no podemos mover la cámara. Mira donde estamos. Ya no estamos en el centro porque la cámara está confinada aquí mismo. No se mueve. Por lo que espero que lo disfruten. Espero que te guste lo estricto. Obviamente esto necesita ser arreglado. No me gusta para nada. Tenemos que cambiar un poco este colisionador de polígonos. Entonces tal vez hazlo así, Tal vez éste así. Por lo que siempre es mejor tener las formas cuadradas. Asegúrate de mirar a través de esto. No lo hagas con descortés, asegúrate de tomarte tiempo para crear el combinador correctamente. Entonces eso hecho, espero que hayan disfrutado el video es suficiente longitud. Todavía hay una cosa que tenemos que arreglar y es la animación de sangre sobre los enemigos. Entonces te voy a dar esa tarea. Entonces aquí este flash animaciones al final, queremos asegurarnos de destruir toda esta sangre que sale del jugador, el enemigo. No queremos mantenerlos en la jerarquía. Entonces con eso hecho, espero que lo disfruten. Espero que estéis montando todo, escenificando todo. Lo que hicimos en este video cambió la escala de tiempo y ahora es mucho más fresco al transicionar. E hizo una máquina de cine. Disparos. Comete los cambios. Mira al maestro. Agradece su trabajo. Disfruta lo lejos que has llegado, y te veré en el siguiente video. 42. Descenso de peso y fuera (lienzo): Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y este, te darás cuenta de que tenemos el desvanecimiento dentro y fuera. ¿ Y para qué es eso? Bueno, si miramos justo aquí, tenemos una enorme caja negra. Y se puede ver eso ahora mismo. No vemos nada en el juego. ¿ Por qué es eso? ¿ Qué pasó? ¿ Que dejaríamos el juego? ¿ Por qué es tan pequeño ahora mismo? ¿ Por qué estamos alejados? Tantas preguntas, tan pocas respuestas. Si ejecuto el juego, notarás que empezamos del nivel al desvanecernos de la imagen negra. Y si caminamos por ahí, se puede ver que en cuanto entramos al portal, no sólo disminuimos la velocidad, sino que nos desvanecemos, y luego volvemos a desvanecernos cuando vamos al siguiente nivel. Entonces, no perdamos más tiempo y lleguemos a fallar. Ah, está bien. Por lo que ahora estamos transitando adecuadamente de un nivel a otro. Tenemos el efecto de escala temporal donde ralentizamos todo. Lo siguiente que queremos hacer es que queremos tener algún tipo de efecto de desvanecimiento. Entonces lo que queremos es B1, la imagen o todo el juego para desvanecerse a negro. Y luego cuando entramos a un nuevo nivel, queremos desvanecernos. Entonces vamos a hacer eso. Lo primero que tenemos que hacer, o ¿cómo funciona el saliente de desvanecimiento? Tendremos aquí una gran imagen negra que se desvanecerá y luego se desvanecerá a medida que pasemos de nivel a otro. Entonces todo se trata de una imagen negra y usamos el alfa en ella. Entonces hagámoslo. ¿ Cómo vamos a añadir una imagen en Unity? Bueno, necesitamos algo llamado lienzo. Entonces voy a crear un lienzo. Voy a hacer clic derecho en la jerarquía, ir a tu ojo y encontrar el campus. Ahí vas. Ahora tenemos un campus. Si hago doble clic en él, ahí tienes, puedes ver que es un lienzo enorme, grande y quizá te estés preguntando, ¿por qué es tan grande el lienzo mientras que nuestro juego es tan pequeño? Bueno, esta es la forma en que Unity maneja usando Canvas y agregando imágenes. Es mejor jugar con las imágenes aquí mismo. En lugar de jugar alrededor en las imágenes, escríbalo y tener todo delante del jugador y de los objetos en el juego. Entonces esta es una manera mucho mejor o la forma que utiliza la unidad para manejar las cosas. También se puede ver que tenemos algo llamado el sistema de eventos. Y esto nos permite, por ejemplo, digamos que tenemos algún tipo de botón en el lienzo. Queremos hacer clic en él para que podamos agregar sistema de eventos bajo el Lienzo, convertirlo en un niño, y mantenerlo ahí por ahora. Y este sistema de eventos nos permite realmente presionar botones en la pantalla y permitirnos interactuar con el lienzo. Ya veremos cómo funciona eso en tan solo un poco. Pero por ahora, queremos entrar en el escalador de lona aquí mismo. Se puede ver que podemos escalar con tamaño de pantalla. Y queremos cambiar esto de un 100 a 1920 para entonces ocho, que es del tamaño de la pantalla que estamos usando o creando el juego. Hit Enter. Ahí vas. Ahora todo está hecho. Se puede ver tenemos el lanzador de rayos y un elemento para el lienzo lo cual no es tan importante. No vamos a estar cambiando nada demasiado aquí. Sólo queremos asegurarnos de que el escalador de lona como tamaño de pantalla de escala y queremos que sea 1920 por 1080. Está bien, genial. Ahora con eso hecho, el siguiente paso es agregar una imagen. Entonces voy a hacer clic aquí dentro, ir a ustedes son, y encontrar una imagen. Entonces ahora puedes ver tenemos una imagen en medio del enorme lienzo y yo voy a, es la imagen que se desvanece. Pero a pesar de que lo tenemos en el lienzo, se puede ver aquí abajo en el juego que lo tenemos como una cuadra pequeña. Y si lo muevo al lado superior, notarás que está en el lado superior del juego, y en el medio, es en el medio donde reside el jugador. Y en la parte inferior izquierda lo puedes ver. Entonces no es a pesar de que la imagen aquí arriba del juego sea enorme. Pero se puede ver eso en el lienzo, Es realmente pequeño y se escala hacia abajo. Entonces así es como representamos las cosas en Unity en lienzo de UI. Ahora, ¿qué vamos a hacer? Queremos que esta imagen llene todo el lienzo, que sea completamente negro. Y luego vamos a usar la transparencia en él para desvanecerse y desvanecerse. En primer lugar, ¿cómo lo hacemos tan grande como la pantalla? Bueno, aquí hay una opción. Se puede ver que es la herramienta rect. Al hacer clic en él, puedes arrastrar y hacer que esta imagen sea cada vez más grande. Y te darás cuenta aquí mismo tenemos un montón de cosas que es el Rect Transform para manejar y cambiar cómo se ve la imagen. También podemos sostener al Alt y elegir una de las esquinas, o ejército. Elige a uno de los coordinadores y mantén presionada la Alt. Y se puede ver que podemos ampliarlo y todas las formas. Pero hay una solución aún mejor para esto. Y es que si hacemos click aquí, se puede ver que tenemos un par de opciones y estas se llaman el ancla. Entonces por ejemplo, si hago clic en este ancla, la imagen escalará hacia abajo grande y pequeña con escala hacia arriba y hacia abajo en base a este punto de aquí mismo, también podemos hacer clic en este donde escalará en base a todo el lienzo. Ya verás a qué me refiero con escalar cuando sí necesitamos escalar. Pero, ¿qué pasa si sostenemos Alt? Se puede ver que podemos expandir la imagen de esta manera. Podemos expandirlo en el medio, podemos expandirlo a la izquierda, y podemos expandirlo por todos lados para que llene toda la plaza. Todo el Lienzo inmediatamente. Y se puede ver que ahora la imagen ha bloqueado el juego por completo. Y si voy al lienzo y a la imagen que se desvanece, puedo cambiar el color aquí mismo en la imagen, y hagámoslo completamente negro. Ahora bien, ¿cómo vamos a estar cambiando la transparencia? En primer lugar, podemos hacer esto aquí mismo para que podamos cambiar el alfa en la imagen. Pero es un poco difícil acceder al alfa en la imagen porque necesitamos acceder a todos los colores rojo, verde y azul. En otra forma de hacerlo es agregando algo llamado grupo de campus. Entonces si entro aquí y agrego un grupo de lona, se puede ver que tengo la opción de tener Alpha. Y si muevo este alfa hacia abajo de 0 a uno o de uno a 0, se puede ver en 0 es completamente transparente. A una, no lo es. Y puedo bloquear el recast. Eso significa que recast significa cada vez que quiero hacer clic en algo, esto puede ayudar a bloquear el re-cast y interactable ¿esta imagen es interactable? Digamos que no lo es. Y ahí tienes. Entonces ahora nuestro objetivo es crear una animación. Usando esa animación, vamos a controlar el grupo de lona alfa aquí mismo. Y entonces vamos a desvanecernos y desvanecernos cada vez y nuestra ganancia. Entonces con eso explicado, te voy a emitir un reto. Y tu reto es desvanecer la imagen dentro y fuera. Entonces les voy a dar un proceso paso a paso de cómo hacer esto. En primer lugar, necesitarás crear una animación para el desvanecimiento y el desvanecimiento y será de negro a transparente y se desvanecerá, que será lo transparente a negro. Es necesario crear una transición entre la transición entre las dos animación basada en un disparador. Entonces recuerda, creamos la transición basada en un booleano. Ahora es el momento de usar un gatillo. Deberá agregar un parámetro de disparo. Obviamente, necesitas crear un script de UI Manager y añadirlo al lienzo. Tendrás que crear un método que desencadene el desvanecimiento. Y por último, necesitas llamar a ese método desde el Colton de carga en level manager. Por lo que casi conocemos todos los pasos. A lo mejor no sabes cómo poner un gatillo. Entonces eso es lo que necesitarás para buscarte. Y todo lo demás, creo que es algo que hemos pasado por lo que hemos visto con probado. Recuerda la forma en que funcionará la animación es pulsando el pequeño botón rojo en la grabación de la animación para que la información, pause el video ahora mismo y vaya a hacer el Chavan. De acuerdo, bienvenido de nuevo. Entonces lo primero que vamos a hacer es que vamos a entrar en la animación. Voy a seguir adelante y asegurarme de que tenga la imagen de desvanecimiento y crear una animación. Y ahora puedo entrar en las animaciones, hacer clic derecho aquí y crear la imagen que se desvanece. Entonces estoy dentro de animaciones de activos y aquí voy a crear en primer lugar, el desvanecimiento, desvanecimiento y guardar eso. Ahora lo que dijimos que el arma de decoloración debería ser el desvanecimiento en negro a transparente. Está bien, genial. Entonces, ¿cuánto tiempo quiero que esto tome? Entonces hagámoslo alrededor de 1.5 segundos. Por lo que voy a hacer clic en el botón de grabación. Y qué dije otra vez, negro demasiado transparente. Oops, esa no es la clave que buscaba. ¿ Y dónde está? De acuerdo, de vuelta aquí. Por lo que empezamos en negro y al final estamos grabando. Yo quiero bajar el alfa a 0. Entonces, ¿qué pasa ahora cuando toco la animación? Se inicia como negro y luego se desvanece demasiado transparente. Excelente. Lo siguiente que voy a hacer es crear el desvanecimiento. Tan desvaneciéndose. Y ahora empezamos a 0 y luego entramos en completa oscuridad después de 1 segundo. Por lo que dejamos de grabar, ejecutar el juego tan transparente, desvanecemos a negro. Excelente. Ahora lo siguiente vamos a abrir el Animador. Y aquí dentro vamos a primero que nada, vale, así que el desvanecimiento y el desvanecimiento en significa que vamos de negro a transparente. Esto debería comenzar tan pronto como empecemos de nuevo. Entonces no solo aparecemos en el modo de juego, nos desvanecemos en el modo de juego, y luego tenemos el fundido a negro creará una transición aquí mismo. Esta transición no debe tener tiempo de salida y la configuración debe ser un, quiero decir que la duración de la transición debe estar en 0. Voy a crear un parámetro el cual será un disparador, y sólo lo llamaré Inicio, fade. Hacer de esta capital. Ahí vas. Y agréguelo como condición aquí mismo. Excelente. Y espero que hayan hecho todos estos pasos. Estas son cosas que ya hemos cubierto y que ya hemos creado. Y antes de seguir adelante, necesitamos asegurarnos de que este lienzo también esté presente en el segundo nivel Y o en el nivel 1. ¿ Por qué? Porque si vamos al nivel 1, ¿dónde están las escenas? Si vamos al nivel 1, verás que no tenemos un lienzo, por lo que no podremos acabar de desvanecimiento cuando iniciemos el Nivel 1 o cuando vayamos al nivel 1. Por lo que de vuelta en el nivel 2, voy a llamar a esto el lienzo de UI Enter. Y yo voy a entrar a los Prefabs. ¿ Dónde están los prefabs? Y voy a crear y aquí una carpeta UI. Y aquí dentro voy a arrastrar el campus de la UI. Guarda eso. Y ahora mira lo increíbles que son las prefabs. Eigen no crea que hemos hablado de esto. Pero si entramos en las escenas en el nivel uno, inmediato podemos ir a Prefabs UI y agregar un lienzo y nuestros juegos. Entonces ahora tenemos un lienzo aquí mismo en el nivel 1 y no tuvimos que volver a crearlo todo. Esta es la belleza de tener Prefabs. Con eso hecho de nuevo en el nivel 2. Veamos qué tenemos aquí dentro. Por lo que juegan las animaciones, todo debería estar funcionando ahora cuando ejecutamos nuestro juego, deberíamos tener un desvanecimiento y animación. Entonces ejecuto el juego. Ahí vas. Para que veas que tengo un desvanecimiento de looping en animación. Entonces voy a entrar en las animaciones, encontrar el desvanecimiento y desvanecerse, y asegurarme de que no haya tiempo de bucle. Guarda eso. Y ahora cuando corremos el juego y el segundo ahora tenemos tenemos un desvanecimiento en una pulgada. Excelente. Entonces, ¿sabes por qué está pasando esto? Bueno, porque al entrar, lo primero que hacemos es el desvanecimiento. Por lo que esto ya está configurado para nosotros. Ahora, lo siguiente que tenemos que hacer es crear el Gestor de UI y agregado al campus. Entonces voy a entrar en mis scripts aquí, hacer clic derecho y crear una nueva carpeta para la interfaz de usuario. Cambiamos mucho el nombre de esta carpeta, pero por ahora, sigamos adelante y creamos un script C-sharp, que va a ser el UI Manager o debería haber estado en la realidad del manager. Y no tiene preocupaciones. Espere a que esto se compile. Pasémoslo a los directivos. Creo que aquí es mantequilla o tal vez no. No lo sé. Depende de tu preferencia. Creo que en el directivo tal vez sea mejor. Cancelar o no, dejémoslo. Vamos a mantenerlo en tu ojo. A pesar de que es un manager lo mantendrá en la interfaz de usuario. Voy a abrir el Administrador de UI, abrir Visual Studio. Y lo primero que necesitaremos es una referencia a la imagen que queremos desvanecer de nuevo aquí. Espero que esto no fuera demasiado duro porque va a ser un campo serializado, que es una imagen de tipo imagen. Ah, así que había algo que espero que algunos de ustedes fueran capaces de descifrar. Si traté de usar la imagen aquí mismo. Te darás cuenta de que no tengo opción para ello. Lo que sí necesito es usar tu motor Unity dot u i Así que espero que esto no fuera un gran problema para ti. Espero que encontraras este error o encontraras este inconveniente en el reto y apartaras de tu camino y trataras de averiguar la solución si no lo hiciste, no te preocupes por ello. Fue en mi nombre. Debí haberte advertido de antemano. No se preocupe. Imagen al destino. Algunos de ustedes podrían estar pensando, Sí, sin preocupaciones, seguro, solo mi confianza fue destruida. De todos modos, ¿qué vamos a hacer en esta clase aquí y el Administrador de UI? Bueno, como dijimos, necesitamos un método. Crear un método que desencadene el desvanecimiento y llamar a ese método desde el coworking de carga en level manager. De acuerdo, entonces me voy a asegurar que esto sea un público. Entonces voy a crear una imagen de desvanecimiento del vacío público. Y aquí dentro voy a seguir adelante y acceder a la imagen para desvanecerse. Voy a conseguir un componente en él, que es el animador. Y voy a poner el gatillo. Y ese gatillo va a ser la referencia de una cadena al desvanecimiento de Inicio. Y hoy, ahora, copia esto de vuelta aquí, pégalo aquí, cierra, guarda eso. Entonces, ¿qué estamos haciendo? Porque creamos la animación en la imagen real para desvanecerse. Se puede ver que el animador está aquí en este objeto de juego. Uno de los componentes en la imagen para desvanecerse. Entonces lo que hacemos es acceder al animador en la imagen y luego configuramos el gatillo que se inicia. Está bien, genial. Ahora el siguiente paso es seguir adelante y llamarlo Level Manager. Y hay dos formas de hacer esto. Podemos o bien ir adelante y encontrar el objeto del juego o encontrar al Gestor de UI. O vamos a seguir adelante y crear una instancia de esto. Voy a crear un gestor de UI público estático. En la instancia. Guarda eso. Y voy a crear un inicio aquí. Y luego iniciar la instancia será igual a esto. Guarda eso. Ahora de vuelta en el manager de nivel, ¿dónde debemos poner esto? Bueno, yo creo en cuanto golpeamos o en cuanto entramos al nivel de carga. Por lo que tenemos la escala de tiempo en 0.2. Voy a seguir adelante y acceder al Administrador de UI, la instancia. Y voy a seguir adelante y desvanecer la imagen. Ahora, notarás algo que porque hemos dicho la escala de tiempo a 0.2, el desvanecimiento de la imagen será más lento que lo que tenemos aquí dentro. Entonces vamos a probar esto y a ver si funciona. Si sientes que es un poco lento, puedes seguir adelante y hacer que el desvanecimiento de la imagen sea un poco más lento. Entonces ahí vamos. Empezamos, corremos. Y cuando entramos a este portal aquí mismo, allá vamos. Estamos bajando la velocidad y nos olvidamos de añadir un hey, nos olvidamos de añadir la referencia. Aquí puedes ver el error. Si hago doble clic en él, verás que la imagen de punto de IU Manager se desvanece, hay algo mal. ¿Qué pasa? Bueno, no hay instancia. De acuerdo, entonces si voy al lienzo de la UI, notaría que ni siquiera agregué el manager, Así que no estoy seguro de cómo se está llamando. Entonces vamos a arrastrar en el Administrador de UI. Vamos a asegurarnos de que dijimos la imagen de desvanecimiento y vamos a aplicar los cambios. Entonces nota ahora el lienzo este nivel no tenía un Administrador de UI, ¿verdad? Y este es el que usamos en el nivel uno. Si voy ahora mismo al nivel uno, hago clic en el lienzo de UI. Cuenta con un Administrador de UI y tiene la imagen ya configurada. Para que puedas ver de nuevo el poder de usar apps de duelo. ¿ Qué tan guay es eso? Por lo que de vuelta al nivel para correr el juego, nos desvanecemos. No más errores. Caminamos arriba, pasamos por el portal, y ahí vamos, bajamos la velocidad. Tenemos este azúcar aquí mismo. Por lo que hubo un ligero problema aquí. Ya que notan que no tuvimos el tiempo para ni siquiera desvanecerse. Entonces voy a acceder de nuevo al desvanecimiento y a la imagen que se desvanece. ¿ Y dónde está esto? Bueno, esto dependerá de cuánto tiempo o cuál es la escala temporal que tengas aquí mismo. Entonces voy a hacerlo 0.5. Guarda eso. Y en lugar de 1.5 segundos, voy a hacerlo alrededor, Hagámoslo alrededor de 0, tal vez 1 segundo o 2.5th. Digamos que son unos 40 del juego. Pruébalo, a ver si tenemos tiempo para desvanecerse. Entonces subo, me muevo. Ahí vamos, nos desvanecemos por completo y después paramos de desvanecerse. Y muy normalmente. Entonces con eso hecho, espero que disfruten. Asegurémonos de comprometer nuestros cambios. Etapa todos comprometen los cambios. Creado una imagen de entrada y salida que se desvanece usando eres innumerables. Comete los cambios. Espero que lo disfruten y los veré en el siguiente video. 43. Sección 7: entorno masticable - movimiento tornado: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, voy a maximizar en el juego. Hemos agregado un mecánico apuesto. Entonces ahora a medida que nos movemos, si hago clic en la tecla Espacio, Ahí tienes. Se puede ver que me muevo un poco más rápido de una, pero en realidad duplicó veces la velocidad. Por lo que cuando corro, me muevo dos veces más rápido. Ahí vamos. Podemos ver un no puedo matar a los enemigos para correr alrededor de ellos y dispararles. Y sí, ahí vamos. Por lo que hemos añadido este mecánico realmente bonito y fresco. Entonces, no perdamos más tiempo y empecemos. Ah, está bien, así que ahora podemos volver atrás y no jugar, haga doble clic sobre él. De acuerdo, entonces ahora lo que queremos crear, en realidad lo primero que quiero hacer es deshacerme de esta imagen. Ahora lo que podemos hacer es apagar el lienzo, pero eso no es muy práctico. Pero lo que podemos hacer, y esta es una gran oportunidad para enseñarte algo nuevo. Si haces click en el lienzo, puedes ver que la capa y aquí está, estás. Entonces si entramos aquí dentro de las capas, se puede ver que tenemos todas las capas justo aquí. Y se puede ver que tenemos algún tipo de cerradura y luego podemos tener algún tipo de yo aquí. Y si hago clic en el ojo, se puede ver que todo debajo de la interfaz de usuario o todo lo que hay debajo de la interfaz de usuario de capa desaparece. Si le doy clic al jugador, se van, se puede ver que el jugador también desaparece. Todavía está en el juego. Todavía funciona cuando iniciamos el juego. Se puede ver en la ventana de juego, Todavía está ahí, pero en la escena, no lo podemos ver. ¿ Qué es eso fuera del camino? Lo siguiente que queremos hacer es agregar algún tipo de mecánico apuesto, igual que tenemos en el juego Hades. Podemos ver que podemos correr rápidamente. Nosotros vamos a hacer lo mismo en este juego. Es un poco diferente, obviamente por la limitación y los sprites. El limitante en un equipo. Y vamos a usar los sprites aquí dentro. Dónde están, estos dramaturgos sprites para la capa azul. Y se puede ver que aquí tenemos esta giratoria. Y esto es lo que vamos a usar. Y obviamente, obviamente en realidad en los recursos que he dejado a otro tipo de torpedo puedes usar eso Es un poco diferente y colores a este, pero creo que eso no es un problema enorme. Entonces, ¿qué vamos a hacer? Vamos a explicar en primer lugar lo que el torpedo tornado. Ni siquiera sé cómo llamarlo. A lo mejor tienes una forma totalmente diferente. Lo llamaremos el apuesto a partir de ahora todo será el apuesto solo para evitar cualquier confusión. Por lo que en primer lugar, el jugador se moverá mucho más rápido. Por lo que vamos a aumentar la velocidad de movimiento del jugador. Y se activará la animación, lo que hará que el jugador vaya en círculos. Y mientras el jugador está haciendo el tornado, será invencible para que no pueda ser lastimado por nada. Esto es algo que implementaremos más adelante cuando agreguemos un sistema de salud al jugador. Por ahora, solo debes saber que esto es lo que sucederá cuando el jugador esté apuesto. Y finalmente, puede romper objetos a su alrededor. Entonces como saben el nombre de esta sección, al igual que los objetos estructurales. Y en primer lugar, necesitamos agregar una forma o un poco de un movimiento avanzado al jugador para que pueda destruir esos objetos del juego así sin más ni azul. Y empecemos. Entonces lo primero que queremos hacer es que queremos ir al controlador de capas, mira cuántos scripts tenemos. Me acabo de dar cuenta, eso es bueno. Eso significa que estamos aumentando nuestra comprensión. De todos modos. En primer lugar, tendremos que crear una forma de hacer un seguimiento de la velocidad de movimiento actual. Porque ahora tenemos la velocidad de movimiento regular, tendremos ahora la velocidad de movimiento apuesto. Entonces lo primero que quiero hacer es crear un flotador privado y la velocidad de movimiento actual. Y esta velocidad de movimiento actual cambiará si estamos haciendo el torpedo o tornado, y si simplemente estamos caminando. Entonces voy a crear un bool privado que se va a llamar el chorro de lata. ¿ Y por qué estamos creando este booleano? Bueno, porque ya verás que ahora una actualización queremos salpicar. Por lo que vamos a hacer clic en algún tipo de clave y vamos a empezar a puntear, pero no queremos poder tirarse todo el tiempo. Queremos tener un refresco para el tablero, y también queremos tener algún tipo de longitud o el guión. Por lo que tendremos este booleano para mantener todo en jaque y asegurarnos de que podamos correr 20 veces seguidas. Entonces lo siguiente que voy a hacer es que me voy a desplazar aquí mismo y ver dónde se mueve el jugador. Entonces hago doble clic y puedo desplazarme hacia abajo y encontrar el Rigo. Tenemos al jugador moviéndose y aquí es donde sumamos la velocidad. Entonces es la entrada de movimiento veces la velocidad de movimiento. Y en lugar de usar la velocidad de movimiento, voy a decir que es la velocidad de movimiento actual. Y solo para asegurarnos de que tenemos una velocidad de movimiento actual y no es 0. Y empezar, voy a establecer la velocidad de movimiento actual para que sea igual a la regular. Velocidad de movimiento. Ahí vas. Puede cambiar el nombre de la velocidad de movimiento si lo desea, puede nombrar la velocidad de movimiento regular. Simplemente lo mantendré así. No es demasiado confuso para mí. Si es grueso para ti, entonces adelante y cámbiate el nombre. Lo siguiente que queremos hacer es que queremos configurar las variables 40 puntiagudas. Permítanme añadir aquí un comentario de que estamos apuestos. Asombroso y movimiento por miradas. Entonces voy a crear un campo serializado y va a ser el flotador, y va a ser la velocidad del guión. Y por ahora voy a ponerlo a cuál es nuestra velocidad de movimiento? ¿ Cuál fue la velocidad de movimiento en el jugador de dunas? A ver, diez. De acuerdo, entonces, así que voy a hacer esto por lo menos 20, tal vez aún más después. Por cierto, podremos controlar desde lo espectral. Entonces esto no es un problema. Y lo siguiente que quiero asegurarme de que tenemos es estas dos variables que es el o no, en realidad esto debería ser privado. O vamos a seguir adelante y hacerlos serializados. Entonces la longitud del guión, que se va a establecer como 0.5 f Entonces así es cuanto tiempo estamos corriendo. Y luego tendremos el guión enfriado, que va a ser el tiempo entre cada guión y venderlo a uno. Entonces ahora tenemos la opción de jugar con los guiones, la velocidad del guión, la longitud del guión, y los discontinuos. Enfriar. Ahora 1 segundo. Está bien, genial. Ahora una actualización. Vamos a seguir adelante y crear un método aquí no son método en realidad. En primer lugar, antes de crear el método, vamos a comprobar algún tipo de entrada. Y en base a esa entrada, vamos a seguir adelante y cambiar la velocidad actual, convertirla en la velocidad del tablero, para después asegurarnos de que ya no podamos seguir discurriendo. Puedes usar el botón que quieras. A lo mejor usaré el espacio. Voy a usar entrada que bajen la clave. Y se puede ver que esto devuelve un verdadero durante el fotograma, el usuario comienza a presionar una tecla e identificado por un código de tecla. Así que hit tab, abre los corchetes. Voy a escribir aquí código clave espacio punto, y ahí tienes, Podemos ver que tenemos las opciones para mapear en nuestras teclas y queremos asegurarnos de que podamos discurrir, abrir esto aquí dentro. Entonces lo primero que hacemos es la velocidad de movimiento actual se convierte en la velocidad del tablero. Y can dash se establece en false. Entonces ahí vamos. Hacemos click en el espacio. Verificamos si podemos correr. Si ambos son ciertos, el movimiento actual se convierte en la velocidad del guión, por lo que es mucho más rápido. Entonces el movimiento actual aquí se convierte en 20, no en diez, nos movemos más rápido y ya no podemos correr. Por supuesto, tendremos que restablecer estos valores en tan solo un poco. Pero por ahora, probemos esto y veamos si funciona. Ah, y nos olvidamos de hacer algo que es crear la animación real. Y hagámoslo en solo un poco por ahora, probemos nuestra mecánica de que funcionan. Entonces voy a hacer esto un poco más grande. Entonces me muevo. Si tuviera la llave del espacio. Sí, no, no pasó nada. ¿ Y por qué es eso? Porque tenemos algún tipo de error. De acuerdo, Esto es muy molesto pero no nos impide nada. ¿ Cuál parece ser el problema? Presioné Espacio, obtengo keydown, declaro controlador. De acuerdo, bienvenido de nuevo. Entonces después de un poco de cavar y estaba muy confundido por qué esto no funcionaba. Y eso es porque el candidato no estaba fijado. Por lo que no era cierto. Me aseguré de ponerlo en verdadero y empezar. Y ahora también he tenido este registro de puntos de depuración. Entonces déjame solo mostrarte lo que estaba haciendo. Yo estaba confundido. Si es necesario. problema era que el movimiento actual no estaba cambiando por alguna razón. Así que tenía el registro de punto de depuración establecido aquí mismo, y estaba buscando en la consola. Entonces con aviso que mantuvo su estado, y así me di cuenta de que este método no estaba siendo atrapado. Entonces sabía que el espacio apremiante estaba bien. Ellos pueden golpear probablemente no lo fue. Yo lo puse a la verdad. Funcionó. Permítanme quitar esto, guarden aquello. Esto es sólo el poder de la depuración. Y como puedes ver, a veces no todo sale a la perfección. A veces necesitas cavar en las cosas. Entonces ahora cuando me muevo, se puede ver el movimiento. Puedes darte cuenta de lo rápido que es cuando presiono la tecla de espacio. Ahí vamos. Se puede ver que me estoy moviendo mucho más rápido, acuerdo, con eso hecho, el siguiente paso es realmente llevarnos vuelta a la velocidad regular y también asegurarme que el enfriamiento del tablero funcione y los fines de semana después de nuevo después de la donde quiera que el guión se enfríe. Y eso va a ser en realidad parte de tu reto. Tu reto es crear dos cotiledones. Por lo que el primero será el contador de enfriamiento donde esperaremos y luego podremos torpedo nuevamente. Y el segundo será la velocidad a la que nos movamos para que al final de esto, pongamos la velocidad de nuevo a su velocidad normal. Por lo que esas instrucciones paren el video ahora mismo y vayan a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces, ¿qué vamos a hacer aquí? En cuanto corramos tenemos el movimiento, vamos a tener que llamar a rutinas. El primero de aquí va a ser un enumerador de ojos. Y va a ser el guión. Enfriar. Y aquí dentro vamos a ceder, volver nuevo. Espere cuatro segundos. Y vamos a esperar el guión, tira hacia abajo. Y cuando termine, vamos a decir que puede correr igual a verdadero. Y luego vamos a crear otro I numerador, que se va a llamar la longitud del guión. ¿ Y sabes qué? Creo que el nombre no es suficiente. Voy a llamarlo el contador de longitud del tablero, solo para que sepamos lo que está pasando y los contadores de enfriamiento del tablero. Seguro. Llamémoslo el mostrador de abajo del tablero. Y voy a copiar esto. Así que rendimiento, devuelve nuevo peso por segundo, pero ahora es la longitud del guión. Y cuando terminemos con el guión, Esto significa que hemos corrido por, no sé, por mucho tiempo que sea el tiempo de reutilización del tablero. Por mucho tiempo que quieras que el jugador se mueva rápido. Lo mantendré en 0.5. A lo mejor lo cambiaremos. Puedes hacer lo que queramos. Voy a establecer la velocidad de movimiento actual para que sea igual a la velocidad de movimiento regular. Entonces, por último, necesitamos iniciar el coltán, que es el guión, enfriar contador, y luego iniciar otra co-rutina. Y va a ser el contador de longitud del tablero. Contador de longitud del tablero. Está bien. Entonces estaba buscando y preguntándome por qué esto seguía siendo rojo. Eso se debe a que en realidad no llamábamos al contador de enfriamiento del tablero. Acabamos de llamar a la variable ahí arriba. lo guardamos. Entonces ahora presionamos el espacio. Dijimos el movimiento actual a la velocidad del guión. Sin ella, no podemos correr más. Empezamos la co-rutina. El guión se enfría. Después de los acabados de enfriamiento, entonces podemos correr de nuevo y la longitud del tablero. Entonces guarde eso. Volvemos a nuestro juego. Corremos el juego. Y ahí vamos. Podemos ver que ahora nos movemos rápido. Y luego empezamos a mover eslogan, tan rápido, luego lento otra vez, y rápido, luego lento otra vez. ¿ Qué tan guay es eso? Ahí vamos, todo está funcionando. Y si trato de correr varias veces, se puede ver que no puedo hacer eso. Tengo un periodo de tiempo entremedio. No puedo moverme muy rápido tanto como quisiera. Por lo que espero que lo disfruten. Espero que estés cometiendo los cambios creados un movimiento de torpedo, voy a llamar a esto porque suena realmente genial. Etapa todo creado. Torpedo, movimiento. Comete los cambios. Y los veré en el siguiente video donde realmente estaremos agregando visualización a este torpedo, a este apuesto. 44. Animación del torpedo: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en este, en realidad hemos agregado una animación, que es la capa que se adentra en el animador. Entonces cuando corro el juego, puedes ver justo aquí que nos estamos moviendo. Cuando presionamos el espacio, no sólo nos movemos más rápido. En realidad hacemos el verdadero matón. ¿ Qué es realmente acosarlos? Algo de mi infancia. Pero de todos modos, se puede ver mientras caminamos, también podemos hacer esto. Tenemos el refresco y lo inteligente es que hemos agregado en el último segundo, estaba fuera de la parte superior de mi cabeza cuando estamos disparando. Si hago el torpedo, ahí tienes. Se puede ver que ya no podemos deberíamos porque obviamente no tenemos arma, nuestras manos. Entonces, no perdamos más tiempo. Y empecemos. De acuerdo, entonces es hora de animar el torpedo. En primer lugar, vamos a hacer es vamos a entrar al jugador de cúpula, seleccionar las animaciones, el ralentí. Vamos a crear un nuevo clip y aquí el cual se va a establecer y la capa de animaciones. Y vamos a llamarlo apuesto porque cada uno de nosotros, o jugador apuesto para mantenerse consistente con el otro nombre. Entonces jugador corriendo, guarde eso. Y ahora empecemos. Ahora bien, sabemos que estamos accediendo. Estamos cambiando las animaciones o las propiedades en el renderizador sprite de cuerpo y desplazándonos hacia abajo hacia los sprites. Entonces vamos a sumar esto. Abramos esto para que podamos verlos adecuadamente, igual que siempre lo estábamos haciendo. Entonces veamos el punteante 1, 2, 3. Y vamos en realidad, sólo quiero abrir esto y ver correctamente lo que está pasando. Entonces tenemos 1, 2, 3, 4, 5, 6, 7 sprites. Y los tenemos a todos correctamente. A ver. De acuerdo, Así que todos ellos, Eso se llama esto, el D1, D2, D3, D4, 5, 6, y 7. Entonces solo quiero evitar la confusión solo para saber cuáles son las d. Por lo que ahí vas. 12345 a siete. Mantenga pulsado, Shift, selecciónelos todos, póngalos aquí. Y voy a quitar el primero y voy a mover todos estos al inicio. Y ahora vamos a expandir un poco esto, pero hagámoslo alrededor. Ahí vamos, corralo. A ver. De acuerdo, Muy bonito. Entonces a pesar de que todavía tenemos el brazo aquí, si quieres, esto es algo en lo que estaba pensando mucho. Por lo que el brazo y el gon se quedan en su lugar. ¿ Qué debemos hacer al respecto? Bueno, honestamente, sólo voy a mantenerlo como está. Se puede girar el brazo, se puede votar comenzó, no se podrá disparar. Creo que sería un buen mecánico en realidad. A lo mejor deberíamos incluso agregarla. No, porque quiero ver el brazo y la pistola girando durante este tiempo no va a poder disparar obviamente, pero no queremos cambiar la rotación del arma. Causará un problema. Ahí vamos. Esto es lo apuesto, pero podemos hacer es que tal vez podamos apagarnos igual que podemos crear una grabación donde apagamos el cuerpo y el brazo del jugador. A lo mejor sólo esconderlos por un segundo. Al arrancar, los apagamos. Y al final, oops, no el cuerpo. Me refería al brazo y las armas puestas. Nosotros los apagamos. Y al final, cuando terminemos la rotación, necesitamos asegurarnos de que el, este es el último. Pégala aquí. Volvemos a encender esto. Ahora esperemos que esto no cause ningún error. Eso lo guardamos, ejecuta el juego. También. Necesitamos realmente desencadenar esto. Déjame volver. Y debería estar ahí hay un problema. Entonces lo que yo creo que va a pasar, tal vez esto provoque un ligero problema aquí. Para que puedas ver las armas puestas. Tenemos una referencia al mismo y al punto lejano. Entonces lo que me da miedo es que cuando apaguemos las armas, éstas ya no funcionarán. Pero veamos qué pasa y desperdiciamos eso. Entrémonos al animador y nos preocuparemos de eso en tan solo un poco. Entonces, ¿qué deberíamos estar haciendo? Vamos a empezar a correr cuando estemos en el jugador caminando. Entonces voy a pasar de jugador caminando a jugador apuesto. Voy a crear un gatillo aquí. Y voy a llamarlo el guión. Ahí vamos. El estado aquí dentro será el guión. Sí, Así que de caminar a correr, tenemos esto. Y lo que podemos hacer es que vamos a tener tal vez un tiempo de salida porque no tenemos un tiempo real para cuando paramos el apuesto. No tenemos una condición que nos haga dejar de golpear. Si no volvemos, seguiremos corriendo para siempre. Y también podemos ser puntiagudos cuando nos estamos ensanchando. Entonces voy a mover esto un poco, hacer que se vean un poco mejor. Ahí vamos. Ahí vamos. Y voy a asegurarme de que esto también esté bajo la condición de apuesto. Y vamos a eliminar cualquier tiempo de transición de caminar y de lo apuesto. Adelante y probemos esto. En realidad, si entro en el animador ejecutar el juego, podemos ver el inactivo aquí mismo. Y no debería haber maximizado en jugar el juego. Veamos cómo funciona esto. Entonces este es mi proceso real de me tiro. Ahí vamos. Lo tenemos funcionando correctamente. Dejé de correr dos. Está bien. Entonces como pueden ver, hay algo un poco mal si intenté disparar ahora mismo, ¿dónde están las armas? Para que cometamos algún tipo de error en el jugador de la perdición, el apuesto, y éste está apagado. ¿ Se encienden? Sí, sí lo hacen. En el último fotograma, pero por alguna razón no se encendió. Entonces voy a volver a correr el juego y ver cuál es el problema. Entonces me tiro o, vale, ahora sé el problema que estamos buceando. Entonces en la animación, capa, dash, stop looping, esta es la primera vez que me olvido tantas veces de quitar el looping en un juego. Entonces volvamos a ejecutar esto. Prueba esto. Entonces hago el guión, dejé de correr. Miro al jugador de la perdición. Sí, ahí vamos. Entonces mira lo que pasa cuando nos corremos. De acuerdo, Así que eso sería un guión. No sabía 0. Por lo que todavía estamos en la animación puntera. Genial. Ahora vamos a hacer una transición de vuelta de lo apuesto al jugador caminando y al jugador ralentí. Y éste tendrá un tiempo de salida. Quitaremos el tiempo de salida en el camino volviendo. Por lo que desde el tablero hasta el jugador, ralentí y caminando, ambas transiciones no deben tener un tiempo de salida, ni necesitan tener una duración de transición. Y mientras vamos tendremos algún tipo de tiempo de salida aquí mismo. Por lo que vamos a mantener el tiempo de salida tal como está. ¿Por qué? Porque cuando estás creando animaciones y tienes tiempo extra en especie de sucede automáticamente y perfectamente para ese momento, si tenemos un tiempo de salida un poco más largo, la animación podría ser cortado en el medio y luego volver a ralentí. Entonces vamos a probar esto. De todos modos. Voy a seguir adelante y correr el juego. Entonces cuando me apunto, ahí vamos y no regresamos. ¿Por qué es eso? No volvemos a los ojos, el enlace por alguna razón. Hay algo que no funciona correctamente. El modo en que esto funciona es cuando se está reproduciendo esta animación, entonces tenemos un tiempo de salida. Entonces no se trata de éste, el que va hacia el apuesto para el que regrese. Entonces esto fue un error de mi parte. Algo que pensé que sabía o por supuesto que lo sé, pero por alguna razón me equivoco con el camino de regreso, no con el camino que va. Pero de todos modos, una cosa me di cuenta, si jugamos ahora el chorro funciona correctamente. Entonces aunque estemos caminando, dijimos el gatillo, tenemos la división. Está bien. Entonces mientras estamos trabajando, ahí vamos. Dejamos de trabajar porque estamos dando click en esto. Vamos a probar esto fuera dentro del juego. Pero por ahora, verás que cuando corremos, tocamos solo tenemos el aviso de animación aquí en el apuesto. Entonces verás que tocamos tenemos la animación y luego regresamos. ¿Por qué es eso? Bueno, porque en la hora de salida y aquí estamos jugando 60% de ella. Entonces lo que haremos es simplemente aumentar esto hasta que llegue a ser alrededor de 97 o incluso uno. Y éste también, por lo que este es un porcentaje. Y cuando lo incrementas, ves aquí en la línea de tiempo que jugamos todo el apuesto y luego volvemos al jugador caminando alrededor de 97. No me gusta mantenerlo en una porque vamos a empezar el, nuevo el jugador apuesto o tener algo rancio. Por lo que 97 por ciento corre el juego. Ahora cuando corremos, ahí vas. Hacemos el guión. Hacemos el guión, hacemos el guión y todo está funcionando correctamente. Vamos a probarlo cuando estemos caminando del juego. Entonces estamos caminando, estamos caminando, nos corremos. De acuerdo, no se está activando. Realmente agradable. ¿Por qué no se está activando? Bueno, porque es parte de tu reto. Tu reto es activar la animación del torpedo para que solo tengas una tarea y esa es una actualización. Cuando presionamos los botones, asegúrate de activar la animación y debes saber qué botones. A lo mejor usas algo diferente al espacio. Es por eso que uso botones y siempre pausa el video ahora mismo y voy a asegurarme de que corremos. De acuerdo, bienvenido de nuevo. Entonces aquí, cuando salgamos, vamos a seguir adelante y decir que el animador jugador establece disparadores, establece gatillo. Y debido a que esto es una referencia de cuerda, volvemos atrás , lo copiamos, volvemos aquí, pegamos, cerramos esto. Y por último, también quiero añadir un pequeño comentario aquí para más adelante, vamos a cambiar o asegurarnos de que el jugador sea invencible. Por lo tanto, acceda al manejador de salud de capa porque será un script separado. Y asegúrate de que sea invencible por un tiempo. Genial, así que vamos a guardar esto ahora, volver a nuestro juego y vamos a correr. Entonces ahora podemos disparar. Hacemos el guión, podemos disparar, hacemos el guión. Y si estamos corriendo, seguimos disparando a pesar de que el brazo está destruido. Entonces ahí tienes. También podemos Dash mientras caminamos y funciona perfectamente bien. Ahí vas. Se puede ver que podemos correr mientras caminamos y volvemos a caminar. Ahora, el problema aquí es que cuando salimos, disparamos, todavía podemos seguir disparando, pesar de que estamos apuestos. Ahora, es algo fácil. Podemos crear algún tipo de booleano aquí. Asegúrate de que si podemos correr entonces no podemos disparar. Esta es una buena idea en realidad. ¿ Y dónde está apuntando arma mientras que el jugador dispara? Y podemos crear una condición. Y aquí, esto es realmente bonito. No quería hacerlo ahora mismo porque más adelante cuando creemos armas avanzadas, todo lo que gira en torno a la mecánica de tiro se moverá del guión. Aquí es donde vamos a explicar cómo evolucionamos nuestros guiones a medida que avanzamos. Pero por ahora, solo agreguemos esta pequeña condición. Esa es una buena manera de enseñar algo nuevo. Vamos a revisar antes de empezar a disparar jugador, si podemos, el dash es igual a falso. ¿Por qué es eso? Bueno, porque mientras estamos corriendo el “can dash spot”, así que tenemos este tipo de contador. Y vamos a decir aquí que regresen, si éste, discúlpeme, regresen, simplemente eso. Entonces, ¿qué significa regresar? Regresar significa que salimos del tiroteo del jugador. Por lo que todo este código aquí mismo no se ejecuta tan pronto como la vela sea falsa, ya no podemos disparar. Vamos a probar esto. Espero que entiendas a lo que nos referimos con retorno. Regresar significa que acabamos de salir, detenemos todo en esto. Si esta condición no es cierta, por lo que el guión, el guión es verdadero solo. Esto significa que toda esta condición es falsa. Esto significa que no regresamos. Entonces guarda eso de nuevo en nuestro juego, del juego. Deberíamos ver que cuando estamos corriendo, ahí vamos. Dejamos de disparar hasta que se enfríen como terminados. Está bien, genial. Entonces esto es sólo una pequeña línea de cómo podemos arreglarlo más adelante, por supuesto, todo esto cambiará. Entonces espero que hayan disfrutado el video. Espero que hayas hecho los compromisos aquí dentro. Espero que haya dejado una reseña. De no ser así, este es el momento perfecto para hacerlo. Muchas gracias. Escenario todo hizo la animación puntera. Ahora estamos más fríos. Comete los cambios, y te veré en el siguiente video. 45. Objetos Breaking: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Este video será un poco más largo porque esta es una de las veces que realmente no estaba seguro de lo que vamos a hacer. Entonces no estaba seguro si quería hacer esto un gatillo o quería hacer de este un objeto sólido. Pero de todos modos, cuando caminamos por esto, pero no pasa nada, pero si lo atravesamos, se puede ver que podemos romperlo. ¿Qué tan guay es eso? Y desaparece por sí solo después de un par de segundos. Entonces, no perdamos más tiempo. Asegúrate de poner tu concentración SCAP. Yo sí tengo pequeñitos errores y algunas vacilaciones durante esto, pero no te preocupes, le expliqué todo lo más posible. Entonces Empecemos. Ah, está bien, Así que ahora es el momento de agregar un par de objetos rompibles. Este es el punto completo del apartado. Estamos en el segundo video y aún no hemos agregado nada que destruir. Entonces voy a entrar a mis sprites aquí dentro. Y voy a hacer esto un poco más grande. En este camino. Supongo que incluso podemos hacer que estos iconos sean un poco más pequeños por lo que encajan bien. Ahí vamos. Entonces voy a hacer clic con el botón derecho para crear una nueva carpeta, y estos serán los objetos rompibles. Objetos rompibles, y es por eso que siempre creamos carpetas. Imagínese si tuviéramos todos los sprites por completo en una sola carpeta, habría sido una pesadilla. De todos modos, entraremos a los recursos, como pueden ver aquí mismo, tenemos muchos bots que destruir. Voy a elegir la correcta. Voy a elegir el objeto rompible blanco. Ahí vamos. De repente entramos aquí. Y podemos seguir adelante y diseccionar esto. Entonces voy a asegurarme de que sea múltiple. Y voy a hacer esto puede ser fuera pantalla y se lo haré saber cuando termine. Está bien. Así que bienvenido de nuevo. Déjame decirte lo que hice. No quería aburrirte con todos los detalles, así que todo lo que hice, rebané 32 por 32 la caja blanca. Tenemos tres partes diferentes aquí y se utilizan tres descansos diferentes. El W1, W2, y W3 para describir el mayor breaking pop. Y me aseguro de que tengamos estas tres piezas aquí dentro. Serán muy bien más adelante. Entonces voy a descartar cualquier cambio. También creé una animación para las partes bikeables. Entonces ahí lo tienes, puedes ver que se rompe. Nos vamos a asegurar a partir de ahora que vayamos a lo quebrantable. Para que puedas ver el blanco comprado rompiendo, asegúrate de que no se enrolle. Vamos a salvar todo eso. Ahora la olla de frenado, voy a añadir un año Box Collider o un circular más no, no un lienzo. Retire el componente. Voy a añadir un colisionador de cajas. Así colisionador de caja 2D. Ahí vamos por esto, lo voy a hacer un poco más pequeño. Hago el tamaño de píxel en el sprite. Déjame mostrarte lo que hice también. Para que no te confundas. Se puede ver que el bote está alrededor de un buen tamaño para el jugador. Mantengámoslo así. Y lo que podemos hacer es que podemos seguir adelante y hacerlo, bueno, esto dependerá de ti. ¿ Quieres que tu objeto sea capaz de querer que seamos capaces de colisionar con este objeto, o simplemente queremos convertirlo en un disparador. Voy a mantenerlo un gatillo por ahora, más adelante, si quieres cambiar esto, si quieres tener interacciones con las macetas, quieres que te impida caminar por ellas. De lo que sí te recomiendo que lo hagas no-gatillo. Sepan qué, Vamos a mantenerlo como un no-gatillo. Y por esa razón le vamos a agregar un cuerpo rígido y lo haremos estático. ¿ De acuerdo? Entonces es una estática. No se mueve, pero podemos romperlo. Entonces, ¿qué más deberíamos estar haciendo aquí? Bueno, creo que eso es todo. Por ahora. Guardemos esto y sigamos adelante y le agreguemos un guión, que se va a llamar los toros de ruptura. Entonces en los guiones, porque queremos agregar comportamiento obviamente al spot que queríamos romper. Vamos, vale, así que veamos a los enemigos la interfaz de usuario del jugador, y vamos a seguir adelante y crear una carpeta aquí. Y hagámoslo por lo quebrantable. Romper burbujas se abre con el botón derecho Crear probablemente no tendrá un guión diferente u otro guión, está bien, tan rompible. Pero lo bueno de crear una carpeta y establecer un solo script aquí que lo podamos ver desde fuera. Entonces y guiones aquí mismo, podemos seguir adelante y revisar rompible para que podamos encontrarlo de inmediato. Voy a sumar a la parte de frenado. Ahí vamos. Tenemos las burbujas de rotura. Abramos esto aquí. ¿ Y qué vamos a estar haciendo? Bueno, porque no estamos usando un gatillo, vamos a usar algo llamado el entrar en colisión. Por lo que ahí se puede ver en colisión es cuando los colisionadores cuerpo menos rígido ha comenzado a tocar otro colisionador o cuerpo rígido, y nos aseguraremos de que sea 2D. Entonces aquí puedes ver que en lugar de otros, tenemos la colisión. Entonces lo que vamos a hacer es que vamos a comprobar si la etiqueta collision.com, ¿tiene etiqueta comparada? No, no lo hace. Etiqueta. O podemos acceder a la etiqueta collider.com. Ahí vamos. Entonces ahora tenemos el colisionador de la colisión. Y comprobaremos si es el jugador. Y si lo es, entonces vamos a destruir el objeto del juego. Disculpe, el objeto del juego. Guarda eso. Y también entraremos aquí, comprobaremos el animador y veremos qué tipo de gatillo hace. Entonces tendremos que crear un ídolo aquí. Entonces entraremos en las animaciones de activos. O es, ¿dónde está? ¿ Dónde está? ¿Rompible? Parte blanca, inactiva. Eso significa que no se está moviendo porque obviamente se puede ver que no queremos que se rompa tan pronto como iniciemos el juego, queremos mantenerlo así. Entonces lo que podemos hacer es hacer clic aquí y establecer esto como el estado predeterminado. Entonces ahí lo tienes. Y vamos a sumar esto aquí mismo. Crear una transición que tendrá algún tipo de gatillo, que es el descanso, Scott break por simplicidad, sin tiempo de salida, duración de transición 0. Y voy a seguir adelante y hacerlo como el descanso. Entonces volveremos aquí. Vamos a hacerlo, porque esto es, esto no va a ser demasiado complicado. Sólo conseguiré al animador de inmediato. Entonces aquí voy a decir si la colisión como jugador antes de destruir o en realidad, ya sabes, vamos a quitar esto. Voy a seguir adelante y conseguir el componente, el animador. Y en tor dot set trigger y va a ser el rastrillo. Y sé que es una referencia de cuerda y no lo copié, pero espero que el descanso sea fácil de entender. Y luego voy a crear un vacío público. Destruir. Bueno, no, destruye. Simplemente, llamémoslo destruye. Y a lo mejor queremos añadir algún tipo de frío para que no queremos que se destruya la olla. Entonces déjame decirte lo que busco aquí para hacer. Lo que sin una corutina, simplemente destruye el objeto de juego. Lo que quería decir, quería usar una corutina para retrasar la desaparición de las pedacitas aquí mismo. Pero por otro lado, pensé que podría ser aún mejor poner esto justo aquí, llamado el evento después de tal vez un par de segundos, o podemos elegir tal vez en el segundo tres, ir, establecer el evento. ¿ Cuál es la función? Destruye, guarda eso, ejecuta el juego. Entonces ahora deberíamos ver que en cuanto chocamos con el bote, entonces se destruye. Y ahí vamos, el objeto ha desaparecido. Y lo que también podemos hacer es, por ejemplo, podemos ir en la animación de la parte de frenado y la animación. Entonces en cuanto se rompa la olla, Digamos que se rompe aquí mismo. De lo que podemos hacer, podemos empezar a grabar y luego apagar el colisionador de cajas. Entonces verás que ahora mismo la caja es buena cuando veas la olla por completo y cuando se rompe, ahí vamos. No hay más colisionador. Y si miramos de cerca, podemos elegir el colisionador y tal vez moverlo un poco antes de que realmente se rompa. Por lo que parece como si lo hubiéramos atravesado. Entonces guarde eso. Ejecuta el juego. Oh, no. Hablar. No. No así. Perdón. Ah, así que graba me olvidé de presionar el botón derecho. Corremos el juego. Teníamos la olla. Ahí vas en descansos. Entonces se siente realmente como si camináramos por él y se puede ver desaparecer el pop. Está bien, genial. Entonces lo que eso hizo, lo que tenemos que hacer es asegurarnos de que esta olla se rompa, no cuando solo estamos caminando por ella, queremos que se rompa cuando realmente lo atravesamos. Y creo que esto va a ser un reto para ustedes. Y tu reto va a ser devolver un valor booleano. A lo que sentí que se trataba de romper cuando estamos corriendo, bueno, cuando estamos corriendo, queremos crear un método int player controller al que podamos acceder desde el break que guiaremos. ¿ Por qué es eso? Bueno, tendremos que crear un método que devuelva un bool en lugar de un vacío. Y ese método debería devolver verdadero si somos apuestos y falsos, si no lo somos y falsos si no, no, esto no es w, es empinada. De ahí que necesitemos usar los jugadores, la velocidad o la velocidad de movimiento del jugador o lo que quieras usar. Entonces, ¿por qué estamos creando este valor de retorno? Porque en las burbujas de descanso, queremos asegurarnos de que el jugador esté realmente apuesto. Por lo que vamos a sumar a la condición en el en colisión entrar. Queremos asegurarnos de que no sea sólo la capa. Queremos asegurarnos de que sea el jugador puntiagudo el que acaba de golpear nuestro bote. Por lo que esa información crea el método que devolverá un valor booleano. Pausa el video ahora mismo. Ve a hacer el reto. Ve a hacer lo mejor que puedas. Sé que no hemos hecho este tipo de método el cual devuelve algo que no sea vacío. Pero sé que estás hasta sólo tratar de hacer lo mejor posible. De acuerdo, bienvenido de nuevo. Espero que eso no fuera demasiado duro. Voy a entrar al controlador de capas. De acuerdo, entonces, ¿cuál es el problema aquí? Se podría decir eso, Bueno en realidad, sólo quiero acceder al movimiento actual. Y de inmediato puedo saber cuál es la velocidad del jugador. Pero aquí dentro se puede ver que el movimiento actual es privado. Entonces lo que tendremos que hacer ya que vamos a crear un método aquí. Y ese método va a ser una capa bool pública es puntiagudo. ¿ Y qué estamos haciendo aquí? Vamos a comprobar si la velocidad de movimiento actual es igual a la velocidad del tablero. Podríamos haber usado también la vela, pero pueden correr no es equivalente. ¿ Dónde está? Dónde estamos restableciendo el numerador. Por lo que puede correr no es equivalente a cuando se detiene la velocidad de movimiento. Por lo que podemos correr es solo para enfriar el apuesto mientras que la velocidad de movimiento se relaciona de inmediato con la longitud discontinua. Entonces de vuelta aquí, si la velocidad actual es igual a la velocidad del tablero, vamos a volver verdadero. De lo contrario vamos a devolver falso. Y por cierto, podríamos haber hecho algo parecido a esto, así que puedo quitarles estos. Y como puedes ver, es mucho más limpio. ¿ Por qué? Porque sólo tenemos una línea de código bajo las declaraciones if y else. De lo contrario no podríamos haber usado de esta manera. Ahora lo tenemos como público. Volvemos a lo quebrantable. Vamos a seguir adelante y crear un booleano dentro del año 4. Destruimos el bote después de comprobar la colisión, obviamente porque no queremos saber siempre con qué velocidad del jugador a menos que sea el jugador real colisionó, solo golpeó. Entonces voy a seguir adelante y crear un bool. Y va a ser capa es contundente. Y va a ser igual a la colision dot game object dot get component. Entonces es un poco diferente a cuando estamos usando un gatillo. Y aquí dentro simplemente vamos a conseguir el controlador de jugador. Y vamos a comprobar si la capa es puntiagudo, guarde eso. Entonces ahora esto debería o devolver verdadero o falso. Y aquí dentro vamos a comprobar si la capa es puntiagudo. Entonces vamos a iniciar la animación. Y cuando la animación comienza en descansos y destruir objeto de juego palo eventualmente. Entonces una cosa que quería mencionar aquí es aquí en que usamos colisionador. Aquí utilizamos el objeto de juego. Podríamos haber usado el objeto del juego aquí, salvo eso, y habría funcionado igual, pero la colisión, se puede ver aquí mismo, devuelve una colisión. No tiene el seguro, Digamos métodos que necesitamos. Entonces si voy por ejemplo, y en el otro lugar, así salida de nivel por ejemplo, aquí, el colisionador 2D es diferente a la colisión 2D. Por lo que la colisión es parte del detallado retorno a la física. Si miramos en la salida de nivel, el colisionador 2D realmente devuelve los objetos del juego para que podamos acceder de inmediato a la etiqueta mientras que cuando se trata de la colisión, Es solo un poco diferente. Te recomiendo que pases por la documentación de Unity, veas cuál es la diferencia entre colisionador de colisión. Estas son cosas pequeñas, pero solo sepan que estamos accediendo primero al objeto del juego y luego usando la tachuela de comparación. Con eso fuera del camino, vamos a salvar todo esto. Volvamos a nuestro juego. Vamos a ejecutar el juego. Tratemos de romper el patois caminando. De acuerdo, ahí tienes. Entonces no se está rompiendo. Y si traté de correr, oops, me olvidé el guión de los dos de abajo. Si me dirijo. Está bien. Tampoco está funcionando. ¿ Por qué es eso? Está bien, entonces se rompió. Ahí vas. Probemos esto una vez más porque hay algo que fue un poco lento. Y creo que el problema es con el juego. Espere un segundo. Entonces creo que quiero mover esto, la cosa que maneja el colisionador. Yo quiero moverlo al principio. Guarde eso porque quiero que el colisionador desaparezca en cuanto empecemos a romper el dinero. Entonces ahí vamos. Se puede ver en este momento que simplemente podemos pasar. Ahora si quieres agregar un poco más, tal vez no sé autenticidad que queremos mantenerlo solo un pequeño segundo antes de que sigamos adelante y lo rompamos, Es tu elección. Asegúrate de elegir lo que quieras. Déjame ver. De acuerdo, entonces si quiero moverme, si mueves solo el pote rompible, elige la segunda línea. Ahí vas y puedes ver que puedes moverlo. Entonces guarde eso. Ahora tenemos todo funcionando. Tratemos de caminar a través de ella. No va a funcionar. Caminamos por ahí. No funciona con guión a través de él, se rompe. Genial. Vamos a asegurarnos de que escenificamos todo. Y en el siguiente video, queremos mostrar las piezas rotas de nuestra olla. Por lo que queremos tener algún tipo de piezas que se extiendan. Por eso creé y los sprites en cuentas por cobrar aquí tenemos el P1, P2, y P3. Estas son piezas que se van a poner alrededor de esto y van a añadir un poco más de una sensación de romperse macetas. Por lo que queremos que las piezas vuelen un poco y luego desaparezcan lentamente, haciendo las cosas un poco más auténticas, un poco menos rígidas. Entonces te veré entonces. 46. Piezas rotas: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Y en este video, cuando ejecutamos el juego, seguimos rompiendo la parte, pero notarás que después de desaparecer, tenemos tres partes. Parte 1 en el suelo siendo destruida. Tenemos una parte 2 y parte 3 y otra parte 3. Por lo que estamos instanciando y rotos partes cuando se un objeto o un enlace destruye un objeto o un enlace rompible objeto rompible. Entonces, no perdamos más tiempo. Y empecemos. Ah, caso. Por lo que es hora de hacer algunas piezas rotas. Lo primero que vamos a hacer es que voy a arrastrar esta pieza rota aquí mismo. ¿ Y dónde está? Haga doble clic de k Ahí estamos. Y asegurémonos de que esté en la capa de jugador. Y creo que deberíamos cambiar esto para tener los objetos de nivel y no el jugador vive. Pero por ahora sólo lo voy a mantener ya que no vale de eso. Obviamente, deberíamos cambiarlo, pero no vamos a hacer eso ahora mismo. Voy a añadir un 23. Por lo que ahora tenemos tres piezas. Voy a seleccionarlos todos y hacerlos todos en el jugador. Ahí tienes, el PS2 y las abejas. Tres, voy a guardar eso. Antes de seguir adelante. Cambiemos esto por el barroco y la primera parte. Copia esa parte rota 2 y la parte rota 3. Ahí vamos. Ahora, voy a entrar en la carpeta Prefabs y voy a hacer clic derecho y crear una nueva carpeta para las partes rotas. Ábrela. Y los voy a sumar uno por uno. Si los seleccionamos todos y nos arrastramos, no funciona. Entonces voy a arrastrar uno tras otro. Entonces ahora tenemos las tres piezas rotas y si quieres, puedes hacer algo aún mejor. Por lo que podemos sumar, por ejemplo, la tercera pieza. Podemos rotarlo alrededor. Entonces ahora tenemos esta pieza aquí mismo, rotamos alrededor. Y esto se puede llamar, por ejemplo, la pieza para, si quieres, te recomiendo que uses tu imaginación cuando dudas con las piezas que tenemos. Voy a seleccionar estos tres y asegurarme de que su posición esté en 0. Porque por ejemplo, si tenemos, digamos esto como un seis, Vale, sumamos a las seis o los tenemos todos a las seis si los agrego así que los instancio. puede ver que se inicia en la posición 6 no en 0. Esto causará problemas. Por lo que siempre me gusta mantenerlo en 0, a pesar de que cuando lo instanciemos en cierta posición de transformación, tomará la posición que le digamos. Pero de todos modos, sigamos. Creo que sabes a lo que me refería? Voy a borrar estas piezas rotas. Voy a abrir el guión rompible si lo encuentro. Y aquí dentro vamos a primero que nada, obviamente conseguir una referencia a la parte rota. Entonces voy a crear un campo serializado de tipo objeto de juego y llamar a esto la parte rota. Guarde eso. Y luego antes de destruir el objeto del juego, voy a seguir adelante e instanciar parte rota en la posición transform.py y transformar la rotación. Guarde eso. Volvamos a nuestro juego. Correcto, para esto, compilar cualquier día ahora. De acuerdo, Así que voy a cerrar esto. Voy a entrar en prefabs y seleccionar las piezas rotas. Y vamos a sumar el primero, salvo que el juego choque con el objeto allá van a los descansos y debemos quedarnos con esta pieza aquí mismo. De acuerdo, Muy bonito. Ahora no está desapareciendo. Nos ocuparemos de eso en tan solo un poco. Pero por ahora tenemos las piezas rompiendo. Pero obviamente, obviamente queremos tener múltiples piezas rompiendo y apareciendo una tras otra. Entonces este va a ser tu reto, tu reto para instanciar todas las piezas. Entonces, antes que nada, saca todas las piezas de los sprites que ya hemos hecho eso. Crea una matriz de objetos de juego para las partes rotas en bucle a través de las piezas que utilizas el bucle for. Por lo que ya hemos aprendido cómo funciona un bucle for. Tendrás que generar un número aleatorio cada vez. Y necesitaremos usar el número para instanciar una pieza rota. Ahora podrías estar pensando, bueno, esto significa que algunas piezas rotas se harán dos veces. Y eso está bien. Honestamente, creo que no es algo muy malo de lo que preocuparse. Si lo deseas, puedes profundizar aún más en esto e instanciar un ángulo aleatorio para que las piezas tengan para que puedan aparecer diferentes unas de otras y no. Ambientado en el mismo lugar. Ahora, claro que aquí habrá un pequeño obstáculo. Hablaremos de ello una vez que hagas el reto. Así que pausa el video ahora mismo y ve a hacer el reto. Oh, vuelve. Entonces antes de destruir el objeto del juego, lo que vamos a hacer es que vamos a hacerlo, y creo que este no es el lugar perfecto para hacer esto. Entonces en lugar de instanciar aquí, voy a seguir adelante y mover esto aquí arriba. Entonces después de que iniciemos la animación, ¿ o sabes qué? Esto también es un problema. Entonces voy a hacer esto un poco más grande. Y después de que iniciemos la animación, voy a instanciar las piezas si quieres. Si lo desea, también puede crear un método separado y llamarlo usando los eventos. Pero por ahora, sigamos adelante y hagamos las cosas que queríamos hacer. Entonces, en primer lugar, vamos a convertir el objeto del juego en una matriz, y la parte rota hace doble clic aquí. Y esto van a ser las partes rotas aplican eso. Voy a comentar esto para poder ver todo en el inspector. Por lo que las ollas rompibles se desplazan hacia abajo, cierran estos porque son molestos. ¿ Y qué tenemos aquí? Las partes rotas. Bloquee esto, seleccione todos estos y arrástrelos aquí. Por lo que ahora tenemos las tres partes rotas listas para su uso. Volveré aquí. ¿ Y qué vamos a hacer? Entonces, en primer lugar, vamos a recorrer todas las partes. Entonces para voy a iniciar en r igual a 0. Entonces espero que esto no fuera demasiado duro. Empecemos de nuevo. Empezamos por crear la variable. Empezamos con un 0. Entonces lo que vamos a comprobar, o seguiremos dando vueltas. Si bien yo es menor que las partes rotas punto, longitud y longitud porque estamos usando matrices. Si estamos usando listas, usamos el conteo y cada vez que incrementamos i en una. Por lo que necesitaremos generar tres piezas, y queremos que estas piezas sean aleatorias. Por lo que tenemos una variedad a la hora de romper macetas. Entonces int, es un entero. Lo vamos a llamar la parte rota al azar. Y va a ser igual al rango de puntos aleatorios. ¿ Y cuál es el rango? El rango es de 0 a la longitud de punto de las partes rotas. Ahí vamos. Ahora después de que hagamos eso, vamos a subir la instanciación. Y dentro de aquí, en lugar de simplemente las partes, vamos a usar la parte con la parte rota aleatoria. Entonces voy a guardar todo eso. De acuerdo, así que sigamos adelante y probemos este código. Entonces voy a volver aquí. Voy a ver ¿qué más tenemos que hacer? Creo que todo está bien. Ejecuta el juego. Ahora caminamos hasta el bot, no se rompe. Tratamos de destruirlo. Ahí vamos, se destruye y ahí vamos. Tenemos algunas piezas son no, tal vez no debería tener maximizando en juego. De nuevo, detente, maximiza en el juego. Hagamos esto más grande. Queremos ver la jerarquía. Queremos saber qué está pasando. De acuerdo, entonces me encuentro con la parte que se rompe. Entonces ahí vamos. Hemos roto la segunda parte, roto la parte 1, y roto la segunda parte. Entonces puedo mover esto sólo un poquito y las partes rotas están encima una de la otra. Entonces por eso recomendé que creáramos un poco de rotación. Entonces con eso hecho, asegurémonos de que escenificamos todo aquí. Nosotros etapa de eso. Y voy a llamar a esto, ahora, instanciamos partes rotas. Cuando instanciamos partes rotas, una macetas son el trazo. Cuando se destruyen los bots, guarde eso, comete los cambios. Y espero que estés disfrutando, espero que estés entendiendo todo. Y en el siguiente video vamos a asegurarnos que las piezas rotas no solo se queden en su lugar. Se extendieron como si esto hubiera sido destruido y tenemos algún tipo de impacto. Entonces te veré entonces. 47. Spreading de piezas rotas (Lerp): Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, hemos creado las piezas rotas y nos aseguramos de que cuando golpeamos estas piezas rotas, vuelen un poco aparte. Entonces ahora cuando lo golpee, ahí tienes. Se puede ver que estos spots se movieron un poco y se puede ver eso, acuerdo, Entonces para este no fue el mejor ejemplo. Tratemos de ver cuando tenemos dos partes que son iguales. Entonces ahí tienes. ¿ Se puede decir cuál es la parte 2 y cuál también es la segunda parte? No, no se puede porque hemos agregado una rotación aleatoria. Pensé que habría sido una idea muy bonita cuando te lo conté en el video anterior, pensé por qué no implementado ahora mismo en este juego. Entonces, no perdamos más tiempo. Y empecemos. Todo el caso. Entonces ahora cuando destruimos nuestra comprada rota, tenemos las piezas rotas y especiadas. Pero antes que nada, a veces son iguales a pesar de que elegimos números aleatorios. Y lo segundo es que no se separan. Entonces lo primero que quiero manejar es la rotación. Entonces en lugar de solo tener la rotación de transformación, pero voy a hacer es que voy a crear otro entero, rotación aleatoria. Y va a ser igual a un rango aleatorio entre 04, Y4 porque voy a estar girándolos alrededor del eje z en cuatro direcciones. Entonces la forma en que voy a hacer eso es multiplicando aquí por 90 grados. Y tendremos cuatro opciones. Entonces o rotamos noventa ciento veintidós setenta o simplemente lo trajimos todo el camino. A lo mejor éste debería ser 0. Empezamos a las 0123. De acuerdo, entonces en lugar de la rotación de puntos transformados, voy a usar algo llamado el cuaternión, esa regla. Ahí vamos, Eso es gobernante. Yo lo buscaba y lo veo. Por lo que se puede ver que esto traduce los tres ejes y a la rotación. Y vamos a estar obviamente girando en el, alrededor del eje z. Por lo que 90 veces la mitad de la rotación aleatoria. Ahí vamos. Guarda eso. Se puede ver la instanciación aquí mismo. Si crees que esta línea es un poco demasiado larga, lo que puedes hacer es presionar Enter en cada línea. Y ahora es mucho más obvio lo que hace esta instanciación y cuáles son los elementos de la misma. Está bien, genial. Ahora con esto ninguno, lo siguiente es que queremos agregar comportamiento a nuestras macetas rotas. Por lo que vamos a entrar en los guiones aquí dentro y el botón derecho rompible y crear un script C agudo que se llamará el pote roto. Tan parte rota, hit enter. De acuerdo, no sé por qué sigue pasando esto y voy a entrar en las partes rotas, seleccionar las tres, y seguir adelante y agregar el guión de parte rota en cada uno de estos prefabricados. Abre el guión y ¿qué queremos aquí? Entonces, en primer lugar, queremos una variable también, después de la velocidad de movimiento de estas partes. Entonces es un campo serializado el cual va a ser un flotador. Y vamos a ir a la velocidad de movimiento. Y si quieres agregar un poco más de variedad, incluso puedes hacer que cada uno de ellos tenga una velocidad diferente y bebé, dependiendo de qué tan rápidos guiones o lo que quieras hacer. Entonces vamos a crear un vector privado 3. Y esto representará la dirección del movimiento. Entonces dirección de movimiento. Entonces, ¿en qué dirección se moverá cada pieza? Y por último, tendremos algo llamado campo serializado, que va a ser un flotador. Y este es el factor de paralización. Y van a ser 50 de estos números son arbitrarios y ya he probado un par de superventas. Por eso sé por qué cinco actos. Pero de todos modos, ¿qué es este factor de paralización? Obviamente, cuando nuestras piezas se rompan, se esparcirán, pero luego se detendrán en algún momento. Por lo que nuestro objetivo es hacer el factor de salazón, que afectará a las piezas a medida que se alejen unas de otras y finalmente las detuvieron. Por lo que poco a poco estaremos desacelerando. Y te mostraré cómo vamos a estar desacelerando usando algo llamado lóbulo. Pero no nos adelantemos. Lo primero que queremos hacer es que queremos tener una dirección aleatoria en la que se mueve cada pieza. Entonces, en primer lugar, voy a hacer una dirección de movimiento de x. Entonces, ¿por qué estoy haciendo esto y empiezo? Porque la parte rota está unida a la pieza rota, que instancia. Y en cuanto instancie, se está llamando al inicio. Y entonces inicio determinará cuál es la dirección. Por lo que el punto de dirección de movimiento x2 será igual al rango de puntos aleatorios y qué valores te, puedes elegir cualquier valor que quieras aquí. Pero solo para que sea un poco divertido. Por ejemplo, tienes las piezas rotas volando muy rápido. Creo que la dirección, la aleatoriedad de la dirección será un poco más locos, llamémoslo. Entonces lo que haremos es utilizar la velocidad de movimiento menos como mínimo y la velocidad de movimiento como máxima. Por lo que ahora a medida que aumenta la velocidad de movimiento, si deseas aumentarla, también aumentará la aleatoriedad. Y tener un menos se asegurará de que algunas piezas simplemente vayan. No sé dónde algún lugar al azar. Entonces ahora con el movimiento actúa hacia abajo, eso es tener el movimiento y y va a ser exactamente igual. Con eso. Sigamos adelante. Queremos empezar realmente a mover las piezas y vamos a usar la posición de punto transformado. Y vamos a estar incrementándolo por la dirección de movimiento tiempos tiempo punto delta tiempo. Obviamente sabemos plus, plus igual, por lo que se mueve lentamente y la dirección del movimiento tiempos tiempo.Deltatime para desprenderse de la velocidad de fotogramas. Por lo que esto sería más estable. De todos modos. Ahora necesitamos asegurarnos de que estamos deteniendo el movimiento de cada pieza y no sólo tenerlos moviéndose al infinito y pasando por todo. Entonces la forma en que vamos a hacer eso es usar algo llamado el Aprender. Entonces les voy a mostrar lo que es, asegurarme de que lo encuentren por su cuenta en la documentación de Unity. ¿ Qué hace? Se necesita en tres variables. El primero es el valor de inicio de la velocidad de y con su el valor de inicio. B es el valor final y t es el valor a interpolar entre a y b ¿Qué significa la interpolación? Entonces, la interpolación lineal entre los dos puntos. Entonces lo que pasa es que queremos tomar el valor a o cualquier valor de a a B usando un factor de t Cada vez. Entonces este será el factor de Detalle del que hablamos que vamos a estar aplicando y asegurarnos de que entiendas lo que está pasando aquí. Estamos tratando de mover las piezas más lento y más lento. Entonces vamos a empezar con algún tipo de dirección. Y entonces vamos a estar llevándolo 0 para evitar que las piezas se muevan. Entonces voy a emitir este reto para usarla para detener el movimiento. Por lo que en primer lugar, queremos disminuir el impulso de las piezas rotas, de las piezas en movimiento. Queremos establecer la dirección del movimiento para aprender. Vamos a empezar valor. Vamos a tener el valor de inicio sea la dirección del movimiento real, y el valor final debe ser el 0. Y por último, la velocidad de la que vamos a estar deteniendo el movimiento va a ser el factor Detener. Entonces básicamente este reto mientras aplicas , detén el movimiento. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces aquí, después de nuestro tiempo nos movemos en ciertas direcciones. Entonces tenemos la dirección del movimiento como único factor que está afectando esto. Entonces aquí se va a establecer la dirección de movimiento para que sea igual a un vector tres embotelladores. Y aquí dentro, el valor inicial será la dirección del movimiento. El valor final será el vector 3 0, y el factor, el T será el factor de Detalle veces tiempo.Deltatime porque estamos aprendiendo cada fotograma, así que no queremos que sea muy rápido. De acuerdo, entonces volvamos aquí y probemos esto y veamos si funciona. Porque hacemos eso. Voy a entrar en el prefabricado y ver qué tenemos partes rotas. A lo mejor podemos añadirlos aquí. Taza tan rompible. Ahí vamos. Está en las partes rotas, tal vez como se llame. De acuerdo, ollas rotas, corre el juego. Veamos qué pasa. A lo mejor esto no funciona en absoluto entonces. Oh, lindo. Entonces como puedes ver, cada parte fue por nuestros caminos separados y puedes ver tenemos la parte uno que estaba exactamente encima de la parte uno o la otra parte 1. Por lo que tuvieron la misma rotación. Vamos a probar esto otra vez. Ahí vamos, lo destruimos. ¿ Qué tenemos? Parte 2. 2. Y entonces, ¿se puede averiguar en qué parte eran los dos? Entonces si muevo esto a la derecha, también teniendo la misma rotación por alguna razón, hicimos algo no del todo bien, así que voy a romper la olla y vamos a ver. De acuerdo, entonces siento que lo de la rotación no está funcionando si vuelvo a la rotación aleatoria rompible. De acuerdo, bienvenido de nuevo. Entonces me preocupaba que hubiera algo mal con el código, pero no, al parecer, somos o las personas más afortunadas del mundo o los desafortunados preguntaron a la gente del mundo, dependiendo de cómo lo mires. Pero cada vez que las rotaciones eran las mismas. Por lo que se puede ver aquí mismo, segunda parte es menos 180 y la otra parte 2 es menos 90. Entonces otra vez, probemos esto. Y veamos, ahí vamos. Lo rompemos. Y puedes ver tenemos la Parte 1 y la Primera Parte. Pero, ¿se puede decir la diferencia entre estas dos partes? Por lo que se puede ver que este está girado 90 grados y éste es el mismo. Lo escribió. Por lo que hay una gran diferencia entre ellos. Por eso hecho, espero que puedan ver y apreciar cómo funcionan las rotaciones aleatorias. Espero que puedan ver y apreciar cómo el pequeño detalle de agregar un poco de velocidad a las piezas rotas hace que todo se vea más y digamos natural y mejor. Así que vamos a asegurarnos de que nos quedemos todos nuestros cambios y espero que estés disfrutando y te veré en el próximo video donde realmente estaremos deshaciéndonos de estas parte que se desmoronaron estas parte que se desmoronaron usando algo parecido a aprender. Pero lo estaremos aplicando a las partes rotas para que desaparezcan lentamente y no solo un instante desaparezcan. Entonces te veré. 48. Destaque las piezas lentos: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos y este video, cuando estábamos como el juego, cuando maximizamos que vamos, ejecutamos el juego. Cuando caminamos por ahí, cuando golpeamos una de las partes, puede ver que se destruye y lentamente, lentamente se desvanecen, y luego desaparecen de la jerarquía. Entonces, no perdamos más tiempo. Y empecemos. Ah, está bien. Entonces ahora es momento de terminar finalmente esto y destruir las piezas rotas en el suelo. ¿ Cómo vamos a hacer esto? Bueno, vamos a combinar un par de cosas que ya conocemos y tal vez un método que no. Entonces, empecemos. Lo primero que voy a hacer es que voy a entrar en mis guiones. Y aquí dentro, en la parte rota, primero que nada voy a crear un temporizador aquí, que va a ser un campo serializado. Y va a ser un flotador con toda una vida llamada vida. Y sólo pongámoslo alrededor de tres segundos. ¿ De acuerdo? Tal vez incluso más, tal vez cinco, Vamos a ponerlo como cinco. Y luego después de instanciar, después de empezar a moverse y la posición y ser salvaje o después de todo, mostrar mientras estamos aprendiendo la dirección, queremos seguir adelante e ir a toda la vida y asegurarnos de que cada fotograma estamos quitando el tiempo, ese tiempo delta. Está bien, genial. Ahora, ¿qué pasa cuando la vida, dónde está? Cuando el tiempo de vida sea menor o igual a 0, vamos a destruir el objeto del juego. Echemos un vistazo a esto y veamos si funciona. Entonces voy a entrar otra vez, déjame guardar eso. Sí, sí ejecutamos el juego. Tenía las piezas rotas, 1, 2, 3. Está bien. Entonces son alrededor de las cinco. Supongo. Creo que fueron cinco de todos modos. Pero obviamente no queremos destruir esto. Nosotros queremos desgarrarla lentamente, así que queremos asegurarnos de que no solo explote. Queremos deteriorarnos lentamente con el tiempo. Entonces para hacer eso, vamos a usar algo llamado el movimiento hacia. Pero antes de ahondar en eso, quiero mostrarles algo. Vamos a estar accediendo a los colores, así que usemos la olla. De acuerdo, Entonces en las piezas rotas tenemos la misma olla rompible. En realidad sé qué, déjame añadir una de esas piezas rotas aquí y demostrar sobre ellas. Para que veas que tenemos el renderizador sprite, tenemos la vida y todo. Si accedo al color, tengo estos tres colores. Entonces la R, Puedes ver que puedo cambiar el color si hago zoom, puedes ver claramente lo feo es este pixel art. No, estoy bromeando. Es increíble. Y luego tenemos el rojo. Por último tenemos el amarillo, y también tenemos el destino, y esto es a lo que queremos acceder. Ahora, como siempre digo, hay formas más fáciles de hacer esto, pero quiero probar todo. Yo quiero explorar con ustedes tanto como sea posible. Entonces voy a borrar esto. Voy a volver a Unity, y voy a acceder al renderizador sprite. Entonces voy a, antes que nada crear una referencia aquí. Y va a ser un serializado on, ¿sabes qué? No necesita ser un campo serializado. Yo sólo voy a conseguir acceso a la derecha, un renderizador. Y voy a llamar a la parte sprite. Y se va a OK. Va a ser privado. Olvidé hacerlo privado porque no necesitamos verlo y empezar. Voy a asegurarme de que la parte Sprite sea igual para obtener componente sprite render. De acuerdo, ahí vamos. Por lo que ahora tenemos una referencia a la parte Sprite. Y aquí dentro voy a acceder a la parte Sprite dot color. De acuerdo, Entonces notan que en el renderizador sprite tenemos el color. Entonces estamos accediendo al color aquí dentro. Y estamos diciendo que es un color nuevo. Y de qué será este color B. Voy a abrir el corchete aquí mismo y voy a golpear Enter y empezar a escribir. Entonces podemos ver aquí mismo, ¿dónde está? ¿ Dónde está el nuevo color? De acuerdo, pero de todos modos, tenemos que darle el rojo, el azul y el verde. Y como viste, el rojo, azul y el verde no van a cambiar. Por lo que los tres primeros serán extremadamente fáciles. Serán las partes color brillante punto r, coma, duplicado, rojo, verde, rojo, verde, y azul. Y ahí vamos. Si pasamos por aquí mismo, podemos ver que estos son tres colores que queremos. Y finalmente, queremos cambiar la a. Entonces la forma en que accedemos a esto es a través la parte punto color punto a. Pero obviamente esta vez queremos cambiar esto. Queremos que esto pase de lo que es actualmente a 0. Y este es el punto matemático hacia fuera movido. Entonces como puedes ver, mueve un valor de la corriente hacia el objetivo. Y se puede ver aquí mismo, avanzar hacia el uso de la biblioteca de matemáticas. Podemos agregar el valor actual, el valor objetivo al que queremos llegar, y el máximo. Entonces es el cambio máximo el que debe aplicarse al valor. Entonces es igual que tenemos alguna alerta, el factor de desaceleración o el factor de Detección. Esto también es algún tipo de factor que puedes usar. De acuerdo, así que sigamos adelante e implementemos este movimiento hacia. Entonces aquí voy a escribir método dot avanzar hacia. Y voy a abrir esto. Por lo que el objetivo actual será el alfa actual. El objetivo, está bien, Así que la corriente, el valor actual, quise decir, y el objetivo va a ser obviamente 0 F. Y vamos a estar moviéndonos a las velocidades de desvanecimiento. Entonces voy a escribir la velocidad de fe aquí, tiempos tiempo.Deltatime. Y voy a seguir adelante y crear algún tipo de variable de velocidad de desvanecimiento. Copia esto, y sigamos adelante. ¿ Dónde debemos agregar? De acuerdo, entonces ahí vamos. Esta será la velocidad del destino y la fijará en cinco. Pongámoslo a uno y veamos qué tan rápido es eso. No estoy seguro de lo rápido que será. De verdad no tengo ni idea. Entonces vamos a salvar esto. Entonces lo que sucede aquí es cuando la vida, hay un error, que es que la vida útil es menor a 0. ¿ De acuerdo? Por lo que necesitamos sumar un punto y subir. Entonces, ¿qué pasa aquí cuando la vida es menor a 0? Por lo que hemos terminado de extendernos, se hace la vida. Vamos a pasar por esto cada vez. Entonces, ¿qué pasa aquí dentro? El rojo, el verde, el azul se mantienen igual en la parte Sprite. Pero el color, el Alpha se mueve del estado actual que es n al 0 usando algún tipo de velocidad de desvanecimiento. Entonces vamos a probar esto. Entonces voy a correr el juego. Voy a tratar de hacer esto más grande, de ver todo. Voy a destruir esto. Y ahora veremos que las piezas rotas después de un par de segundos. Whoa, ¿qué guay es eso? Por lo que despacio desaparecieron. Y si te diste cuenta, teníamos las tres partes siendo parte 3 y todas se ven diferentes. Por lo que no teníamos nada que pareciera. Pero como notaste, pesar de que se desvanecen, todavía los tenemos aquí mismo. Tenemos que deshacernos de esto y va a ser un reto para ti destruir las piezas. Por último, así que crea una declaración if que verifique si la pieza alphas abajo a 0. Y si lo es, necesitarás seguir adelante y destruir el objeto del juego. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces aquí, después de que nos hayamos movido hacia, vamos a seguir comprobando si la parte Sprite dot color dot alpha, que es la a, es igual a 0 f Entonces simplemente vamos a destruir el objeto del juego. Guarda eso de nuevo en nuestro juego. Maximicemos en juego. Nuestro juego se ve fantástico. Es decir, excepto por las líneas azules que acabas de ver. O sea, tenemos a los enemigos disparándonos, siguiéndonos. Tenemos armas disparando apropiadamente. Tenemos diferentes efectos para diferentes armas golpeando cosas. Se puede ver tal vez el golpear sal podría necesitar un poco de ayuda. Tenemos sangre por todas partes. Tenemos sangre cuando interactuamos. Bueno, ¿qué viste eso? Entonces cuando deberíamos esperar, cuando disparamos a uno de los enemigos, se puede ver la sangre saliendo de ellos, lo cual es realmente agradable. Ahí vas. Se puede ver la sangre. Tenemos sangre aleatoria tenemos ahora también los objetos estructurales si quieres. También podemos implementar su destrucción cuando les disparemos. Pero de todos modos, cuando los aplastamos, estas son las piezas. Y desaparecen lentamente, lo cual es una adición muy agradable. Y siempre me olvido también, quería, ¿de acuerdo? De acuerdo, así que quita la maximización. Ahí vas. Podemos ver que ya no tenemos partes, pero aún tenemos la sangre, que sabes qué, te la voy a dar como un reto de no sé. No voy a lidiar con esto ahora mismo. Obviamente en algún momento lo haré, pero estoy bastante seguro de que sabes qué hacer. Puedes usar cualquier método que hayamos aprendido. Son muchas las cosas, así que espero que hayan disfrutado de esta sección. Creo que realmente se suma a toda la atmósfera del juego, el movimiento, lentamente destruyendo. Aprendimos mucho en esta sección también. Así que asegúrate de que siempre estás cometiendo tus cambios. Y si no lo has hecho ya, sé que te aburrí, pero por favor déjame una crítica me ayuda mucho. Por supuesto, si estás disfrutando del curso, si no, no, hasta que empieces a disfrutar del curso. De todos modos, te veré en el próximo. 49. Sección 8: toma avanzada y crear un sistema de organización de Shooting: Hey, bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, no hemos cambiado mucho, pero lo que hicimos es que acabamos empezar a configurar un sistema de armas adecuado. Trasladamos al mecánico de tiro del jugador de la perdición al arma real, que es la consola de Sharp. Como pueden ver, aquí no hay nada nuevo. Acabamos de hacer un par de cambios. Este video se trata de todo, llamémoslo actualizar tu proyecto para que llegues a cierto punto. Tienes toda la mecánica básica que quieres, pero ahora es el momento de hacerlas mucho más eficientes. Entonces, sin más preámbulos, no perdamos más tiempo. Y hagamos de nuevo el grado del proyecto. 0 caso. Por lo que es momento de crear un sistema de tiro más avanzado y el profesional. Entonces lo primero que vamos a hacer es que vamos a mover todo lo que está relacionado con el disparo del controlador del jugador a disparo del controlador del jugador un guión separado que voy a crear en este momento. Si entro en los guiones y tal vez hagamos esto un poco más grande. los podamos ver al menos y dos filas. Estos, de acuerdo, ahí vamos. Voy a entrar aquí mismo. Estoy creando una carpeta a la que se va a llamar el arma o llamémosle el sistema de armas. Tener Enter. Y voy a crear aquí un guión que va a ser el sistema de armas. Hit Enter, espere a que se compile. Y ahí vamos. Y un día ahora. Gracias. Fue sólo un guión. De todos modos, voy a hacer del punto de fuego un hijo de la escopeta, y no nos va a permitir tendrá que abrir el prefabricado. Ahí vamos, que sea niño, guarde eso. Vuelve a nuestro juego. Ahí vamos. Entonces ahora tenemos, y a veces cuando se quiere agregar las prefabs, hacer hijo de las cosas y hacer padres. En ocasiones te requerirá al paso extra de cambiar realmente todo el prefabricado. Y lo siguiente que vamos a hacer es añadir este sistema de armas a la escopeta real. Por lo que ahora la escopeta se encargará de todo el tiroteo. En primer lugar, abramos el sistema de armas. Y si miro en el controlador de capas, ¿dónde está? Vamos a dar click aquí. En tanto que el controlador jugador, bien, aunque. Entonces ahí vamos. Como pueden ver, tenemos tantos guiones en este momento. Pero de todos modos, lo que queremos hacer es que queremos movernos y este debe ser un método separado. Lo que queremos hacer es mover a todo el mecánico de tiro del jugador desde el controlador del jugador al sistema de armas. A lo mejor he mencionado esto antes. No queremos que el jugador se encargue de todo. Entonces, por ejemplo, no queremos que el jugador se encargue de cómo vuelan las balas, y no queremos que el jugador se encargue de cómo funcionan las armas. Entonces con eso dicho, te voy a emitir un reto. Y tu reto va a ser mover el disparo al guión adecuado. Por lo que pareja del método de disparo desde el controlador de jugador hasta el script del sistema de armas. Asegúrate de que los dos copien todas las variables adecuadas con él, y pon todo en unidad y pruébalo, asegúrate de que funcione correctamente. Entonces este reto se trata solo de cómo actualizas tu script, cómo actualizas tu proyecto y ganas. En ocasiones empiezas tu proyecto. No tienes todo el gran plan para ello, por lo que necesitas hacer ajustes. Esto sólo será un ejercicio de cómo transferir cosas de un guión, el siguiente, haciéndolo mejor, lo haré frente a ti, así que no te preocupes. Nos aseguraremos de que todo funcione correctamente. Pero por ahora, pausa el video y ve a hacer el reto. Oh, bien, bienvenido de nuevo. Entonces, ¿qué vamos a estar haciendo aquí dentro? Vamos a seguir adelante y seleccionar todo esto. Voy a cortar así Control X. Voy a seguir adelante y ponerlo aquí o saber qué, mantengamos la actualización y empecemos. Podríamos necesitarlos. Voy a pegar todo aquí para que veas que tenemos mucho que manejar. Entonces de vuelta aquí, vamos a necesitar un par de variables que son, déjame subir. En primer lugar, voy a comentar este fuera, guarde eso. Entonces voy a facturar aquí, ¿qué necesitamos? Necesitamos el swap y automatizar la bala el punto lejano. Está bien. Entonces veamos como arma tiempo automático entre disparos, disparos contrarrestados, punto de fuego. Ahí va. Estos son. Variables y las voy a pegar aquí. Guarda eso. A ver, ¿qué más tenemos? ¿ Tenemos algún tipo de error aquí? No, no creo que eso fuera toda la mecánica. Entonces de vuelta aquí, ¿qué más tenemos? 0. Entonces si el jugador puede correr, ahora, obviamente el punteante es parte de la mecánica del jugador del jugador es el que va a correr. Entonces lo que necesitaremos es una forma de conseguir una referencia al guión. Entonces, ¿el jugador es apestoso o no? ¿ Qué podemos hacer? Si nos desplazamos por aquí, podemos crear un método. Y si miro aquí arriba, el guión se puede ver como privado. Y lo que podemos hacer es crear un método aquí. Y estas son cosas que vamos a estar usando cada vez más a medida que vamos este tipo de métodos. Por lo que es un bool público y es capa punteante. Entonces aquí, todo lo que vas a hacer es regresar puede correr. Y voy a añadir un signo de exclamación porque recuerda cómo funcionan los guiones. Y como sólo regresamos una cosa, así es como la vamos a estar escribiendo. Ahora, obviamente esto no es algo que sea como un estándar. Esto es más como prácticas. Entonces ten algún tipo de variable en algún script diferente que quieras acceder. ¿ Cómo lo haces? Bueno, o haces pública la variable, lo haces accesible a todos. Pero el problema a la hora de hacerlo público es que se puede cambiar. Entonces si hago esto público, entonces puedo cambiarlo de un guión diferente, lo cual es una muy mala idea. Confía en mí, nunca quieres poder cambiar variables en diferentes scripts de diferentes scripts. Por lo que no quieres poder hacer que el jugador pase de, digamos, el Gestor de UI por error, sucede a veces. Entonces una mejor manera es solo poder comprobar si estamos corriendo para que podamos conseguir el punteante, pero no podemos cambiar si el jugador es apestoso. Entonces esta es una capa extra de seguridad y es por eso que siempre usamos campos serializados. Podríamos haberlos hecho públicos todos y habrían sido las mismas funciones. Podríamos haberlos visto en el inspector y así sucesivamente. Pero convertirlo en un campo serializado significa que no podemos acceder a estas variables desde diferentes scripts, y esto pagará dividendos más adelante a medida que avanzas en tu viaje de desarrollo de juegos. Asegurándose de que puedas, no solo en el desarrollo de juegos, siempre que se trate de programación, no quieres clases diferentes, variables cambiantes, otras clases diferentes. De todos modos, me estoy adelantando. ¿ Qué vamos a hacer aquí dentro? Podemos o bien encontrar el objeto jugador o podemos obtener componente en parent. Y podemos, vamos a quitar esto por un segundo. Podemos acceder al controlador del jugador y al padre, y podemos seguir adelante y comprobar. Es jugador es jugador apestoso o qué, lo que es este jugador es apestoso. Lo que es esta capa es contundente, se está moviendo. Ahí está punteante 0, por lo que en realidad también podemos devolver esto. Por lo que ya no se necesita este método. Y eso realmente no fue algo que yo notara. Pero de todos modos, la capa es contundente. Al menos tuvimos la oportunidad. Vamos a comprobar si la velocidad de movimiento actual es igual a la velocidad. De acuerdo, entonces volvemos verdad. Y ahí vamos. Si estamos apostando, entonces no podemos estar disparando y no vamos a llamar a esto el jugador disparando. Cambiemos a las balas de disparo. Ahí vamos. Entonces esto tiene más sentido ahora mismo. ¿ Y qué más deberíamos estar haciendo? Bueno, obviamente, tenemos que estar llamándolo aquí en la actualización, asegurándonos de que podamos disparar. Entonces voy a estar simplemente llamando al método de disparo de balas. Y ahora tenemos que volver a Unidad y armar todo. Entonces voy a abrir Unidad. Ya verás que el sistema de armas cambió. Y esto fue, esto es tan vergonzoso. Ni siquiera noté que estaba justo ahí y me olvidé por completo que habíamos exhibido este puntito. Pero de todos modos, al menos aprendes algo de un tipo diferente. O tenemos este monólogo de por qué no queremos acceso a las variables. Ahora, no se preocupe. Electrón por supuesto estaremos implementando muchos de estos métodos a medida que avanzamos y hacemos de nuestro código un poco más profesional. Entonces con eso, ¿quién Cosas Hecho? Vamos a entrar a, en primer lugar como 70 punto lejano de la escopeta. Nos vamos a asegurar que esta arma no sea una romántica y haremos el tiempo entre disparos alrededor de 1 segundo, 1, no 21. Necesitamos una bala, así que entraremos en las Prefabs, balas rotas, y las balas de capa. Guarda eso. Vayamos al jugador de la fatalidad y aplicamos todos los cambios. Y ahora voy a ¿Qué más tenemos? Corremos el juego y veamos qué pasa. Entonces el jugador, jugador se mueve por el camino, pero así el jugador se mueve y si deberíamos, Ahí vamos, podemos disparar. Y si mantengo pulsado el botón del ratón, por alguna razón, no es disparar. 123. Ah, no es automático. Está bien. Pero el problema está tan bien. Ahora, aunque mantenga pulsado el botón del ratón, no es automático, pero la escopeta todavía dispara mucho. Y esto es algo que queremos arreglar porque ahora estamos hablando de un mecánico de tiro avanzado. No es el mecánico de tiro habitual. Tenemos que asegurarnos de que nuestro tiroteo sea consistente. Entonces la escopeta, si sostenemos presionada, dispara un botón, pero si seguimos presionando para que la escopeta no debería estar disparando tanto al disparar. Entonces con eso fuera del camino, con toda esta sección, Cambiar, scripting todo. Espero que lo disfruten y los veré en el siguiente video. Asegúrate de que siempre cometes tus cambios. Y voy a hacer este commit move tiro mecánico de capa dos, el arma real. Ahí vamos, comprometemos los cambios, y nos vemos en el siguiente video. 50. Contador de velocidad de fuego: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a otro video de mantenimiento. Sé que no son las partes más divertidas del video, pero es muy importante y hay lecciones cruciales que necesitamos aprender y esta. Entonces ahora cuando ejecutemos el juego, verás que ya no tenemos la opción de crear un arma automática. Pero ahora, si mantenemos pulsado el botón, se puede ver que deberíamos 11111. Y si tratamos de presionar tanto como podamos, escuchar al ratón, se puede ver que ya no tenemos la opción de disparar o eludir a este mecánico de tomar el tiempo entre tomas. Entonces no perdamos más tiempo y lleguemos a mantener 0 caso. Entonces este es otro video donde queremos arreglar nuestras cosas. Entonces lo primero que queremos arreglar es echar un vistazo a la escopeta. Entonces digamos que no es automático. Entonces un rodaje. Y ahí tienes. Tenemos un tiro. Si voy a seguir sosteniéndolo, no funciona. Pero el problema es que si presiono muchas veces, se puede ver que tenemos muchas tiendas. Ahora bien, esto no es un problema enorme, pero por ejemplo, una escopeta no debería estar disparando tan rápido. Si lo hacemos automático y seguimos aguantando, puedes ver que seguimos disparando a todos segundos. Y si tratamos de presionar muchas veces, esto no es un problema. Pero aún tenemos que arreglar el hecho de que si no tenemos el arma automática, deberíamos tanto como queramos. Otra cosa que queremos arreglar es la redundancia en el código. Por lo que esta no es una forma perfecta de representar el código. Hay una manera mucho mejor. Podemos ante todo, liberarnos de uno de los problemas de tener que elegir entre automático y no aromático para que podamos, ante todo deshacernos de una variable. Y lo segundo que podemos evitar, redundancia y frío. Entonces puedes ver aquí mismo que tenemos el marcador que instancia una bala y este que también instancia o ébola. Entonces no es tan bueno. Queremos hacer algo mucho más eficiente, mucho mejor parecido. Entonces voy a comentar estos fuera. Y aquí dentro voy a revisar algo diferente. Voy a empezar comprobando si el contador de disparos es mayor a 0. Entonces si el contador de disparos es mayor que 0, entonces lo que vamos a hacer es que vamos a mantener el mostrador de la tienda siendo removido cada pedacito. Entonces vamos a estar contando atrás el mostrador de la tienda. Y porque recuerdan esto en las balas de disparo, eso significa que esto va a funcionar bien. Entonces aquí dentro, vamos a revisar los insumos. Y si estas entradas son ciertas, entonces vamos a instanciar la bala. Entonces lo que voy a hacer es que te lo voy a emitir como un reto. Entonces tu reto es asegurarnos comprobemos los dos insumos, ya sea que estemos aguantando o estamos presionando sólo una vez. Y luego vamos a instanciar la bala y asegurarnos restablecer también el contador de disparos. Así que pausa el video ahora mismo y ve a hacer el reto. Oh, bien, bienvenido de nuevo. Entonces aquí lo primero que voy a hacer es crear la declaración if. Y voy a copiar esta línea aquí mismo. Entonces si el punto de entrada consigue el botón del ratón hacia abajo, o dónde está , Vale, así, o como representado por estos dos. O si el punto de entrada obtener el botón del ratón. Entonces estamos sosteniendo sustantivo, entonces vamos a seguir adelante e instanciar la bala en el punto de fuego. Y también vamos a conseguir el contador de disparos y restablecerlo al tiempo entre tomas. Ahí vas. Entonces, ¿qué pasa aquí dentro? Siempre estamos llamando al disparo, pero comprobamos si el jugador está apuesto. Si no lo es, entonces vamos a continuar. Si el contador de disparos es mayor a 0, entonces vamos a estar contando atrás todo el tiempo y cuando sí se ponga por debajo de 0. Entonces vamos a seguir contando atrás siempre y cuando sea contador de cierre sea mayor a 0. Cuando ya no sea, entonces tendremos la opción de disparar. Y lo grandioso de esto es si el arma es automática o no. Si seguimos aguantando, no podremos disparar todo el tiempo. Pero si no es automático y sólo usamos el dedo para presionarlo una, dos o tres veces, vamos a instanciar y vamos a tener el contador reset cada vez que deberíamos, una vez se detendrá y esperar a que el corto contrarrestado vuelva a menos de 0, entonces podemos disparar y tanto como queramos. Entonces lo único aquí es que ya no comprobamos si el arma es automática o no. Entonces podemos seguir adelante y eliminar esto. Creamos algún tipo de atajo. Ahora bien, si no te gusta esto, si estás buscando, eso es lo que comento todo este código. Si quieres tener un arma automática y no te molesta, ¿permites eso? Podemos disparar tanto como queramos porque al final del día, si es automático, no va a estar disparando muy rápido. Entonces sé mi invitado. Mantiene frío. No está mal. Pero para mí, honestamente, no quiero esto. Preferiría mucho tener esto como un código muy simple y nos haríamos guardar un par de variables. Entonces y yo un par de código redundante también, lo cual es muy importante. Entonces salvamos todo esto. Volvemos a la Unidad. Corriremos el juego y ahora se reduce el tiempo entre tiros. Por lo que ahora aunque cocinemos muchas veces, se puede ver que sigue esperando hasta que se restablezca el contador corto. Si lo sostenemos abajo, Ahí tienes. Se puede ver que cada segundo dejamos salir un tiro. Si hacemos esto, por ejemplo, digamos 0.1, entonces podemos seguir adelante y disparar varias veces. Y si presionamos tan rápido como prometimos, nunca seremos más rápidos de lo que el contador de disparos nos permitirá ser. Entonces con eso hecho, espero que hayan disfrutado. Y en el siguiente video estaremos agregando diferentes armas al jugador. Y verás cómo tener algo diferente a una escopeta realmente hará que el código sea mucho más visible o los cambios que hicimos mucho más importantes si aún no sientes que es tan bueno. Entonces te veré entonces. 51. Tener diferentes armas: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, hemos creado un conjunto extra de armas. Hemos creado un rifle, y hemos creado una pistola. Entonces ahora cuando ejecutamos el juego, no sólo nos limitamos a la escopeta, sino que también podemos encontrar una pistola. Obviamente las balas también son diferentes. El índice de disparo es diferente. El, incluso el daño que infligen las balas y la velocidad de cada bala es diferente. Entonces como pueden ver aquí mismo, puedo encender el rifle, apagar la pistola, correr. Ups. Entonces eso fue un enorme error. Perdón por eso. Y apaga la pistola, enciende el rifle, y puedo empezar a disparar. Y como puedes ver, las balas del rifle o un poco más rápido, son un poco más verdes y no perdamos más tiempo. Y empecemos. Ah, caso. Entonces Nilo, Es hora de agregar un par de armas más. ¿ Cómo vamos a hacer esto? Por lo que ya tenemos la prefabricada para la escopeta. Entonces voy a entrar en el prefrontal para que no tengamos un prefab para la escopeta específicamente, sólo tenemos para el jugador condenado que tiene tienda. Entonces voy a crear una nueva carpeta aquí dentro, que se va a llamar las armas. Y voy a arrastrar la escopeta aquí. De acuerdo, entonces necesitamos abrir el prefabricado. Ahí vamos. Por lo que ahora podemos hacer doble clic y el arrastre y la escopeta. Por lo que ahora tenemos una escopeta como prefabricada separadamente del deuterio. Y se puede ver cómo la Plaza se volvió un poco más azul. Ahora puedo añadir la escopeta y aquí y tenemos el arma que vamos a ajustar y crear algo frente diferente. Entonces lo primero es lo primero, tendremos que cambiar este orgullo. Entonces vamos a entrar en el Considerando los sprites que agregamos, todas las armas o sangre, balas, enemigos, pistolas de azulejo jugador. De acuerdo, entonces sólo tenemos un arma. Vayamos al caso Recursos 0. Entonces veamos qué tenemos aquí dentro. Como puedes ver, te he proporcionado muchas cosas. Una de ellas es la animación para diferentes tipos de arma. Y se puede ver también tenemos el hocico fuego, hocico humo. Recomendé tratar de sumar todos estos. Podríamos también hacer esto en un poco, pero por ahora sólo queremos tener el concepto básico. No estamos muy mirando lo bonito que es el, el tiroteo, aunque es importante cuando se trata de un juego. Pero de todos modos, tenemos este rifle justo aquí, tenemos a este francotirador, y también tenemos el pequeño arma. Entonces voy a seleccionar a los tres y voy a arrastrarlos al sprite de pistolas y añadirlos. Está bien, genial. Ahora que tenemos la escopeta, cambiémosla por el rifle. Un rifle. Y si lo abro, se puede ver el punto de fuego aquí mismo. Pero antes de que hagamos eso, queremos cambiar este orgullo. Y para el rifle se puede ver que es muy pequeño, así que los hicimos 42. Seleccionémoslos y hagámoslos todos 40 para aplicar los cambios. Ahí vamos, tenemos nuestro rifle. Ahora por la coloración del fondo, se puede ver que el rifle no es tan prevalente, Llamemos a eso. No es tan guapo, pero no nos preocupemos por eso mientras esté ahí y una vez que esté en el PLR, seguro que se verá un poco mejor. Entonces de todos modos, sigamos uno, ¿Qué más hemos definido entre disparos, obviamente, para un rifle y no es un rifle, es un rifle de asalto, así que es automático. Va a ser mucho menos. Entonces voy a hacerlo alrededor de 0.3. Y vamos a ver, el punto de disparo obviamente necesita cambiar para que puedas ver dónde está el músculo ahora mismo. Yo lo voy a mover aquí mismo. ¿ Y qué más tenemos? ¿ Si hago click en el rifle? Ahí vamos, podemos ver que todo está bien. ¿ Qué más necesitamos cambiar? Ah, también queremos cambiar la bala que dispara para no querer tener la misma bala que la escopeta. Y voy a volver a entrar a los Prefabs, ir a las balas. Encontremos el, vale, así que la bala del jugador, voy a cambiar esto de jugador bala a bala de arma de tiro. Y voy a seguir adelante y sumar en nuestro mundo. Y voy a duplicar la bala del arma de fuego. Voy a llamarlo la bala del fusil. Y esta bala de rifle tendrá casi todo, tiene lo mismo puede ser la velocidad debería poder mejorar un poco más. Entonces digamos que la velocidad es tal vez seis, no lo sé. El monto del daño, tal vez debería ser menor. Entonces, por ejemplo, digamos que el monto del daño es de cinco. Y qué más necesitamos cambiar aquí, tal vez el sprite. Entonces veamos el precio de las balas que tenemos. Estamos utilizando actualmente el 14. Y tal vez para un rifle podemos usar uno de los más cortos. Entonces veamos, usemos el pequeño verde. Entonces la pequeña verde, ésta es la que vamos a usar, mientras que la bala del rifle, vamos a añadir la pequeña verde. Está bien. Entonces eso no funcionó. ¿ Por qué? Por eso sí funcionó pero no vimos la bala de la escopeta. De todos modos, quitemos la bala republicana. Y esta será nuestra bala de fusil. Ahí vamos. Es un bastante pequeño me siento que había algo también la escala 0.5? Y hagámoslo uno. Mantenlo tal como está. Está bien, genial. Entonces ahora tenemos esta bala de fusil. Voy a entrar al rifle y le voy a asignar una bala de arma de tiro, pero la bala del rifle. Pero antes de hacer eso, tenemos que preelaborar todo. Entonces voy a volver a los Prefabs, ir a las balas, y añadir la bala. Y me preguntará, ¿te gustaría crear una nueva o original o variante del prefabricado? Si hago clic en dos para la variante prefab, ésta cambiará, pero voy a crear un prefab original. Yo también voy a entrar a los Prefabs, las armas, las armas, ¿dónde están? Y yo también voy a arrastrar en el rifle. Por lo que ahora tenemos una escopeta y un rifle original. Y en este rifle, en lugar de usar la bala de la escopeta, voy a entrar en esa ranura esto abajo, meterme en las balas de la bala del rifle, guardar todo eso. Y por último, vamos a eliminar el rifle. Elimina la bala del fusil. Todos van al dónde está? Prefabs. De acuerdo, Entonces armas, es la última. Y voy a añadir el rifle como el hijo de las armas puestas. Y obviamente la posición de los rifles debe fijarse en 0. Ahora intentemos esto de nuevo una vez más. Nuevamente, agregamos el rifle como están las armas, y apagaremos la escopeta. Genial. Entonces ahora tenemos el rifle y los brazos, y como pueden ver, no está perfectamente posicionado. Lo que podemos hacer es moverlo de la prefabricada. Podría estar pensando, ¿por qué no está posicionado para escribir? Bueno, si volvemos a los recursos aquí mismo, se puede ver, si se mira de cerca que el spray de escopeta puede ver dónde termina. El rifle tiene un poco de espacio en la parte delantera y trasera. Entonces esto es sólo un tecnicismo y si agregas éste por ejemplo, será aún más lejos. Entonces lo que voy a hacer es simplemente voy a mover tal vez esto en la dirección x un poco. Por lo que ahí vamos por el punto cero 40 para copiar esto y añadirlo al prefabricado del rifle. Por lo que ahora cuando apague el rifle, Vamos a intentarlo de nuevo, sumado a las armas sobre la marcha en encaja perfectamente. Entonces quítate esto. Enciende el rifle. Tenemos el punto de disparo, tenemos las balas de fusil, tenemos todo configurado correctamente. Vamos a probar esto, guardar eso, ejecutar el juego. Hagamos esto un poco más grande. De acuerdo, entonces ahí vamos. Sí, ahí vamos. Se puede ver ahora mismo que tenemos la escopeta, no la escopeta, perdón, la realmente vamos a maximizar en jugar el juego para verlo correctamente. Ahí vamos. Entonces ahora cuando deberían las balas, son mucho más rápidas y el tiempo entre disparos es mucho mejor. Ahí vamos. ¿Qué tan guay es eso? Don se ven realmente bonitos? A lo mejor deberíamos hacer un poco menos su daño, pero no nos aseguramos de que el daño funcionara correctamente. Y puedes ver que da la vuelta y hace todo lo hacía la escopeta y fue bastante fácil de crear. Entonces con eso, les voy a emitir un reto y es agregar sus propias armas. Por lo tanto, crea una o dos armas más de tu propia elección. Voy a añadir una pistola. Es, todo va a ser igual igual igual como lo mostré. Voy a crear una bala diferente para ello y etcétera Así que tal vez hayas descargado algunas armas, sprites de armas futuristas. Y de verdad quería hacer eso, pero no encontré un conjunto realmente bonito de aperos futuristas, todos los sprites donde o tenías que pagar por ellos o no eran tan buenos. Y quería asegurarme de que todo esto acabara. Todos mis cursos de los activos que utilizamos son 100% gratuitos. Y por último, al menos una arma más, o agregar al menos una arma más con sus propios atributos. Así que pausa el video ahora mismo, ve a hacer el reto en el siguiente video, tal vez ahora mismo, solo usaré la magia de editar, crearé el arma que has visto el proceso, no tienes que verla de nuevo, pero sí te recomiendo que agregues tus propias armas. Confiar en que es mucho más divertido tener armas que has creado y no sólo cosas que copias de mí. Entonces eso dicho te veré en solo un rato. De acuerdo, bienvenido de nuevo. Entonces he añadido una pistola y acabo de tener un par de cosas locas que quería crear. Ya puedes ver, así que he hecho un puesto con un tiempo entre tomas. He hecho una bala de pistola. No es una bala de cristal perfecta. Es algo grande, honestamente, cuando se trata de la forma en que funciona la pistola o del tamaño de la pistola. Pero no nos preocupemos por eso. Este juego es todo sobre creatividad y divertirse. Entonces lo que quieras hacer, solo hazlo. Entonces ahí lo tienes. Se puede ver la pustulita. Se mueve y cuando deberíamos reservar, ahí vamos. Y se puede ver que la bala es algo grande, pero realmente creo que es realmente agradable. Por lo que al menos diferenciará entre las balas regulares de la escopeta y las balas del rifle. Entonces sabrás que esta es una pistola y esta es la bala del pistón. Entonces con eso hecho, espero que lo disfruten. Espero que hayas creado tus propias armas. Y si no me has dejado ya una crítica, me ayuda mucho. Asegúrate de comprometer tus cambios. Ahí vamos. Se creó un rifle de sal y una pistola como armas extra. Entonces por favor asegúrate de dejarme una reseña. Me ayuda una tonelada y te veré en el próximo video donde estaremos realmente cambiando entre nuestras armas. Como pueden ver, tenemos que encender y apagar ciertas armas e incluso podemos encender armas, que es un mecánico genial, pero no uno que estamos buscando hacer, sobre todo cuando no está en nuestro control. Entonces te veré en el siguiente video. 52. Cambio entre las armas: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, cuando corra el juego, verás ahora que puedo usar un rifle, no necesito ir a la jerarquía y cambiar el arma. Puedo presionar en la pestaña y se puede ver que ahora mismo tengo la pistola. Vuelvo a presionar el Tab. Yo consigo la escopeta. Vuelvo a presionar el Tab. Tengo el rifle. Vuelvo a presionar el Tab, tengo la pistola y así sucesivamente y así sucesivamente. Puedo hacer esto todo el día. Dispararles con una escopeta, si el rifle madre debería entonces con una pistola, puedo hacer lo que quiera y nadie puede detenerme. Entonces, no perdamos más tiempo y vayamos a cambiar de armas. Ah, caso. Por lo que es hora de cambiar nuestras armas. El primero que vamos a hacer es que vamos a conseguir una referencia a todas las armas que están disponibles en el jugador. Ahora bien, este es un punto de debate. ¿ Dónde queremos manejar todo esto? Dónde queremos tener la lista de información sobre todas las armas y demás. Y me sentí al respecto. Podemos agregar un guión a las armas puestas y asegurarnos de que todo vaya sin problemas aquí. Pero en realidad, creo que quizá el jugador debería ser el que esté manejando las armas disponibles que tiene. Entonces voy a subir y jugador y voy a quitar todo lo que sabes qué, Vamos a mantenerlo como un recordatorio de cómo a veces no estamos muy atentos y cometemos errores. Entonces copia de seguridad aquí. Voy a seguir adelante y crear en primer lugar, la referencia a todas las armas que tenemos. Entonces va a ser un campo serializado, que va a ser una lista de tipo, las armas, sistema de armas. Y así. Y me desplaza un poco hacia abajo y lo voy a llamar las armas disponibles o las armas disponibles. Sólo llamémoslo armas disponibles. Y es igual a una nueva lista de sistema de armas. Guarda eso. Ahora lo siguiente que queremos tener es una variable que es un entero que hará seguimiento de la pistola actual que tenemos. Entonces voy a crear un int privado y va a ser el arma actual. Guarda eso. Entonces, ¿qué estamos haciendo aquí? Lo que queremos hacer es querer conseguir una referencia a las tres armas que estaban sosteniendo o lo que sea, cuántas armas tenemos disponibles. Voy a bloquear esto, selecto. Y antes de hacer eso, vamos a asegurarnos de anular al jugador de dunas aplicar todo. Entonces sabemos que tenemos las armas sobre él. Voy a encerrarlos y voy a seleccionar el rifle, esa pistola, y la escopeta, y los voy a sumar a las armas disponibles. Entonces como puedes ver ahora tenemos una referencia al rifle de escopeta y a la pistola. Entonces lo que voy a hacer es que voy a crear algún tipo de bucle que se active. Y este bucle pasará por todas las armas y girará sólo la que yo quiera. Entonces el postal actual y cada vez voy a aumentar la pústula actual uno por uno. Entonces sé que esta explicación es un poco confusa. Vamos a ponerlo en práctica y va a tener mucho más sentido. Entonces aquí voy a primero de todo crear el método que va a ser o saber qué antes de hacer eso, déjame solo quitar el disparo del jugador y ¿qué hace todo esto? Esto, sácalo por el espacio, está bien, jugador tan apuesto, así que haga clic derecho, acción rápida y refactorización método de extracción. Ahí vamos. Tan puntiagudo, jugador o jugador apestoso. Creo que tiene más sentido. Control RR. Ahí vamos. Entonces como pueden ver, conozco todos los atajos para resolver el error porque he hecho tantos. De todos modos, vamos a seguir adelante y cambiar el arma. Voy a crear de inmediato un método aquí para que no vayamos a extraer. Por lo que va a ser una pistola de interruptor de vacío público. Y aquí dentro, en primer lugar, vamos a querer comprobar qué tipo de tecla queremos presionar para poder cambiar el arma. Entonces va a ser una entrada que obtenga C0, get keydown fue un código clave. Y puedes usar lo que quieras. Y usemos la pestaña. No, no la fuga. Ahí vamos. Entonces cuando presionamos tab, queremos cambiar nuestras armas y llamemos a esto aquí mismo. Por lo que cambiar arma, cambiar pistolas con afilar. Estoy un poco confundido. Puedes llamarlo como quieras. Entonces arma arma de fuego es la misma. Nosotros queremos tener cualquier otra cosa que no sean armas de fuego como armas. De todos modos, sigamos. Lo siguiente que queremos tener. Queremos asegurarnos de que realmente tengamos armas en nuestra posesión. Entonces vamos a comprobar si el conteo de puntos disponible de Ghana es mayor a 0. Y podrías estar pensando, bueno. Por supuesto que vamos a tener un arma de fuego. Michael, ¿de qué estás hablando? Bueno, más adelante cuando empecemos a comprar armas, cuando empecemos a recoger armas, notarás que tal vez en algún momento el jugador no tenga armas. Entonces lo que esto nos evitará un enorme error. Y sólo voy a añadir una advertencia aquí. El aviso de debug dot, y no hay armas disponibles. Recoge algunos. Por lo que esto es diferente al registro regular. Esta es una advertencia de registro y también tenemos un error de registro, y esto será en un color diferente. Y la consola, como puedes ver, estos son errores y por alguna razón tenemos el efectivo de vista previa clara. Esto ha estado pasando desde hace mucho tiempo y lo he buscado. He intentado muchas cosas, actualizando o todo. Nada funciona. Al parecer es algún tipo de problema en Unity, pero no afecta nuestro juego, así que no te preocupes por eso. Voy a despejarlo con este botón. Y se puede ver que esos son errores. Tenemos registros, registros regulares y tenemos bitácoras de advertencia. Pero mantengámonos enfocados. ¿ Qué pasa cuando sabemos que tenemos un arma? Vamos en primer lugar a conseguir el chicle actual y aumentarlo en uno. Entonces esto hace un plus, plus. Después de hacer eso, vamos a revisar algo que es muy importante. Y eso es después de que pasemos por todas las armas. Entonces si vamos en aumento y el arma actual que ahora se ha incrementado en 1, es mayor que el recuento de puntos de cañones disponibles. Queremos volver a la primera pistola. ¿ Y cómo hacemos eso? Reiniciamos la corriente volvía a 0. Entonces, ¿qué está pasando aquí? Digamos que tenemos las tres armas. Eso significa que el recuento de armas disponibles es de tres. Eso significa que empezamos a las 012. El dos es el último índice del último elemento es el índice del último elemento. Entonces lo que pasa aquí dentro, una vez que presionamos la pestaña, comprobamos que tenemos cañones disponibles aumentados en un electrón. Estaremos encendiendo esa pistola. Pero por ahora, nos aseguramos de que si tenemos el arma actual, así que digamos que están en el índice dos y el recuento ido disponible es de tres. Entonces nos convertimos, el arma actual se convierte en tres, lo que significa que queremos restablecerla a 0. Por lo que luego agarramos la primera arma y pisamos y evitamos un enorme error. Entonces, ¿qué hizo eso, qué más tenemos que hacer? Bueno, hay algo de lo que necesitamos asegurarnos y es decir, si vuelvo aquí. Entonces recuerda cómo estábamos usando las diferentes encías. No nos limitamos a encender el rifle. Entonces si hago clic en rifle, no sólo encendemos el rifle y empezamos a disparar. Primero volvemos la pistola y después tenemos el rifle encendido y podemos disparar con ella. Entonces este va a ser tu reto. Tu reto va a ser poner todas las armas para promulgar. Por lo tanto, crea un para cada bucle para pasar por todas las armas disponibles, establece todas para que estén inactivas. Por lo que todos ellos para estar inactivos. Y luego poner sólo el arma actual para que esté activa. Y te voy a dar una pequeña pista si ya sabes qué hacer o sientes que quieres hacerlo tú mismo. Pausa el video, ve a hacer el reto. De no ser así, esto es lo que necesitarás. Tendrás que acceder a las armas disponibles en el arma actual. Y necesitarás acceder al objeto del juego porque las pistolas disponibles son de sistema de órgano de pipa, por lo que solo podemos ponernos activos a eso. Tenemos que acceder al objeto de juego que sostiene el arma actual, luego poner el activo en verdadero o falso. Así que pausa el video ahora mismo y ve a poner todas las armas a un activo. De acuerdo, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Son realmente, realmente, este fue un reto interesante, usar un para cada apagar las cosas y realmente entender la mecánica. Entonces primero que lo primero, vamos a crear un bucle para-cada. Y aquí dentro este va a ser el sistema de armas. Lo llamaremos el arma en armas disponibles. Parece un poco raro, ¿ no? ¿Saber qué? Cambiemos el nombre de esto de las armas disponibles a las armas disponibles. Ahí vamos. Y tendremos que asegurarnos de volver a ponerlos en Unity. Porque cuando cambiemos el nombre de una variable, verás que ahora la lista es , no, sigue siendo buena. ¿ Por qué? Porque no salvamos. Cuando ahorramos, ahora deberíamos ver que todo desaparece. Tenemos que volver a ponerlo de nuevo. Ahí vamos. Se puede ver que está en 0. Esto es algo a tener siempre en cuenta. Entonces haz eso antes de que nos olvidemos de evitar cualquier error, guarda eso, vale, Ahora, de vuelta en Unidad, ¿qué queremos hacer aquí mientras estamos dando un bucle a través de todas las armas. Entonces lo que voy a hacer es ir adelante y usar el arma. Dot. Gameobject dot set activo a false. Entonces, ¿qué pasa aquí dentro? Tenemos todas las armas disponibles. Ponemos a todos ellos en falsos. Y luego lo que hacemos como volver a comprobar las armas disponibles en el arma actual, el punto GameObject establecido activo. Cierto. Entonces, ¿por qué estamos apagando todas las armas y no sólo la pistola que estamos usando. Esto era algo en lo que también estaba pensando. Pero también más adelante cuando empecemos a cambiar de amina, cuando empecemos a recoger armas, querrá cambiar el arma. Y es, es mucho más seguro apagar todo y luego simplemente apagar lo que realmente necesitamos. A veces el orden de las armas será diferente. Y sólo girando de la que tenemos ahora mismo, tal vez vamos a encender algo diferente que no queremos. Por lo que tomé la precaución extra de sólo recorrer todas las armas, ponerlas todas en falsas. Y entonces solo, creo que lo único que necesitamos hacer realidad, espero que sea comprensible. Y si quieres crear algún tipo de mecánico más complejo, yo realmente, realmente estaría feliz de verlo. Se puede ir y discordar y presumir de sus cosas ahí. Entonces voy a volver a mi juego aquí mismo, guarde eso. Y voy a seguir adelante y vamos a ver, correr el juego y ver qué pasa. Entonces tengo el rifle. puede ver que está encendido aquí mismo en la jerarquía. Si le pego a la pestaña, si le doy a la pestaña, ahí vamos. Tengo la pistola. Si vuelvo a golpear el Tab, tengo la escopeta. ¿ Qué tan guay es eso? Se puede ver todo en la jerarquía. Probemos esto otra vez. Rifle, tiros de rifle, Pistola, Tiros de pistola, escopeta, etcétera y demás. Por lo que espero que lo disfrutes, asegúrate de comprometer tus cambios. Y acabo de mencionar esta cancha, espero que ya supieran que teníamos una discordia yendo allá. Presume sus cosas que vemos. Um, vale, así que no he abierto este curso sólo para mantenerme concentrado. Siempre respondo ahí lo más rápido que pueda. A veces no respondo tan rápido como debería ser. Es porque por supuesto, MyTime, todos tenemos 24 horas y porque todos están en una escala de tiempo diferente o lo que sea, habrían sido lugares diferentes en el mundo. Tenemos una comunidad increíble. Hay mucha gente ahí por la forma en que manejamos la mentalidad que tenemos, que todos somos estudiantes. Siempre aprendo cosas nuevas cuando estoy ayudando a alguien y eso es lo que siempre debes estar haciendo. No tengas miedo de cometer errores. Trata de ayudar en la mayor medida posible. Se unió a la discordia. Déjame una reseña. Espero que estés disfrutando y te veré en el próximo video donde realmente estaremos no solo viendo las armas aquí mismo en los jugadores están, y también las podremos ver en la UI lienzo que hemos creado. Entonces con eso dicho, te veré en el siguiente video. 53. Armas que mostran lienzo UI: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos y este video, cuando ejecutemos el juego, verás que tenemos el rifle. Cuando cambiamos un arma, tenemos una pistola. Cuando cambiamos el arma, tenemos una escopeta. Entonces ahora tenemos una representación visual de la cual se fue, estamos llevando con nosotros. Entonces sin más hacer, no perdamos más tiempo y empecemos. Ah, caso. Entonces ahora en lugar de simplemente cambiar el arma, los pilares sosteniendo, también queremos mostrar esto en la pantalla de interfaz de usuario que hemos creado. Entonces sigamos adelante y hagamos eso. En primer lugar, voy a hacer la escena un poco más grande para que podamos ver correctamente, voy a hacer doble clic en algún lugar aquí en el lienzo, mientras que el lienzo hace doble clic en ella. Y ahí vamos. Ahora tenemos el enorme lienzo. Vamos a las capas y vamos establecer que podamos ver la capa de interfaz de usuario. Y aquí dentro esto solo por un momento, apaga la imagen que se desvanece para que veamos lo que está pasando. Y aquí dentro, ¿qué vamos a actuar? Bueno, queremos que dos cosas representen las armas que estamos usando en este momento. Queremos tener algún tipo de imagen para representar el arma y queremos algún tipo de texto bajo esa imagen. Entonces sigamos adelante y empecemos. Lo primero que voy a agregar es hacer clic aquí. Y solo primero que nada creemos un objeto de juego vacío solo para representar todo sobre arma. Entonces voy a decir armas, UI. Y bajo las armas estás, voy a crear una imagen en primer lugar. Entonces imagen, esta será la Imagen de Arma. Y también voy a crear un texto que va a ser el trabajo. Qué es, el texto de las armas. Ahí vamos. Por lo que ahora tenemos una imagen de arma y un texto de arma. Voy a dar click en el lienzo aquí por un segundo. Simplemente abre esto. Al abrir el lienzo, puedo, dondequiera que haga clic, todavía puedo ver las fronteras. Entonces voy a elegir la imagen y la voy a arrastrar hacia abajo hacia un lado. Y se puede ver aquí mismo en la vista de juego lo que vamos a ver todo el tiempo. Entonces voy a hacer esto un poco más grande, como algo de ese tamaño. Y éste será el ingeniero de armas. Y entonces tendremos los textos para escribir debajo de él aquí mismo. Y vamos a probar esto y ver cómo funciona. Por lo que en la imagen vamos a elegir una fuente. Voy a cerrar esto sólo para que no lo perdamos. Y voy a meterme en las pistolas sprites. Y sigamos adelante y sumamos la escopeta. Entonces ahí lo tienes. Ya puedes ver ahora podemos ver la escopeta. Podemos ajustarlo al tamaño nativo para hacerlo un poco más pequeño. Pero ¿sabes qué? Sinceramente me gusta la forma en que era antes. Grande y fácil de ver. Ahora el texto de las armas, queremos cambiar un poco porque queremos tener esto, por ejemplo, el nombre de las armas. Y más adelante aprenderemos cómo podemos cambiar o crear nuestra propia fuente. Pero por ahora, dejémoslo como es solo para fines de pruebas. Podemos cambiar la alineación aquí dentro y podemos ponerla en el medio. Podemos hacerlo audaz. Podemos hacer muchas cosas con el texto, pero una de ellas es cambiar el color y hacerlo completamente blanco para que podamos verlo en el fondo, pase lo que pase. Voy a hacerlo un poco más grande para que podamos aumentar el tamaño. Ahí lo tienes, puedes ver así es como aumentamos el tamaño y ahora vamos a aumentar el tamaño de la fuente. Entonces ahí lo tienes. Eso se trata de cómo quería hacerlo. Entonces el nombre de las armas justo debajo del arma real e incluso podemos hacer que la caja sea un poco más grande y aumentar el tamaño de las palabras. Entonces ahí lo tienes. Ahora podemos escribir la escopeta y así sucesivamente y así sucesivamente. Quitemos el naufragio como objetivo aquí porque recurrimos objetivo, como hemos dicho, podemos dar click en él. No queremos dar click en él. No va a hacer ninguna diferencia, pero vamos a mantenerlo en eso. Podemos cambiar el desbordamiento horizontal, el desbordamiento vertical, y podemos crear algo llamado el mejor ajuste. Y esto es realmente bonito porque ahora cuando cambiemos, puede ver que la fuente cambiará con el, o el, el tamaño de las palabras encajará como a tan grande V. Y no estoy seguro por qué puedo decir nada correctamente, pero de todos modos, ahí tienes. Entiendes a lo que me refiero con mejor ajuste? Acabas de ver lo que pasa. De acuerdo, Sigamos y dejemos de divagar. Lo siguiente que queremos hacer es que queremos tener acceso o al comportamiento de esta UI. Entonces lo que vamos a hacer, queremos en primer lugar, asignar a cada arma el sprite y nombre apropiados. Entonces voy a entrar en el prefabricado de armas. Por lo que prefabs, armas, selecciona la pistola. Y aquí es donde vamos a estar poniendo todo. Entonces voy a abrir el guión aquí mismo. Y en el sistema de armas, porque cada uno tiene un sistema de armas, vamos a sumar dos variables. El primero va a ser un sprite. Y va a ser la imagen del arma. Y el segundo va a ser una cuerda. Y va a ser el arma. Vamos a quedármela. Un arma y el arma. Arma, cuello. Ahí vamos. Entonces arma Texto, Imagen de arma y lo que pasó nombre. Y si vuelvo a Unidad después de que se compila, Ahí vamos. Podemos ver que tenemos la imagen sprite y el nombre de la imagen. Entonces vamos a elegir la pistola. Acude a la pistola en la imagen. Haz de esto la piedra. Y luego vamos a ir y al rifle o nano para volver al rifle de armas Prefabs, bloquear esto, encontrar la imagen aquí abajo. ¿ Cuál es el nombre? Sólo lo mantengamos en rifle sin la parte de asalto. ¿ Y qué más tenemos? Menos eligen la escopeta, sepan que la pistola de disparo prefabulosa, encierran esto. Por último, imagen escopeta, verde aquí, nombre de las armas, conmocionado, arma. Ahí vamos. Por lo que ahora cada prefabricado tiene su propia imagen de jardín o Imagen arma y su propio cuello de arma. Entonces lo siguiente que tenemos que hacer es que necesitamos dos cada vez que cambiamos un arma para llenar esta imagen. Actualmente, si corro el juego, notarás que tengo la imagen aquí mismo, puedo moverme, pero si traté de cambiar mi arma, las imágenes no cambian. Entonces ahora es el momento de agregar comportamiento a esto. Y lo vamos a hacer en el UI Manager, que está en el campus. Así que abramos el Administrador de UI y veamos qué vamos a hacer aquí. Entonces lo primero es que necesitamos una referencia tanto a la imagen como al texto. Entonces voy a crear un campos serializados aquí dentro, que va a ser de tipo imagen. Y podemos usar EMG porque tenemos Unity engine dot QI usando allá arriba. Vamos a llamar a esto la imagen del arma. Solo mantengamos las cosas simples, igual que antes. Y aquí dentro tendremos un texto con el que es el nombre del arma. Guarda eso de nuevo en Unity. Y veamos ahora podemos seguir adelante y bloquear esto. Y podemos agregar la imagen del arma, y podemos sumar el impuesto de armas. Podemos hacer click en el lienzo de la interfaz de usuario y asegurarnos aplicar estos cambios en todo nuestro proyecto. Excelente. Ahora, lo siguiente que hay que hacer es mostrarte un reto. Y tu reto va a ser crear un método que cambie el intestino. Entonces primero que lo primero, necesario crear un método vacío que sea público y tome dos parámetros. Una imagen para el arma y una cuerda para el nombre de la pistola o nombre de las armas o como quieras llamarla. Entonces necesitarás configurar el sprite de UI de pistola usando la imagen. Y también necesitarás establecer el texto del nombre del arma como el nombre de la columna. Y por último, te daré una pequeña pista si quieres, si no lo haces y haz el reto. Si no, puedes usar la pistola te punteé sprite y la pistola UI o nombre de arma que eres, o cualquiera que sea el nombre de la variable real. Texto de punto, sprite de punto para acceder al sprite y al texto. Recuerda que esto debe ser un arma y no una imagen de la interfaz de usuario. Oh, está bien, así que ahí tienes. Pausa el video ahora mismo. Ve a hacer el caldeo. De acuerdo, bienvenido de nuevo. Entonces, ¿qué vamos a hacer aquí dentro? Y vamos a crear un vacío público y cambiar ido o cambiar Open UI. Y dijimos que vamos a tomar dos parámetros. El primer parámetro va a ser un sprite, y va a ser la imagen de las armas. Y saber qué, porque ya tenemos el año de imagen arma. Cambiemos este por arma. Entonces ahí tienes, imagen de arma. Y también vamos a tomar una cuerda, que va a ser el texto de arma. Entonces estos son los dos parámetros que vamos a crear y ahora que los tenemos, ¿cómo vamos a cambiar las imágenes? Si si entramos aquí, como les he dicho en las manos, si hacemos click en la imagen del arma, podemos ver que aquí mismo tenemos la imagen fuente. Entonces si voy, voy a decir que tenemos el Sprite de Imagen de Arma y es igual a la imagen de arma que nos fue proporcionada. Y luego tenemos el nombre del arma texto punto. Entonces estamos accediendo. Déjame volver aquí y mostrarte algo. Entonces tenemos las armas relajadas. Es de tipo texto pero el impuesto componente, pero estamos accediendo al texto en el texto. Por lo que tenemos este parámetro de texto o característica. El componente. Entonces estamos accediendo a eso diciendo dot txt y es igual al texto del arma. Guarda eso. Oh, genial. Ahora en realidad podemos cambiar la interfaz de usuario, pero el siguiente paso es cambiar realmente la interfaz de usuario de las armas siempre que las cambiemos. ¿ Y dónde vamos a hacer eso? Bueno, vamos a hacer eso en el método de arma de cambio 0 y 0. Aquí hay algo que quería decirte, comenté. Déjame decirte ahora mismo, si te has dado cuenta cuando jugamos nuestro juego, tan pronto como empecemos, por ejemplo, tenemos el rifle, vale, así que le damos la tecla de tabulación y no cambia, no hasta que golpeemos el tecla de tabulación otra vez. Entonces, ¿cuál es el problema? El problema es que en nuestra capa justo aquí podemos ver que se ha ido la corriente, pero no le hemos asignado ningún valor. Por lo que no sabe cuál es el valor. Entonces lo que hice y empezar y el controlador del jugador, simplemente podemos escribir estas dos líneas de código. Y lo que hacen estos es en primer lugar, ponemos el arma actual, que es un entero para el recuento de puntos de arma disponible, y luego simplemente cambiamos al arma. Entonces empezamos con el rifle. Entonces ahora cuando corro el juego, o podemos incluso algo mucho mejor si quieres empezar con la primera arma que tenemos. Podemos establecer esto como el número de puntos de armas disponibles menos uno. Por lo que ahora, en cuanto empecemos el juego, tendremos la primera pistola con nosotros. De acuerdo, entonces ahí vamos. Ahora podemos cambiar de inmediato y hay algo mal aquí. Ah, está bien, así que otra vez, es ese error molesto. Por lo que de vuelta en juegos. Entonces como puedes ver ahora, en cuanto empecemos, podemos darle al Tab. Puede querer hacer esto público, pero como les dije en el video anterior, no es tan buena de una manera de obtener acceso a variables. Una forma mucho mejor es entrar aquí y crear dos métodos. El primero va a ser público. Devolverá un sprite se va a llamar la imagen get gun. Obtienes imagen de armas en realidad obtienes la imagen de arma UI. Y voy a abrir los paréntesis y simplemente voy a devolver las armas y cerrarlas con punto y coma. Y luego voy a crear un método similar el cual va a devolver una cuerda y se va a estar consiguiendo el arma. Obtén arma, texto, interfaz de usuario o nombre, en realidad nombra UI o no. Ni siquiera podemos Usar la palabra UI. Pero dejémoslo sólo por el bien de saber por qué estamos consiguiendo estos. Entonces nombre de arma, guarde eso. Por lo que ahora podemos acceder al sistema de armas. Y desde ese sistema de armas podemos acceder a estos dos métodos. Y con estos dos métodos, podemos tener la imagen y el nombre de las pistolas sin enfrentar el problema de cambiar estas variables por error o causar algún tipo de error. Entonces ahora mismo lo que podemos hacer es conseguir el arma disponible. Arma disponible en la posición arma actual o es el arma actual? Y podemos conseguir el componente de esta pistola actual, que obviamente es el sistema de armas. Y desde este sistema de armas, podemos, ¿qué podemos hacer? Podemos en primer lugar conseguir ¿cómo se llama? Obtener imagen de arma. Y entonces podemos golpear Entrar aquí porque la línea es demasiado larga. En coma. Copia esto, y pegarlo aquí en entrada inaugural. ¿ Y cuál parece ser el problema aquí? ¿ Por qué el primero que me dice no puede convertir el método grupo 2, verdad? Está bien. Está bien. Este es un método. Y consigue el nombre, consigue nombre de arma UI. Ahí vamos. Eso lo guardamos. Entonces ahora si quieres, sí te recomiendo que hagamos algo aquí porque tenemos código redundante. Podemos establecer esto como una variable y luego usar el arma Get y obtener una imagen. Eso sería algo más inteligente de hacer. Pero por ahora, vamos a mantenerlo para que siempre sepamos lo que está pasando después de cambiar el arma, lo configuramos como verdadero, luego accedemos al Administrador de UI. Obtenemos el arma disponible en la posición actual, obtenemos el script de sistemas de armas y luego obtenemos la imagen de armas. Lo enviamos al cambio Open UI, que está en el Administrador de UI. Y esto debería cambiar la imagen cada vez que cambiemos el arma. Entonces de vuelta en nuestro juego, Vamos a correr y ver qué pasa. Ahí vas. Cuando golpeamos a Tab, conseguimos el arma de tiro, conseguimos el rifle, obtenemos la pistola la cual está destrozada por alguna razón porque la pistola está tratando de llenar todo el vacío. A ver, ¿dónde está, dónde está? ¿Dónde está? En la UI, la imagen del arma. Entonces obviamente cuando lo pusimos como el arma, no es tan bueno, pero no se preocupe por eso. Mientras te funcione, podemos cambiar esto, hacerlo más pequeño, hacerlo más grande. Quizás incluso una mejor idea, tal vez cambió la forma en que se representa esta imagen. Me molesta demasiado. Si te molesta, y sí te recomiendo tal vez veamos cómo podemos arreglar esto más adelante. Pero por ahora podemos ver que está funcionando. De lo único que no está funcionando. En cuanto, en cuanto corremos. Podemos ver que a menos que cambiemos el arma, tenemos la primera que es el nombre de las armas, así como así, una imagen en blanco y un texto en blanco. Entonces lo que podemos hacer es en UI Manager aquí. Entonces voy a seleccionar esto. Voy a hacer clic derecho en acción rápida y refactorización. Y voy a llamar a esto las armas de ajuste. Armas. A ti, yo le pego Enter. Y ahora puedo ir y empezar. No voy a cambiar el arma porque acabo de notar algo que esto no funciona a menos que tengamos la ficha. Entonces todo lo que estamos haciendo aquí es solo establecer la corriente a la que se ha ido, para que funcione de inmediato. Puedes ajustarlo a 0 si quieres. Pero eliminemos esto y en su lugar vamos a estar configurando armas UI. Por lo que estableciendo las armas que. En cuanto empecemos. Y déjame simplemente seleccionar esos y golpear pestaña Shift un par de veces solo para que luzcan un poco mejor. Eso lo guardamos como les he dicho, lo inteligente que hay que hacer es cambiar esto y ponerlo en una de las variables. Te recomiendo que puedas ir a hacer eso. Y con todo ese set, Volvamos a nuestro juego y vamos a probar esto, a ver si funciona desde el juego. Y no, eso no ayudó al principio. ¿ Por qué es eso? Entonces después de hacer un poco de investigación, me di cuenta de algo y entendí de dónde viene el problema. Entonces aquí estamos tratando de establecer la interfaz de usuario de armas, que está aquí, y estamos tratando de acceder a la instancia de UI Manager Don. El problema es, y me he dado cuenta de que aquí mismo, si corro el juego, te darás cuenta de que tengo esta flecha aquí mismo. Y se puede ver que la referencia objeto no se establece como instancia de un objeto. Entonces hice doble clic y miré aquí y noté que por alguna razón está instanciando el guión del jugador o un inicio antes de que se inicie el script de la UI. Por lo que aún no tenemos referencia al Administrador de UI. Ahora, lo que podemos hacer es intentar hacer esto y despertarnos en lugar de un inicio y esperar arranques un poco antes del inicio. Vamos a probar esto y a ver si funciona. Si lo hace, entonces nos ahorramos mucho problema. No estoy seguro de que esto funcionara, pero vamos a probarlo. Entonces en el juego, ejecuta el juego. De acuerdo, entonces ahí vamos. Sí funcionó. ¿Qué tan guay es eso? A quien ahorramos tanto tiempo, no estaba seguro de que funcionara. Ahora otra cosa es la pistola que se está aplastando. Podemos entrar en la imagen aquí mismo y asegurarnos de dar click en el aspecto de preservar. Se puede ver que la pistola se mantendrá igual. Entonces detendré el juego y los Preajustes, guardo eso y me aseguraré de aplicar los cambios. Entonces ahora cuando corremos, ahí tienes. Se puede ver que el PESTEL está configurado correctamente, pero ¿cuál es el problema? El problema es que tengo un rifle y mi mano sin embargo se está representando la pistola. ¿ Por qué es eso? Bueno, porque de nuevo, si volvemos, vamos a ahorrar eso. Y para fines futuros, asegúrate siempre de establecer la instancia y el despierto no en el inicio. Entonces ahora esta fue una oportunidad increíble para que entendieras la diferencia entre el inicio y el despierto. Comienza despierto solo un poquito antes de que empecemos. Sigamos uno, ¿por qué tenemos la pistola en el principio? Todo es por la corriente que se ha ido disponible. Por lo que el arma actual está siendo ajustado a conteo de puntos menos uno, que es la pistola. Porque la pistola, como se puede ver en el jugador de condenas, es el recuento menos uno, que significa elemento dos. Entonces, ¿cómo vamos a arreglar esto? Bueno, lo que podemos hacer son dos cosas. Simplemente pondremos el arma actual para ser. Creo que tal vez uno. De esa manera comenzaremos en la posición correcta. Por lo que de vuelta aquí, vamos a ejecutar el juego. Estamos sosteniendo un rifle y tenemos un rifle representado. Y así más adelante, estoy seguro de que encontraremos una solución más inteligente a esto, pero por ahora, solo haremos lo que funcione. Espero que haya disfrutado el video. Espero que estés diciendo todos tus expedientes y te veré en el siguiente. 54. Hacer agitar la cámara: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en este, cada vez que empezamos a disparar, ya no tenemos esta cosa aburrida que sucede. En realidad tenemos temblores. Entonces cuando disparamos, ahí vamos. Se puede ver siempre que deberíamos, tenemos algún tipo de temblor, por lo que agrega un nivel de intensidad. Obviamente, la intensidad en la escopeta es demasiado, pero como puedes ver, cada arma tiene su propia intensidad. Por lo tanto, nota el rifle , nota el arma, y nota la escopeta. Ahí vas. Para que veas que tenemos diferentes intensidades para diferentes armas. Entonces, no perdamos más tiempo. Y empecemos. Ah, bien, Entonces ahora lo que queremos hacer es añadir un poco de intensidad a la forma en que estamos disparando. Por lo que actualmente todo está funcionando bien. Estamos disparando con nuestras armas. Podemos cambiarlos por diferentes armas. Podemos matar enemigos. Todo está bien, pero todavía hay algo que me molesta y es que el tiroteo no es tan emocionante. Entonces tenemos el tiroteo, en realidad no lo sentimos. Nosotros lo vemos. No impacta, pero no lo sentimos dentro de nosotros. Entonces lo que vamos a hacer es que vamos a añadir un poco de temblor a la cámara. Y por suerte, es extremadamente fácil cuando se trata de usar una máquina de pecador. Antes de tener una sola máquina, tomaría mucho cada vez que quieras hacer temblar la leva y no funcionaría . A veces lo hizo. Entonces, no perdamos más tiempo. Y sigamos adelante en la cámara virtual y agreguemos algo llamado el Berlín multicanal básico bajo el ruido. Entonces quieres preguntarme, ¿cuál es el Berlín básico multicanal? No tengo ni idea, pero sé que crea ruido. Entonces si quieres ahondar más en esa viga, supongo que estaría muy feliz. Entonces ella que fuera del camino. Veamos qué pasa aquí dentro. Tenemos diferentes tipos de perfiles, ruido, No llamemos ya sabe. Y podemos cambiar esto para tener diversos aspectos diferentes. Puedes seguir adelante y leer sobre todos estos. De verdad no sé lo que realmente hacen. No estoy tan profundamente en la máquina SNA, pero lo que sí sé es que podemos usar 60 shake y tenemos la amplitud y la ganancia de frecuencia. Entonces si corro el juego, te darás cuenta de que vamos a tener sacudidas ahora mismo. De acuerdo, Así que ahí tienes. Se puede ver el pequeño temblando y se puede ver la cámara cómo se está temblando. Si yo incremento la amplitud, ahí vas, puedes ver que a medida que yo aumento, cada vez tenemos más y más temblando hasta que podamos manejarlo. No hay guerra. Vamos a ponerlo en 0 por ahora, ya puedes ver también puedo crear un desplazamiento. Entonces si lo pongo a uno y me aumento en la y, creo que en la Y habrá más temblor, pero vamos a mantenerlo en 0. También podemos aumentar la frecuencia, y esto se sumará a la frecuencia del temblor. Entonces vamos a mantenerlo en una. Volvamos a ponerlo de nuevo a 0. Y encontremos la manera de controlar este temblor siempre que realmente estemos disparando. Entonces para hacer eso, voy a crear un nuevo guión. Entonces voy a entrar en el guión, Vamos a hacer clic derecho y crear una carpeta para las cámaras. Porque más adelante podríamos tener un controlador de cámara. Y vamos a seguir adelante y crear un guión C agudo y llamarlo el temblor, campamento. Hit Enter, espere a que se compile. Y lo vamos a agregar a la cámara virtual. Y ahí vamos. Ahora tenemos un guión aquí. Voy a abrirla y vamos a hacer un par de cosas. Entonces lo primero, primero, necesitamos estar usando cin una máquina. Esto nos permitirá acceder a diferentes cosas dentro de la máquina, al igual que usar Unity engine doc UI para acceder a cosas en el lienzo de la interfaz de usuario. Lo siguiente que vamos a hacer es crear un par de variables. Ahora detente conmigo. Esto será un poco extraño, pero lo entenderás todo. En primer lugar, obviamente necesitamos una referencia a la cámara virtual. Entonces voy a crear un pecado privado una máquina. En realidad vamos a sólo cámara virtual, máquina central cámara virtual. Y lo voy a llamar mi cámara virtual sólo para mantener las cosas muy simples. A continuación, vamos a crear otra variable privada, que va a ser el purlin multicanal. Y vamos a llamar a esto el ruido. Entonces como dijimos, esta animación, básica multicanal Berlín. Esta es la última vez que voy a salvar el mundo de las canciones. Ahí está, aquí mismo, y necesitaremos una referencia al mismo y al ruido. Entonces de vuelta aquí, ¿qué más necesitamos? Bueno, creo que necesitaremos crear una instancia de esto porque no queremos seguir buscándolo y solo necesitábamos una vez. Yo creo. Entonces, voy a hacer de esto una estática pública. Y haremos de esto un tipo de cámara temblorosa, temblorosa. Y se va a llamar instancia en postura. Y ahí vamos. Y de alguna manera a partir de ahora, siempre que queramos instanciar una instancia, siempre es y el despierto. Por lo que la instancia es igual a esto. Genial. A continuación, sigamos adelante y armemos todo. Y mientras tengamos el despierto ahora pongamos aquí el ruido MD de la cámara virtual. Entonces lo primero que primero, mi cámara virtual, ¿a qué es igual? Bueno, es muy sencillo. Nosotros vamos a conseguir el componente, conseguir componente, y vamos a conseguir la cámara virtual. Ahí vamos. Por lo que ahora tenemos acceso a la cámara virtual. Entonces tendremos que conseguir el ruido. Por lo que el ruido es igual para salir o lo siento, ruido es igual a mi cámara virtual dot get. Y se puede ver aquí mismo que tenemos esto se mete en un componente de máquina. Entonces, ¿cuál es el problema o no el problema en realidad, por qué tenemos metidos en un componente de máquina y por qué no podemos simplemente obtener un componente normal? Bueno, porque si entro aquí y cuatro, hago eso, sólo déjame llenar este fin. Por lo que este será el purlin multicanal. Ahí vamos. Entonces, ¿por qué usamos el componente get cinema machine? 12 máquinas de silane son un poco complicadas y por eso te recomiendo que vayas a mirar a través las documentaciones y aprendas todo al respecto. En realidad se puede, por cierto, vender máquinas para crear remolques y escenas de corte y así sucesivamente. Por lo que es una herramienta muy, muy poderosa. Aprenderás lo que hace. Entonces puedes ver aquí mismo que estos son diferentes, digamos componentes dentro de la cámara virtual. Y cuál es el problema aquí por alguna razón. De acuerdo, Entonces no se estaba abriendo. ¿ Dijimos que necesitábamos el cuerpo? Ah, está bien. Entonces ahí vamos. Por alguna razón no estaba abriendo máquina de cine y hacer de esta una cámara de 60. Guarda eso. De acuerdo, sigamos. Ahora que tenemos acceso al ruido, lo que vamos a hacer es que primero vamos a eliminar o eliminar el inicio y la actualización. Y vamos a crear un método para realmente empezar a temblar. Entonces voy a crear un vacío público y vamos a llamar a esto la cámara batida. Y dentro de cámara de sacudida, voy a tomar un flotador de intensidad. Y esta intensidad se traducirá en el ruido. Entonces si miramos aquí abajo bajo el ruido, tenemos la ganancia de amplitud. Vamos a acceder a eso. Por lo que la amplitud ganan su ego y tenemos el pequeño m detrás de él. Pero este es el nombre de la variable a la que estamos accediendo y la vamos a vender como la intensidad. ¿ Y por qué tenemos este parámetro de intensidad mientras? Porque cada vez que disparamos a nuestra arma, queremos tener cierta intensidad. Entonces por ejemplo, la escopeta debería agregar un poco más sacudiendo el Arno, lo que sea, el rifle agregará un poco menos sacudiendo el arma no debería sacudir casi en absoluto. Pero por ahora, sigamos adelante y llamemos a este método aquí mismo. Y vamos a seguir adelante y primer lugar actúa como la sacudida, por ejemplo, cámara sacudida. Y sólo vamos a darle por ahora 55. Por lo que crearemos temblando usando cinco intensidad y veremos cómo se ve eso. Entonces voy a esperar a que esto se compile. Yo voy a correr el juego. Y ahora deberíamos ver eso cuando dispare. Ahí vas. Se puede ver que tengo el temblor. Ahora, aquí hay dos problemas. El primero es que tenemos mucho temblor. El segundo es que si me cambio en otra pistola, el temblor es el mismo. Si lo probamos, será lo mismo. Confía en mí. Eso no parece así, pero digamos que intenté usar el arma. Entonces ya puedes ver ahora cuando disparo, la intensidad es la misma y eso no queremos. Entonces te voy a emitir un pequeño reto. Vas a hacer temblar la cámara. Por lo tanto, crea dos variables para cada arma. 14, la intensidad del temblor, y uno por el tiempo que seguimos temblando, no queremos seguir temblando para siempre. En segundo lugar, necesitarás agregar un parámetro al método de forma que toma en el tiempo. Además, necesitarás dejar de temblar usando una co-rutina y necesitas llamar al método shake camp cada vez que deberíamos convertirnos, creo que el último punto que ya hicimos. Así que pausa el video ahora mismo y ve a hacer la estocada poco profunda. De acuerdo, bienvenido de nuevo. Entonces, ¿cómo conseguiste todo eso? Entonces lo primero que voy a hacer es aquí voy a crear un campo serializado de tipo float. Y va a ser una intensidad de agitación de armas. Y las armas. ¿ Qué? ¿ Arma? Tiempo de agitar. Y quitemos las armas y hagamos que suceda. Entonces ahora tenemos la intensidad y el tiempo de agitación. Lo siguiente que vamos a hacer, ¿qué debemos hacer? Veamos el reto o incluso se olvidó como parámetro. De acuerdo, entonces volvemos aquí y agregamos un tiempo de flotación o tiempo de agitación. Tiempo de agitación, entonces tendremos que dejar de temblar usando una co-rutina. Entonces aquí voy a crear un enumerador y se va a llamar el stop shaking. Entonces deja de temblar y va a tomar una variable aquí dentro que no es tiempo para esperar. Y como siempre, vamos a ceder, regresar. Nuevo, espera, cuatro segundos, tiempo, espera. Y aquí dentro después de que terminemos, vamos a volver a conseguir el ruido, amplitud de puntos. Y vamos a volver a ponerlo en 0. Guarda eso. Y vamos a iniciar la cancha aquí arriba. Entonces inicia coroutine. Deja de temblar, por favor. Y vamos a sacudir el tiempo. Tiempo de temblar. Diga que finalmente, hay algo aquí dentro. Entonces ahí vamos. intensidad de agitación de arma y tiempo de agitación de arma. Guarda eso. Creo que esto es todo lo que tenemos que hacer. Entonces llamamos, obtenemos la instancia del sacudido, accedemos al método, le damos la intensidad del arma, le damos el tiempo que necesita para seguir temblando. Y luego llamamos a este método aquí mismo, que toma en el tiempo de agitación de intensidad, nos da la intensidad al ruido. Se inicia sacudido y luego inicia una cosa fría que detendrá el temblor después de un poco de tiempo. Entonces con eso hecho, guardamos todo eso. Volvemos aquí, tenemos el ¿Por qué el ruido sigue cerrándose? ¿ Te diste cuenta de que cada vez por alguna razón hay algún tipo de algo no del todo bien con esto. Espero que funcione. Entonces voy a ponerlo en 0. Guarda eso, ejecuta el juego. Ah, y me olvidé de agregar a cada uno algo de temblor. Entonces escopeta, ¿cuál es la intensidad del temblor en una escopeta? Hagámoslo seis. Y el tiempo es tal vez dos segundos. No lo sé. Yo no probé esto. El intensidad en un rifle será cuatro con un tiempo de agitación de uno. Y en la pistola va a ser un tres por el tiempo de temblor de 0.5. Guarda eso, ejecuta el juego. Y vamos a probar nuestras armas para el temblor. Por lo que voy a maximizar en el juego para que se vea mucho más bonito. Creo que esto va a funcionar. No creo que tengamos un error. Entonces ahora cuando disparo con un rifle, ve y yo, si yo computando tenemos temblando todo el tiempo, entonces cuando elijo la pistola, es un poco menos, así que 0.5 segundos y el temblor es un poco más pequeño. Y luego tenemos la escopeta, que debería llevar mucho y para MLA. Entonces boom, ahí vamos. Estamos lanzando algún tipo de bomba nuclear. Pero obviamente todos estos necesitan un poco de ajuste. Voy a hacer un poco de retoques aquí. No queremos tener tanto temblor. Tendremos un poco menos, pero siempre vuelve a ti. ¿ Cómo quieres que se sienta tu temblor? ¿ Tiene que ser intenso? ¿ No tiene que ser intenso? Nosotros vamos a cometer todos nuestros cambios y vamos a llamar a esto como una cámara temblorosa cuando disparo. Comentar esos. Y ahí tienes. Creo que este será el último video de esta sección del sistema de armas avanzadas. Hemos añadido nuestras armas más adelante estaremos recogiendo suma. Ya veremos cómo vamos a estar encontrando todas nuestras armas. Aprendimos a cambiar las armas. Aprendimos a añadirlos a la interfaz de usuario. Agregamos un índice de fuego, creamos un sistema de tiro increíble y espero que estés disfrutando. Espero que tengas que revisarlo me ayudó mucho y te veré en el siguiente. 55. Sección 9: sistema de salud de salud de jugadores: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, en realidad vamos a agregar un sistema de salud al jugador. Entonces ahora, no sólo matamos a los enemigos, sino también si nos golpean demasiado con las espadas, morimos. Obviamente hay cosas sobre las que tendremos que arreglar conferencia, pero por ahora, todo lo que estamos haciendo es configurar el sistema de salud de nuestro jugador, haciendo que nuestro ser sea un poco más cerca la realidad y sintiéndose mucho mejor agregando un poco de bistec. Por lo que antes de este video, siempre corríamos por ahí y nos divertiríamos y matábamos a todos y no nos preocuparíamos de nada en el mundo. Pero ahora nos estamos muriendo. Es como terminar la universidad y empezar un trabajo de verdad. Te vas al mundo real. Hay muchas cosas en juego. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Por lo que actualmente todo está configurado correctamente. Podemos disparar, nos pueden disparar, podemos hacer todo. Escuchamos al enemigo, podemos matarlo, pero cuando el enemigo nos dispara, no duele tanto. Entonces lo que vamos a hacer en esta sección, y sobre todo en este video, es crear un sistema de salud. Entonces, empecemos configurando todo. En primer lugar, vamos a entrar en los guiones, vamos al jugador, y vamos a crear aquí un guión C-sharp que va a ser el controlador de salud del jugador, o debería haber llamado a Player manejador de salud porque en realidad no está controlando la salud del jugador. Es manejo. ¿ Sabes qué? Vamos a seguir adelante y que sea la eliminación completa. Esto creará un manejador de salud de capas porque maneja que tienen y no es tan grande de un problema, pero siempre me gusta mantener las cosas su manejador de salud. Entonces debido a que esto maneja la salud del jugador, en realidad no lo controlas de ninguna manera. Entonces lo voy a agregar a la capa de doom y voy a aplicar todos los cambios. Y voy a abrir el manejador de salud del jugador. Entonces, ¿qué necesitamos aquí? Bueno, obviamente, lo primero que necesitamos es un campo serializado que representará la salud actual. Y esto es solo para fines de depuración. Obviamente, no queremos poder ver siempre la salud actual. Entonces vamos a crear una segunda variable que es la máxima salud. Y luego empezar, vamos a instanciar la salud actual como la salud máxima. Por lo que siempre que empecemos un juego, siempre que nuestro papiro jugador o empiece a jugar, tendremos la salud actual como la salud máxima. Ahora, el siguiente paso es crear un método que realmente manejará recibir daño por parte de los enemigos. Y eso va a ser parte de tu reto. Por lo que tu reto es crear un método para recibir daño. Por lo tanto, crea un método que dañará al jugador. Se debe tomar un parámetro, la cantidad de daño determinó qué tipo debe estar el parámetro dentro del método. Eliminar la cantidad de daño de la salud actual y comprobar si la salud es menor o igual a 0. Queremos que el jugador esté inactivo. Así que pausa el video ahora mismo y ve a hacer el reto. Bienvenido de nuevo. Entonces creo que este fue un reto bastante fácil. No creo que fuera demasiado duro. Entonces voy a quitar la actualización. 56. Lienzo de UI: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video completamente nuevo en el que aprendimos todo sobre los deslizadores. Aprenderemos sobre la próxima malla Pro y también creamos nuestra propia fuente. ¿ Qué tan emocionante es eso? Entonces, no perdamos más tiempo y empecemos. Ah, caso. Por lo que es hora de agregar un poco más de sabor a la forma en que nuestra salud se deteriora por los enemigos. Entonces, empecemos. El primero que queremos hacer es hacer la escena un poco más grande. Y vamos a hacer doble clic en el enorme lienzo de UI que tenemos. Entonces podemos ver que tenemos la, lo que pasa aquí, la imagen que se desvanece que hemos apagado. Y vamos a mover las armas un poco a la derecha. Y podemos ver aquí mismo que estas imágenes deben estar en el 0, 0, en la y y en la x Solo para tenerlas en medio de la no-UI y moverlas hacia abajo. Esto es solo un poco de ajuste, y ahí tienes. Entonces ahora voy a poner el arma a la derecha porque a la izquierda voy a estar agregando algo llamado deslizador. Antes de eso, voy a crear aquí un objeto de juego, que representará la salud. Sólo llamémoslo salud. Ahí vamos. Y bajo la salud voy a hacer clic derecho ir a tu y crear algo llamado el deslizador. Entonces vamos a añadir el deslizador. Entonces como puedes ver, hemos creado un pequeño deslizador. Y el deslizador hace un par de cosas. Se mueve de izquierda a derecha. Tiene antecedentes. Si lo abro, tiene un fondo, tiene un área de relleno y tiene el deslizador de mango. Si hago clic en el deslizador justo aquí, se puede ver que hay un componente de juego o componentes en el deslizador. Y se puede ver que hay un par de cosas. El color normal, el color resaltado, todo eso bueno. Pero la cosa en la que más queremos enfocarnos, el valor mínimo, el valor máximo, y el valor justo aquí. puede ver que mientras lo incremento en movimientos de izquierda a derecha, y esto es lo que vamos a usar para representar la ayuda que tenemos. Pero obviamente, que el deslizador se mueva izquierda a derecha es bastante feo. Por lo que nunca quieres tener tu salud representada de esa manera. Por lo que queremos tener algún tipo de barra para representar la salud igual que tenemos en las ganancias de aspecto profesional. Entonces lo voy a hacer en primer lugar es eliminar el deslizador de mango. Entonces ahora ya no tenemos este poco o nada lo que se llama el, algún tipo de, de todos modos, este círculo que se movía y ahora sólo vemos el bar. Lo siguiente que quiero hacer es que quiero acceder al fondo. Y los antecedentes. Voy a dar click aquí. ¿ Sabes qué? Antes de hacer eso, sigamos adelante y sumamos estos sprites, los elementos de la interfaz de usuario que vamos a usar. Entonces en los sprites, eso es abrir esta carpeta y veamos qué tenemos aquí dentro. Haremos clic derecho en crear una nueva carpeta para los elementos de la interfaz de usuario. Haga doble clic aquí, y entremos a los recursos. Como puedes ver, te he proporcionado un par de barras y puedes usar el color que quieras. También tienes los botones justo aquí que estaremos usando más adelante y la fuente. Entonces voy a elegir la fuente, el deslizador rojo y el fondo del deslizador. Y los voy a arrastrar al elemento UI. Está bien, genial. Ahora vamos al deslizador. Llamémoslo el deslizador de salud. Y si hacemos click en el fondo, se puede ver que podemos cambiar la imagen fuente. Entonces la imagen fuente que quiero tener este slider. Entonces cuando lo agrego aquí, ahí tienes. Se puede ver el deslizador ahora mismo si lo configuro a tamaño nativo, es un poco enorme. A lo mejor lo haremos un poco más pequeño. Pero el punto es que ahora tenemos este deslizador de fondo. Y quiero asegurarme de que cuando haga clic aquí y mantenga presionada Alt, que llene toda la imagen del deslizador, no solo sobre sí misma. Por lo que tenemos el elemento slider de salud. Si hacemos clic en las herramientas de rack, se pueden ver los bordes de la misma. Y antes de que tuviéramos eso, se puede ver que los bordes son los bordes. Ahí vamos. Estos cuatro puntos, estos eran los bordes del deslizador de salud, pero el fondo era mucho más grande. Por lo que cuando hacemos clic, mantenga presionada Alt y haga clic en el estiramiento, llenamos todo el deslizador. A continuación tenemos el área de Relleno. Ahora actualmente cuando queremos llenar la zona, verás que es una línea blanca muy fea. Entonces lo que haremos es acceder al relleno. Y se puede ver también podemos cambiar este brillante y voy a usar el deslizador rojo. Entonces ahora podemos pinchar aquí y verás que es mucho más bonito, ¿verdad? No tan rápido porque también queremos asegurarnos de que el área de relleno cuando hacemos clic aquí, mantenga presionada Alt, haga que se estire todo el camino alrededor del área de campo. Y entonces el área de relleno también debe estirar y a todo el fondo. Pero porque estamos trabajando en segundo plano. Y queremos ver el fondo. O sea, vamos a hacerlo más pequeño y así encaja exactamente en este fondo. Eso se ve bastante bien. Entonces lo voy a mover sólo un poquito arriba. Y está bien, así que ahí vamos. Podemos ver que podemos seleccionar el deslizador de salud y podemos empezar desde 0 y aumentarlo hasta que se convierta en uno. Ahora bien, ¿cómo vamos a estar cambiando la salud en base a nuestra propia salud? Ese será un video para más adelante. Pero por ahora, como pueden ver, hemos creado todo lo que necesitamos para el deslizador de salud. Voy a alejarme un poco. Y tal vez en realidad voy a hacer el slider un poco más grande. Entonces aumentemos el tamaño. Y como puedes ver, porque todo está anclado a esos puntos, crecen juntos sin problemas. Hagámoslo un poco más grueso. Obviamente esto necesitará un poco de cambio. Y voy a mover el elemento de salud hacia abajo, luego alejar el zoom, ver cómo se ve eso. Entonces ahí vamos, por aquí creo que es bueno. O tal vez subirlo un poco o no, vamos a mantenerlo aquí abajo. Para, aquí abajo es bueno. Vamos a acercar. A lo mejor que sea un poco más largo. Y por cierto, todas, todas las cosas que estoy haciendo dependen de mí. Entonces si quieres crear algo diferente, por favor sé mi invitado. Te recomiendo que intentes crear tu propio tipo de deslizador. Vamos a llenarlo sólo para que podamos tener las dimensiones correctas. Y ahí vamos, la izquierda, en, arriba y a la izquierda. De acuerdo, entonces ahí vamos. Esta es nuestra salud y se ve realmente bonito, creo Así que si maximizo en juego y juego el juego, veamos cómo se ve eso. De acuerdo, entonces ahí vamos. Tenemos la salud, tenemos el rifle. Hay una cosa más que falta y es que queremos representar también a la salud usando texto. En primer lugar, esto es lo que nuestro juego de zombies, y creo que se ve realmente bonito. En segundo lugar, será una buena manera de saber cuánto estamos cambiando en realidad y aprender un par de cosas más. Entonces sigamos adelante y agreguemos un texto aquí. Pero esta vez porque vamos a añadir nuestra propia fuente, vamos a añadir no sólo un texto, sino que vamos a añadir un texto Mesh Pro. Entonces si hago clic aquí, puedes ver que necesitarás importar un par de elementos esenciales. Basta con dar click en el primero y esperar a que se importe. Si esto lleva demasiado tiempo, voy a reaparecer mágicamente. De acuerdo, hizo eso. Ahí vamos. Por lo que ahora tenemos algo llamado el texto Mesh Pro. Y voy a llamar a esto el texto de salud. Hit Enter. Y vamos a moverlo un poco a la izquierda. Entonces aquí, hagámoslo audaz. Y se puede ver que actualmente la fuente utilizada en él es el sentido de liberación o algo así. Pero queremos usar la fuente que te he proporcionado en los recursos, la descargué de la font.com. Oh Dios mío, eso de todas formas, ¿cómo vamos a convertir esto en una fuente? Bueno, si vamos a algún lugar aquí en el texto de windows Mesh Pro, se puede ver que tenemos la opción para el activo de fuente Creator. Al hacer clic aquí, te pedirá el archivo fuente fuente. Arrástrelo aquí. Y sólo te dirá que crees aficionado Atlas. Guardar. Y te preguntará ¿dónde quieres guardarlo? Lo guardaremos dentro de las fuentes aquí mismo. O en el elemento UI. Guarda eso. Genial. Entonces ahora si entramos en elementos de interfaz de usuario, se puede ver que tenemos el spot aquí mismo. Tiene un montón de propiedades en las que ni siquiera voy a intentar meterme . Por lo que los textos de salud sólo arrastran la fuente a su posición. Y ahí tienes, Podemos ver que ahora mismo tenemos una fuente diferente. Ahora, recomiendo porque como he dicho varias veces, soy muy malo dibujando cosas. Y tengo un muy mal gusto cuando se trata de colores y con ello se trata de texto y todo lo que está relacionado con hacer que algo se vea bonito. Entonces, te recomiendo que tal vez intentes encontrar un texto mejor que este. Pero por ahora, intentemos crear el tipo de sistema de salud y tal vez hacerlo de tamaño automático. Tamaño automático significa que crecerá y encogerá con el tamaño de este. Sí, ahí vamos. Entonces voy a hacerlo más grande, hacerlo audaz. Y lo genial de tener text Mesh pro es que podemos cambiar muchas cosas para que podamos agregar iluminación, podemos agregar underlay, podemos agregar algún tipo de resplandor y puedes jugar con estos. También podemos agregar un esquema. Entonces si añado un poco de grosor, notarás que tenemos el contorno, podemos cambiar el offset, el azulejo, la velocidad, mucho, un montón de cosas increíbles. Y voy a hacer un contorno blanco sólo para que podamos ver todo con más claridad. A lo mejor. Ahí vamos, ciento cien. Esta es la ayuda. Podemos cambiar muchas cosas que el color y así sucesivamente y así sucesivamente. Y mientras estemos aquí, voy a seguir adelante y te emitiré un reto. Por lo que tu reto es configurar tu propia interfaz de usuario. Así que haz un poco de investigación y encuentra tus propios elementos de interfaz de usuario para usar para tu juego. Usa esos elementos para configurar tu lienzo de interfaz de usuario para el jugador y piensa otras cosas que te gustaría mostrar en la pantalla. Entonces, por ejemplo, quizá quieras tener nuestros ops. Tendrás, quizá quieras tener temporizadores de cuenta regresiva para la escopeta. Es posible que quieras sólo la escopeta para el arma, la puntería o lo que sea. No sé qué más podrías querer. Lo que quieras, piénsalo, trató de agregarlo. Tú, aunque no sepas crear lo que le gustaría simplemente ponerlo ahí y luego escribirlo. A lo mejor te encuentres a través de las anotaciones a medida que avanzamos. O tal vez por ti mismo, encontrarías una solución para ello. Y hay un reto extra. Te recomendaré que sigas adelante y conviertas el nombre de las armas que mostramos bajo la escopeta. Pero sí tengo que advertirles que tomará un poco de ajustes antes de que puedan realmente cambiar el nombre de las armas. Entonces eso es pausar el video ahora mismo y ir al reto. De acuerdo, bienvenido de nuevo. Entonces este video ya es un poco demasiado largo, así que no voy a seguir adelante y cambiar el nombre por ello ahora. Posteriormente, obviamente lo vamos a cambiar. Voy a seguir adelante y aplicar todos los cambios que hemos hecho en el lienzo de la interfaz de usuario. Y ahora cuando corremos el juego, y ahora podemos ver que podemos cambiar a la pistola, correr por ahí. Tenemos la salud, tenemos la pistola y alguien se queda atascado en alguna parte. Ah, así que morimos en el, la luz exactamente en este punto raro aquí mismo en el enemigo. Por lo que hay un problema. Obviamente, nos encargaremos de eso más adelante. Por lo que espero que lo disfruten. Espero que estés cometiendo tus cambios. Y los veré en el siguiente video, donde estaremos accediendo realmente a los sprites de la UI y actualizándolos. Entonces nos vemos. Oye Michael aquí desde el futuro, ¿pensaste que habías terminado conmigo? No. No lo estabas. Entonces hay algo aquí dentro cuando vine a ir a cometer mis cambios, y esa es la malla de las pilas de ácido. Y si entro aquí, ¿Dónde puedo encontrar eso en los activos, se puede ver que hemos creado este archivo de malla de texto y esta malla de texto. Veamos las propiedades en él. ¿ Puedo ver la talla? No, no puedo ver el tamaño, así que creo que realmente no necesitamos tenerlo guardado en nuestros commits. Entonces lo que podemos hacer sólo para ahorrar un poco de espacio, voy a hacer clic aquí. Y vamos a ignorar todo por debajo del activo texto Mesh PRO. De acuerdo, ahí vamos. No necesitamos eso. Etapa todo y llámalo agregaron elementos de interfaz de usuario a Canvas para representar la salud y creé mi propia tienda. Entonces cometeré estos cambios y te veré en el siguiente. Te prometo que ya me he ido. 57. Actualizar UI con guiones: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, no sólo tenemos este bar sentado aquí luciendo bonito, cuando nos golpeen, verás que nuestra salud baja. Entonces ahora cuando nos golpean en otra ocasión, Ahí vamos, se puede ver que morimos. Obviamente existe este pequeño problema del que hablaremos no abordado en este momento, pero hablaremos de ello más adelante. Entonces sin más ni hacer un no perdamos más tiempo y empecemos. De acuerdo, entonces ahora tenemos un slider, tenemos el texto. Todos estos representan la salud del jugador, pero aún así, cuando cobramos daños, la salud no baja. Entonces lo que vamos a hacer es que vamos a estar cambiando este comportamiento basado en usar el Administrador de UI. Entonces vamos a entrar en el Administrador de UI y vamos a obtener una referencia tanto al deslizador de salud al texto de salud. Ahora éstos serán públicos. ¿ Y por qué son públicos? Bueno, porque los estaremos manejando en un guión diferente, que es la salud del jugador manejada. Entonces voy a crear un Slider público, y va a ser el Slider de salud. Y recuerda, no podríamos haber usado este slider si no tuviéramos el motor Unity OW.ly. Entonces como pueden ver, comenté esto y se puede ver que el deslizador ahora no existe. Entonces eso es continuar uno, ¿tenemos ahora una referencia al deslizador de salud? A continuación, necesitamos una referencia al texto de la salud enojada. Y estos son muy básicos. Ahora vamos a guardar esto y recordar que tenemos una instancia, una instancia estática en el despierto. Entonces voy a entrar en el manejador de jugadores, manejador salud aquí mismo y luego empezar. Tan pronto como dije, la salud actual, voy a acceder a la instancia de punto de UI Manager, dot health slider dot el valor máximo. Y lo voy a poner como la salud máxima. Y luego voy a hacer lo mismo con la UI. Dónde está UI Manager, la instancia, control deslizador de salud, y el valor actual, que está representado por valor, será el estado actual. Ahí vamos. Entonces ahora cuando corra el juego, si entro en el jugador de la fatalidad y voy a fijar su máxima salud para, digamos, Oh, vale, vamos a abrir la corriente porque ya nos estamos poniendo aquí. Simplemente voy a comentar esto por la razón de tener en realidad diferentes valores máximos y valores actuales. Entonces voy a poner esto, digamos en 20. Entonces cuando corra el juego, deberíamos ver que este Bot de Salud se moverá. Y no lo hizo. Porque obviamente, podemos ver aquí mismo la referencia de objeto no establecida y sabré cuál es el problema si hago doble clic aquí, no hemos dicho el deslizador de salud en el lienzo de UI. Por lo que de vuelta en el lienzo de la interfaz de usuario, obviamente necesitamos establecer esto aquí mismo. Entonces la salud y el deslizador, voy a arrastrar el deslizador y la salud flexionada. Ahí vamos. No, no el texto. Oh, bien, Entonces esto es algo de lo que tenemos que hablar. Entonces los hechos de salud aquí no es cualquier texto, es un texto Mesh Pro, por lo que no podemos estar usando, ¿dónde está? ¿ Dónde está el Administrador de UI? Ahí vamos. Entonces voy a moverlo para que no podamos simplemente usar el texto. Necesitamos tener un texto Mesh Pro, pero puedes ver que no tenemos la malla de texto. ¿ Por qué? Porque antes de poder usar el texto Mesh Pro, necesitamos tener el espacio de nombres apropiado. Entonces usando, Vamos a ver, creo que es el motor Unity dot txt mesh. Entonces usando el TMP, ahí vamos, malla hexagonal Pro. Y ahora aquí dentro podemos usar el texto, malla de texto por fila. Y ahí vamos. Eso lo guardamos. Ahora de vuelta en nuestro juego. Y la unidad, quiero decir, podemos seguir adelante y arrastrar la salud. Es decir, en el lienzo de la interfaz de usuario podemos arrastrar la salud hacia abajo. ¿ Cuál es el problema? Creo que en lugar de texto Mesh Pro, esto también debería ser texto Mesh pro GUI. Probemos esto otra vez. Guarda eso ahora de nuevo en nuestro juego. Y hoy, ahora, dejaré eso. Ahora, ahí vamos. Por último, podemos sumar, por lo que guardamos eso. Corremos el juego y deberíamos ver que la salud, sí, Ahí vamos. Por lo que hemos fijado la salud actual en 20, V-max Health en 100. Por lo que se puede ver que es alrededor de la quinta parte del camino. Entonces sabemos que esto está funcionando. El siguiente paso es que esto se actualice cada vez que damos un hit o realmente iniciamos el juego. Entonces voy a hacerlo, y tu reto es actualizar la interfaz de usuario de salud. Entonces, antes que nada, crea un método que actualice la interfaz de usuario de salud. Por lo que estamos hablando del libro, tanto del slider como del Next, entonces necesitarás usarlo en los lugares apropiados. Entonces necesitarás pensar en dónde puedo usar la actualización de la interfaz de usuario? Asegúrate de tener acceso también al texto y al, y actualízalo. Y por último, te daré un indicio de dónde puedes estar usando esta interfaz de usuario de actualización. Se puede utilizar en el arranque y cuando el jugador sea golpeado. Entonces con eso fuera del camino, pausa el video ahora mismo y ve a la Sharon. Oh, bien, bienvenido de nuevo. Entonces voy a entrar en el manejador de salud del jugador. Y aquí dentro voy a crear un vacío privado, actualizar la salud de la capa. Y aquí lo que vamos a hacer es antes que nada, vamos a acceder al UI Manager punto instancia texto de punto Salud, texto de punto. Y vamos a ponerlo a la salud actual. Entonces lo vamos a concatenar. Entonces sé que aún no lo has hecho, pero de esta manera estamos concatenando. Entonces, en primer lugar, tomamos la salud actual, agregamos este guión aquí mismo o no esa barra hacia adelante, se llama, creo. Y vamos a fijar el máximo de salud y aquí también. Entonces vamos a ahorrar eso. Pero no sólo esto, también vamos a cambiar el valor del slider. Entonces aquí también voy a acceder al valor de punto de instancia de punto punto de la interfaz de usuario Administrador de puntos de la salud. Y va a ser igual a la corriente. Ups, perdón por eso. El actual. Entonces la salud actual, sí, eso fue todo. Guarda eso. Entonces ahora la pregunta es, ¿ dónde usamos realmente esto? Por lo que hay dos lugares. En primer lugar, podemos usarlo en el arranque y luego tipo de ya lo usamos y el inicio porque dijimos la salud actual, pero vamos a quitar esta línea y vamos a simplemente llamar a la salud del jugador de actualización. Y luego cada vez que llevamos daños aquí, después de quitar la cantidad de daño, vamos a fijar esto, pero creo que es mucho mejor venderlo después de revisar la salud de 0, tal vez no. lo único aquí que me preocupa es que la Salud sea negativa y ver que el bar va por el otro lado. Eso es lo único que me molesta de esto. Entonces voy a seguir adelante y tal vez ponerlo aquí. Entonces después de comprobar si somos menos de 0, esto también puede no verse muy bonito. Cuando morimos, todavía tenemos un poco de salud. A ver, ¿Sabes qué? Pongámoslo aquí. No se preocupe por eso. Posteriormente haremos este pequeño retoque que cambia donde apagamos también la barra siempre que desactivemos el jugador. Entonces con eso hecho, guarda todo eso de nuevo en nuestro juego. Y voy a dejar entrar c aquí. Quitemos este comentario, guardemos eso porque en realidad ahora tenemos una salud adecuada. Voy a entrar al jugador de cúpula y vamos a ver. Quitemos la salud actual. Esto es solo para hacer un seguimiento, nos aseguraremos de que sea privado más adelante. ¿ Y qué quería hacer? Porque el arma que nos está lanzando el enemigo nos hace y 50 puntos de daño, creo. Entonces hagámoslo 300. Por lo que la salud máxima del jugador es de 300. Yo dirijo el juego. Y deberíamos ver que la salud máxima, se puede ver que tenemos 300 de 300. Entonces voy a acercarme al enemigo. Dice, Ahí vamos. Se puede ver que la salud va bajando lentamente. Y finalmente el último, morimos. Pero notarás que aparece un pequeño error y se nos viene mucho. Entonces voy a parar el juego. Voy a así ahora tenemos que consultar cuando los que no queremos que cierren uno de ellos y se puede ver que hay un problema. ¿ Y cuál es el problema? En primer lugar, tenemos el controlador de bala enemigo no puede encontrar al jugador. En segundo lugar, tenemos, creo. De acuerdo, entonces no, no es el problema aquí dentro. Bueno, el problema en realidad es que seguimos tratando de conseguir una referencia del jugador a pesar de que está muerto. Entonces estamos tratando de cambiar la diapositiva de salud. Pero de todos modos, estos son pequeños retoques que obviamente vamos a cuidar más adelante. Pero por ahora espero que lo disfruten. Espero que ahora entiendas y sientas lo agradable que es nuestro juego. Por lo que todo se hace dinámicamente. Todo cambia automáticamente usando el código y nuestro juego realmente está tomando forma. Entonces espero que lo disfruten y los veré en el siguiente video. No olvides por supuesto, comprometer tus cambios. 58. Crear una pantalla de muerte: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Y este video, como puedes ver, el lienzo de UI tiene un elemento extra, que es la pantalla de muerte. Entonces ahora cuando ejecutamos el juego, podemos ver que tenemos salud. Entonces nos disparan una vez, nos dispararon dos veces, y ahí tienes. Se puede ver que morirás igual que en Dark Souls. Y tenemos este efecto apareciendo. ¿ Qué tan guay es eso? Y no sólo eso, te darás cuenta de que ya no tenemos tipos instanciados por el enemigo después de que el jugador muere, lo cual es un mecánico realmente agradable que hemos añadido en el último segundo porque sólo recuerdo eso. Entonces, no perdamos más tiempo y lleguemos a crear la pantalla. Oh, bien, entonces es hora de hacer que la muerte de nuestro jugador sea un poco más emocionante. Y he cambiado los píxeles por unidad a 15 de los mosaicos. Entonces ahora no tenemos estas molestas líneas azules. Entonces voy a seguir adelante en el lienzo de UI y voy a crear una nueva imagen. Y esta imagen va a ser la pantalla de muerte. Ahí vamos. Y solo hagamos que la escena sea un poco más grande y la vamos a meter en toda la pantalla. Y al igual que siempre lo hacemos, vamos a seguir adelante y hacerlo completamente negro. Y entonces lo que voy a hacer es que quiero conseguir estos para que aún no hayamos usado estos trinos de bloques. Entonces solo voy a conseguir el 123 y el último, seleccionarlos todos. Y lo voy a arrastrar a cuatro. Nosotros hacemos eso, eso está en los sprites. Crea una carpeta para la pantalla de muerte de sangre. Qué bonito curso, un proyecto muy encantador todo sobre sordos de sangre y demás. Entonces veamos cómo se ve eso. Y ahora antes de hacer eso, en realidad creo que necesitamos crear una, algún tipo de imagen aquí. Entonces ahí vamos, la imagen y voy a cambiar esto aquí mismo, y voy a ponerlo al tamaño nativo. Entonces es algo grande. Yo sólo voy a hacer esta configuración única donó tamaño y tal vez sólo aumentar el tamaño de la misma. Entonces ahí vamos por ahí. Voy a mantener preservar la relación de aspecto. Por lo que ahora podemos hacerlo un poco más grande. Entonces ahí vamos. Por lo que esto chapoteará sobre nuestra pantalla. Voy a crear una animación aquí. Entonces voy a ir a las animaciones, crear y activos, animaciones, pantalla de muerte, la pantalla, sangre. Y veamos, chapoteo, mucho en pantalla. Guarda eso. Y voy a sumar todas estas imágenes aquí. Y veamos cómo se ve eso. Hagámoslo primero, Hagámoslo alrededor de 1 segundo. A ver cómo se ve eso. Está bien, eso me parece bastante bueno. Guarda eso. Llamemos a esto la sangre. Y cambiemos todas las imágenes y hagamos que no se apliquen filtros de puntos. Por lo que las imágenes deben ser más nítidas ahora mismo. Y veamos eso de nuevo. No demasiado afilado. Yo tendría más bien hacerlo un poco más afilar que tal vez podamos cambiar el de 50 aplicar. Ahora no deberían hacerse mucho más grandes. El extruido con ancho. De acuerdo, entonces veamos cuál es el problema aquí dentro. Despejado eso, vale, así que ahora tenemos la sangre salpicando por todas partes en cuanto empecemos. Y lo que voy a hacer es que voy a añadir también un lienzo y aquí. Entonces, ¿cuál es el grupo del campus que se llamaba grupos de Canvas o ahora podemos ajustar el Alpha y podemos bloquear el recast. Esa no es mala idea. No lo haremos interactable. Y ahora también quiero seguir adelante y tal vez mover un poco la sangre hacia abajo, tal vez girarla un poco. Entonces ahora ahí vamos. Esta es la sangre que aparecerá. Y honestamente siento que esto realmente no se ve bien porque es un poco granulado porque lo hicimos más grande. Creo que podríamos quitarlo más adelante, pero por ahora solo agreguemos un problema de malla de texto aquí. Text Mesh sonda y mueres o capital. Y que sea audaz. A ver cómo se ve eso. Hagámoslo un poco más grande y tamaño automático. Y pongámoslo en el medio. Y podemos ver que el tamaño máximo aquí, podemos hacerlo aún más grande. Entonces ahí vamos, Tú moriste. Escojamos una fuente diferente, que es la del robot. Cambiemos el color de la misma para hacerlo rojo. Vamos a subirlo. A ver cómo se ve eso. No se ve demasiado bien por el contorno que tenemos. Entonces vamos a cambiar el contorno para ser tal vez también leído o tal vez simplemente quitar el contorno por completo. Por lo que ahí vamos sin ningún esquema. Está bien, eso se ve bien. Entonces moriste. De acuerdo, entonces si alguna vez has jugado Dark Souls, ya conoces la referencia y la, Sigamos adelante. Entonces creo que esto es lo suficientemente grande. Entonces ahora cuando el Señor se pone, ahí vamos. Podemos ver que conseguimos la sangre y conseguimos el que murió en la pantalla. Entonces esto nos dice que el jugador acaba de bucear. De todos modos, sigamos ahora necesitamos realmente encender y apagar esto. Entonces lo que vamos a hacer es que siempre vamos a mantener la pantalla de muerte apagada. Entonces mientras el jugador esté vivo que esa pantalla esté apagada y cuando muera, entonces encendemos la pantalla. Así que vamos a entrar en el Administrador de UI. Y obviamente vamos a estar cambiando el alfa aquí también. No queremos que solo aparezca. Vamos a hacerlo lento aparecerá. Y para eso, también vamos a crear aquí una animación y cribir sangre. Llamemos a esto la pantalla. Aparecer. Guarda eso. Y cambiemos esto para tomar alrededor de 0.3 segundos y ponerlo a uno. Entonces esto es una especie de la, hay que encenderlo. Y entonces esto es una especie de lo que sucede. Entonces encendemos la pantalla, ya empieza a jugar. Y ahí vamos. Y sólo voy a mover la animación de sangre a cuando la pantalla de muerte esté completamente oscura. Entonces iniciamos la animación, no hay nada y luego el bloque debería aparecer más adelante. Y en realidad podemos seguir adelante y seleccionar esto aquí y solo tener un sprite vacío. Por lo que empezamos vacíos. Vamos a ver cómo se ve eso. Y voy a encender esto por completo. Entonces ahí vamos. No. La sangre corre esto. Ahí vamos. Y luego conseguimos que aparezca la sangre. De acuerdo, Excelente. Creo que esto va a quedar realmente bonito. Así que guarda todo eso de nuevo en la pantalla del escritorio, ponlo en 0, apaga la pantalla, guarda todo eso. Y ahora vamos a entrar en nuestros guiones. Y en el UI Manager, voy a seguir adelante y conseguir una referencia a esta, esa pantalla. Tan campo serializado, es un objeto de juego y va a ser la pantalla de muerte. Y ahora vamos a seguir adelante y crear un método que nos permita encenderlo. Entonces va a ser un reto. Y tu reto es activar la pantalla de profundidad. Bueno, cuando moramos. Por lo que necesitarás crear un método que establezca la pantalla de muerte en activa. Y luego necesitarás llamar a los métodos, método cuando el jugador muere. Entonces para crear ese método y hacer gerente y luego llamarlo desde la salud del jugador manejado con eso dicho, pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces aquí en el Administrador de UI, voy a crear un vacío público. Enciende la pantalla de muerte. Y todo lo que hará es solo conseguir la pantalla de muerte y ponerlo activo en verdadero. Y eso es todo. Y luego regresaremos y haremos el manejador de jugadores y terminaremos aquí después de apagar el objeto de juego del jugador, vamos a acceder al Gestor de UI. O antes de hacer eso aquí, la instancia de administrador de la interfaz de usuario, sorda, enciende la pantalla de muerte. Y ahí vamos. Entonces ahora vamos a empezar nuestro juego. Vayamos al juego, hagamos esto más grande. Vamos al jugador DOM pondrá su salud en 100. Ejecuta el juego. Entonces ahora cuando nos golpean una vez, ahí vamos, no pasó nada, obviamente porque cada vez que tengo que olvidar, ya sabes, a dónde va esto. Nos olvidamos de añadir una referencia. Excelente. Ahora ahorramos, ahora corremos. Ahora deberíamos tener todo funcionando. Ahí vamos. Nos disparan una, dos veces, moriste. Y obviamente también olvidamos lo que siempre olvidamos. Entonces animaciones, ¿dónde está? La sangre? La sangre o la muerte? El deceso. De acuerdo, quita la animación. Elimina la animación. Guarda eso del juego por tercera vez, por favor. No más errores. Y ahora nos disparan una, dos veces, morimos. Agradable. ¿Qué tan guay es eso? Pero obviamente está el único problema que aún prevalece y que es el platillo volador. Entonces lo que vamos a hacer es vamos a asegurarnos de que el enemigo sólo pueda ordenar o debe cualquier proyectil que tenga. Sólo cuando somos visibles o cuando estamos en el juego. Entonces voy a entrar al controlador NMI y aquí, y voy a desplazarme hacia abajo y encontrar dónde estamos instanciando la bala o el proyectil. Entonces ahí vamos aquí. Y el fuego enemigo y el Colton aquí estamos instanciando esto. Entonces lo que voy a hacer es que voy a crear una condición aquí dentro que comprueba si el jugador a perseguir punto es objeto de juego de puntos fuera. Por lo que este es el rango de persecución de jugador. Entonces el jugador a perseguir punto está bien. Por lo que el punto del objeto del juego es, el punto está activo o activo y la jerarquía. Entonces vamos a disparar. Si no, entonces no lo estamos. Por lo que este activo y jerarquía define si el objeto del juego está activo en la escena. Entonces lo que estamos haciendo es apagar al jugador cuando morimos. Eso significa que ya no está activo. Y la jerarquía, eso significa que ya no instanciamos el proyectil del enemigo y no debemos obtener ningún error. Entonces probemos esto una vez más. Ejecuta el juego. Y vamos a ver, nos ponemos afilados una vez, dos veces. Está bien, moriste. Ahí vamos. Podemos ver que ya no tenemos ningún error y los enemigos no instancian nada. Y si me acerco a dónde está? El perdición, aquí mismo, vale, Así que no podemos ver nada, pero se puede ver que ya no estamos instanciando nada. Repasemos esto de nuevo porque creí que vi algo justo aquí cuando nos dispararon. Ah, está bien. Está bien. No, todo está bien. Entonces ahí vamos. Tenemos nuestra pantalla de muerte. Ya no tenemos los proyectiles e instanciando cada vez que muera nuestro jugador, asegurémonos de aplicar los cambios. Nos aseguramos de que cometemos nuestros cambios, y nos aseguramos de dejar una reseña para Michael porque le ayuda mucho. En el siguiente video, estamos por supuesto, si estás disfrutando el video, obviamente, de todos modos, en el siguiente video, vamos a crear el mecánico de hacer que el jugador un poco invencible siempre que se ponga por sólo un tiempo temporal. Entonces dicho eso, espero que disfruten y nos vemos en el próximo. 59. Añadir insurgencia temporal: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, nos vamos a convertir en invencibles. Entonces ahora cuando nos disparan una vez, la segunda vez, somos invencibles y te das cuenta de que hicimos un poco de flash, lo cual es muy cool. Ahora también nos vamos a convertir en invencibles cuando hagamos el torpedo. Para que nadie nos haga daño mientras estamos haciendo nuestro torpedo. Obviamente no llegamos ahí, pero no nos preocupemos por eso. Primero que nada tenemos que ir y crear nuestra mecánica de invencibilidad. Entonces, empecemos. O K. Así que ahora cada vez que nos disparan, si estamos, por ejemplo, atrapados entre los tres esqueletos aquí mismo, podría ser un poco injusto para el jugador que juega nuestro juego que simplemente muere inmediato y ni siquiera se da cuenta de lo que pasó. Y otra cosa, una cosa realmente bonita que me gustaría agregar como mecánico de juegos a nuestro juego es que cada vez que estamos corriendo, tenemos a nuestro jugador apenas un poco invencible para un par de segundos, tal vez incluso milisegundos. Entonces para eso, vamos a implementar este mecánico de que nuestro jugador sea invencible por al menos un par de segundos. Entonces Vamos a entrar en nuestro manejador de salud de jugadores. Y aquí dentro voy a crear dos variables. El primero va a ser un campo serializado y va a ser un flotador, y va a ser el tiempo de sensibilidad. Entonces, ¿cuánto tiempo permanece invencible el jugador? Se va a sumar como estándar de 1 segundo. Y luego voy a crear un bool privado y llamarlo el es invencible. Entonces cuando el jugador es invencible, hay un par de cosas que van a pasar y un par de cosas que no sucederán. Y una de las cosas que no sucederá es que el jugador no recibirá daños. Entonces aquí, vamos a revisar antes de empezar a dañar al jugador. Si el jugador es invencible, entonces vamos a saber realmente lo que quise hacer es arco. Entonces aquí, déjame quitarle éste. Y, y una invitación a esos. Lo que quise decir si el jugador no es invencible, así que no es invisible significa que vamos añadir un signo de exclamación detrás de esto, y esto cambiará todo el asunto. Entonces si no es invencible, es invencible es cierto, que significa que toda la condición es falsa por el signo de exclamación, esto significa que no accedemos a esto. Esto significa siempre que somos invencibles, es invencible es cierto. No salimos lastimados. Tan excelente. Sigamos adelante. Lo siguiente que queremos hacer es asegurarnos de que luego dejemos de ser invencibles después de cierto tiempo. Entonces para eso vamos a tener que crear un recubrimiento. Entonces te lo voy a emitir como un reto. Así que da vuelta al jugador usando un recubrimiento. Tendrás que crear una cosa central que dé vuelta al jugador de su invencibilidad, debe usar la variable de tiempo de invencibilidad y necesitas llamar al recubrimiento en el lugar apropiado. Entonces con esa información del video ahora mismo, e ir al reto. De acuerdo, bienvenido de nuevo. ¿ Cómo te llevaste con eso? Ya sabes, lo que me encanta de los retos es que te hace rendir cuentas. Entonces si a estas alturas aún no sabías cómo funciona un tribunal en después de todos los retos, tendrás que aprender en algún momento porque seguiré pidiéndote que hagas algo hasta que esté arraigado en ti. Entonces tomémoslo un poco fácil y sigamos adelante y creemos un enumerador de ojos aquí. Entonces creo que ahora es bastante fácil. Por lo que es jugador es invencible. O volver a lo que deberíamos llamar a esta capa? Sólo llamémoslo es en invencible. Ellos, no son invencibles. De acuerdo, llamémoslo así. Y aquí vamos a ceder retorno nuevo peso para segundo. Es decir, para este punto, debería ser como simplemente estornudar o respirar. Por lo que rendimos retorno nueva espera cuatro segundos, el tiempo de invencibilidad. Y después de esa invencibilidad el tiempo es invencible volverá a ser falso. Y también quiero asegurarme de que en cuanto empecemos el es invencible se ponga en falso. Para que no seamos invencibles en cuanto empecemos con eso hecho, creo que eso es todo lo que tenemos que hacer. Entonces voy a guardar esto. Voy a volver a nuestro juego. Y vamos a ejecutar el juego. Y veamos qué pasa. Entonces cuando yo, vale, así que primero, necesitamos agregar tal vez un par de segundos más. Entonces tiempo de condenación y sensibilidad, hagámoslo dos, y volvamos a ejecutarlo. Entonces este será el momento. Entonces nos golpean una vez. Ahí vamos. Ahora lo conseguimos dos veces, aún morimos. ¿ Por qué es eso? Veamos cuál es el problema. Hagamos esto público para que podamos ver claramente si realmente estamos cambiando lo que está sucediendo. Todo lo que no hemos empezado el frío aquí dentro. Entonces voy a asegurarme de que lo hagamos. Aquí, ¿Dónde deberíamos llamarlo 0? Entonces también lo que quiero hacer es siempre que sí nos golpeen, también necesitamos cambiar lo es invencible a verdadero. Por lo que hay muchos pasos que me olvidé de hacer. Y después de que lo tengamos, voy a empezar la corutina. Y la corutina será la capa, no invencible. Entonces hay muchas cosas. Entonces déjame decirte lo que olvidé hacer. Y aquí, en cuanto nos golpeen, queremos hacer realidad lo invencible. Y una vez que seamos invencibles, entonces vamos a iniciar la corutina. Y como lo es invencible es cierto, ya no nos dañan. Por lo que esta línea fue crucial. Y ni siquiera sé cómo podría haber olvidado algo tan importante, esta es toda la esencia de hacer invencible a nuestro jugador. Entonces espero que entiendas lo que está pasando. Espero que no estés demasiado enojado por los errores que a veces cometo. Y vamos a seguir adelante y correr el juego. Entonces ahí vamos, nos golpean una vez, lo conseguimos dos. Ahí vas. Se puede ver que la segunda cadera no nos mató. ¿ Por qué? Porque teníamos el tiempo de invencibilidad encendido. Entonces podemos ver justo aquí estaba encendido. Vamos a probar esto otra vez porque siento que tal vez deberíamos haber tomado un golpe más. Entonces allá vamos es invencible y morimos. Sigo sintiendo que algo no está del todo mal y tengo toda la razón. Por lo que 50. Entonces, asegurémonos de que esté funcionando. Pongámoslo a tal vez cinco segundos y veamos si eso dura más. Porque puedo ver aquí que esto no está cambiando 1234, está bien, así que sé que creo que todo está funcionando, pero por alguna razón no estamos viendo este cambio aquí mismo. Pero no se preocupe por eso. Sabemos que está funcionando porque cuando aumentamos el tamaño del tiempo, somos invencibles. Podemos pararnos en la cara de la especie un poco más. Está bien, genial. Ahora, eso está todo bien y dandy. Pero aquí está el problema. No tenemos ni idea de que somos invencibles por cierto tiempo. Entonces lo que vamos a hacer es que vamos a tratar de visualizar esto. Entonces haz eso. Lo que creo que voy a hacer es que voy a acceder al cuerpo aquí mismo. Se puede ver que tenemos los colores y cuando nos golpeen, voy a hacer parpadear al jugador. Entonces le haré parpadear una vez, dos, tres veces, o mantener un parpadeo hasta que se acabe el tiempo que tenemos. Entonces sigamos adelante y hagamos eso. Entonces voy a entrar aquí y voy a conseguir una referencia al sprite del jugador. Campo tan serializado. Y va a ser el renderizador sprite. Y va a ser el jugador sprite. Ahí vamos. Y aquí dentro vamos a crear un numerador. Y va a ser el destello. Y aquí lo que vamos a hacer es que vamos a, primer lugar a determinar cuántos flashes queremos tener. Y luego crearemos un bucle for. Espéralo. ¿ Sabes de qué hablo? Va a tener el int igual a 0, mientras que yo es menos de cuántos flashes queremos? Digamos cinco flashes. Y yo plus, plus. Está bien. Entonces quédate conmigo. Te voy a dejar bien. Voy a primero añadir un poco de espaciado aquí y luego voy a acceder al jugador sprite color dot va a ser igual a un nuevo color. Abre los corchetes o como se les llame. Y luego voy a escribir aquí, vamos a mantener la a la misma. Nos quedaremos con el, déjame solo duplicar esta línea dos veces. Nos quedaremos con la a. Entonces tenemos el ordinal. Empezamos por rojo, rojo, verde y azul. Y por último, tendremos la última que no debe tomar una coma. Se puede ver aquí mismo no tenemos coma y va a ser la, la a. Pero en nuestro caso, en primer lugar, queremos reducir la a. Así que pongámosla a tal vez 0.1. Entonces después de esto, vamos a ceder retorno nuevo. Y vamos a esperar cuatro segundos. Y así de rápido vamos a estar parpadeando. Entonces voy a ponerlo en tu 0.1. Cuando no tenemos un 0 o sólo un punto, eso significa que tenemos 0.1. Es sólo una forma un poco más rápida de hacer las cosas. Y luego vamos a volver y copiar esta línea y ponerla aquí. Y en lugar de 0.1, íbamos a tener el uno. Y permítanme simplemente agregar una pestaña aquí para fines de implementación. Entonces sólo entenderlo todo. Y entonces vamos de nuevo a ceder retorno de peso por 1. Segundo. Guarda eso. Y ahora tenemos que empezar la corutina en alguna parte. Cuando nos golpeen justo después de poner la invencibilidad a verdadera, vamos a iniciar la co-rutina, que va a ser V parpadeante con los paréntesis también, estos se llaman paréntesis, acabo de recordar. A lo mejor van a carpool y paréntesis y formas en que ahorramos eso lo que está pasando aquí dentro. Entonces, en primer lugar, tenemos el bucle. Ya sabemos cómo funciona el bucle. Empezamos a las 0. Lo hacemos cuatro veces, cinco veces en realidad es 4, 0, 1, 2, 3, y 4. Por lo que 5 veces, aumentamos en una cada vez y vamos a recorrer. Entonces, ¿qué estamos haciendo aquí? Estamos cambiando el color. Mantenemos todo lo rojo, verde, y azul igual excepto el alfa. Y aquí dentro estamos haciendo lo mismo. Entonces el primero que estamos reduciendo a alfa a 0.1. Y el segundo estamos haciendo el Alfa 1. ¿ Y qué estamos haciendo aquí? Bueno, ya sabemos cómo rendimiento retorno esperas cuatro segundos funciona. En primer lugar, tenemos el alfa en 0.1. Esperamos 0,1 segundos. Después lo volvemos a uno. Esperamos 0.1 segundos y luego nuevamente iniciamos el bucle y seguimos haciendo esto. Entonces nos vamos, vale, y seguimos haciendo esto y esto va a crear un efecto intermitente, no créanme, eso es todo fuera. Entonces voy a volver aquí. Voy a correr el juego y vamos a ver qué pasa. Entonces me voy a acercar al enemigo. Él me dispara y no pasa nada porque obviamente, cada vez que tenemos que cometer el mismo error que necesitamos agregar el sprite jugador. Después arrastramos el cuerpo, guardamos todo eso. Nosotros vamos a aplicar los cambios y vamos a correr. Y ahora deberíamos ver que nosotros, Ahí vamos. Se puede ver que empezamos a parpadear. Cuando dejamos de parpadear, eso significa que ya no somos invencibles. Ahora lo único aquí, el único truco, cosa complicado aquí es que queremos asegurarnos de que el tiempo de invencibilidad y el rubor coincidan para que no empecemos a parpadear y luego por alguna razón nos dejar de parpadear sin embargo seguimos invencibles o al revés seguimos parpadeando, pero ya no somos invencibles por lo que morimos. No estamos seguros de lo que está pasando. Por lo que habrá un poco de un problema de tiempo que necesitarás retocar y asegurarte de que funcione. Pero con eso dicho, te voy a emitir un reto extra. ¿ Qué tan guay es eso? Estoy 100% seguro de que no lo viste venir porque quiero hacer invencible al jugador cuando hace el torpedo o el guión o como lo llames. Para que esa información, paren el video ahora mismo y hagan que el jugador también invencible cuando haga el torpedo. Oh, bien, bienvenido de nuevo. Entonces, ¿qué vamos a hacer aquí? Obviamente, tenemos el destello aquí mismo, pero queremos asegurarnos de que lo llamamos desde otro método, que es el controlador del jugador. Cuando estamos, ¿Dónde está, Dónde está cambiando de arma? El jugador apestoso. Entonces ahí entramos aquí, queremos asegurarnos de que llamemos a esto cada vez que estemos punteando, ¿cómo vamos a hacer esto? Bueno, es bastante fácil. Tenemos que iniciar una co-rutina. Entonces vamos a mirar atrás aquí. ¿ Tenemos una coroutina? Vamos a seguir adelante y conseguir el componente, la salud del jugador. En tanto que manejador de capas. Ahí vamos. Y aquí dentro vamos a, antes de conseguir el componente, iniciar una corutina. Y creo que porque éste es ¿cuál es el nombre? Y sólo comprueba No, En realidad, lo siento por eso. Dot start coroutine. Y aquí vamos a acceder al flasher. Podemos saber que necesitamos hacerlo público sobre enumerador. Tan flasher, no me está permitiendo. De acuerdo, entonces creo que tenemos que hacerlo así. Entonces inicia coroutine. Y ahí vamos. Guarda eso. Entonces como pueden ver, ni siquiera yo estaba seguro de cómo va a funcionar esto, pero aparentemente necesitamos iniciar la corutina. Accedemos al componente, obtenemos el manejador de salud del jugador y manejador de jugadores de la NBA. Conseguimos el parpadeante. Entonces guarde eso. Vamos a probar esto. De vuelta en nuestro juego. Corremos el juego. Y ahora cuando hacemos el guión, ahí vamos. Se puede ver que estamos parpadeando. ¿ Qué tan genial es eso un dash phi? Deberíamos ver que no entiendo, vale, así que eso no funcionó. No nos preocupemos por eso. Va a ser difícil tal vez tiempo el tiempo que seamos invisibles con el apuesto, con tener a los enemigos tiradores. No te preocupes por eso porque en el próximo video vamos a estar creando algunas trampas de picos. Y esta es una gran manera de poner a prueba nuestra invencibilidad cuando estamos corriendo. Entonces si caminamos por los sprites morirán. Si caminamos por los sprites Mientras apuesto, no moriremos porque seremos invencibles. Entonces eso se dice. También hay una cosa más que a pesar de que estamos parpadeando aquí en el controlador del jugador, no somos invencibles. Y hacer invencible al jugador fue el reto, y acabo de notar que antes de apagar todo. Entonces para evitar la confusión, lo que voy a hacer es volver y el dónde estamos, el manejador de salud del jugador. Voy a crear un método que no sea un vacío público. Hacer capa en sensato lo que no era invisible, bien, hacer su símbolo de inventar. Y aquí dentro voy a encender en primer lugar la invencibilidad. Así es como e invencible será igual a verdadero. Entonces vamos a iniciar la corutina del flash uno. Y por último, también vamos a iniciar el recubrimiento. Por favor, déjame empezar a cortejar de la marca a cómo se llamaba? Jugador no invencible. Jugador no invencible. Entonces ahora tenemos un método que lo hace todo, un método para gobernarlos a todos. Por lo que podemos quitar este de aquí. Podemos quitar el destello y lo verdadero. Y podemos hacer una cosa y eso se llama el jugador hacer invencible, guardar eso, y luego terminar el controlador del jugador. No necesitamos llamar manualmente al flasher. Podemos simplemente decir Get Component, Cape health handler, dot, make, player invencible. Ahí vamos. Entonces vamos a probar esto otra vez. De vuelta en nuestro juego, corre el juego. Deberíamos nosotros. No podemos cerrar ni una sola vez. Nos dispararon dos veces y morimos. ¿ Cuál es el problema? ¿ Lo hicimos sólo 1 segundo? Hagámoslo a través de R3. Tres segundos, corre el juego. Otra vez. Nos disparan una, dos, tres veces. De acuerdo, así que esto está funcionando. Y luego cuando hacemos el guión, ahí vamos. Estamos corriendo. De acuerdo, no lo probamos correctamente. En el siguiente video, nos aseguraremos de eso. Perdón por la duración del video. De nuevo, esto es algo bueno. Creo que aprendimos a iniciar una corutina a partir de un guión diferente. Y también aprendimos a crear un método y compactar todo en un solo lugar. Creo que es bueno, un buen hábito para ellos. Entonces muchas gracias por ver. Espero que estés disfrutando, espero que estés cometiendo tus cambios. Y te veré en el próximo video donde estaremos creando picos. También tuvimos un reto extra que es muy bueno. 60. Añadir picos en el terreno: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Como pueden ver, hemos creado algunos picos aquí. Entonces ahora cuando tenemos estas bicicletas, si me paro sobre ellas, ahí vamos. Yo me daña. Y si me paro y vuelvo, no me daña. Y si me paro y sigo de pie, me daña. Pero ahora porque sigo invencible, me vuelvo a dañar. Si sigo parado aquí, así podría morir, me voy a ir un poco y no perdamos más tiempo. Y empecemos. Ah, está bien, así que vamos a llegar a la creación de picos. Y ya he creado los picos y todo. Ahora bien, esto es algo que no me gusta hacer. No me gusta hacer las cosas fuera de pantalla y luego decírtelo, pero porque quería asegurarme de que este video sea lo más eficiente posible, Es un largo y algunas cosas tendrán que explicarse. Entonces por esa razón, creé todas las animaciones y así sucesivamente. Sólo te daré un recorrido rápido. Entonces lo que hice, elegí una de estas tres trampas aquí mismo. Volví al juego. Seleccioné los sprites, estoy seguro de que son 32 múltiples, aseguré de editar el sprite y rebané 32 por 32, hice el filtro, y así sucesivamente. Entonces seguí adelante y creé esta trampa de espiga, que tiene un renderizador sprite. Un animador llegará a eso y un colisionador de cajas que está justo a su alrededor, que también es un disparador porque queremos que el jugador camine sobre él. ¿ De acuerdo? Ahora creé también una animación para el pico. Uno está inactivo, uno está estallando, así que el ocioso simplemente se queda ahí, no hace nada. Esta será la animación predeterminada. Y luego tenemos los picos estallando, que está aquí. Ya verás creé uno para pop esta privada. Entonces ahí lo tienes. Ya puedes ver, y ¿por qué lo haría un poco lento? Yo sólo quería darle una oportunidad al jugador de pensarlo dos veces antes de volver a pisar ahí. Por lo que no tiene nada que ver con el jugador quiere que el jugador se detenga y empieza a desencadenar. Y luego tiene un par de marcos. Puede mover esto justo aquí. Tiene un par de marcos para darse cuenta su error y luego tratar de huir de él. Con eso fuera del camino, hablemos del animador y de lo que hemos hecho aquí. Entonces creé el ival, lo hice el estado de capa por defecto, y luego creé las dos transiciones, una yendo 21, pasando de. También creé un parámetro aquí que es un booleano para los picos BOP. Y una vez que los picos pop son ciertos, entonces pasamos de los picos ociosos a los Pops. No tenemos ninguna duración de transición, no tenemos tiempo de salida. Pero cuando estamos volviendo de los bopping, sí tenemos un tiempo de salida que es alrededor del 90 por ciento de la animación. Podemos incluso aumentarlo a uno tal vez hasta que terminemos toda la animación y luego regresemos. Yo estoy más bien hazlo 0.57. Pero por alguna razón cuando lo puse para esto, la animación de aquí desaparece. Estoy realmente confundido por qué está pasando esto. No me gusta para nada. Entonces 92 tal vez en 1906. 1907 simplemente hace que todo desaparezca, lo cual es extremadamente molesto. Y no tengo ni idea de por qué está pasando esto. Pero de todos modos, tenemos un tiempo de salida que es el 96 por ciento de la animación. Entonces volvemos atrás. Bueno eso fuera del camino, si haces uno, pausa el video ahora mismo, ve a hacer todo por eso. Crea todas las animaciones y así sucesivamente. Porque voy a seguir adelante y empezar en los scripts creando un, llamemos a esta carpeta las trampas. A lo mejor querrás crear múltiples trampas. Y aquí dentro voy a crear los picos. Así que haz clic con el botón derecho, crea el C-sharp, y hagámoslo los picos golpean Enter, selecciona la trampa de espiga. Y voy a arrastrar estos parques aquí. Ahora voy a hacer doble clic y abrirlo y Visual Studio. Ahora, antes de continuar, permítanme simplemente explicar cuál es la idea principal o cómo va a funcionar este pico. Porque en tan solo un poco voy a emitir el reto y quiero que sepas cómo va a funcionar el pico. Por lo que el jugador anda por ahí, mientras que el jugador, no lo hacen jugador está caminando por ahí. Entonces de repente mientras los picos están escondidos, escondidos, camina sobre los picos y empiezan a salir. Entonces cuando sí lo golpean, lo que queremos es que la animación tenga algún tipo de sistema de eventos y ese sistema de eventos dañará la cuchilla. Por lo que necesitaremos tener la variable cantidad de daño tendrá que conseguir una referencia a esa capa y tenemos que sumar un evento aquí que lo dañará. También queremos asegurarnos de que si el jugador sigue parado en los picos, queremos seguir dañándolo. No solo se dañen una vez y luego salte de pie aquí y no sentir nada. También queremos asegurarnos de que cuando el jugador activa los picos, se vaya. No queremos que siga dañándose porque mientras la animación de los picos está funcionando y el sistema de eventos aún se activará, o verás cómo funciona todo cuando realmente creamos eso. Pero hasta entonces, voy a emitir un reto para dañar la capa profunda con picos. Por lo que en primer lugar, crear una variable por el daño y el jugador que deberíamos dañar necesitará para crear al empresario Enter. Tendrás que iniciar la animación y asegurarte de que se detenga. Entonces asegúrate de que se detenga significa que podemos necesitar y en la salida del azúcar. Después necesitarás dañar al jugador usando el sistema de eventos. Y por último, solo quiero que pienses en lo que debería pasar si el desenfoque se queda en los picos y luego sale. Entonces con eso fuera del camino, pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces de vuelta en nuestro guión aquí dentro, vamos a conseguir, en primer lugar, un campo serializado el cual va a ser de tipo entero y la cantidad de daño. Entonces vamos a crear un vacío privado. Y no hay excusa, ni un vacío privado, un colisionador privado 2D, y este será el jugador a dañar. Guarda eso. Ahora voy a quitar el inicio y actualizar si sí los necesitamos más adelante, podemos agregarlos. Es bastante sencillo. Voy a crear el On Trigger Enter to D. Voy a comprobar si esta etiqueta collision.com es la capa. Si lo es, entonces voy a conseguir el componente que es la puerta principal que termina. Y voy a seguir adelante y poner el bool, que va a ser la letra porque esto es una referencia de cuerda. Nosotros vamos a conseguir estas bicicletas. Bob spikes, copia eso. Y de vuelta aquí. Y pongamos esto pops. Bicis, guarde eso. Y luego crearemos aquí un método que va a ser para dañar al jugador, que es una capa de daño del vacío público. Y también tenemos que poner esto en realidad. Guarda eso. Entonces vamos a dañar al jugador. ¿ Qué deberíamos estar haciendo aquí? Simplemente vamos a conseguir que el jugador dañe el componente de dot get, el manejador de salud del jugador. Y vamos a seguir adelante y dañar capa con la cantidad de daño. Y antes de que nos olvidemos, ¿cómo vamos a tener acceso a este daño de capa cuando el jugador entre aquí? ¿ Cuál es el problema aquí dentro? Cantidad de donantes no existe. Oh, lo siento mucho. Cantidad de daños. ¿ De dónde obtuve la cantidad de daño? Ni siquiera estoy seguro de todos modos, aquí dentro, el jugador al daño va a ser igual a la colisión. Ahí vamos. Entonces en Trigger Enter, comprobamos, ¿es el jugador? Sí, iniciamos la animación de los picos pop. Después ponemos al jugador a dañar como la colisión porque se declara, sabemos que entonces vamos a dañar al jugador. Y por último, vamos a volver aquí. ¿ Cuál es el problema? ¿ De acuerdo? Nada de animación y vamos a seleccionar en la escena. Entonces ahí lo tienes. Podemos ver que empieza, luego no pasa nada. Y un par de segundos esperamos y luego reservamos aquí, voy a sumar el evento y voy a seleccionar para dañar al jugador. Vamos a guardar eso para ejecutar el juego. Y veremos aquí que tenemos una vida de 600 una vez que me detenga en estas bicicletas. Sí. Ahí vamos. Nos daña. No nos daña porque si vuelvo a los picos, no tenemos nada que dañar. Vamos a ponerlo como 100 por ahora porque la vida es de 600. Entonces creo que puede aguantarse un par de hits. Entonces ahora tenemos los picos. Sí, ahí vamos. Se puede ver que quita 100 cada vez. Y debido a que tenemos esta invencibilidad por un par de segundos, la segunda punta no afecta a la capa. Pero el problema es puedes ver que sigue jugando y yo sigo dañándome. Por lo que el jugador murió a pesar de que está parado fuera del perímetro de las chispas. Entonces lo que deberíamos estar haciendo es antes que nada, necesitamos estar deteniendo la animación On Trigger exit 2D. Y aquí dentro, sólo voy a hacer lo mismo que hice aquí dentro. Consulta para el jugador. Y si es el jugador que acaba de salir de la colisión, vamos a poner esto en Falso, guardar eso de nuevo en nuestro juego. Y ahí vamos y ejecutamos el juego. Entonces ahora entramos aquí, nos dañamos, salimos afuera. Ahí vamos. Podemos ver que la animación se detiene, pero hay algo cuando me detengo y vuelvo, puede ver que a pesar de que estoy afuera, así que retrocede. Todavía me estoy dañando. ¿ Por qué? Porque la animación aquí dentro todavía se está reproduciendo. El sistema de eventos aún se está activando y sí sabemos cuál es el jugador. Entonces para evitar eso, voy a crear un bool público. Y este bool público sólo para que podamos verlo en el inspector lo colocará más adelante en privado. Y voy a llamar a esto el jugador de dar o daño, o no debería dañar jugador, creo que es un mejor nombre para esto. Los verbos deben dañar jugador. Y una vez que está dentro, entonces el jugador debe dañar es igual a verdadero. Cuando está fuera el jugador debe dañar es falso. Y luego dentro del método del jugador de daños, voy a comprobar si debemos manejar al jugador. Entonces vamos a seguir adelante y acceder al manejador de salud del jugador y dañar al jugador. Por lo que ahora de vuelta en nuestro juego, deberíamos ver que cuando corro el juego, no debemos dañar al jugador. Una vez que entre aquí, deberíamos dañar al jugador, nos dañan. Pero si lo activé y luego salgo afuera, ahí tienes. Se puede ver que debe dañar libro jugador, libro. Ahí vamos. Se puede ver que ya no me afecta. Entonces espero que hayan disfrutado de este video. Espero que hayan disfrutado de esta sección. Espero que siempre estés escenificando tus archivos, cometiendo tus cambios, creando reseñas. Y luego en el siguiente apartado veremos adónde nos lleva este viaje. Entonces voy a seguir adelante y decir aquí que creé picos, esa capa de daño, cometí los cambios. Y puedo ver aquí mismo y los maestros cómo se está moviendo nuestro juego. Mira lo mucho que hicimos, y mira lo mucho que aún tenemos que hacer. Este juego apenas está empezando así que no puedo esperar. No perdamos más tiempo y nos vemos en el siguiente video. 61. Sección 10: picks: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, cuando se puede ver aquí mismo que tenemos estas pastillas verdes de salud. Entonces cuando nos golpean, notan que estamos en vivo como 500 más de 600. Pero una vez que recoja estas salud, te darás cuenta de que aumento mi salud y ahora estamos de vuelta en los negocios y podemos dispararle a todos. Entonces, sin más preámbulos, no perdamos más tiempo. Yo sí cometo un par de errores en este video. Espero que disfruten de la lección de ellos y no volvamos a perder más tiempo. Y empecemos. Ah, está bien, así que vamos a sumar la capacidad para que el jugador recoja algo de salud mientras está dañado. Entonces lo primero que quiero hacer es que quiero crear el prefabricado fuera de la trampa de espiga. Entonces prefabricado y lo que debería estar teniendo aquí. Vamos a hacer clic aquí y crear una carpeta para los objetos de nivel. Por lo que nivelan los objetos. Y sigamos adelante y sumamos la trampa de espigas y aquí, y sólo la mantengamos en nuestro mundo. Ahora, lo siguiente que queremos hacer es entrar a los sprites. ¿ Dónde están los sprites? Y digamos que aquí tenemos la camioneta de salud o sabes qué, solo llamémosles el PEC Ops. Hit Enter. Y aquí dentro voy a entrar a los recursos y arrastrar todo el PNG o imagen o como quieras llamarlo. Y yo quería hacer esto afuera y hacerlo antes de empezar el video. Pero pensé que tal vez algunos de ustedes podrían haberse enfadado porque yo creara todas las animaciones y esas cosas. Entonces pensé que vamos a crearlos juntos. Si quieres, podemos seguir adelante y ver quién puede hacerlo más rápido. Entonces 64 por 64 o menos diapositivas que, bien, obviamente debería ser 32 por 32 rebanada que aplicara cambios. Ahí vamos. Ahora voy a conseguir uno de esos, agregarlos al mundo aquí dentro. Es extremadamente pequeño. Vamos a ponerlo en la capa, capa. Sigue siendo extremadamente pequeño. Hagámoslo 32 y los píxeles por unidad apliquen los cambios por lo que es un poco aún un poco pequeño. Hagámoslo tal vez 16. Aplicar los cambios. Ahí vamos. Creo que esto es bueno. Y por cierto, esta es una de las pastillas de salud más feas que he visto nunca. Entonces si quieres ahora, no, no quería decir eso porque tal vez la persona que trabajaba en ellos tal vez la tuvo un momento difícil creando las sombras y así sucesivamente. Entonces lamento decir eso, pero honestamente, no son tan buenos. Por lo que sí te recomiendo que vayas a buscar tus propios sprites. Todo lo que quiero hacer es asegurarme de que tengamos la mecánica de juego y lugar. No tiene que ser extremadamente bonita. De todos modos, añadimos un colisionador de cajas obviamente. Veamos qué tan grande es eso. Sí, creo que eso es lo suficientemente grande. Nos aseguraremos de que sea un gatillo lo salvará. Entraremos en los guiones aquí y hagamos clic derecho y creemos un guión C-sharp para la salud o la recolección de salud. Hit enter. Y crearemos una carpeta que serán las pastillas. Por lo que cualquier día ahora, camionetas y sumar la camioneta de salud y hacer las pastillas. Y luego agregaremos la camioneta de salud a la camioneta de salud. ¿ Qué tan guay es eso? Por lo que la recolección de salud obtiene un nuevo componente, que es el script de recolección de salud. Ahí vamos, ábrelo en Visual Studio y empecemos. Entonces, ¿qué necesitamos aquí? En primer lugar, obviamente necesitamos saber la cantidad que esto sanará. Tan campo serializado, lo haremos un entero y lo llamaremos la cantidad del talón sin fin. Tan solo ponlo para ser, no lo sé, como tal vez diez. Creo que diez es un número suficientemente bueno. Voy a quitar el inicio y actualizar por ahora. Y voy a seguir adelante y crear un on Trigger Entrar al obviamente ¿qué estamos buscando? Comparar etiqueta. Es decir, lo siento, necesitamos primero conseguir la colisión y luego comparamos la etiqueta y esa etiqueta como el jugador. Entonces ya has visto todo esto, pienso en 1000 veces, pero de todos modos, esto es por lo que deberíamos estar pasando. Pero antes de hacer eso, déjame solo crear la animación para la camioneta de salud. Entonces Animación, crear animación. Vamos a crear aquí una carpeta que van a ser las pastillas. A lo mejor sí agregamos un poco más de pickups. Y aquí crearemos la camioneta de salud solo para asegurarnos de que todo esté realmente limpio y fácil de atravesar. Entonces ahora levantamos la salud, bajamos, arriba, abajo. Eso van al sprite se encienden. ¿ Y dónde está? Respaldo, recolección de salud. Ahí vamos. Añadamos todas estas imágenes y la mantendremos como la capa predeterminada que se ejecuta. De acuerdo, eso es un extremadamente rápido, tal vez así. No, eso es aburrido. Así. Está bien. Creo que eso es suficiente tal vez. Sí, seguro. ¿Por qué no? Entonces, sólo vamos a mantenerlo en eso. Yo creo. Sí, claro. Siempre y cuando podamos ver lo que está pasando y sólo se está moviendo un poco. A lo mejor hacerlo un poco más lento. No, eso es 2 primero. No lo sé. Esto realmente dependerá de ti. ¿ Cómo quieres que luzca tu camioneta? Obviamente, algunos de ustedes tienen sprites de batería, tienen mejor comprensión de lo que hace bonita una animación. Por lo que te guardo eso siempre y cuando tengamos la camioneta de salud funcionando correctamente. Ahora volvamos aquí. Y qué queremos hacer aquí después de que choca el jugador obviamente queremos aumentar la salud del jugador, pero hay algo que no está del todo bien y es decir, no lo hacemos tener alguna forma de hacer eso. Entonces te voy a emitir un reto para crear un método que añada salud. Entonces, en primer lugar, y el manejador de salud del jugador crean un método que agrega salud al jugador. Se debe tomar un parámetro que es la cantidad del talón. Tendrás que asegurarte de que nunca sobrepase el máximo de salud que tenemos. Por lo que nuestro máximo es de 100. No queremos tener 120, por ejemplo. Y por último, y lo más importante, debes asegurarte de actualizar también el lienzo de la interfaz de usuario. Entonces con esa información, pausa el video ahora mismo y ve a hacer reto de alcance. Gay. Bienvenido de nuevo. ¿ Cómo te metiste en eso? Espero que no fuera demasiado duro y espero que te lo hayas dado todo. Entonces aquí donde dañamos al jugador justo debajo, vamos a crear un vacío público. Y va a ser sumar HB dos jugador. Y va a tomar un parámetro entero, que es la cantidad del talón. ¿ Y qué vamos a estar haciendo aquí? Bueno, vamos a estar accediendo a la salud actual y vamos a estar incrementándola por el monto de salud. Ahora por la parte complicada, si tenemos la salud actual mayor que la salud máxima, ¿qué deberíamos estar haciendo? Bueno, deberíamos estar estableciendo la salud actual para que sea igual a la salud máxima. Por lo que esto asegurará que la salud actual nunca pase por encima de la salud máxima. Y por último, necesitamos actualizar el Plan de salud del jugador, Actualizar la salud del jugador. Sí, Actualizar la salud del jugador. ¿Sabes qué? Haga doble clic aquí, Control RR, Actualizar la salud del jugador que eres. Y el problema es que hay algo, un conflicto sin resolver. ¿ Cuál es el problema? Ah, está bien. Entonces aquí dentro, no sabe lo que debería estar usando. Y ahí vamos. Por lo que ahora actualizamos la salud del jugador que eres. Y el último paso es obviamente para dentro, vamos a ir a la colisión, el componente Get, porque ya sabemos que este es el jugador, por lo que no enfrentaremos ningún error que lo que se llamó a, en HP a jugador, en HP a jugador. Y le enviamos la cantidad de tacón de este objeto. Y por último, y por supuesto necesitamos destruir el objeto del juego. Ahí vamos. Creo que esto es todo lo que tenemos que hacer y esto debería estar funcionando. Entonces de vuelta en nuestro juego, Vamos a ejecutar esto. Y veamos si eso funcionó. Entonces vamos a pararnos en los picos, golpeen una vez, vamos, que lo traigan dos veces. Ahí vamos. Hazte atropellado por tercera vez. Está bien. Por lo que ahora nuestra salud es de 300. Entonces ahora cuando cogemos esto, deberíamos tener 310. Tenemos 320. Entonces, ¿por qué crees que pasó eso? Veamos cuál es el problema aquí. Por lo que la camioneta de salud ha hecho, no tiene animación. Tiene un colisionador de cajas, pero el problema, Oh, bienvenido de nuevo. Entonces creo que me tomó apenas una fracción de segundo saber qué pasó por la magia de la edición. Pero pasé por un par de cosas. Sólo entiende si mi teoría fue correcta y lo fue. Entonces lo que estaba pensando es que aquí tenemos dos colisionadores. Tenemos el colisionador de cápsulas del jugador, y tenemos el Planeador de Caja del Jugador. Uno de ellos es 2. Asegúrate de que no vayamos más allá de las paredes. Entonces hicimos uno que es pequeño para que podamos tener la ilusión de que este juego es más que solo un dos. Estos son el muro en realidad no nos hace incapaces de caminar por él un poco. Entonces si sabes a lo que me refiero, estoy aquí. Y entonces el segundo es en realidad poder recibir un disparo desde el sombrero. Entonces el problema, ¿Qué está pasando? Te estoy tratando de mostrarte, me van a pegar estos picos. Y ahora si camino con estos dos colisionadores, te darás cuenta de que cuando llegue a elegir uno de ellos, ves que tengo 20 porque lo estoy recogiendo con ambos planeadores. Si solo lo recojo con el colisionador de arriba, mira el 520, verás que solo son 530. Si lo levanto solo con la cabeza, consigo 540. Entonces 10, lo cual es bueno. Y si lo recojo de un lado, ahí tienes. Se puede ver que sumó 20. Entonces este es el problema que tenemos que arreglar. Ahora, quiero que te tomes un momento y pienses en una solución a este problema. Entonces solo les voy a dar, esto no es un reto, no un reto eficiente. Yo sólo te voy a dar un poco de tiempo. De acuerdo, se acabó el tiempo. Entonces veamos qué vamos a hacer aquí dentro. Entonces todo lo que tenemos que asegurarnos es que esta camioneta de salud ha sido recogida al menos una vez. Entonces lo que haremos es crear un bool privado y esto se va a llamar Recogerlo. Por lo que ha sido recogido. Y aquí dentro vamos a decir que si es el jugador y no se ha recogido, así que agregamos el signo de exclamación, entonces vamos a recoger, pero también vamos a poner esta camioneta para que sea verdad. Entonces una vez que lo recojamos, una vez Eso es todo, Ya no podemos recogerlo en otra ocasión. Entonces, vamos a guardar eso. Volvamos a nuestro juego y probemos esto. Entonces ejecutamos el juego, nos golpean los picos. Y luego cuando caminamos por los costados, ahí vamos, obtenemos 10. Entonces, por mucho que intentemos en este momento, nunca deberíamos conseguir que esto aumente en 20. Entonces ahora paso por esto que vas por los lados, siempre obtenemos 10 y nunca obtenemos un 20 extra o así. Espero que lo disfruten. Espero que esto te guste. Y realmente no estaba seguro de cuál era el problema resuelto. Me llevó tal vez unos dos o tres minutos, pero recuerdo cuando empecé esto me llevó quizá de vuelta. El día de hoy para averiguar qué demonios estaba mal con estos juegos o por qué no se recogió el gran inicio? Esto fue hace mucho tiempo. Ahora, por mi experiencia, entiendo las cosas un poco más rápido y esto es lo que quiero que sepas que a veces aunque sé que tengo tanta experiencia, te estoy enseñando las puntuaciones. También cometo muchos errores y sucedieron cosas que no tengo ni idea de por qué, pesar de que este curso realmente he creado este juego de antemano y pasé por todo. Pero me encontré con este problema, así que espero que lo disfruten. Espero que te guste mi transparencia que siempre me asegure de mostrarte los errores que cometí, a pesar de que a algunas personas no les guste, dicen eso, ¿cómo puede un no estructurado cometer errores? Oh no, todos tratan de ser perfectos. Sé que nadie lo está. Confía en mí. Todo el mundo utiliza Google para averiguar cuál era el problema. Y este caso no lo hice porque ya lo encontré y lo arreglé de antemano, así que espero que lo disfruten. Asegúrate de escenificar tus archivos y te veré en el siguiente video. 62. Gota de elementos aleatorios: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a otro video muy largo. Pero en este, vale la pena. Como cada vez que nos golpean, nos rompemos. Podemos ver que tenemos este artículo. No lo levantamos de inmediato, pero después de un cierto tiempo, no sólo eso, sino ahora cuando deberíamos el enemigo y él muere, en algún momento, también cae y artículo. Y obviamente no arreglamos la forma en que las capas interactúan entre sí. Pero creo que porque este video fue tan largo, no tuvimos mucho tiempo. Entonces sin más ni hacer No perdamos más tiempo y empecemos. Ah, caso. Entonces ahora tenemos la camioneta de salud funcionando, pero no muy divertida cuando tienes toda la salud tirada a tu alrededor. Podrías hacer eso. Podrías simplemente poner un par de pastillas de salud en tu mundo y luego recogerlas una vez que encuentres ciertas habitaciones o lo que sea. Pero creo que es mucho mejor cuando puedes tener algún tipo de mecánico que suelte los artículos y te permita recogerlos. Entonces por ejemplo, si tenemos la rompible justo aquí, estas urnas, si las aplastamos o las rompemos, entonces tendremos algún tipo de camioneta de salud o cuando matemos a cierto enemigo, entonces tenemos también la camioneta de salud get cayó. Entonces hagamos eso primero lo primero, voy a entrar a los Prefabs donde tenemos el ¿dónde está? Dónde están las armas, balas, sangre, balas, enemigo. Entonces al parecer no tenemos nada. Ah, ¿sabes qué? Vamos a crear una nueva carpeta para las pastillas. Y luego vamos a dejar la camioneta de salud ahí dentro. Genial. Entonces ahora tenemos esto. Lo siguiente que queremos hacer es que vamos a entrar en los guiones. Vamos a encontrar las pastillas y vamos a crear un nuevo script C-sharp se va a llamar item drop. Ahora bien, ¿por qué estamos haciendo esto? En primer lugar, quería simplemente cerrar esto por un segundo. Entonces lo que quería hacer es que quisiera agregar inmediatamente este código aquí mismo a la camioneta de salud o quiero decir, lo siento, en lo rompible. ¿ Dónde están? Ah, acabamos de cerrarlo así que quise agregarlo de inmediato al rompible. Entonces en cuanto nos rompemos, obtenemos un determinado artículo. Pero entonces pensé, si quisiera que algunos enemigos dejaran caer artículos que no serían muy eficientes porque queremos varias cosas. A lo mejor para soltar artículos, queremos diferentes ganados, tal vez no sólo lo rompible, tal vez no sé nada que caiga artículos. Pensé que podría ser mejor simplemente crear un script que es el gotero del ítem y agregarlo a cualquier objeto que queramos soltar un elemento una vez que muera o mata o lo que sea. De acuerdo, así que sigamos adelante y hagamos eso. primera hora. En primer lugar vamos a seguir adelante y crear un campo serializado, que va a asegurarnos de que tenemos la opción de comprobar si cae artículos, si él o ella o lo que sea cae artículos. La segunda variable que quiero crear es un campo serializado, que es de tipo objeto de juego. Y lo vamos a hacer una matriz y van a ser los artículos también caen. Ahora tal vez te estés preguntando, solo tenemos un artículo que soltar, que es la salud. Pero más adelante crearemos una moneda y tal vez incluso quizá quieras crear algún tipo de sistemas de nivelación o te caigas algo que viaja hacia arriba igual que tenemos en Hades. Por lo que los artículos a soltar, lo tenemos como una matriz. A continuación tendremos como campo serializado, va a haber de tipo float y se va a llamar la gota de ítems o gota de ítem. Oportunidad. Y lo vamos a poner en 0.5. Entonces es una oportunidad 5050. ¿ Y por qué queremos tener esto? Bueno, no queremos que todos nuestros rompibles o todos nuestros enemigos tirando esto los artículos. Por lo que queremos tener una 5050 posibilidades de conseguir un artículo. Genial. Por lo que ahora voy a seguir adelante y quitar el inicio y actualización. Los crearemos si los necesitamos. Y voy a crear un elemento gota de vacío público. Y esto simplemente irá adelante y creará un entero aleatorio. Y en primer lugar, vamos a comprobar si hay un par de condiciones. Por lo que el primero será aleatorio. El valor de punto es menor que la probabilidad de que los objetos caigan. Y lo que es el valor de punto aleatorio que se coloca sobre él y ver devuelve un flotador aleatorio entre 0, uno. Entonces si obtenemos, por ejemplo, cero punto porque es menor a 0.5, queremos instanciar. Esta es una gran manera de simplemente evitar el todo es menos de uno, más de 0.5 o donde esto simplemente nos da un valor aleatorio entre 01. Si es más grande, instanciamos. Si no lo es, entonces queremos. Entonces vamos a seguir adelante y crear un entero aleatorio. Por lo que el número de elemento aleatorio y va a ser igual al rango y rango de puntos aleatorios. Y aquí dentro vamos a tener un rango entre 0 y los artículos a soltar. Longitud de punto. Tan bastante simple lo que estamos haciendo aquí dentro. Ya sabemos todo esto y luego vamos a seguir adelante e instanciar los ítems para dejar caer. Y lo vamos a tener como número de artículo aleatorio. Vamos a ponerlo en la posición de punto de transformación y la rotación de transformación. Ahí vamos. Entonces voy a guardar esto. Yo me voy, oh, y antes de que hagamos eso, también voy a crear una condición aquí dentro que me olvidé por completo por alguna razón. Voy a asegurarme de que si cae artículos, entonces vamos a seguir adelante y hacer todo esto. Y solo agreguemos un par de corchetes rizados a su alrededor para que sea mejor así. No me gusta tener múltiples líneas bajo una sola gota artículos. Está bien, genial. Entonces con eso, No guardes eso de nuevo en nuestro juego. Y entremos a la olla rompible. Y eso es conseguir que estos se cierren un poco. Y luego vamos a añadir aquí un gotero de artículo. Y como puedes ver, hay un problema. Se puede ver que no tenemos los campos deserializados y se puede ver que aquí hay algo esperado, que es que no cerramos uno de los, vale, así que ahí vamos. Ahora guardamos eso. Ahora deberíamos ver aquí lo grande. Entonces le dejo caer artículos, artículos a gotitas, solo dale la camioneta de salud. Vamos a cerrar esto hacia abajo o el cierre realidad entrar a los Prefabs. Dónde está, Dónde está las pastillas y la camioneta de salud. Por lo que ahora solo tenemos la camioneta de salud. Y solo con fines de prueba, voy a establecer los artículos para dejar caer la oportunidad a 1. Por lo que siempre dejamos caer un artículo, guarde eso. Y ahora lo último de lo que queremos asegurarnos es que en donde debería estar en las burbujas de descanso? Si vamos, ¿Dónde está? ¿ Dónde está Burry? 2ls rompible. Y aquí dentro vamos a revisar después de asegurarnos de que nosotros, ¿Dónde está instanciamos el objeto. También queremos seguir adelante y comprobar si el componente Get y el cuentagotas de artículo. Y vamos a comprobar y esperar que tengamos poca cosa masiva aquí que va a hacer porque es un campo serializado, Vamos a crear un retornos. Entonces bool público es artículo, artículo cuentagotas. Y sólo vamos a volver aquí, Verdadero o lo que sea, el artículo gotas. Entonces esto volverá verdadero si sí deja caer un artículo para que podamos volver atrás y la palabra era ella, ok, El punto rompible es el cuentagotas de artículo. Para este artículo gotero, una vez que el jugador se desencadena , activamos el descanso, instanciamos las partes y él, activamos el descanso, instanciamos las partes ycomprobamos si es un gotero de artículo, entonces vamos a volver a acceder el Get Component Item gotero, gota artículo. Ahí vamos, guarde eso. Y sabes qué, estaba pensando que tal vez esta afirmación si aquí no es tan necesaria. Entonces qué vamos a quitarlo. Y ahora recuerdo por qué lo olvidé, porque ahí no era necesario. Entonces de vuelta aquí, salvo que todo debería estar funcionando bien. Lo único que me sigue molestando es que si tratamos de conseguir el componente, pero no está ahí, así que no lo agregamos a algún tipo de olla rompible. A lo mejor eso causará un problema si lo hace, la mejor manera de solucionarlo es crear una condición extra si, una capa extra aquí de protección si el gotero Get Component Item, y es diferente a null, eso significa que sí tenemos este ítem aquí mismo. Entonces podemos seguir adelante y comprobar el artículo gotero. Entonces esto nos dará una capa extra de protección si no tenemos el cuentagotas del elemento componente, si es igual a nulo, entonces vamos a comprobar si no podemos soltar artículos, y entonces vamos a caer realmente un artículo. Entonces guarde eso de nuevo ahora otra vez, vamos a ver. Ahora esto es como, Honestamente, esto no me gusta mucho porque deberíamos estar sabiendo cómo estamos creando este juego, Bu, pero este es el peor de los casos. Así que corre el juego. Y ahora cuando tratemos de romper una parte, déjame solo conseguir un destruido. Y luego cuando tratamos de romper la parte que ves, ahí vamos. Nosotros lo destruimos. Y se puede ver que nuestra salud acaba de pasar de 500 a 510. Pero hay un problema. ¿ Lo viste? ¿ Viste caer el artículo? No, no lo hiciste, pero la salud aumentó. Entonces, ¿cuál es el problema? Bueno, el problema aquí es que es extremadamente rápido y no queremos que esto suceda instantáneamente. En realidad queremos ver el artículo que hemos caído antes de recogerlo inmediatamente. Entonces te lo voy a emitir como un reto. Y tu reto es retrasar el tiempo antes de que podamos recoger un artículo. Entonces, en primer lugar, crear un nuevo guión. Vuelve a recoger la capa. ¿ Por qué es esto? Este es un video increíble de cómo estructuras tu juego. Porque recoger la capa, esto nos permitirá retrasar el tiempo antes de recoger un artículo. Y no queremos añadir este retraso sólo por el guión de salud y después hay que copiarlo cada vez y a todas las monedas, los power-ups y etcétera. Entonces lo que haremos es solo crear un nuevo guión de recolección de la capa y agregado a cada elemento que queremos recoger, lo cual es mucho más fácil y saludable cuando se trata desarrollo de juegos y diseño de juegos estructura y así sucesivamente. Por eso creamos un nuevo guión. Después crearás un flotador por el tiempo antes de que podamos recoger, necesitas crear una variable booleana que verifique si realmente podemos recoger el artículo o no. Crear un equipo de núcleo que después de tiempo, después de una cierta cantidad de tiempo, que es la, obviamente la variable flotante recreada aquí nos permite recoger el artículo. Y finalmente, ¿dónde deberíamos estar? ¿ Deberíamos llamar a este recubrimiento? ¿ Dónde deberíamos estar llamando a la rutina escolar? Entonces obviamente, bueno que no soy bueno en codificar porque soy horrible en la gramática y todo lo demás de todos modos, ya sabes, ¿cuál es el punto de la última frase? Pausa el video ahora mismo y ve al reto. De acuerdo, bienvenido de nuevo. Entonces una cosa que quería hacer es quiero entrar a la camioneta de salud. No, no la camioneta de salud, la parte rompible. Y voy a aplicar los cambios a todas las demás partes, pero asegúrate de que cada vez que lo hagas agregue un bote, que asegúrate de comprobar si cae un artículo o no y tienes que cambiar los artículos dejan caer oportunidad obviamente. Y electrón, claro que estaremos cambiando eso. Por lo que siempre ten eso en cuenta a la hora de agregar nuevos bots. Y entonces tenemos que entrar en el, dónde está la habitación, los enemigos. Tenemos un par de enemigos. Vamos a revisar este y agregarle artículo gotero. Ahí vamos. Por lo que deja caer un artículo. ¿ Cuál es el artículo que deja caer? Será por eso que siempre lo bloqueamos. Después agregamos el elemento que se establece como 11. ¿ Deberíamos estar dejando caer un artículo? Vayamos al controlador del NMI aquí. ¿ Dónde muere? Dañar al enemigo si la salud es menor que 0, instanciar los objetos del juego de paja. Entonces el Splatter Sordo. También revisaremos aquí si el componente, ¿ahora qué? En tanto que lo rompible, copiamos este. Y luego acabamos de pegar aquí. Entonces este es código redundante. Pero voy a dejar que se deslice por todas las otras cosas eficientes que hemos creado. Entonces comprobamos si sí tenemos un gotero de artículo, luego comprobamos si es cuentagotas, y luego seguimos adelante y dejamos caer el artículo. Entonces tratemos de probar esto en el esqueleto enemigo aplicará los cambios. Por lo que ahora todos los enemigos deberían tener el guión para ejecutar el juego. Y sé que esto no fue en absoluto parte del reto, pero solo quiero probarlo así que deberíamos las balas finalmente muere y podemos recoger un artículo que vea si funciona. Yo lo pillo. Recojo el artículo. Excelente. Ahora lo siguiente es retrasar, que es el reto real. Entonces vamos a entrar en el, sé que esto fue una nota al margen, pero tal vez no supiste exactamente qué hacer en este caso. No se preocupe por eso. Entremos a los guiones. Las pastillas, y haga clic con el botón derecho aquí, crean un nuevo guión C Sharp, que va a ser el PEC. Pick up, the big, oops, Recoge la capa, pulsa Enter. Espere a que esto se compile y haga doble clic aquí. Haga doble clic aquí. Y veamos qué vamos a hacer. En primer lugar, vamos a crear el campo serializado para el flotador, que es el tiempo antes de pick up. Y pongámoslo en alrededor de 0.5 segundos. Entonces vamos a crear un bool privado se puede recoger. Guarda eso ahora y empieza. Nos vamos a asegurar que eso pueda ser recogido como igual a falso. Y luego vamos a crear el Coubertin Y aquí, que va a ser el enumerador de ojos. Y se va a llamar la pick-up, refrescarse. Sí, claro, recoge, enfrícate. Y entonces aquí dentro vamos a ceder, volver, nuevo. Espere cuatro segundos. Y estoy bastante seguro por este punto, ya sabes, co rutinas tan bien que te aburres de mí cada vez que dices rendimiento te devuelven por segundos de peso. Probablemente estés diciendo Michael, ya sabemos cómo hacer esto. Por favor, detente. No. Vamos a aprender. Tiene Gantt ser recogido es igual de nuevo a cierto. Guarde eso. Y ahora vamos a entrar al elemento cuentagotas. Y lo siento, quiero decir, la camioneta de salud. Y aquí dentro vamos a comprobar si ha sido recogido. Y también vamos a chequear. Y si el componente Get, el recogido, la capa, eso ¿cómo se debe llamar? ¿ Dónde está? ¿ Se puede recoger? Adelante y regresemos esto. Por lo que público booleano, se puede recoger. Y sólo vamos a regresar. Se puede recoger variable. De acuerdo, nombre no muy creativo para este, pero funciona. Y aquí hay algún tipo de problema que se puede recoger la definición de vector de tipo. ¿ De acuerdo? Así se puede, se puede recoger. Claro, digamos que ha llamado a un método. Entonces creo que es sólo por el nombre. Por lo que no puedes nombrar la variable tal como nombra el método que deseas. Por lo que sólo lo llamaremos método porque tenemos la imaginación de una mosca de fruta pequeña y luego se puede recoger método. Y esto debería hacer el truco. Ahora lo último y la última parte de este reto fue ¿dónde llamamos al Colton? Espero que haya pensado en eso y espero averiguarlo que debe llamarse de inmediato y empezar. Entonces el inicio, iniciamos la co-rutina. Eso es puede ser, Nope, quiero decir, recoger, enfriar, recoger, enfriar. Ahí vamos. Entonces, ¿por qué y empezar? Porque estamos instanciando el artículo. Por lo que en cuanto instanciamos el artículo, tiene la capa D de la camioneta, inmediatamente iniciamos el Colton. Por lo que de vuelta en nuestro juego. Veamos aquí, la capa. Recoge la capa. ¿ Cuántos, cuánto tiempo espera? Y voy a aplicar los cambios a todos. Entonces ahora cuando corremos el juego, deberíamos ver que en cuanto golpeemos las burbujas de rotura, ahí vamos. Golpeamos los pernos de freno. No recogemos inmediatamente el artículo. Vemos que se le cae. Ahí vamos. Sí. Se puede ver en este momento que todavía está ahí. No lo hemos recogido, pero ahora podemos, probemos algo diferente. Añadamos el retraso a alrededor de tres segundos y veamos si funciona. En la vida real. Nos van a pegar. Vamos a destruir esto y tratar de recogerlo. De acuerdo, así que eso funcionó bastante rápido y me estoy preguntando cuál es el problema aquí. Oh, bien, bienvenido de nuevo. Entonces el mayor error que se haya cometido, cambié esta camioneta de salud a 10, pero la prefabricada real no ha cambiado. Entonces vamos a aplicar los cambios. Me preguntaba que todo está funcionando sin problemas, pero por alguna razón esto no funcionaba. Entonces ahí vamos con el esteroide y ahora tenemos 10, 10 segundos antes de que realmente podamos recogerlo, pero vamos a ponerlo a cerca de 0.5. Guarde eso. Espero que lo disfruten. Espero que te hayan gustado todas las diferentes mecánicas y pequeñas cosas de retoque y la adición y eliminación y asegurándonos que podamos aplicar diferentes cosas, diferentes artículos. Entonces sé que este fue un video largo. Gracias por su atención. Gracias por poner en escena todos tus archivos cada vez y hacer todo el progreso que has realizado. También te agradezco la refuta, increíble increíble revisión que me has dejado y te veré en el siguiente video. 63. Conección de armas: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Sé que este es un video largo, pero hacemos muchas cosas. Aprendemos un montón de pequeños trucos astutos aquí. Entonces cuando corremos el juego, notarás que ahora solo tenemos el pistilo y el brazo de armas deberíamos la pistola, todo funciona bien. Tenemos la escopeta en el suelo. Uw, ¿qué crees que pasará cuando lo recojamos? Entonces me dirigí lo recojo. Ahí vamos. Podemos ver que tengo una escopeta y podemos ver la bala de esa pistola de tiro. No podemos apagar nada. Podemos cambiar entre la pistola y la escopeta, pero no nos preocupemos por eso. Todo va a pasar. Todo se arreglará a su debido tiempo. Entonces, no perdamos más tiempo con este gran video largo y vamos a empezar. Ah, caso. Por lo que es hora de configurar la forma en que recogemos nuestras armas. Entonces ahora mismo, la forma en que tenemos nuestras armas es lo suficientemente buena. Estamos cambiando, estamos haciendo todo, pero no es así como queremos que funcione nuestro juego. No queremos simplemente empezar con todos nuestros botones y simplemente cambiar entre ellos. Queremos tener algún tipo de mecánica que nos permita tenerlos o adquirirlos de alguna manera. Y una de esas cosas es que podemos recoger nuestras armas en ciertos puntos y el nivel. Entonces sigamos adelante y hagamos eso. Lo primero que vamos a hacer es que vamos a entrar al jugador de la fatalidad. Vamos a quitar las armas que no estamos sosteniendo. Entonces voy a quitar el rifle, tendrá que abrir el guión. Así que quita el rifle, quita la pistola, y vuelve a nuestro juego. Ahí vamos. Ahora una cosa de la que tenemos que asegurarnos es que también los sacamos de las armas disponibles aquí mismo. Entonces voy a quitar estas ranuras vacías, guardar eso, y vamos a ver qué tenemos aquí dentro. De acuerdo, así como pueden ver, esto también es algo que necesitaremos cambiar y les diré por qué. Saquemos las cosas del camino. Por lo que actualmente estamos poniendo el arma actual en una y luego configurando la interfaz de usuario del arma, pero uno no está disponible aquí mismo. Entonces veamos qué pasa cuando ejecutamos nuestro juego. Deberíamos ver que aquí tenemos una flecha, y este error es argumento fuera de rango. Hago doble clic aquí , me lleva al arma de ajuste. Eso significa que el arma actual está fuera de alcance dentro de las armas disponibles. Y por supuesto es porque estamos poniendo la corriente se fue a una mientras sólo tenemos un arma. Entonces el único índice al que podemos acceder a un 0. Podría poner esto a 0 si quisiera. Pero entonces lo que pasa es que cada vez que iniciamos el juego, tenemos, por ejemplo, la escopeta y el rifle, y el rifle está encendido mientras pistola actual es diferente a la que consigues lo que quiero decir. Entonces el índice estará fuera de lugar y esto es algo que no nos ocupamos en el último video. Entonces te mostraré lo que pasa a pesar esto tardará un poco de tiempo en entenderlo , pero sin preocupaciones. Yo quiero asegurarme de que todo esté bien entendido y por qué estamos haciendo todas estas cosas. Entonces pistola, escopeta, rifle, aplique los cambios. Por ejemplo, digamos que apago la pistola y apago el rifle. Entonces ahora lo que deberíamos tener como la escopeta a medida que empezamos. Entonces voy a correr esto. Ahí vamos. Tenemos el tiroteo de la escopeta, pero tengo la pistola y la UI. Si vuelvo a hacer clic, entonces tengo la escopeta que tengo el rifle. Entonces, como puedes ver, las cosas son raras al principio. Entonces en lugar de hacer eso, lo que vamos a hacer, vamos a eliminar esto y vamos a crear un bucle for. Entonces cuatro y yo igual a 0, yo es menor que el número de puntos de armas disponibles, contar porque estamos usando listas y yo plus, plus. Y aquí dentro voy a comprobar si el arma disponible, la posición yo punteo GameObject punto activo en la jerarquía, eso significa que se presentan y realmente hemos elegido para estar disponibles para el jugador? Entonces vamos a igualar el arma actual a I. Y de esa manera todo debería estar funcionando perfectamente bien. Entonces si vuelvo aquí, tengo la escopeta. Yo dirijo el juego. El arma debe ser correcta aquí mismo. Ahí vamos, escopeta. Vamos a probarlo en el rifle. Entonces apaga esto, ejecuta el juego. Entonces ahora deberíamos tener el rifle. Y ahí vamos, todo está funcionando correctamente. Y finalmente, probamos en la pistola y quitamos el rifle, corremos eso. Y deberíamos tener la pistola. De acuerdo, genial, Así que todo está funcionando bien. Ahora, me tomé un poco de diversión para hacer esto. No se preocupe, pero mientras esto esté fuera del camino porque será importante cuando realmente empecemos a recoger armas. Entonces lo primero que necesitamos hacer es crear el objeto pickup con el que vamos a interactuar. Y he creado estos tres sprites aquí mismo. Y la diferencia entre los sprites regulares y los cañones y estos es que he añadido un poco de capa blanca alrededor de la consola. Podemos verlos en el mundo. Entonces voy a entrar en los sprites, haga clic derecho aquí, crear. No. Crea una nueva carpeta la cual va a ser la copia de seguridad de armas. Golpea Enter, abre esto. O podríamos haber sumado a las pastillas, pero no se preocupe por eso. Tener más carpetas nunca lastimó a nadie. Entonces como puedes ver, hay un contorno blanco alrededor de la escopeta. Entonces si lo agrego aquí, ponlo en el jugador. Y yo sólo voy a hacer todos estos 32 y hacerlos apuntar. Aplicar los cambios. Ahí vamos. Entonces como puedes ver, la escopeta tiene este contorno blanco a su alrededor para que podamos verlo correctamente y trabajar. No era tan grande de un trato cada vez que estábamos sosteniendo el arma porque tenemos al jugador como fondo. Pero ahora tenemos que asegurarnos de que podamos ver visible y fácilmente la escopeta o cualquier pistola y arma. Y si no te gusta, honestamente, me tomó como, no sé, una hora hacer esto en Photoshop. No tengo ni idea de lo bueno o malo que es. A lo mejor algunos de ustedes se están estremeciendo en el trabajo, pero en lo personal, fue lo mejor de mí. Sigamos uno. Entonces lo que vamos a hacer aquí es mantener esto como la escopeta. Vamos a añadir un componente. Obviamente va a ser el colisionador. Por lo que un colisionador de caja 2D. Veamos qué tan grande es eso. Y tal vez podamos aumentar un poco el tamaño en la x y la yNo hay que golpear el arma por completo trajes para recogerla. Entonces solo un poquito y tenerlo como gatillo. lo guardamos. Y lo siguiente que vamos a hacer obviamente es algún comportamiento. Entonces voy a entrar en los guiones, entrar en las pastillas, hacer clic derecho aquí y crear un nuevo guión C-sharp cual va a ser el respaldo de armas. Golpe Entrar armas, recoger, esperar a que se compile a la camioneta de escopeta. Y abramos el guión y veamos qué vamos a hacer aquí. De acuerdo, entonces lo primero que necesitamos, ya que en realidad necesitamos saber qué arma va a ser esta. Por lo que la escopeta obviamente nos dará la escopeta. Entonces voy a crear un campo serializado aquí dentro, que va a ser el sistema de armas de tipo sistema urbano va a ser el arma real que vamos a recoger. Guarda eso. Ahora, lo siguiente que queremos hacer es que queremos poder recoger este objeto. Y antes de que podamos realmente agregar este objeto al jugador, queremos asegurarnos de que no tenga ya ese objeto. Entonces no quiero estar cargando alrededor de 10 escopetas. Sólo necesito un arma de un solo disparo para estar disponible para mí. Entonces déjenme primero que nada así abajo. Vayamos a la prefabricada, vamos a las armas, y sumamos aquí la escopeta como arma. Entonces espero que hayas entendido a lo que me refiero. No quiero coger una escopeta mientras ya tengo una escopeta. Yo quiero recoger una escopeta sólo si no está siendo retenida en mis armas disponibles. Y ese es tu reto mirar a través de las pistolas de capa. Entonces, antes que nada, necesitas crear un emprendedor Entra y comprobar si chocamos con un jugador. Obviamente, no queremos que nuestros esqueletos nos estén atacando fueron armas de tiro. A quién entonces necesitarás crear una variable dentro del método para seguimiento de si encontramos el arma o no en el jugador. Necesitas pasar por todas las armas de capa profunda corriendo y obviamente comprobar si estamos cargando el arma, has recogido usando el nombre GAN, así que necesitaremos el nombre de la pistola y el teléfono para acceder al nombre de la pistola y para acceder a las armas disponibles, necesitarás crear un par de métodos extra. Entonces este es un gran reto, un reto muy duro, pero sé que estás a la altura de la tarea. Tómate tu tiempo, juega, comete errores, no te preocupes por ello. Estaré ahí para ayudarte después de que lo hayamos intentado. Para que no pierdan nada. Pausa el video ahora mismo y ve a hacer llegar a Alan. Kay, bienvenido de nuevo. Entonces lo primero que voy a hacer es quitar el inicio y actualizar. Voy a crear el empresario entrar 2D. Y aquí obviamente comprobamos si la etiqueta collision.com como el jugador. Y ahora podemos continuar. Ahora lo siguiente y algo sobre aquí, tal vez podríamos haber hecho de inmediato todas las pastillas tengan una cierta capa y que solo interactúe con la capa de jugador que hubiera sido un poco inteligente y tal vez no tener todas estas f condiciones cada vez que queremos usar una camioneta. Entonces sólo un silencio, me olvidé de ello. A lo mejor puedes hacerlo tú mismo. Con eso dicho, sigamos en el siguiente. ¿Qué queremos? Bueno, obviamente queremos esta variable booleana que dirá esa pistola en jugador. Y esto se pondrá en falso. De acuerdo, Ahora lo siguiente que tenemos que hacer es que vamos a necesitar crear un bucle foreach que verifique. Y va a estar revisando armas así o armas. Entonces es el sistema de armas. El arma a revisar. ¿ Y dónde buscamos estos? Bueno, estamos buscando las armas disponibles en el jugador. En el controlador de jugador, su gol, lo dice aquí mismo. Entonces vamos a mirar a través de las armas disponibles, pero obviamente armas disponibles, pero obviamente es un campo serializado. No queremos hacerlo público y disponible para todos. Entonces lo que haremos es aquí abajo, vamos a Crear y ahí se puede ver el error que hemos cometido. Vamos a crear una lista pública de tipo sistema de armas. Entonces espero que hayas probado esto, discúlpame. Y lo vamos a llamar el conseguir armas disponibles en capa. Ahí vamos. Ese es un nombre largo. Y lo que vamos a hacer es simplemente devolver las armas disponibles. Ahí vamos. Entonces ahora qué podemos hacer de nuevo aquí, y porque podemos acceder inmediatamente a él desde la colisión, que hemos chocado con el componente Get. Y como ya sabemos que es el jugador, podemos acceder al controlador del jugador. Y desde el controlador de jugador podemos conseguir las armas disponibles en el jugador. Genial. Entonces lo que hemos hecho aquí, hemos creado el gueto armas disponibles al tener el simple retorno, que devuelve una lista. Y debido a que es una lista, podemos agregarla aquí mismo. Por lo que estamos revisando las armas para chequear. Ahora bien, ¿cómo vamos a saber si el arma está ahí? Lo que haremos es que vamos a crear una condición if. Y aquí dentro vamos a comprobar si el arma que está aquí puntean el nombre del arma. Entonces obviamente si voy al sistema de armas, si está aquí en alguna parte, el sistema de armas, tenemos el nombre de las armas, pero de nuevo, es un campo serializado. Entonces estas están bien. Entonces sí tenemos el nombre de las armas get, UI. Está bien. No se preocupe. Eso es todo lo que necesitamos. Sí, Eso es todo lo que necesitamos. Entonces aquí dentro vamos a revisar nombre de las armas en las armas o no, en realidad, no necesitamos esto. Consigue armas nombre que eres. Y si es igual al arma comprobar punto obtener nombre de arma UI. Entonces tal vez UI no era el nombre perfecto aquí para el método, tal vez es mejor simplemente llamarlo el nombre porque lo estamos usando de una manera diferente. Podemos hacer doble clic crear nuestro R y simplemente usar el getWidth y nombre. Hit Enter. Ahí vamos. Ahora hemos cambiado esto por todas partes, incluso en el sistema de armas. Aquí abajo, se puede ver lo genial que es eso. Entonces Control, doble o, o, así si está ahí, eso significa que el arma ya está en las armas disponibles. Entonces vamos a poner el arma en capa a verdad. Y después de que terminemos de mirar a través de todas las armas disponibles, vamos a después de este check-in aquí, si la pistola V en jugador no es cierta, por lo que eso significa que sigue siendo falsa. No tenemos el arma, honesto. Lo que haremos es que vamos a seguir adelante e instanciar el arma en el componente de colisión dot get. Y va a ser el controlador del jugador. ¿ Y por qué estoy haciendo todos estos pasos? Bueno, porque en realidad quiero hacer esta arma. Si volvemos aquí, se puede ver que el arma es en realidad un hijo del brazo de armas. Por lo que necesitamos hacer podemos ver aquí mismo que un instanciado, podemos poner al niño. Entonces vamos a hacer justamente eso y necesitamos una referencia a las armas puestas. Entonces si me desplazo hacia arriba y aquí se puede ver que sí tenemos un brazo de armas. Entonces todo lo que necesitamos para hacer un scroll hacia abajo y otra vez, crear un público. ¿Y qué es? Es una transformación, creo. Sí, digamos transformar. Por lo que necesitaremos crear una transformación pública y conseguir armamento de armas. Y simplemente vamos a regresar, devolver las armas. Son. Ahí vamos. Entonces ese fue un reto duro, lo sé, pero espero que al menos intentes llegar a la mitad. Entonces consigue armas. No está apareciendo porque es una transformación pública. Ponte las armas. Por lo que jugador controlador punto obtener arma. Ah, entonces jugador controlador de bala. De acuerdo, Así que controlador jugador consigue arma arma. Y ahí vamos, ahorramos eso. Volvemos a nuestro juego. Y veamos cómo funciona eso. Entonces tenemos la histona y tenemos la escopeta en el suelo. Recogemos la escopeta, el arma disponible en ella, guarde eso, ejecutamos el juego. Y ahora cuando nos acercamos a la escopeta, no pasa nada porque si hago doble clic aquí, podemos ver eso, vale. Y aparte de eso aquí, llegamos a revisar. Está bien. Así que bienvenido de nuevo. Por alguna razón, no cambié nada. Acabo de ejecutar el juego ahora y parece que funciona. Ahí vamos. Se puede ver que hemos recogido dos escopetas. ¿Por qué es eso? Bueno, obviamente por los dos colisionadores que tenemos sobre nosotros. Y además no destruyas esta escopeta. Pero como pueden ver, seguimos levantando la escopeta varias veces, pesar de que podemos mirar a través de esto y ver que tenemos la escopeta ya honesta ahora. Entonces antes de continuar, lo primero que tenemos que hacer es crear el booleano privado, igual que tenemos en la camioneta de salud. Entonces podemos simplemente copiar esto, pegarlo aquí, y dijo que la camioneta a verdad siempre que realmente levantamos el arma. Por lo que aquí dijo esto de inmediato a cierto. Y también comprobamos si aún no hemos recogido el arma. Entonces como saben, esto es porque tenemos los dos colisionadores sobre nosotros. Entonces guarda eso de nuevo en nuestro juego. Veamos cómo funciona eso. Ahora, ejecutamos el juego. Tenemos la escopeta. Ah, y también necesitamos destruir el arma, discúlpeme. Y después de que sí lo recojamos, si sí instanciamos el arma, ¿dónde está para cada uno? Por lo que aquí puedes elegir si quieres destruirlo en cualquier caso. Creo que deberíamos destruirlo en todo caso. Entonces aunque en realidad no lo recojamos, no hace falta que se quede ahí. Entonces solo voy a destruir el objeto tan pronto como capa profunda realmente encabeza ese objeto. Entonces de vuelta aquí, corre el juego. Y ahí vamos. Recogemos el arma, y ahora tenemos la escopeta y la mano. Como pueden ver, la escopeta dispara y no podemos encender y salir las armas entre la escopeta o la pistola. ¿ Por qué es eso? Bueno, porque en realidad no hemos agregado la escopeta aquí mismo a las armas disponibles y eso es algo que tendremos que arreglar en el próximo video. Esa es también la razón por la que vimos aquí mismo que tenemos múltiples escopetas siendo recogidas sin que se destruya el arma. Eso se arreglará en el siguiente video donde realmente empezamos a sumar el arma recogida a las armas disponibles. Entonces dicho eso, espero que lo disfruten. Asegúrate de comprometer tus cambios y te veré en el siguiente. 64. Añadir armas captas: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, en realidad hemos empezado a añadir la escopeta, rifle y el pistilo, que son las armas a nuestras armas disponibles. Entonces ahora cuando ejecutemos el juego, notarás que cuando todos nosotros, también agregamos un poco de rotación, lo que hace que nuestro juego sea mucho más fresco. Entonces ahora cuando recojo la escopeta, ahí vamos. Se puede ver que tengo el arma de tiro en la mano. No sólo eso, si entro al jugador de la perdición, se puede ver que ya está aquí. Y no sólo eso, cuando cojo la pistola, por ejemplo, Ahí vamos. Se puede ver que a pesar de que está destruido, en realidad no recogerlo. Y finalmente, el rifle y recogerlo. Es aquí en nuestras armas, están en nuestras armas disponibles. Podemos cambiar entre ella, hace esto lo cual automáticamente, ¿qué tan cool es eso? Todas las mecánicas son perfectas. Entonces, no perdamos más tiempo y empecemos. Ah, está bien. Entonces mientras te movías entre videos y dejabas críticas para mí porque me ayuda mucho. He creado dos armas más, camioneta 14, la pistola 14 el rifle, y obviamente es muy fácil. Todo lo que hice fue solo duplicar la escopeta, recoger en el sprite y agregar el arma y la camioneta de armas. Entonces voy a entrar a las Prefabs, veamos y oigamos las pastillas. Y llamemos a esto la carpeta o sabes qué, Qué hacer eso solo deja que las escopetas, pistola, rifle guarden eso. Genial. Ahora el siguiente paso es empezar realmente a sumar en el jugador a las armas disponibles. Entonces tendremos que crear algún tipo de método para hacer eso. Y va a ser tu reto crear un método que se suma a las armas disponibles. Por lo que necesitarás crear un método que tome un parámetro, los contras a agregar, el arma a agregar, o el arma para agregar como quieras llamarlo, necesitas agregarla a la lista de armas o armas disponibles. Entonces te voy a dar un pequeño indicio de cómo puedes agregar a cualquier lista que tengas y solo usar el punto add con dentro de ella. También puedes ir por las documentaciones de Te he dejado la lista de documentación sobre cómo puntar a una lista. Así que pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. ¿ Cómo te llevaste con eso? Entonces voy a seguir adelante y desplazarme hacia abajo. Y aquí dentro. Y mantenemos estos métodos solos y creamos métodos aquí. Esto es solo un criterio de organización para mí, tal vez tengas algo diferente y formas. Vacío público. Agrega dos armas disponibles y abre los soportes, como ya he dicho, el sistema de armas de palos y armas. Y tenemos el arma que añadir. Abre los círculos aquí mismo. Y simplemente vamos a conseguir lo disponible, abre el anuncio, y tenemos el arma para agregar. Ahí vamos. Eso es todo lo que necesitábamos hacer. Y por último, cuando realmente sí recogemos el arma aquí dentro, instanciamos el arma. También obtenemos el componente get de colisión , el controlador de capas. Y agregamos dos armas disponibles. ¿ Qué agregamos? Bueno, queremos sumar el arma que hemos creado aquí. Entonces voy a conseguir una referencia al intercambio va a ser de tipo sistema de armas. Ahí vamos y ver arma para agregar es igual a esto. Entonces arma para agregar, guarda eso de nuevo en nuestro juego. Vamos a ejecutar esto. Y ahora, cualquier día ahora ejecutan esto. Y ahora deberíamos ver que tenemos la pistola y él, ahora van. Y finalmente tenemos el pistilo. Ahora levantamos la escopeta para que podamos ver que podemos cambiar a la escopeta aquí mismo y se puede ver en las armas disponibles. Por último, tratamos de recoger la pistola. Como puedes ver, no conseguimos la pistola, solo conseguimos la escopeta y ahora cogemos el rifle. Tenemos el rifle. Podemos cambiar entre ellos. Y como puedes ver aquí mismo, ahora, hubo un ligero problema que quizá no te hayas dado cuenta. En primer lugar, cuando corra el juego, déjame mostrarte esto otra vez. Entonces cuando recoja la escopeta, Está bien, Eso está bien. Tengo la escopeta fui yo. Pero cuando cojo el rifle, se puede ver que en cuanto empiezo a disparar, primer lugar, tenemos la pistola y el rifle. Ambos trabajando, entonces necesito cambiar de alguna manera entre ellos para recogerlo. Entonces esto es algo que tendremos que arreglar. Y para ello, voy a volver a la visita. Por lo que a las armas disponibles. Y aquí dentro voy a asegurarme de poner el arma actual y lo que debería ser. Así que establece el arma actual. ¿ Y qué tiene que ser? Bueno, sólo voy a escribirlo y luego te explicaré. Por lo que las armas disponibles punto cuentan minús2, y luego voy a cambiar el arma. ¿ De acuerdo? Y por cierto, cambia el arma. ¿Cuál es? ¿ Cuál? De acuerdo, Así que cambiando. Entonces como pueden ver, esto no estará funcionando. ¿ Por qué? Porque el interruptor se ha ido realmente requiere que presionemos la tecla Tab. Entonces si accedemos a este método y tratamos de usar la tecla Tab, no funcionará. Entonces lo que vamos a hacer es en cambio vamos a extraer todo este método. Haga clic con el botón derecho aquí. Acción rápida y refactorización, extraer el método. Y este será el, sólo llamémoslo interruptor de arma real. Aplique el cambio, guarde eso. Entonces ahora en realidad podemos hacer el cambio de pistolas reales aquí. Y espero que eso quede claro por qué hicimos esto. Porque de nuevo, eso solo te puede mostrar que tenemos cachorras. Intentamos llamar a la pistola de interruptores, pero la pistola de interruptores no funciona a menos que presionemos la tecla Tab. Entonces lo que haremos es que solo extraeremos este método aquí. Por lo que ahora el interruptor se ha ido funciona completamente bien. Pero lo único que tenemos es que en realidad podemos cambiar el intestino, el interruptor de arma real. Entonces de vuelta aquí, ¿dónde está el real puede cambiar? ¿ Por qué tenemos el conteo de puntos de arma disponible menos dos? Primero que nada veamos si esto realmente funciona. Por lo que de vuelta en nuestro juego, ejecutamos el juego. Y vamos a recoger la escopeta. Ahí vamos. Se puede ver que la escopeta es la única arma que está funcionando. Y ahora cuando cogemos el rifle, ahí vamos. El legítimo es lo único que estaba funcionando. Y presiono tab apenas fuera de reacciones o intentemos esto otra vez. Conviértete en la escopeta, recoger el rifle es el único que funciona. Genial. Ahora de vuelta aquí, ¿por qué tenemos el conteo de puntos de armas disponibles? Pensemos en esto por un momento. Digamos que cogemos un arma. Entonces digamos que sólo teníamos el pistilo, teníamos 0, sólo teníamos un arma y el conteo era uno. Ese índice de pistola fue 0. Digamos que cogemos la escopeta. Entonces recogemos la escopeta. Ahora tenemos el conteo igual a 2 y tenemos la escopeta en la posición 1. Entonces, ¿cómo vamos a asegurarnos realmente de que sólo tengamos la escopeta? Conseguiríamos el conteo de puntos de armas disponibles, que en este momento es alrededor de dos, se quitarán dos. Eso significa que estamos en 0 y luego hacemos el interruptor real y el interruptor real tan pronto como se inicia. Si miramos aquí arriba, se puede ver que en cuanto empecemos obtenemos el arma más actual, además. Por lo que aumentamos en uno y esto funcionará en todo caso. Entonces digamos que también recogimos el rifle. Entonces ahora el conteo es 33 menos dos es uno. Eso significa que estamos en uno, que es la escopeta. Pero cuando realmente hacemos la pistola de interruptores, aumentamos. Conseguimos dos y obtenemos la escopeta disponible. Yo lo sé. Confuso, ¿no? Se puede volver a ver lo que dije. Estoy bastante seguro de que lo he dicho todo correctamente. Por lo que esta es solo una manera de asegurarnos de que siempre obtenemos la taza correcta y adecuada. Entonces espero que hayan disfrutado en el siguiente video, queremos solo agregar un poco más de, digamos, emoción. Siempre que queremos recoger un arma, no sólo queremos tener las armas tiradas en nuestro mundo. En realidad queremos tener no son, tal vez algún tipo de cofre, pecho que se abrirá cuando nos acerquemos a él o presione un cierto botón cuando estemos cerca de él y luego que aparezca el arma de él. Entonces creo que me quedan un par de minutos en este video. Ha sido corto. Entonces lo que voy a hacer es que voy a conseguir la camioneta de rifle o la recogida de escopeta. Y voy a crear una animación aquí. Entonces solo para que sea un poco más agradable para continuar hacia dónde está, haga clic derecho aquí. Crear un nuevo arma. Copia de seguridad. Golpe Entrar apertura, estás girando arma, rema, la cosa, arma, recoge. Y esto no es nada nuevo. Nosotros sólo vamos a hacer es que vas ver en sólo un poco para la cosa, arma, recoger, guardar eso. Entonces consigue la escopeta. Dejar de grabar. Y quiero tener una rotación alrededor de la segunda para estar sobre esto. Sí, seguro. Por lo que 90. Y en el segundo, segundo, segundo, segundo, segundo, la rotación debe ser alrededor de 180. Ahí vamos. Y luego sumar los tres segundos. Deberíamos estar en 270, casi 70. Y finalmente en el segundo cuatro, tenemos 362. A ver cómo se ve eso. Está bien, parece bastante bueno. Entonces este es el arma giratoria, pero también podemos hacer un par de cosas aquí mismo si elegimos todas ellas derecho y se puede ver que podemos crear algún tipo de tangente. Podemos elegir tanto tangentes como hacerla tal vez lineal. Entonces ahora la rotación, sólo cambiaremos un poco. Ahí vamos. Se puede ver que sigue girando, realmente agradable. También podemos hacer lo mismo y aquí. Entonces te voy a dejar el resto. Esta es solo una forma de tener un juego un poco más agradable. Por lo que ahora se puede ver que tenemos esta escopeta que tendremos que recoger. Ahí vamos. Nosotros lo recogemos. Todo está funcionando perfectamente bien. Por lo que espero que lo disfruten. Espero que estés escenificando tus archivos y te veré en el siguiente video donde creamos un solo se abre y nos pone, nuestros títeres. Nos vemos entonces. Oye, pensaste que te habías librado de mí, pero no, todavía tenemos un poco de tiempo para algo y yo solo estaba preocupado por una cosa que tal vez quieras ir y crear una animación para cada arma. Pero no, no tienes que ir justo aquí hasta la escopeta. Simplemente puedes hacer clic en estas tres pequeñas teclas aquí mismo, o botones o como quieras llamarlas. Y se puede ver que en realidad se puede copiar todo este componente. Entonces, cuando lo copies, déjame volver a la pistola. Ya he hecho esto Remove Component, sala de componentes. Por lo que en la escopeta de vuelta aquí, copiamos el componente. Entramos a la camioneta de pistola que no gira. Hacemos click en cualquier componente que queramos. Y puedes ver aquí mismo que podemos Pegar Componente como Nuevo. Entonces cuando hago click en el Paste, ahí vamos. Se puede ver que ahora tiene el controlador de la escopeta. Y podrías pensar aquí mismo que tal vez esto no sea una buena idea. Deberíamos habernos llamado algo diferente a la camioneta de escopeta, pero no te preocupes por ello. Lo que buscamos es la animación aquí mismo, que sólo afecta la rotación. Por lo que no cambia los sprites, sólo afecta la rotación de un objeto de juego. Por lo que no tendremos que preocuparnos de Está cambiando los sprites y esta es una forma más rápida para nosotros. Añadamos eso también al rifle. Por lo que esta es una forma muy rápida para que tengamos objetos giratorios y no tengamos que crear animaciones cada vez. Entonces cópielo, corre el juego ahora deberíamos ver que todas las armas lo escribieron alrededor. Ahí vamos sin cambiar nada y siguen trabajando al estilo de lista. Vamos rifle, aún no se recoge porque ya tenemos la pistola con nosotros. ¿ Qué tan guay es eso? Espero que haya disfrutado. Perdón por volver. Sé que ya estás muy molesto. Este es un paso solo para ahorrarte tal vez un par de minutos, horas, lo que sea que te lleve crear animación. Por lo que espero que disfruten palanca de ustedes. Te veré en el próximo. Esta vez de verdad. 65. Crear un pecho que te abre: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos en este video y este largo video, nuevo, vamos a estar aprendiendo a crear un cofre. Pero esto es un realmente cool sólo porque cuando nos acercamos, nos dice que podemos presionar la e para abrir el pecho. Si presionamos la E, verás que obtenemos un cofre abierto. Ahí vamos. Entonces esto es todo lo que hemos hecho. Entonces, no perdamos más tiempo y empecemos. Oh, bien, bienvenido de nuevo. Entonces ahora sabemos cómo podemos recoger las armas. Podemos añadirlos fácilmente al jugador, podemos disparar con ellos. Actualizamos la interfaz de usuario, todo está funcionando perfectamente, pero como hemos dicho, queremos agregar un poco más de sabor a la forma en que realmente conseguimos estas armas. Y la forma en que vamos a hacer eso es tener un cofres y nuestros niveles en los que podemos dar click. Se abren, nos dan el arma, recogemos, seguimos con nuestro juego. Entonces sigamos adelante y hagamos eso. Voy a eliminar la camioneta de tres armas. Voy a entrar a los sprites y antes obviamente antes de que los borres, necesitamos tenerlos como prefabs. Entonces entraremos a los sprites. Vamos a hacer clic aquí, crear una carpeta para el cofre. Haga doble clic aquí y entra en la visita a los recursos, arrastre los cofres. Obviamente, si puedes encontrar por sus cofres, recomiendo que vayas por ello. Voy a hacerlo múltiple. Voy a hacerlo por punto. El modo de filtro ir a este orgullo, aplicar obviamente. Y ahora sigamos adelante y rebanemos esto. Creo que el automático debería funcionar perfectamente bien. Ahí vamos, aplicamos los cambios. ¿ Qué caja quieres elegir? Escogeré el dorado. Entonces el, éste y éste cuando se abre. Por lo que necesitaremos tener aquí dos tipos de sprites, 140, pecho abierto 14, el cerrado. Voy a arrastrarlo y añadirlo al mundo aquí mismo y ponerlo en la capa de jugador. Obviamente es extremadamente pequeño. Entonces voy a cambiar esto del cofre del tesoro al cofre de armas, y hagámoslo un poco más grande. Entonces creo que 16 tal vez 16 es demasiado grande. Es demasiado grande de pecho. No, creo que ya es lo suficientemente bueno. Ahora vamos a ir a los guiones haciendo clic derecho o no, ¿tenemos algo pickups, nivel flow? ¿ Tenemos una carpeta adecuada para el Nope, no tenemos una. Entonces voy a hacer clic con el botón derecho para crear una carpeta para las armas. Simplemente copia eso dentro de aquí. ¿A dónde fuimos? Armas. Pero lo sentimos por eso. El arma está bien. Por alguna razón. Acaba de abrir alguna carpeta diferente todos modos, creamos esto. Son las armas, cofre. Hit Enter, espere a que se compile. Y cualquier día ahora lo agregamos a las armas reales, justo y abrimos el guión. De acuerdo, entonces, ¿qué necesitamos tener aquí dentro? En primer lugar, queremos que esto sólo nos dé armas al azar. Entonces qué vamos a hacer, y esto es sólo un mecánico que quiero tener. A lo mejor te gustaría crear algo diferente, pero por ahora campo serializado, la camioneta de armas. Y va a ser una, una matriz con las armas potenciales. Entonces las armas potenciales, entonces voy a crear un renderizador sprite privado. ¿ Qué hace, verdad? Renderizador. Y va a ser el pecho como R. Y lo entenderás todo. Pero por ahora, sigamos. El obviamente el sprite justo renderizar esto será, necesitamos una referencia al ancho. Lo entenderás en solo un poco. Ahora voy a crear otro campo serializado, sólo va a ser un sprite. Y ese sprite va a ser el open just sprite. Y entonces vamos a tener algún tipo de texto. Y debido a que necesitamos estar usando el motor Unity Wi, ahora podemos acceder al texto y va a ser el texto de clave abierta. Abrir textos clave. Y no me refiero a la llave, la llave que nos permitirá abrir el cofre. Bueno, como que sí, pero la tecla, ¿ qué tecla presionamos en el teclado para abrir el cofre? Ahora que pienso, tal vez por eso nombraron a la Vault Clave tal vez. Y con lo privado, finalmente, necesitamos un booleano para asegurarnos de que podamos abrir. Eso significa que vamos a estar en las inmediaciones de esto. Y pecho. ¿ Y por qué ante todo, preguntó, por qué necesitamos el renderizador sprite de pecho y por qué necesitamos el sprite de pecho abierto? Bueno, porque cuando abrimos pecho, ahí tienes. Cuando vemos el sprite, sólo un segundo. Cuando vemos tenemos dos sprites, uno para el cierre 1, 1 para el abierto. Por eso necesitamos una referencia al renderizador sprite para cambiar este brillante cuando realmente abrimos el cofre. Entonces voy a seguir adelante y añadir el sprite de pecho abierto, las armas potenciales. Voy a añadir eso y simplemente bloquear esto por un segundo a los Prefabs. Pickups, V3 armas. O incluso si lo deseas puedes agregar lo útil. Entonces, para que tal vez consigues la ayuda del pecho y corto, hagámoslo. Añadamos también la salud sólo por diversión. Ah, está bien. Entonces es un, es una matriz de lo que hace el sistema de armas. Entonces o lo siento, pastillas de armas o no podemos agregar los ratones de salud. Eso algo que no me di cuenta. Pero de todos modos, sigamos y empecemos. Necesitamos obtener una referencia al renderizador sprite. Por lo que el cofre como r es igual al renderizador sprite componente de deuda. Ahí vamos. Por lo que ahora tenemos una referencia al mismo. Y cuando realmente abrimos el cofre, queremos cambiar el sprite por algo diferente. Ahora antes de continuar uno, recuerdo la pequeña pista que di en el video anterior. No queremos que cada vez cree el si la etiqueta es el jugador. Entonces sigamos adelante y creemos una nueva capa. Capas. Oh, está bien, entonces tenemos que quitar esto. Y vamos a crear las pastillas. Hit Enter. Y ahora a donde podemos ir y poner todas estas pastillas para que estén funcionando o todas tengan las pastillas de capa. Guarda eso y ahora ve a la Edición, lo siento, Editar configuración del proyecto. ¿ Dónde está? Física, 2D, y las pastillas, todos los interactúan con el jugador. Entonces voy a apagar todo excepto el PLR. Nosotros guardamos eso, volvemos atrás. Ahora nos aseguraremos de que esto incluso el cofre, podemos asegurarnos de que realmente deberíamos hacerlo como la camioneta también. Por lo que solo interactúa con un jugador y no necesitamos revisar la etiqueta cada vez. Entonces, ¿qué hace esto también? Entonces ahora, ¿qué más tenemos que hacer? Bueno, necesitamos crear un lienzo para este cofre que tendrá algún tipo de palabra aquí mismo o textos que se mostrarán. Por ejemplo, presione E para abrir el cofre o presione C o lo que sea. Entonces voy a hacer clic derecho en las armas, solo baja a u i y crea un lienzo. Realmente agradable. Por lo que ahora se puede ver que tenemos un, otro enorme lienzo. ¿ De qué vamos a hacer? Obviamente, no queremos que sea tan grande. Entonces lo que podemos hacer, podemos establecerlo como el espacio mundial justo aquí. Y esto nos permitirá cambiar la escala aquí mismo. Entonces voy a establecer la escala en 0.01 en la x, 0.01 en la y Y sólo vamos a mantenerla en 0 o la Z en 1212 factores. Voy a cambiar la posición a 0. Y se puede ver lo pequeño que es el lienzo en este momento, esta casita de aquí. Y voy a cambiar la x y la y a 0. Ahora hago doble clic en las armas justo y ahí tienes. Se puede ver que aquí tenemos el lienzo. Entonces ahora voy a añadir otro 0 y aquí, y tal vez otro también en la Y. Vale, eso es demasiado pequeño. Y quizá intentemos bien. Eso es demasiado. Perdón. Y tal vez solo lo hacemos alrededor de 35, vale, cinco en la y y en la x. Excelente, así que ahora lo tenemos Eso es restablecer su posición de nuevo en estos 000, tal vez aumentar la plantilla de altura. Y llamaremos a esto el Lienzo del pecho. Y como puedes ver ahora es un lienzo muy pequeño y tenemos que asegurarnos de que sea el espacio mundial y ahora se abra. Y en el pecho Lienzo, voy a seguir adelante y crear un texto Mesh pro. Y este texto mucho Pro va a decir abierto, presionar tecla, presionar E para abrir el pecho y entrar esto un poco abajo. Hazlo audaz, haz la fuente robot que tenemos, y hazla de tamaño automático. Y veamos cómo se ve eso. Voy a volver a acercar y hacer esto un poco más grande. ¿ Dónde está el color del texto? En tanto que el texto de todas formas, no lo veo. Ah, caso. Entonces lo que necesitamos hacer es que también necesitamos cambiar esto a esta capa de clasificación. Y ahí vamos, podemos ver que el texto es, y aquí, y yo estaba probando esto en el 2D. Me preguntaba qué pasaba. Y pensé que tal vez si estamos en 3D, podría cambiar la posición Z. Pero no, resulta que en el real sólo Canvas. Tenlo en el espacio mundial. Puedes elegir la capa de clasificación y haremos en la capa de jugador. Y voy a asegurarme de que esto sea audaz, de tamaño automático. Y vamos a mover un poco el texto hacia arriba, así que aquí es donde aparecerá. Y voy a aumentar el tamaño y nos aseguraremos de que el máximo sea más grande. De acuerdo, Así que aumenta el máximo tanto como sea posible y podemos redimensionarlo al contenido de tu corazón. ¿ Cuánto quieres, qué tan grande quieres hacerlo? ¿ Qué tan pequeño quieres hacerlo? Vuelve a ti. Entonces lo voy a armar aquí, guarde eso. Ahora lo siguiente es que entraremos en las armas, solo vamos a sumar un par de colisionadores. El primero será un colisionador que sólo se asegurará de que mantenemos las cosas intactas. Y luego asegúrate de que no solo caminemos por el pecho y luego haremos un segundo colisionador de cajas. Y éste será un detonante. Y voy a cambiar su tamaño para ser aproximadamente yea grande, tan capaz más grande que la caja real. O si nos encontramos en esta posición, podremos abrir la caja. Entonces guarde todo eso, asegúrese de que sea un disparador. Ahora lo que vamos a hacer es emitirte un reto. Y tu reto es saber qué hay en la caja. Si conoces esta imagen, lo sabes. Si no conoces la referencia, entonces es tu problema. Entonces de todos modos, abrió la caja bajo ciertas condiciones. Por lo que queremos abrir la caja. Nosotros queremos estar presionando el parecido. Tenemos que asegurarnos de que queremos estar pie junto a la caja cuando la estamos abriendo. Entonces cuando no estamos parados dentro de la caja, no queremos tener la capacidad de abrirlo. Y además asegúrate de mostrar el texto cuando estemos al lado de la caja. Por lo que hay que tener dos vías. Ya sea que estemos cerca de la caja o no estamos cerca de la caja, estaremos mostrando el texto y podemos abrirlo si estamos al lado o no. Por lo que la formación de patrones con estas condiciones en tu mente, pausa el video ahora mismo y ve a hacer lo siguiente. De acuerdo, bienvenido de nuevo. Entonces voy a empezar porque ya hemos perdido mucho tiempo en detalles y formas simples. Estamos en el Trigger Enter. No vamos a estar revisando la etiqueta de jugador por ahora. Y vamos a asegurarnos de que los puntos de texto clave abierta GameObject estén activos sea cierto. Entonces lo estaremos apagando y sólo cuando estemos dentro del colisionador lo vamos a abrir y en el gatillo del brazo salida 3, vamos a tener lo mismo y sólo lo vamos a poner aquí. En lugar de cierto, va a ser falso. Excelente. Ahora, lo que es lo siguiente que queremos hacer es que queremos asegurarnos que podamos abrir y que se ponga en realidad. Y si no lo estamos, entonces set puede abrir. Bueno, solo hago de esto un paréntesis. No, puede abrir z igual a verdadero y puede abrir es igual a falso. Ahí vamos, guardamos eso. Y sólo tengamos una actualización aquí. Lo quitamos y sólo vamos a estar depurando. registro de puntos se puede abrir igual a puede abrir. Ahí vamos. Eso lo guardamos. Cuál es el problema Booleano en un objeto. Por alguna razón, me acabo olvidar todo el contexto y el mundo. De acuerdo, con eso hecho, volvamos a registrarnos. Aquí. Corremos el juego. Tenemos en nuestra consola. Es falso, falso, falso, falso. Cuando entramos a la caja, ahí vamos, obtendríamos un error. Excelente. ¿Por qué es eso? Porque obviamente nos olvidamos de establecer el resultado va hacia abajo, baja el texto. ¿ Qué tan grande es eso? O, y también nos olvidamos, espero que algunos de ustedes recojan en esta sonda DTM. Y esto no es cualquier texto, es un texto Mesh condicional Gui. Entonces guarden eso, vuelvan aquí y ahora deberíamos ver que agregamos el texto, guarden eso, ejecuten el juego. Ah, y una cosa más, discúlpame. Tenemos que asegurarnos de que volteemos el texto. Simplemente guarde eso. Otra vez. Hagamos esto un poco más grande. Por lo que nosotros falsos, Falso, Falso podemos abrir. Entonces corremos aquí, se puede abrir verdadero. Tenemos la prensa Cofre E. Y finalmente el último paso en realidad queremos una actualización aquí. Quitemos esto. Sabemos lo que funciona. Nos vamos a asegurar que si el punto de entrada bajan la tecla, abrimos este código de tecla arriba, el e. Entonces cuando presionamos E y podemos abrir, entonces vamos a conseguir el cofre como nuestro sprite. Y va a ser igual a lo abierto. Sólo sprite. Guarda eso de nuevo en nuestro juego. Ahora ejecutamos el juego. Nos paramos junto al pecho. Si presionamos la tecla E justo aquí, no, No podemos hacer nada si nos gusta justo aquí. Ahí vamos. Podemos abrir el cofre. ¿ Qué tan guay es eso? Entonces espero que hayas disfrutado este pequeño tutorial sobre cómo crear cofres. En el siguiente video en realidad estarán apareciendo algunas armas cada vez que abramos el cofre. Entonces te veré luego se asegura de comprometer tus cambios. Y allí te veré. 66. Qué Spawn: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos en este video, cuando ejecutamos el juego son simplemente no acaba de abrir. Se abre y nos da en mapeo aleatorio. Lo recogeremos y empezamos a disparar. Y lo mejor es que si seguimos presionando así, no tenemos más armas. Verás por qué esto es algo tan increíble de hacer. Y un par de minutos, así que no perdamos más tiempo. Y empecemos. K. Por lo que ahora tenemos nuestra abertura en el pecho. En realidad queremos engendrar algún tipo de arma. Entonces lo que haremos es que vamos a instanciar una de las armas potenciales. Dónde está en las armas justo aquí. Ahora, hay una cosa más que debemos tomar en consideración, y es cuando engendramos una de estas pastillas. Está en el pecho de inmediato y el pecho es sólido. Entonces lo que vamos a hacer es que vamos a crear un punto de desove de spam, spam, spam aquí. Y estamos llamando a punto de desove. Y sólo lo moveremos un poco hacia abajo. Y aquí es donde sólo puedo hacer esto más grande. Y aquí es donde nos va a engendrar el arma y sólo la vamos a poner por aquí. Y si quieres, también puedes agregar a cada una de estas pistolas la camioneta, la capa D. Creo que es una buena idea porque si el jugador está parado justo frente al pecho, ni siquiera veremos cuál era el arma. Entonces es una buena idea. Es bastante fácil. Sólo tienes que añadir el guión. Tal vez lo hagamos más tarde. Pero por ahora, mantengámonos enfocados en lo que tenemos. Estamos entrando en las armas justo y aquí vamos a crear un campo serializado extra el cual es de tipo transformado, y va a ser el punto de desove. Guarda eso de nuevo en Unidad, espere a que se compile y armen justo ahí vamos. El punto spot que ahora lo que vamos a hacer es aquí dentro queremos crear un número aleatorio, o al menos cuando en realidad presionamos la tecla creará un número aleatorio. Y a partir de ese número aleatorio vamos a instanciar uno de los gametos potenciales. Entonces te lo voy a emitir como un reto, así que necesitarás gastar las armas recogidas. Aquí dentro. Deberíamos tener recogida. Por lo que necesitarás crear un número aleatorio. Tendrás que instanciar una de las armas potenciales. Y tendrás que asegurarte de que esté en la posición del punto de desove. Entonces con eso dicho, pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces después de cambiar el sprite, vamos a crear un int, un arma aleatoria, un número de arma, y es igual a rango aleatorio. Y el rango es del 0 al potencial, potencial de armas de longitud de punto. Y aquí dentro vamos a seguir adelante e instanciar. Instantiate abre ¿cuál es el objeto? Van a ser las armas potenciales en la posición, el número de arma aleatoria, la posición de punto de spam y el punto de spam 0, 0, 1. Guarda eso. Y ahora volvamos y a nuestro juego. Creo que esto es todo lo que tenemos que hacer. Está bien, volvamos. Hagamos esto un poco más grande. Ejecuta el juego. Párate junto al pecho, golpea la igual. Ahí vamos. ¿Qué tan guay es eso? Ahora tenemos la escopeta, realidad podemos recogerla y empezar a disparar. Ahora, hay una cosa más que debemos tomar en consideración. Y entonces puedo engendrar como dinero, armas como quiera, es algo que podrías pensar que es bueno. Pero en realidad, no lo es. A lo mejor sí quieres tener esto, a lo mejor no. Y te voy a dar oportunidad de hacer esto por tu cuenta. Pausa el video si quieres. Esto no es un reto oficial. Te daré un par de segundos. Pausa el video, averigüe cómo podemos detener esto. O K se acabó el tiempo. Entonces aquí voy a añadir un, otro booleano que es el ha sido abierto. Se abrió, se abrió. Y aquí dentro, después de que realmente abrimos el cofre, el se ha abierto igual a verdadero. Y otra condición aquí dentro, si no se ha abierto, guarde eso, y quiero agregarla a otro lugar. Y es aquí donde volvemos a hacer realidad a la Vicky. Entonces aquí voy a decir, discúlpame, eso es mucho. Si no se ha abierto, entonces vamos a encender esto. Guarda eso. Y si estamos fuera, entonces simplemente lo pondremos en falso y nunca abriremos una cuenta. Por lo que no queremos seguir viendo el texto cuando ya hemos abierto ese cofre. Entonces ejecutamos el juego. Tenemos el cofre. Nosotros lo abrimos. Tenemos la escopeta que intentó abrirse en otra ocasión. No, no podemos si regresamos, eso es todo. No lo vemos porque ya abrimos y recogemos nuestra app y rodamos por ahí. Tenemos un asombroso desove de armas, apertura de pecho, mecánico de recogida que funciona perfectamente bien. Por lo que espero que lo disfruten. Y si quieres tener algún reto extra en el costado, tal vez crea algún tipo de animación para el pecho donde puede ser tambalea izquierda y derecha antes de que se abra. O no lo sé, tal vez agregue algún tipo de animación extra si tiene para que el pecho se encuentre en sí mismo. Con eso hecho, asegúrate de comprometerte siempre tus cambios si aún no lo has hecho, ya conoces el simulacro. Yo me ayuda mucho cuando dejas una opinión positiva 1, por supuesto, una reseña sobre el curso Atlas, la plataforma. Sepan que soy el autor de este curso vale la pena ver, vale pena mostrarle a otras personas y se unió a la discordia obviamente, si aún no lo han hecho, y espero que hayan disfrutado de esta sección. Fue realmente agradable. Aprendimos mucho. Y el siguiente, no estoy seguro de qué vamos a hacer, pero estoy seguro de que lo averiguaremos por ellos. Entonces, no perdamos más tiempo y vayamos a la siguiente sección. 67. Sección 11: música y SFX: Bienvenido de nuevo mis compañeros desarrolladores de juegos a una de las partes más emocionantes. A lo mejor es un poco más pequeño cuando se trata de la duración de los videos. Estoy en la longitud de toda la sección, pero realmente hace mucho mayor diferencia en nuestro juego. Entonces ahora cuando ejecutamos el juego, Ahí tienes. Se puede ver que tenemos en la música, caminamos por ahí, disparamos a nuestros enemigos. Tratamos de matar al esqueleto, y por alguna razón morimos. Todo mi dios. Oh, Dios mío. Cuánto sientes la presión ahora que hemos aplicado campos tan aterradores que morimos. No sólo tenemos la pantalla negra para que hayas muerto, sino que también tenemos la música cambiando sobre nosotros, lo que añade un ambiente muy aterrador. De acuerdo, tal vez no tanto, pero sientes la gravedad de tu muerte mucho más en este momento. Entonces, sin más preámbulos, no perdamos más tiempo, y empecemos. De acuerdo, entonces es hora de agregar un poco de música y efectos de sonido. Por supuesto, me encanta esta parte del juego porque aquí es donde le agregamos la magia al juego, donde lo hacemos solo un poco más increíble. Entonces primero, primero, voy a entrar a los Prefabs y voy a Prefab las armas justo y vamos a añadirlas al Seguro. Añádalo a las pastillas. ¿Por qué no? ¿ Por qué no? O nivelar objetos, tal vez los objetos de nivel habrían sido un mejor lugar para ponerlo. Entonces voy a mover estos a los objetos de nivel. De acuerdo, genial, saca eso del camino. Vamos a entrar en los activos. Vamos a hacer clic aquí y crear un audio. Sólo todo lo que haga doble clic aquí. Y voy a crear dos carpetas, una para la música y otra para los efectos de sonido. Simplemente llámalo como f x. Por algún hecho, voy a entrar en los recursos. Y aquí se puede ver que tenemos estas cuatro músicas. Adelante y sumémoslos todos. No estoy seguro de cuál vamos a estar usando, así que voy a sumar los todos a la música. Espere a que eso. Si lleva demasiado tiempo, voy a usar la magia de editar 0. Y ahora vamos a entrar en los efectos de sonido. Por lo que como zorro, los seleccionaré a todos excepto a estos dos. No estoy seguro de por qué siguen ahí, pero voy a seguir adelante y añadirlos hasta los efectos de sonido y esperar a que se agreguen. Está bien, genial. Entonces hagamos doble clic en la música y veamos qué tenemos aquí dentro. Entonces si hago clic sobre la marcha y si traté de encender el volumen del mismo en mi computadora, puedo escucharlo. Escucha un adelanto de la misma. Está bien. Por lo que obviamente puedes oírlo. Entonces ahora lo que haremos es que vamos a tocar esa música y nuestro juego. Y es bastante simple. Siempre que quieras reproducir música, simplemente puedes arrastrarla aquí. Ahí vamos. Se puede ver que ahora Hagamos esto más pequeño. Se puede ver que aquí tengo la mosca. Y una de las cosas geniales que podemos hacer es que simplemente podemos salir del juego en este momento. Y se puede ver aquí tenemos una opción que es jugar en despierto y el bucle. Entonces lo voy a poner a bucle porque no queremos que la música realmente cuando termine la canción real. Entonces ahora cuando corro el juego, y obviamente no pasa nada. ¿ Por qué es eso? Bueno, porque la música en realidad no está sonando despierto. Ah, está bien. Por lo que me tomó unos tres a cuatro minutos averiguar cuál es el problema. Estaba tan confundida y tenía el ánimo propio. Entonces ahora cuando lo apago, cuando ejecutamos el juego, Ahí vamos. Se puede ver que empezamos a tocar la música. Yo sólo voy a bajar esto. ¿ Y cómo estamos tocando esta música? Yo quiero que presten atención a lo que tenemos aquí dentro. Usamos algo llamado la fuente de audio. Y la fuente de audio, se puede ver que tiene un clip de audio en ella. Entonces el clip que vamos a reproducir una salida cual hablaremos más adelante cuando agreguemos un mezclador de audio, tenemos la prioridad, el volumen, la playa, y etcétera Así y también tenemos sonidos 3D que con lo que puedes jugar. Por lo que como puedes ver, cuanto añadamos cualquier tipo de música a nuestro juego, podemos reproducirla de inmediato. Pero obviamente así no es como queremos que funcionen las cosas. Queremos poder controlar todo eso. Entonces aquí podemos ver que tenemos los múltiples vuelos o vamos a probar el fly one y ver cómo suena eso. O la industria. Y creo que voy a usar esta mosca y voy a llamar a esto la música de nivel y usar la mosca como la música de muerte. Entonces música, Ahí vamos. Ya puedes ver ahora es la música de nivel. Todavía se llama mosca. Y la mosca será el hit de música mortal Enter. Y ahora tenemos estos dos sonidos. Entonces antes de entrar en los efectos de sonido, Vamos a seguir adelante y crear algo llamado el Audio Manager. Por lo que primero voy a quitar la mosca aquí mismo. Voy a hacer clic derecho para crear un vacío. Y este será un objeto de juego. Y voy a llamarlo el, yo lo llamo el GameObject en serio, gestor de audio. Voy a restablecer su posición. No importa dónde esté, pero voy a restablecerlo en todo caso. Y en los guiones aquí mismo, voy a entrar a los directivos sí tienen una carpeta para los directivos. No, no lo hacemos. Por lo que voy a hacer clic con el botón derecho en crear un script C-sharp llamado Audio Manager. Pulsa Enter y haz clic con el botón derecho, crea una carpeta para los directivos. ¿ Qué no cambió? Gerentes, por favor. Gerente. Entonces oh, está bien. Ya tenemos una carpeta optima managers borrar eso. Entonces gerentes. Ah, había una carpeta para los directivos. ¿ Por qué no me metí en ningún caso? Abramos los gerentes deja al Audio Manager al gestor de audio y hagamos doble clic y veamos qué vamos a hacer aquí dentro. Ahora, el AudioManager, algo que vamos a estar llamando mucho. Entonces voy a crear una instancia fuera de ella. Tan público, estático o tu instancia de gerente. Y voy a crear el despierto y la incidencia es igual a esto. Genial, Así que ahora podemos acceder al Audio Manager siempre que lo necesitemos. Segundo, necesitamos una variable aquí dentro cual va a representar toda la música que tendrá un campo serializado, el clip de audio. Entonces, ¿por qué es clip de audio? Porque como vimos aquí mismo, donde la unidad, cuando agregamos la fuente de audio que reproduce nuestra música, la música de aquí, digamos que sumamos la música de nivel. Ya verás que se trata de los clips de audio, o necesitamos una referencia a los clips de audio reales que vamos a reproducir. Por lo que regresa y escucha los clips de audio y esta será nuestra música. Apenas en este caso, haremos la primera letra del capital variable. Y luego vamos a hacer un par de cosas. Entonces qué vamos a hacer, como vieron aquí, si termina de compilar algún día ahora, recordarán que cuando agregamos la música a nuestra escena, creamos la fuente de audio. Entonces para eso, realmente vamos a crear o agregar un componente que es la fuente de audio, pero algo que no mencioné, y así es como realmente escuchamos? Entonces, obviamente, si quieres escuchar música, necesitas oídos. Necesitas un oyente. ¿ Y dónde está nuestro oyente? Si bien nuestro oyente suele colocarse en la cámara principal, se puede ver aquí mismo, este es un pequeño componente de la cámara llamado oyente de audio. Y en realidad puedo apagarlo y encenderlo y se puede ver que no tiene propiedades. Es sólo un oyente de audio. Es extremadamente sencillo. Siempre está en la cámara por defecto, así que manténgala ahí. Funciona. Por lo que de vuelta en el Audio Manager, ahora tenemos una Fuente de Audio en ella. Y qué vamos a hacer ya que vamos a estar agregando la música que tenemos aquí, la muerte y el nivel. Y vamos a estar sumando aquí. Y cada vez, por ejemplo, comenzamos un nivel. Tocaremos el nivel de la música y cada vez que moramos, en su lugar quitaremos el clip de aquí y agregaremos las noticias de sordos. Por lo que necesitaremos una referencia a la fuente de audio. Tan fuente de audio privada, y se va a llamar la fuente de audio, simplemente como esa fuente. Ahí vamos. Y ahora y empezar vamos a conseguir la referencia a la fuente de audio es igual para obtener Component Audio Source. Ahí vamos. Muy sencillo. Entonces ahora vamos a crear un método que nos permita seguir adelante y realmente tocar cualquier tipo de música de nivel. Entonces lo que haremos es que voy a entrar aquí y voy a crear un vacío público, tocar música a nivel. Y yo voy a abrir la derecha aquí. Estos dos, siempre olvido cómo se llaman. Y entonces aquí dentro voy a decir que la fuente de audio puntee el clip. Por lo que puedes ver el clip de audio predeterminado para reproducir aquí mismo. Clip es igual a la música. Abre los dos corchetes. Y aquí dentro podemos elegir qué música queremos tocar. Entonces podemos ver aquí mismo que el de la música, el primer elemento es la muerte, el segundo es el amor a la música. Entonces voy a elegir uno aquí dentro, y esto tocará la música. Pero una cosa más que tenemos que hacer es que realmente tenemos que seguir adelante y acceder a la fuente de audio y en realidad seguir adelante y reproducir, guardar eso. Entonces ahora realmente empezaremos a tocar esta música. Guardemos eso. Y veamos qué vamos a estar haciendo. También necesitamos asegurarnos de que en cuanto iniciemos el juego justo Aquí, vamos adelante y llamamos al jugador que yo llamo a esto la música a nivel de jugador. Me refería a música a nivel de juego. Así que juega nivel, música de nivel laico. Guarde eso. De vuelta en nuestro juego. Entonces ahora si miramos al Audio Manager, verás que no tenemos ningún clip, pero cuando iniciemos el juego, Ahí vamos. Se puede ver que ahora tenemos este clip de audio y podemos correr por ahí. Ahí vamos. Ahora obviamente esta no es la música de juego más emocionante. Creo que encontrarás una canción mucho mejor para tocar, pero creo que es lo suficientemente buena y emocionante como para tocar y explorar. Entonces, pero eso fuera del camino, déjame parar esto. Y se puede, por ejemplo aquí cambiar la prioridad. Entonces, ¿cuál es la prioridad entre esta fuente de audio y otra? Esto es demasiado detallado. No vamos a meternos en eso. Podemos cambiar el volumen. Entonces, por ejemplo, ponlo en 0.68. Si crees que la música es demasiado alta, cambia el tono, cambia el panel estéreo, y así sucesivamente y así sucesivamente. Pero ahora, por ejemplo, cuando morimos, si juego alrededor y nuestra vida es cúbica, déjame solo seleccionar la capa y quitar esta de aquí. tanto que no nos juegan en la salud de los Macs. Vamos a ponerlo en 50. Corre el juego, y ahora deberíamos morir de inmediato. Entonces ahí vamos. Mátame, por favor. Ahí vamos, morimos. Pero la música sigue parpadeando. Por lo que queremos encontrar una solución a esto. Te lo voy a mostrar como un reto. Entonces tu reto es jugar el juego sobre la música. Entonces busca música para jugar para cuando el jugador muera por arte de juego abierto. Y también puedes encontrar muchos otros niveles. Y no mencioné esto porque realmente no me molesté en pasar por mucha música. Yo solo quiero asegurarme de que entendemos el concepto y no vamos realmente a tener un montón de canciones y tocar alrededor. Se puede, por ejemplo, entrar aquí y en lugar de simplemente tocar la música, se puede agregar un entero aquí que representará la música que deberíamos tocar, por ejemplo, para luego tocar esa música y para cada nivel tener algún tipo de música que tocamos. Posteriormente verás cómo en Level Manager podemos gestionar todo eso. Pero por ahora, busca algo de música para tocar, sobre todo cuando el reproductor muere o puedes usar la que te he proporcionado. Crea un método que reproduzca el juego sobre canción y llame al método cuando moramos. Entonces con esa información, pausa el video ahora mismo y ve a hacer el final poco profundo. De acuerdo, bienvenido de nuevo. ¿ Cómo conseguiste todo eso? Entonces aquí dentro, voy a seguir adelante y jugar lo siento, vacío público. Jugar juego. Oh Dios mío. Juego Over. Música. Abre el do como llamaran. Y luego aquí la fuente de audio, ese clip es igual a la música 0. Y aquí dentro le voy a decir a la fuente de audio que reproduzca. Entonces guarde eso. Y hay una cosa más que tenemos que hacer, y tenemos que llamar a esto siempre que el jugador dé dados. Entonces si voy al manejador de salud del jugador, si miro por aquí y encuentro donde morimos. Por lo que aquí puedes ver encender la pantalla de muerte. Y dijimos el juego objeto a inactivo. Y también obtenemos el gestor de audio, instancia de punto, punto, jugar juego sobre música. Guarde eso. Volver end nuestro juego. Y aquí, espere a que esto se compile. Ejecuta el juego por fuente de combustible. Ahora, cuando moramos. Sí, ¿qué guay es eso? ¿ En serio? En serio, tómese un momento para apreciar lo increíble que acabamos de crear no agrega más profundidad al juego, no agrega una sensación más de miedo haciendo realmente morir. Te sientes, oh Dios mío, acabo de morir. Eso es tan malo por el ligero cambio en la música. Nunca sentí realmente este sentimiento cuando anteriormente morí en este juego. Ahora bien, ¿qué cambiaba la música con el cambio de ambiente? Siento que acabo de destruirlo porque me gusta mucho el cambio de música. Espero que sintieras Esto también. Espero que hayan disfrutado y algo que necesitamos para asegurarnos de que hacemos aquí cuando cometamos nuestros cambios. Y el día ahora, si por favor me pueden mostrar. Entonces venga cualquier día ahora, veamos aquí dentro tenemos los cambios comprometidos que queremos hacer. Pero tenemos que asegurarnos de ignorar todo bajo los todos sus activos. Entonces si ignoro todo en los activos, todo LO HACEN porque no queremos guardar el audio. Simplemente ocupa mucho espacio y no tan práctico. Por lo que ahora escenificamos todo, comprometemos nuestros cambios y creamos y todo tu manager que reproduce música o reproduce música de nivel y música utilizando toda tu fuente. Ahí vamos, comprometemos nuestros cambios. Espero que lo disfruten y los veré en el siguiente video donde estaremos tocando los efectos de sonido, que es un poco más divertido tal vez que música. Entonces te veré. 68. SFX en la unidad: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, hemos agregado algunos efectos de sonido. Entonces cuando ejecutemos el juego, te darás cuenta ahora que cuando disparemos, tenemos el sonido de pájaro. Si abrimos el cofre, conseguimos un rifle. Tenemos un sonido diferente. Y si tratamos de romper esto, ahí vamos. Se puede ver que tenemos un efecto de sonido para eso también. Entonces, no perdamos más tiempo, y empecemos. De acuerdo, entonces ahora es el momento de tocar algunos efectos de sonido y hacer que el juego cobrara vida aún más. Entonces, ¿qué vamos a hacer? El primero es obviamente que necesitamos una referencia a todos nuestros efectos de sonido. Entonces aquí voy a duplicar esto. Y en lugar de música, voy a llamar a esto los efectos en Enter. Ups, no entrar. Ahí vamos. Por lo que ahora tenemos una referencia a los efectos de sonido. Pero hay un problema. Si quiero usar el mismo método que he usado para tocar nuestra música, entonces nuestros efectos de sonido van a estar reemplazando nuestra música. Y eso es un no-no. No queremos que los efectos de sonido reemplacen a la música. Eso no es mientras lógico. Entonces tenemos algo diferente que podemos hacer. Y ese es un método que es reproducir clip en el punto. Y sí te recomiendo que abras los recursos de la fuente de audio y mires a través de todo lo que puedas encontrar. Para que puedas ver puedes cambiar el juego en despierto, el tono, el MUX usando frío. Y este es un curso entero todo por su cuenta. Si quieres entrar en la Fuente de Audio, cómo manipular la música, cómo manipular diferentes efectos de sonido y todo eso bueno. Pero por ahora, centrémonos en el clip de reproducción. En el punto. Así es como lo llamas. Necesitas una posición, un volumen si necesitas recortar. Y se puede ver en la descripción que reproduce un clip de audio en una posición determinada en el espacio mundial. Entonces esto es lo que necesitamos. Pero puedes ver aquí mismo que la posición en el espacio mundial, bueno, ¿dónde crees que es la mejor posición para tocar nuestra música? Bueno, te voy a decir ahora mismo que el mejor lugar para jugar eso es exactamente en la cámara principal, exactamente en el oyente. Para que lo podamos escuchar de la mejor manera. Porque hago click en el 2D aquí arriba, podemos ver que tenemos este 3D. Y en el oyente de audio, si tuviera que ver cómo funciona eso, ¿cómo te muestro? A lo mejor en el Audio Manager, en algún tipo de, bueno , bien, por ahora, no te voy a mostrar, o al menos podemos ver esto aquí mismo. Entonces este es el rango en el que tocamos nuestra música. Y por ahora estamos tocando en la fuente de audio que, para que eso no esté mal. Pero si tocamos el punto de apagado del clip y está en algún lugar lejos del oyente, no podremos escucharlo correctamente. Entonces por eso vamos a tocar el sonido en la cámara principal. ¿ Eso estaba fuera del camino? Volvamos a nuestro código aquí mismo. Y vamos a seguir adelante y crear un vacío público, jugar como fax. Y esta vez le vamos a dar un entero que es el número de fax. Y aquí dentro voy a seguir adelante y abrir los corchetes. Y voy a decir que la fuente de audio, dot play, clip, play, todos saben lo real, no la fuente de audio a la que tenemos una referencia, sino la fuente de audio real. Entonces el que tiene la a como capital que juegan clip en un punto. Y aquí dentro le vamos a dar un efecto de sonido o un clip de audio, que va a ser el número de efectos. De acuerdo, así que guarde eso. ¿ Y cuál es el problema aquí? Bueno, obviamente necesitamos sumar la posición y ¿cuál es la posición? Es la cámara principal. Entonces recuerda que podemos acceder al dominio de punto de la cámara, punto transformar la posición. Y honestamente, no estoy seguro si hemos cubierto esto. Entonces solo les voy a decir que si escribimos cámara, esa principal, de inmediato obtenemos una referencia a la cámara principal. Y a partir de ahí podemos usar la transformación esa posición. Si no cubrimos esto, lo siento, dije, Bueno, ya lo sabemos, pero tal vez ya lo hicimos. En todo caso, así es como accedemos a la cámara principal. Entonces ahora vamos a seguir adelante y tratar de romper algunas cajas o no romper las cajas en realidad trataron de romper las Roberta. Entonces de vuelta en nuestro juego, podemos ver que si vamos a lo rompible, tan rompible, ¿o son las cuentas por cobrar? Ahí vamos En lo quebrantable, si estamos corriendo, dijimos el gatillo para romperse. Entonces aquí podemos llamar de inmediato o podemos seguir adelante y crear un método. Y digamos por ejemplo, el método va a ser un vacío público. Jugar, romper como afecta. Y aquí si quieres. Ahora, hay dos tipos diferentes de tal vez pensar de esta manera. Si quieres, solo podemos tener un sonido de ruptura para todos nuestros rompibles. O si quieres, puedes seguir adelante y crear aquí, por ejemplo, un entero público o no público en un entero público o no realidad campo serializado es algo entero de mantequilla y va a ser el número de fax ASA para jugar, por ejemplo. Y luego puedes elegir cuál juegas y puedes enviarlo aquí mismo. Por lo que accede a la instancia de punto del gestor de audio, reproducción de puntos como efectos y enviado al número de fax para reproducir. Cierra eso. Y luego cuando nos rompamos aquí, después de activar la animación, podemos seguir adelante y jugar break como efectos. Y ahí vamos. Eso es todo lo que tenemos que hacer. O si quieres, hay otra forma y eso es reproducir los efectos de sonido usando el evento de animación si quieres. Entonces si vamos en el bot hacia el bot, no, comprado, lo rompible comprado si vamos a las animaciones, podemos elegir aquí para tener algún tipo de sistema de eventos. Por ejemplo, aquí destruimos, podemos jugar esto aquí mismo. Entonces en cuanto rompe bam aquí, agregamos este evento de animación. A lo mejor moverlo un poco a la izquierda. Jugamos el evento de animación. Jugamos el descanso como efectos. Y en el bot rompible notaremos que tenemos el número de fax que queremos jugar. Y si vamos al gestor de audio, está bien, así que hemos agregado los efectos de sonido todavía. Así que pincha aquí todos tus efectos de sonido, selecciona todos estos y arrástralos y hasta los efectos de sonido. Como puedes ver, tenemos 12 efectos de sonido. Una de ellas es la rotura de la botella, así que esto es lo que vamos a estar usando. Entonces escuchemos eso. De acuerdo, entonces creo que ya es suficiente. Un rompimiento de botella como brote. Entonces, ¿cuál es la posición en el Audio Manager? Es el 0. Entonces voy a lo quebrantable. Yo lo puse 0 exactamente. Por lo que nos estaba esperando. Excelente. Y 0, guarde eso. Ejecuta el juego. Y deberíamos ver, oops, ahí vamos. Y se puede ligeramente aquí cómo eso comprado realmente se rompió. Entonces con eso fuera del camino, con todas estas formas interesantes que podemos reproducir efectos de sonido. Te voy a emitir un reto. Y tu reto es sumar todos los efectos de sonido. Así que encuentra todos los efectos de sonido que necesitas para tus juegos. Todo el tiroteo, la sangre, la escopeta, el pistilo, el arma, lo que quieras, y llama al método y a todos los lugares apropiados y reproduce los hechos sonoros tan bien que fuera del camino, pausa el video derecho ahora. Yo no haría todos estos efectos de sonido. Yo sólo voy a unos pocos y te dejo el resto. Entonces con eso fuera del camino, pausa el video ahora mismo y ve al reto. Oh, bien, bienvenido de nuevo. Entonces lo que voy a hacer es que voy a entrar al sistema de armas. Y aquí dentro voy a seguir adelante y crear un campo serializado, que va a ser int o entero. Y mientras que lo rompible, rompible, solo voy a usar la misma justo aquí, misma variable basada en aquí. Y vamos a crear un público o público lo que sea, podemos hacerlo privado. No importa. Vacío público y juego de juego. Efectos de sonido de arma en realidad. Y aquí dentro vamos a acceder al viejo instancia de punto tu manager como efectos. Y le vamos a mandar el número de fax para jugar, guardar eso de nuevo en Unity. Echemos un vistazo a nuestro gestor de audio y lo que tenemos. Entonces AudioManager, vamos a ver. El arma jugará el rifle corriendo, tiro de pistola, que es de cuatro. Por lo que pistola como número de fax para guardar que Podemos incluso tal vez aplicar los cambios al arma de pistola y todo. Aplicar los cambios. Ahora si entro a los Prefabs, si entro al ¿dónde estamos? ¿ Armas? Rifle, y veamos qué tenemos aquí dentro. Entonces voy a revisar al gestor de audio. El sonido del rifle es el siete. Entonces siete, el sonido de la escopeta es la escopeta. 99. Guarda eso. Y voy a hacer que nuestra música un poco menos ruidosa. Entonces el volumen, Vamos a ponerlo en 0 para ejecutar el juego. Y ahora deberíamos ver que cuando disparamos con la pistola, no tenemos ningún sonido por alguna razón porque obviamente todos obviamente olvidamos siquiera llamarlo. Entonces aquí después de instanciar la bala, también vamos a jugar el arma como efectos. Ahí vamos, guarda eso de nuevo en nuestro juego. Corremos el juego. Y ahora cuando nosotros ¿Qué genial fue eso? Entonces ahora tenemos una pistola real siendo disparada. A ver qué entramos aquí. El rifle. Para que veas si tratamos de disparar por ahí porque estamos del otro lado de la cámara. Entonces esta es la cámara principal si estamos a la derecha. Cuanto más nos vamos. Este último fin de semana aquí los disparos porque estamos jugando en la posición de la cámara principal y la cámara principal necesita un poco de tiempo para ponerse al día con el jugador. Entonces intentemos esto otra vez. A lo mejor conseguimos una escopeta esta vez. ¿ Qué tan guay es eso? Entonces ahora tenemos sonidos para nuestras armas. Hay muchos más efectos de sonido que puedes agregar. No voy a sumarlos todos. Yo sólo lo voy a mantener como está. Pero por ahora, sigamos adelante y el Prefab, el Audio Manager. Y vamos a añadirlo aquí al lado del jugador. A lo mejor podemos incluso crear una carpeta para ello por sí solos. Por lo que espero que lo disfruten. Espero que estén cometiendo sus cambios. Y te veré en el siguiente video donde estaremos quizá agregando algún tipo de mezclador de audio. Entonces nos vemos. 69. Uso mezclador de audio: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. Como puedes ver, nos hemos convertido en DJ en este video, tenemos nuestros mezcladores. Ahora cuando ejecutemos el juego, notarás que podemos jugar con la música, hacerla más alta, hacerla más baja, y también podemos controlar qué tan fuertes son los efectos de sonido. Entonces está bien, eso es apenas. Se puede ver que cuando aumentamos el sonido, podemos escucharlo mejor. Cuando disminuimos el sonido, lo escuchamos menos. Entonces, no perdamos más tiempo. Y lleguemos a mezclar 0 caso. Entonces agreguemos mezclador de audio y mezclemos las cosas. No obstante, Hagamos el reto o algo así. De todos modos, audio, mezclador de audio, así audio de ventana, mezclador de audio. Ahí vamos. Tenemos el mezclador de audio aquí. Vamos a venderlo en la escena. Y como puedes ver, este es algún tipo de objeto. Y si miramos la fuente de audio en el Audio Manager, notarás que tiene un criterio de salida y este es un objeto o un prefab del Audio Manager, pero no viste esto, pero mi Unity se estrelló después de que yo terminó el video. Entonces ahí está nuestro montón de cosas raras. Si ves algo raro, probablemente sea por el choque. De todos modos, mezclador de audio, ¿qué tenemos aquí? Esta es una forma en que puedes leer todo sobre los mezcladores. Pero en términos generales, esta es una forma de controlar el sonido de todos y cada uno de los audio que tenemos en nuestro mundo. Ahora, tenemos la música, tenemos los efectos de sonido. Entonces vamos a crear, primer lugar, un mezclador. Y este mezclador será el mezclador principal. Muy sencillamente golpea Enter. Ahí vamos. Hemos creado un mezclador principal, y puedes ver aquí mismo en los activos, hemos creado un objeto de juego de mezclador principal o como quieras llamarlo, no un objeto de juego y controlador de mezclador de audio. Entonces al igual que tenemos un controlador animador, también tenemos el controlador mezclador principal. Y lo podemos sumar a los Prefabs aquí mismo. Por lo que se puede ver con claridad. Lo siguiente que tenemos es que algunos grupos, vistas, e instantáneas no van a entrar en detalles y atenuación y todo eso. Apenas sé cuáles son todos estos. Todo lo que sé que puedo crear un grupo justo aquí debajo de los maestros y llamarlo la música. Y luego selecciona a los maestros. Otra vez. Asegúrese de no seleccionar la música seleccionando maestros. Y luego crear aquí los hechos ASA. ¿ Se puede por favor salir del camino? Ahí vamos. Por lo que el efecto de sonido, para que puedas ver el maestro controla tanto la música como el efecto de sonido. Y luego podemos cambiar el nivel de música y efectos de sonido según nos plazca. Entonces si entro al Audio Manager aquí dentro, se puede ver que puedo cambiar la salida y elegir una de estas dos. Entonces porque estamos usando esta fuente de audio 40 música, voy a elegir la música. Y ahí vamos. Podemos ver que ahora los clips de audio que se reproducen usando esta fuente de audio estarán usando la música. Demostremos cómo funciona eso. Entonces voy a entrar en el, ¿dónde está? El volumen aquí dentro? Voy a volver a ponerlo a uno. Y ahora cuando corro el juego cualquier día, ahora, ahí tienes. Se puede ver lo alto que es eso, pero puedo reducir el sonido en él en modo de reproducción. Ahí vas. Se puede ver que puedo reducir el sonido usando este mezclador aquí mismo. Incluso hacerlo más alto de lo que debería ser. Así que ten en cuenta, esto está en el modo play, así que cuando regrese, necesito cambiarlo. Pero como puedes ver ahora, porque toca a través del mezclador de audio del grupo y la música aquí dentro, eso significa que puedo cambiar las cosas y añadirlas como quiera. Entonces voy a parar esto. Y ahí vamos. Se puede ver que porque tenía este botón rojo, eso significa que estaba grabando y lo mantuvo a un muy bajo, 20 o lo que sea, 28 decibelios. Está bien, genial, eso es genial. Pero ahora queremos agregar efectos de sonido. Pero, ¿cómo se producen los efectos de sonido? Si bien si corro el juego, esto es algo que no manejamos en el último video. Debería, ¿hago una pausa? De acuerdo, no hice eso más rápido, ni debería hacer una pausa. Y ahí tienes. Se puede ver que esto fue un solo disparo todos ustedes, y tiene la Fuente de Audio por su cuenta y toca, y funciona. Pero no hay forma de que accedamos a la fuente de audio. Es decir, lo siento, la salida de esta fuente de audio, confía en mí, he intentado mucho tratar de acceder a ella. No hay absolutamente manera de hacer esto, pero sí encontré algún tipo de manera de evitarlo. Seguro que nadie ha hecho esto antes. Esta es la primera vez que veo esto, pero lo probé y funciona. Entonces hagámoslo. Entonces lo primero o el primer entendimiento que necesitamos cambiar sobre esto es en lugar de solo tener los clips de audio. Nosotros los vamos a convertir en objetos de ganancia. Y luego cada vez que disparamos, vamos a instanciar ese objeto de juego. Y entonces vamos a cambiar obviamente la salida de eso, o cambiar el mezclador en ese objeto de juego el cual tendrá la fuente de audio. Creo que nadie entendió nada. Entonces demostremos cómo funciona esto y lo verás. Por lo que volvamos a los efectos de sonido. Voy a seleccionar todos mis efectos de sonido. Voy a arrastrarlos a mi jerarquía. Por lo que ahora se puede ver cada uno de esos es un objeto de juego con una fuente de audio. Entonces lo que haré es seleccionar todos estos. Por lo que desde el rompimiento de la botella hasta el arma equipada y selecciona la salida aquí y hazla bajo el mezclador principal efecto de sonido. Entonces iremos a la prefab. Haga clic derecho, cree una carpeta aquí en la que serán los efectos que habían entrado, abra esto. Y luego uno por uno, vamos a hacer de todos ellos un preferente. Disculpe. Ahí vamos. Todavía jugador ese jugador que recibe atropellado, disparo de rifle, correr, escopeta, disparo de francotirador, arma equipada. Y ahora podemos eliminar todos esos y todos los tenemos a todos como objetos de juego. Hagamos del Audio Manager también un objeto de juego. Guarda eso. Y ahora deberíamos cambiar la forma en que se reproducen nuestros efectos de sonido en el Audio Manager. Entonces hagámoslo. Voy a abrir aquí el gestor de audio. Y debido a que ya estamos usando este tipo de sistema donde obtenemos el parámetro, podemos mantenerlo como está. Pero en lugar de tener estos efectos de sonido como clips de audio, voy a cambiar esto en una matriz de objetos de juego y guardar eso. Aquí abajo tendremos un error. Solo comentemos esto, guarde esto. Y ahora de vuelta en Unity, notarás que tenemos los efectos de sonido que son objetos de juego. Y voy a poner esto en 0 Enter. Por lo que nuestra lista está vacía. Voy a entrar en la carpeta de efectos de sonido, y voy a bloquear esto hacia abajo, seleccionar todos estos, y arrastrarlos al efecto de sonido. Por lo que como pueden ver, todavía tienen el mismo arreglo. Entonces podemos cambiar lo que queramos en lo quebrantable, por ejemplo, o la pistola, y todo seguirá igual. La implementación del método se mantendrá igual. Entonces ahora que tenemos esto fuera del camino, aplicemos nuestros cambios. Y volvamos al código y veamos qué vamos a hacer. Ahora, te voy a emitir un reto. Creo que es un ocho de cada diez bastante sólido en el nivel de dificultad. Entonces te voy a dar una pequeña pista. Esto no es una gran pista, o simplemente crear un objeto de juego privado, que va a ser V como fax. Y esto es porque seremos aros. Posteriormente, estaremos eliminando este objeto de juego y necesitamos una referencia al mismo. Entonces voy a guardar esto y te voy a llevar a tu reto. Tu reto es instanciar los efectos de sonido. Así que convierte el método de juego como Efectos. Tendrás que crear una instancia de VV. El propio como efectos GameObject. Tendrás que asegurarte de que el padre sea la cámara principal para que escuchemos correctamente. ¿ Por qué la cámara principal? Bueno, obviamente porque dijimos que queremos que el efecto de sonido instancie al oyente más cercano. Necesitas destruir el efecto de sonido después de una cierta cantidad de tiempo. Y vamos a usar algo llamado la invocación. Entonces hemos hecho corutinas, aún no hemos hecho invocaciones. Y sólo voy a mostrarles un poco de lo que nuestros invoca. De todos modos, esta es la invocación aquí mismo, que es un comportamiento mono. Y puedes ver, puedes usar la invocación usando la cadena de nombre del método y usar un tiempo de flujo. Y si el tiempo se establece en 0, esto está en libro. De todos modos, para un mejor rendimiento, puedes usar corutinas en su lugar, pero solo quería mostrarte Esta invocación funciona. Se puede ver aquí mismo y el ejemplo cómo funciona. Y por último, te voy a dar una pequeña pista. Utilice los tablones de clip para la cantidad de tiempo que debe esperar. Entonces con esa información, sé que este es uno de los videos más duros. Desafíos, quiero decir, si encuentras involucran muy complicado, e incluso yo tuve que hacerlo varias veces para conseguir que el 100% correcto. Todavía puedes usar corutinas, está perfectamente bien. Solo quiero que conozcas o tengas esta herramienta en tu propio arsenal por si acaso quizá a veces sí la necesites. Para que fuera del camino, paren el video ahora mismo y vayan al reto. De acuerdo, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Espero que no fuera demasiado caliente. Entonces aquí, lo que vamos a hacer es antes que nada, vamos a seguir adelante e instanciar. ¿ Y qué estamos instanciando? Estamos instanciando el FX en el número de fax que nos han enviado. Y tenemos que elegir al padre. Y este padre va a ser la cámara, pero Maine, y se va a transformar. Entonces no estoy seguro si alguna vez hemos accedido al punto principal de la cámara. A lo mejor lo hicimos, a lo mejor no lo hicimos. Espero que no fuera demasiado difícil de un reto, pero de todos modos. Es así como lo hacemos como niño de la cámara de juego, tienes la cámara principal. Y luego después de hacer esto, vamos a crear un método aquí dentro, que va a ser un vacío privado. Destruir como afecta ganancia objeto. Y aquí dentro vamos a destruir, pero ¿qué vamos a destruir? Se quiere destruir estos efectos de sonido aquí mismo. Entonces voy a crear un objeto de juego Vía o no, perdón, perdón por eso. Quise decir no crear el objeto del juego. Ya lo he creado. Por lo que v as f x será igual al objeto del juego que hemos instanciado. Y vamos a destruir los efectos estadounidenses. Y eso es todo lo que tenemos que hacer. Entonces tenemos la invocación. Entonces invocar o no, ésta no es la que necesitamos e invocamos, ésta es la que necesitamos. Aquí dentro. Tenemos que darle el nombre del método, así que voy a copiar el nombre del método. Pero entre estas dos pequeñas citas, y luego necesitamos el tiempo y como he dicho, necesitamos usar el tiempo del eclipse. Entonces, ¿cómo vamos a hacer esto? Bueno, podemos usar los efectos. Entonces podemos conseguir el componente en él, que es la fuente de audio o la fuerza o. Y luego desde ahí podemos acceder al clip. Y usando el clip, podemos acceder a la longitud de ese clip. Entonces ahorraré eso sin embargo, ¿qué está pasando aquí dentro? En primer lugar, estamos instanciando los efectos de sonido basados en el número de efecto de sonido que obtenemos. Después obtenemos la cámara o la hacemos un niño de la cámara principal accediendo a la cámara punto principal enseñado transformación. Creo que pasamos por esto. Simplemente no puedo recordar dónde. Pero de todos modos, lo hacemos un niño de la cámara principal. ¿ Por qué? Porque queremos que el sonido esté exactamente en la cámara principal. Entonces invocamos un método que destruirá el efecto de sonido después de una cierta cantidad de tiempo. Porque recuerden, los objetos una vez instanciados necesitan ser destruidos. Y no queremos tener nuestra jerarquía llena efectos de sonido que ya no estamos usando o incluso objetos de juego que ya no estamos usando. Y luego hemos creado este objeto de juego de efecto de sonido destruir que destruye el efecto de sonido v que hemos instanciado aquí arriba. Para que aunque la forma guarde eso de nuevo en Unity, abran esto, corremos el juego. Guarda todo eso porque tengo miedo de que vuelva a estrellarse. Entonces ahora cuando ejecutemos el juego, Abramos la cámara. Aquí podemos ver las cámaras principales. Entonces, cuando deberíamos pausar esto, mira esto. Por lo que ahora tenemos el disparo de pistola. Ahí vamos. Entonces sigamos. Se puede ver que tenemos 1234 y todos ellos. Y se puede ver aparecer en los efectos de sonido que está siendo afectado por los efectos de sonido que aparecen. Probemos esto. De acuerdo, entonces tenemos el mismo arma. No se preocupe. Probemos esto otra vez. A lo mejor nos volvemos a poner. Volvemos a conseguir la pistola, por favor. ¿ Me das una escopeta, por favor? ¿O un rifle? Ya basta con eso. Entonces ahora cuando disparamos, ahí tienes. Se puede ver que todos los disparos han sido instanciados aquí y se están jugando. Por lo que espero que lo disfruten. Espero que estés cometiendo tus cambios y te veré en el siguiente video ya que puedes ver nuestra ganancia tanto mejor ahora con efectos de sonido. Entonces hecho eso, te veré en el siguiente. Si aún no tienes vista de palanca, te veré. Entonces. 70. Sección 12: varios tipos de Enemies y diferentes tipos de Enemies (diseño de juegos): Hey, bienvenidos de nuevo Mis desarrolladores de juegos favoritos a un video totalmente nuevo. Y este, vamos a tener la intro y todo el video machacado por completo juntos porque no hay necesidad de una intro. No estaremos haciendo ninguna codificación, no estaremos haciendo ninguna unidad, pero estaremos hablando un aspecto muy importante en desarrollo de juegos y el diseño de juegos. Por lo que siempre empezamos con la creación de las características centrales o la mecánica del núcleo. Estas son, por ejemplo, el caminar, el saltar, el tiro, el Apuntar, las balas, todas estas cosas, el núcleo, la mecánica central de nuestro juego, estas necesitan estar muy bien- pulida y es muy importante tener todos estos configurados correctamente antes de empezar a crear otras cosas como, por ejemplo, las animaciones o los enemigos. ¿ Por qué? Porque digamos que tienes algo, no lo sé, claro que has pasado por esto. A lo mejor tienes unos juegos increíbles con muchos edificios cayendo y no sé, muchos enemigos aterradores. El tiroteo es muy malo. Entonces aunque sea cualquier tipo de enemigo o cualquier tipo de, sé, sistema de actualización que tengas. Si el tiroteo es aburrido, no quieres jugar el juego. Si el andar y correr es aburrido, no quieres jugar el juego. Entonces es importante en primer lugar, enfocarse en las características centrales de tu juego y luego puedes empezar a crear la segunda cosa más importante, que son, por ejemplo, los, no conozco a los enemigos, los tipos de enemigos que vamos a hacer, ¿verdad? O no, incluso los tipos enemigos, sólo los enemigos. Esto es lo segundo más importante. Tener enemigos, Tener transiciones de nivel, tener Arnaud quizá un buen conjunto de animaciones, un buen diseño de nivel, por ejemplo, estos también son muy importantes. Tan solo imagina un nivel increíble, pero el caminar es tan malo que no puedes disfrutarlo. Por lo que es muy importante empezar centrándose las cosas más importantes que son las características centrales, luego te enfocas en las segundas cosas más importantes como enemigos, sprites, animaciones y así sucesivamente. Y luego la tercera cosa más importante para enfocarse, por ejemplo, en la variedad enemiga. No lo sé. A lo mejor el tipo de armas que tienes, el color de las balas, por ejemplo, estas son las terceras cosas más importantes. El alumbrado, lo que sea. Entonces las cosas que hacen que tu juego un poco mejor, las pequeñas mecánicas que solo retoques o las pastillas o la salud. Estas son todas las terceras cosas más importantes, las características centrales, las segundas cosas más importantes, las características externas y la tercera. Por lo que ya hemos creado un juego muy bonito. Tenemos transición nivelada, tenemos buena caminata, tenemos puntería. Tenemos múltiples y múltiples enemigos, lo siento, múltiples armas, múltiples balas que todas funcionan diferentes entre sí. Tenemos buenas animaciones. Tenemos las lindas transiciones de rebelde. Ya he dicho transiciones. De todos modos, hemos creado un juego realmente bonito, pero ahora es el momento de enfocarnos en el segundo, tercero aspectos más importantes de nuestro juego. Y vamos a empezar con tener diferentes tipos de enemigos. Entonces, en primer lugar, tendremos al cobarde enemigo. Por lo que actualmente ya tenemos un tipo de enemigo, que es el esqueleto que acaba de pararse ahí. Y en cuanto la capa camina a cierta distancia, empieza a tirar los cuchillos. Y si nos acercamos demasiado, empieza a perseguirnos y luego si nos alejamos podemos retroceder. Entonces este es un tipo. El segundo tipo es el que huye cuando el jugador acerca y comienza a disparar desde la distancia. Entonces esto, el reto en este tipo es que tratamos de atacarlos. Tratamos de dispararles. Nos acercamos para conseguir un disparo preciso, pero sigue huyendo. Entonces necesitamos acercarnos y todo el tiempo está disparando flechas. Entonces es muy molesto, que es un buen tipo de enemigo. Y he usado los sprites esqueleto en todos estos porque no sé cuál voy a usar de estas partes que tenemos. Entonces tenemos al Wanderer, que anda por ahí en direcciones aleatorias sin ningún objetivo pero persigue al jugador si se acerca. Y vamos a tratar de sumar algún tipo de ataque malayo. O si el jugador está en las inmediaciones o próximo, este enemigo, empezará a salir herido. No nos estaremos centrando mucho en principalmente porque vamos a estar haciendo eso. Y la sección de jefe, no estaremos agregando ningún ataque cuerpo a cuerpo a nuestros enemigos en este momento, tal vez lo hagamos, tal vez solo agregaremos algún tipo de círculo alrededor del enemigo. Si el jugador se acerca, empiezas a lastimarte cada par de segundos. Pero el ataque del mailer será más bien un foco para nosotros. El sistema POS. Y finalmente tenemos el petróleo. Y este tipo va de 1 a siguiente y ataca al jugador si se acerca y si el jugador huye, entonces vuelve a patrullar. Por lo que has visto todo este tipo de enemigos. Uno que huye y luego dispara desde lejos, uno que deambula sin rumbo. Pero luego cuando ve al jugador, corre hacia él e intenta matarlo. Y entonces finalmente tenemos una pequeña que apenas patrulla la zona, rocas de 1 a siguiente que le daremos un específico le daremos puntos específicos que tendrá que entrar. Y luego cuando el jugador se acerque, empezará a perseguirlo del jugador puede huir, entonces ese tipo volverá a su posición. Entonces antes de seguir adelante y darte el reto, ya te he mostrado a los enemigos que te proporcioné con los enemigos en los Recursos, puedes seguir adelante y encontrar los tuyos propios. Obviamente, voy a crear todo el set de animación, todos los sprites porque todos lo hemos hecho muchas veces. Entonces no quiero seguir perdiendo el tiempo y rebanando sprites y creando animación. Entonces estas son cosas que debes estar bien equipadas hasta este punto. Si aún encuentras dificultad en ellos, vuelve atrás, mira un par de videos puede estar donde creamos las animaciones, pero creo que lo hemos hecho tanto ahora que tienes un entender bastante sólido, si quieres, voy a pasar por un poco de cómo los creé justo así de rápido, cómo configuré los sprites y así sucesivamente. Pero creo que es bastante fácil. Es igual que el primer enemigo. O sea, tal vez lo copie y pegue y use la misma mecánica, todo casi. Y con eso dicho, voy a emitir un reto antes de irme y es hora de pensar. Entonces. Me has estado observando todo el tiempo. Has estado copiando lo que hago ahora es hora de que pienses. Entonces. ¿ Dónde está? De acuerdo, Gracias a otros movimientos que te gustaría tener o agregar a tus enemigos, usa los videojuegos que juegas. Entonces tal vez quieras algún tipo de enemigo que tal vez desaparezca y aparezca en otro lugar. A lo mejor quieres algún tipo de enemigo que se dirija hacia el jugador y pase por él y lo dañe. A lo mejor quieres, no sé, sinc de cosas. Aunque tal vez no sepas crear estas mecánicas, solo escríbalas. Piensa en usar tu imaginación de qué tipo de enemigo te gustaría tener, aunque no sepas cómo hacerlo, esto es imperativo. Podrías estar pensando, bueno, no sé cómo crear un enemigo que desaparece. Michael, ¿cómo voy a hacer esto? Bueno, no pienses así. Piensa en que quiero crear un enemigo que desaparezca y haré lo que sea necesario para hacer eso. Aunque no tenga la información completa ahora mismo, entonces necesitarás pensar en diferentes ataques. Te gustaría tener enemigos. Entonces tal como dijimos, tal vez ese enemigo corre a través de ti y te daña. A lo mejor ese enemigo lanza algo. A lo mejor ese enemigo salta encima de ti. A lo mejor ese enemigo, no sé qué hace. A lo mejor crea algún tipo de terremoto o algo hacia ti, no son, usa tu imaginación, diviértete, disfruta. Y por último, puedes ir y compartirlo en nuestro canal de discordia. Entonces si a este punto aún no lo sabes, ten una discordia. Tal vez has estado viviendo bajo una roca o algo así. En realidad sí tenemos un canal de discordia. Es una comunidad increíble, está creciendo, creo que en este momento tenemos casi 200 miembros. Y para cuando veas este video, probablemente sean más de 300. Mucha gente está mirando. Mucha gente no sólo está haciendo preguntas, sino también tratando de ayudar a otras personas. Y es muy importante, confía en mí, cuando empecé a crear cursos y contestar a las personas, mi conocimiento de unidad pasó por el techo porque cada día tengo gente haciéndome preguntas que ni siquiera yo conocer la respuesta a. Entonces tengo que ir a investigar cosas y crear o simular el problema en mi PC y luego entender cuál es el problema. Y a partir de eso, pude usar la mecánica y toda la resolución de problemas que aprendí respondiendo a los alumnos para crear un mejor y luego un mejor y aún mejor juego cada vez. Entonces sí recomiendo canal de discordia, ir allá, ver a algunas de las personas que son las preguntas sin respuesta, hacer preguntas, y compartir tu juego. Comparte lo que te gustaría tener en tu juego, qué tipo de enemigo te gustaría implementar. Quizás incluso encuentres amigos ahí que te ayudarán juntos a crear un juego. Ya nos ven como tres personas que hicieron un equipo ahí. Y tan increíble. Sus nombres están marcados con cursi y algún tipo de BD, no lo sé. Entonces Mark, Jesus, y NVD ahora están trabajando juntos para crear algún tipo de juego loco. ¿ Qué? Ni siquiera intenté meterme en la conversación porque ya tengo mucho en mi plato. Pero como puedes ver, es una comunidad increíble, lugar increíble para aprender. Entonces con eso dicho, pausa el video ahora mismo. Piensa, toma al menos, al menos dete diez a 15 minutos para solo apuntar cosas. Diviértete, disfruta. Y con eso dicho, te veré en el siguiente video. 71. El Enemy de que Enemy: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en éste, como pueden ver, hemos creado un maldito demonio volador, pero esta vez no es muy valiente. Es un poco cobarde, así que empieza a huir cuando nos acercamos. Entonces ahora ando por ahí, me acerco y como puedes ver, empieza a huir y lanzarnos su popó hacia nosotros, creo, o suciedad o no sé qué es eso. Entonces como puedes ver, tratamos de dispararle. Intentamos acercarnos, obviamente su stock junto al muro, pero se puede ver que cuando nos acercamos desde una dirección diferente, todavía su stock en la pared, pero no se preocupe por eso. Ya ves que se está escapando de nosotros. Entonces, no perdamos más tiempo y empecemos. De acuerdo, así como pueden ver, he creado para más enemigos, los cobardes voladores, yo, el duende se maravilla. No sé por qué se llama Maravilla uno, pero de todos modos, ese es su nombre. Y por supuesto tenemos el esqueleto y finalmente tenemos el hongo patrullero. Entonces vamos a estar usando todos estos en cada video. Y como ya he dicho, no quiero pasar por el proceso de hacer esto contigo. Todo lo que hice es simplemente duplicar el esqueleto, cambiar el sprite corporal, cambiar el animador, la animación y todo eso. También me aseguré de cambiar y aquí la animación y así sucesivamente y así sucesivamente. Entonces ahora todos persiguen y hacen lo mismo. Pero lo que vamos a hacer es quitarle al cobarde o al goblin Wanderer, al hongo patrullero, y al enemigo esqueleto. Y sólo vamos a mantener al cobarde volando yo, y esto es lo que usaremos para crear a nuestro cobarde enemigo. Entonces, sin más preámbulos, sigamos adelante y abramos el control. Ah, y por cierto, también he creado un proyectil para cada uno de esos. Por lo que cada uno tiene su propio proyectil. Yo también he creado eso. Pero de todos modos, y abramos aquí el controlador enemigo. Y empecemos con un par de cabras. Entonces lo primero que necesitamos es que vayamos aquí arriba y tendremos que sumar un poco de espacio. Y vamos a decir que estos son los enemigos que huyen y significa que huyen. Y aquí dentro voy a crear dos campos serializados los cuales van a ser un booleano para el debería huir. Y luego otro campo serializado para el flotador huye rango. Por lo que R1 rango de vías. Y obviamente porque queremos tener un cierto alcance en el que el enemigo empezará a huir. Ahora, hay otra cosa que necesitamos agregar porque estamos creando enemigos que deberían huir. También debemos conocer los enemigos que deberían estar persiguiendo al jugador. Entonces voy a volver a crear otra aquí dentro, que va a ser la, o saber qué aquí arriba hemos creado algo. E hizo que el atacante dentro de la noticia de que aún el jugador se mueva dirección, jugador a perseguir jugador alcance persecución. De acuerdo, entonces aquí dentro voy a crear esto y tener a los enemigos que jugador de ajedrez, enemigos que persiguen la capa. Y aquí también voy a crear un campo serializado para el booleano. Va a haber el jugador debe perseguir. Ahí vamos. Por lo que ahora tenemos la opción de elegir uno de estos dos. Y veamos qué tenemos que hacer antes de continuar. Tenemos que añadir esto debería perseguir condición de jugador. Entonces, ¿dónde lo agregamos? En primer lugar, tenemos que agregarla obviamente en cuando estamos dando velocidad. Por lo que aquí nos actualizamos buscando enemigo animando moviéndose hacia el jugador. Por lo que ahí vamos, moviéndonos hacia el jugador. Y aquí tenemos que asegurarnos de que también estamos teniendo y debemos perseguir al jugador. Entonces aquí obtenemos la dirección que es el jugador para perseguir posición menos la posición actual del enemigo. Y luego vamos allá y dijimos que el está persiguiendo. Y aquí como pueden ver, tengo código redundante. Estas dos líneas son exactamente las mismas. Entonces lo que voy a hacer es que voy a crear una variable aquí dentro, que se va a llamar, así que la distancia es un flotador. Entonces vamos a crear un flotador, que va a ser la distancia, jugador de distancia, enemigo. Y va a ser igual a la distancia vectorial, etcétera, etcétera. Y en lugar de esta larga línea, voy a decir que es el enemigo de la capa de distancia. Agrega un poco de espacio. Ahí vamos. Y ahora haz doble clic aquí, copia eso, pegarlo aquí es lo mismo, ¿verdad? Entonces transforma posición, posición de punto de persecución jugador , exactamente igual. Ahí vamos. lo guardamos. Y también aquí dentro necesitamos asegurarnos de que está persiguiendo y es el jugador debe perseguir. Ahí vamos, guarde eso. Y con eso hecho, sigamos y veamos qué tenemos. Ahora aquí dentro. Ya sabemos qué pasa si deberíamos estar persiguiendo al jugador. Pero, ¿qué pasa si deberíamos estar huyendo del jugador? Voy a crear una condición si separada aquí dentro, que va a decir. Si deberíamos estar huyendo o deberíamos huir. ¿ Y dónde termina la distancia? El enemigo del jugador es menor que el alcance de la fuga. Entonces el jugador está en rango, entonces vamos a crear la dirección para avanzar. Pero esta vez, en lugar de conseguir la dirección del jugador para perseguir posición a la posición de transformación, lo que haremos es establecer la posición de punto de transformación menos el jugador para perseguir punto versus jugador para perseguir sus horas, jugador para perseguir posición de punto. Entonces lo que esto hará es que creará la misma dirección para avanzar, pero de la manera contraria. Por lo que esto será negativo. Entonces en lugar de movernos hacia el jugador, vamos a estar alejándonos del jugador. Entonces vamos a ahorrar eso. Vamos a volver a nuestro juego. Y veamos qué tenemos aquí dentro. Entonces necesitamos cambiar un par de cosas. Por lo que necesitamos asegurarnos de que cualquier día ahora. Y la nueva actualización de la unidad es muy, muy molesto. No tengo tantos errores, tantos fallos en él. He tenido muchos accidentes. Para que puedas descargar una versión mejor que la 2020 0.3.15 F2 o lo que sea, asegúrate de hacerlo porque no me gusta esta versión. Es decir, mira lo lento que es de todos modos, de cualquier manera. En primer lugar, es perseguir. Tenemos que hacerlo privado porque no quiero estar viendo todo el tiempo. No necesitamos cambiarlo en privado. Y el macho, el atacante. Ahora qué porque no lo estaremos implementando en este rubro, en esta parte del curso. Vamos a quitarlo sólo para que tengamos un poco más de espacio aquí. Entonces aquí podemos elegir perseguir al jugador y necesitamos asegurarnos de que debamos huir. ¿ Y cuál es el rango de fuga? Bueno, te voy a emitir un reto que sepamos cuál es el rango de fuga. Y eso es crear un círculo azul alrededor del enemigo o lo que quiera. Entonces encuentra los artilujos OnDraw en él, crea una condición para el enemigo que debería estar huyendo. Y elige el color azul o cualquier color que quieras y dibuja, obviamente una esfera. Y como reto extra se asegura de que no dibujemos ningún círculo innecesario. Entonces crea también una condición para el rango de persecución , por ejemplo, no queremos verlo si no estamos persiguiendo jugador. Entonces eso pausa el video ahora mismo y ve al chat. De acuerdo, bienvenido de nuevo. Entonces me voy a desplazar hacia abajo y él también principalmente atacante. En realidad, el atacante estaba siendo usado aquí. De acuerdo, no se preocupe por eso. Vamos a quitar esto. De acuerdo, así que de vuelta aquí abajo en el, en la droga es más. Por lo que aquí podemos ver que conseguimos el rango de persecución del jugador. Entonces si debemos perseguir jugador, entonces vamos a, por supuesto, elegir estos dos y ponerlos dentro del jugador mantener la persecución. Esto también es algo que debería estar dentro del rango de persecución del jugador. O quiero decir en el debe perseguir jugador. Ahí vamos. Si el campo de tiro está bien, para eso, Vamos a mantenerlo como está. Y por último, vamos a crear aquí una declaración if, que diremos si debemos huir, entonces vamos a conseguir el color de punto de artilugio y va a ser igual al color también. Ya estamos usando el azul, así que usemos el amarillo, el verde, el verde. Entonces ahí vamos, verde. Y vamos a copiar esta línea aquí porque es casi la misma excepto el, del de tiro, el campo de tiro. Guarde eso. Elimina los espacios extra aquí dentro. Y ahora tenemos una manera de medir la distancia que vamos a estar huyendo con k. Así que ahí vamos. Tenemos la gama azul, que es la para el tiroteo. Está bien, genial. Y luego tenemos el rango de fugaces. Tan bien, entonces cuando el jugador se meta en este rango, el enemigo debería empezar a huir. Entonces eso es correr el juego. Y veamos cómo funciona eso. Entonces ahora estamos en el juego. Nos acercamos al enemigo. Ahí vamos, se puede ver que se está escapando de nosotros. Si traté de moverme más rápido, empieza a moverse. Bueno, eso es porque es lento. Obviamente lo vamos a hacer un poco quizá más rápido porque es un enemigo volador. Entonces ahora cuando traté de acercarme, él sigue escapándose. Entonces oye, bueno, e incluso nos llamó porque como lo estamos persiguiendo, está lanzando proyectiles. Honesto. Y también una cosa que olvidé mencionar, cambié la posición de los cinco. No, es el mismo lugar. Yo lo voy a hacer encima de su cabeza o tal vez, ya sabes qué, vamos a mantenerlo donde estaba. Creo que eso estuvo bien. De todas formas, espero que lo disfruten. Espero que hayas entendido lo que está pasando aquí porque ¿dónde está? ¿ De acuerdo? Entonces si debemos huir, en lugar de, tenemos la posición de jugador y más grande que la posición transformada. O al menos no, no sólo más grande en la otra dirección. Si optamos por quitar la posición de transformación del jugador a posición persigue, obtenemos un positivo, por lo que nos estamos moviendo hacia el jugador. Si retiramos nuestra posición de la posición del jugador, entonces nos estamos alejando del jugador. Entonces con eso hecho, espero que lo disfruten. Y el siguiente video estaremos creando al vagabundo. Entonces te veré entonces. Y no olvides, por supuesto, comprometer tus cambios cada vez. 72. El wanderer: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a honestamente, uno de los mejores videos que he hecho nunca porque esta es una de las pocas veces que algo sucede. Tenemos un error en el juego, pero en realidad resulta ser mucho mejor de lo que originalmente se pretendía. Entonces es increíble. Ya verás a lo que me refiero durante el video. Pero por ahora, vamos a ejecutar el juego. Y verás que he creado este pequeño duende. Por lo que este Duende simplemente camina aleatoriamente. Para que veas que camina por algún punto, se detiene, después se aleja. Se detiene. Y si nos acercamos lo suficiente, se puede ver que empieza a perseguir y lanzar bombas que nos están lanzando bombas. Mira, qué guay es que si nos alejamos de él, Ahí vamos. Se puede ver que simplemente sigue caminando hasta que regresemos y alcancemos. Y luego empieza a perseguirnos como lo fue un maldito lunático esa noche. Yo en serio, tengo tanta suerte de tener forma estos brillantes. Son tan geniales. Entonces, no perdamos más tiempo y empecemos. Ah, está bien, Así que ahora tenemos un enemigo cobarde. Tiempo para agregar lo maravilloso. Entonces voy a entrar a mis enemigos y a los prefabs. Y aquí dentro voy a sumar el patrullaje, nope, el covalente. Ahí vamos. Entonces agregamos el duende. Quitemos la tarjeta o ¿sabes qué? Apagemos la mosca actualmente. A lo mejor los añadiremos más adelante. Y luego vamos a echar un vistazo a los duendes. Entonces miren al gobierno. ¿ Qué tan guay es? Por lo que corre por ahí, le dispara a la gente. No sé con lo que sé lo que hace. En realidad, él sólo creo que lanza una bomba o algo así. Pero de todos modos, va a ser un maravilloso. Entonces vamos y le llaman el duende maravilla. Entonces hagámoslo el duende maravilla, aplique los cambios. De acuerdo, entonces el nombre sigue siendo el mismo. De todos modos, abramos nuestros guiones y veamos qué vamos a hacer aquí dentro. Entonces voy a subir y aquí voy a crear enemigos que se preguntan y Chase. O sólo llamémoslo los enemigos que se preguntan. Entonces aquí voy a crear un campo serializado. Y va a ser un booleano. Y va a ser, debe preguntarse, maravilla, maravilla, ¿es una, era, Oh, no, sólo me voy a quedar con un.Así que maravilla, maravilla. Y luego voy a crear un campo serializado para dos carrozas. El primero va a ser la longitud de Wonder. Entonces, ¿cuánto tiempo se pregunta? Maravilla. Lo voy a decir como quiera. Y entonces tenemos la longitud del pulso. Entonces, ¿por cuánto tiempo hace pausa antes de que empiece a vagar de nuevo? Y luego voy a crear obviamente dos cosas porque parece que es obvio que estamos usando contadores aquí. Entonces voy a crear un flotador privado y contador de vagabundeo. Y luego el contador falso. Por cierto, algo que creo que no mencioné en el video anterior y en el modo de juego. He apagado todo lo relacionado con la música, así que me he asegurado de que el audio de la música esté apagado solo por razones de prueba. No queremos seguir teniendo música de fondo y cuatro para que mis vecinos obviamente los mantengan cuerdo en el próximo par de meses hasta que termine de grabar y nuevas formas de volver aquí. No necesito de nuevo a los policías de todos modos privados. Y por último, necesitamos obviamente obtener la dirección de maravilla. Aquí vamos a conseguir la dirección para avanzar y va a ser la dirección Wonder. Todavía tenemos insertado, pero lo haremos. Y luego vamos a chequear. Y luego como estamos sacando del contador de Wonder, vamos a comprobar si en algún momento el contador de maravillas se vuelve menor o igual a 0. Entonces vamos a poner algo llamado contador de pausa. Y este contador de pausa no sólo va a ser cualquier contador de correos. Vamos a crear un rango de puntos aleatorio. Y este random.randrange tendrá los tiempos de contador pos 0.75 F, y el contador veces 1.25. Entonces tal vez te estés preguntando, ¿por qué estamos haciendo esto? Bueno, porque queremos tener una forma muy aleatoria de posar nuestra ganancia, o lo siento, no pasar nuestro juego de pausar al enemigo. Por lo que esperará un momento realmente diferente cada vez antes de que empiece a moverse. Esto agregará más variedad a la forma en que se mueve. Y luego después de facturar aquí, por lo que comprobamos para que el contador de maravillas le quitaría. Establecemos la dirección. Ahora en realidad es el momento decidir en qué dirección vamos a ir. Entonces aquí voy a comprobar si el contador jefe sigue siendo mayor que 0. El contador pos es mayor a 0. Obviamente, lo primero que vamos a hacer es que vamos a estar quitando del mostrador de correos, así que tiempo punto delta tiempo. Y luego vamos a comprobar si el contador de impulsos en algún momento se vuelve menor o igual a 0. Entonces aquí dentro vamos a hacer dos cosas. Lo primero es que vamos a elegir el contador pasado. Y en cambio vamos a estar poniendo el contador de maravillas. Y va a ser el OK, lo siento, no es el contador de pausa, Es la longitud de pausa. Así que pausa la longitud. Longitud de pausa, perdón por eso. Y aquí dentro en lugar del contador pos, vamos a fijar la longitud de maravilla. Y la longitud maravilla. Entonces esto fue un, algo que no sabía esto, discúlpame por eso. Pero aquí dentro no sólo queremos poner el contador, también queremos establecer la dirección de maravilla. Y este va a ser tu reto. Tu reto es darle al vagabundo un azar, no terminar un aleatorio. Entonces después de reiniciar el contador, necesitamos una nueva dirección de maravilla. Tendrás que establecer la dirección de maravilla como un nuevo vector 3. Tendrá que establecer el x y el y debe ser números aleatorios. Asegúrate de mantener la z tal como está o aún mejor, debes venderla como 0. Por último, una pista en cuanto a hacer el rango entre menos 1.551. Y eso se acaba de ver que el enemigo no vaga muy lejos. Entonces para esa información, pausa el video ahora mismo y ve a hacer el caldeo. De acuerdo, bienvenido de nuevo. ¿ Cómo te llevaste con eso? Entonces después de poner el contador de maravillas, vamos a establecer la dirección de maravilla. Y la dirección maravilla obviamente como factor tres, se puede ver aquí mismo. Entonces vamos a crear un nuevo vector 3 y vamos a abrirnos. Ahora, obviamente el eje zed debe permanecer igual. Entonces vamos a establecer un rango de puntos aleatorio y va a ser minos1, f menos 1.551. Entonces vamos a poner esta para la x, ésta como para la y. y finalmente, tenemos ceros al final. Entonces echemos un vistazo atrás a lo que está pasando aquí. En primer lugar, empezamos, comprobamos, si nos preguntamos si sí, entonces vamos a revisar como el contador de maravillas mayor que 0, luego seguimos en el cual seguimos quitándole tiempo. Nosotros fijamos la dirección porque obviamente nos estamos preguntando, sólo queremos fijar la dirección de inmediato. Y luego seguimos quitando, haciendo este bucle, haciendo este bucle, haciendo este bucle. Obviamente en este punto el contador de pos debe ser 0. Pero cuando el contador de maravillas es menor que 0, el contador pasado obtiene un valor aleatorio. Y entonces conseguimos que esta condición sea verdadera, y ésta será en falso. Entonces empezamos aquí mismo, empezamos a quitar del contador de pos hasta que a la 1, obtenemos un contador de pos que es menor a 0. Establecemos un contador de maravillas al azar, y al mismo tiempo establecemos una dirección de maravilla. Detuvimos esta afirmación if. Volvemos aquí y de nuevo empezamos a quitar. Tenemos una nueva dirección maravilla que hemos determinado aquí mismo durante el pasado-tiempo. Y seguimos quitando hasta de nuevo, el contador de maravillas es menor que 0, un nuevo contador de correos. Empezamos éste y seguimos haciendo todo eso. Pero hay una cosa que hay que considerar y es que necesitamos iniciar ya sea el contador jefe o el contador de maravillas. Tan arriba y empezar. Voy a crear una condición aquí. Y si nos preguntábamos, recuerdo que esa era la condición. Debería preguntarse. Si debemos deambular, entonces necesitamos establecer un contador pos, que es igual a un rango de puntos aleatorios entre los tiempos de longitud del jefe 0.75 y luego los tiempos de longitud del jefe 1.25. Ahí vamos. Por lo que es más o menos lo mismo que tenemos aquí dentro. Aquí arriba. Inicializamos el contador jefe. Espera o el enemigo espera un poco. Entonces se da cuenta, oh, necesito empezar a mudarme aquí, mientras que aquí dentro. Por lo que inicializamos algún valor, empezamos por movernos de él. Cuando llega a menos de 0, empezamos toda la cadena aquí y empieza a perseguir, quiero decir, lo siento, vagando. Y hay algo porque queríamos sumar la persecución al enemigo. En primer lugar, vamos a ver si esto realmente funciona y luego vamos a sumar la persecución. Por lo que de vuelta en nuestro juego. Veamos qué tenemos aquí dentro. Entonces el duende preguntándose, primero que nada pongamos todo. Entonces vamos a mantener estos deberían ahuyentar. Y así el azul es para el proyectil. Entonces voy a hacer tal vez el campo de tiro un poco más pequeño. Y luego el tiempo entre tomas, Vamos a mantenerlo como está. Deberían huir. No, debería vagar. Sí. Longitud de maravilla. ¿ Cuánto tiempo deambulaba por ahí? Por 1 segundo. ¿ Cuánto tiempo hace pausa? Ya sabes qué, Vamos a quedarnos dos. Y para salvar eso, ejecuta el juego. Y veamos cómo se ve eso. Entonces voy a llegar pero cerca de él. Ahí vamos. Se puede ver que acaba de ir en alguna dirección aleatoria. Y ahí tienes. Se puede ver que cada dos segundos simplemente camina. Ahí, se detiene ahí. A ver. Y entonces se puede ver que no es un enemigo muy inteligente obviamente. A veces camina y dos paredes. Se queda atascado ahí. De acuerdo, así que corre detrás de nosotros. Ahí vas. Está en rango. ¿ El rodaje, está madurando. Está bien. Entonces oh, ahí vamos. Por lo que está disparando cuando lo arreglan. ¿ Qué tan guay es eso? Ahora, lo siguiente que queremos agregar es que si nos metemos en las inmediaciones de este enemigo, queremos que empiece no solo a babear y a nosotros, sino que en realidad corre hacia nosotros porque tiene una bomba, es pesada. Necesita acercarse para lanzarnos. Esto es algo que se me acaba de ocurrir. Entonces, ¿cómo vamos a hacer esto? El problema aquí dentro es que estamos o tenemos la condición para el perseguir, todos, tenemos la condición para el deambular. Entonces si vuelvo aquí y acabo de decir el, ¿dónde está? ¿ Dónde está el pequeñito de aquí? El duende se pregunta, así debe perseguir jugador, entonces vamos a tener el rango de persecución jugador. Ahí vamos. Entonces es un poco, tal vez es así y el seguir persiguiendo. De acuerdo, claro, Hagamos al azar así. Extraño. Veamos qué pasa cuando en realidad empieza a perseguirnos. Y ahí vamos. Veamos cómo funcionaría eso. Entonces me acerco a él. Y como se puede ver, es cada uno persiguiendo. De acuerdo, entonces él está persiguiendo, luego va de nuevo y deambulando. Entonces si me quedo aquí, se puede ver que es una especie de mecánico, pero al mismo tiempo se detiene en alguna parte. Y qué, en realidad estoy muy sorprendido, por cierto, su movimiento es realmente loco y asombroso. Para que veas que sigue persiguiendo. En algún momento, acaba de empezar a vagar de nuevo. Entonces me encanta la aleatoriedad en esto, pero solo, sólo por el bien de entender cómo quería hacer el juego o cómo mi idea de lo que quería hacer es que se pregunte. Pero cuando el jugador está en el rango persiguiendo, entonces empieza a perseguir y deja de preguntarse. Entonces veamos cómo se verá eso. Por lo que de vuelta aquí, se puede ver que cuando empezamos a perseguir, dijimos que lo está persiguiendo a la verdad. Entonces aquí dentro, deberíamos revisar dos cosas. Si deberíamos estar preguntándonos y ¿dónde está? Y no estamos persiguiendo, así que él no está persiguiendo. Entonces de vuelta aquí, ejecutamos el juego y ahora te darás cuenta de que se estará preguntando. Por lo que estamos fuera del rango de persecución. Él vaga por ahí, vaga por ahí, Hopi va por mi camino. Entonces obviamente se puede ver que la inmunidad aleatoria no es tan buena. Para que veas que estamos en rango y ahí vamos. Se puede ver que nos está persiguiendo. Ya no se está preguntando, seguirá persiguiéndonos hasta que nos alejemos un poco. Y ahí vamos. Se puede ver que simplemente sigue vagando por ahí. Ahora, honestamente, me encanta cómo simplemente iba entre vagar y perseguir y su movimiento era muy errático y no estaba seguro de lo que está pasando. Me encantó. Si quieres, puedes mantenerlo así. Y para nada si te gustaría la forma en que solo estaba haciendo una pausa, persiguiéndonos y luego cuando nos escapamos, simplemente sigue deambulando. Entonces ser mi invitado depende de ti. Y como se puede ver, a veces se acaba de llegar con cosas y pequeños bichos en el juego, hacer las partes interesantes del juego. Espero que lo disfruten. Espero que estén cometiendo sus cambios. Espero que te haya encantado una crítica. Me ayudó mucho. Entonces si no lo has hecho ya, no lo dudes, atrevido puede revisar, de verdad, de verdad me ayuda mucho. Si no, los veré en el siguiente video donde estaremos creando al último enemigo que es patrulla profunda o así. Nos vemos entonces. 73. El Patroller: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en este video vamos a crear un hongo patrullero. Entonces ahora cuando maximizamos en juego y ejecutamos el juego, notarás que si caminamos por ahí, encontramos que esta seta empieza a perseguirnos y nos escapamos, apenas empieza a caminar de 1 a siguiente, te sientes como si tuviera un nos predeterminó que va a estar entrando. Por lo que como puedes ver , camina de 1 a siguiente. Nos sigue mirando lo que esos ojos de miedo, miedo. Y si nos acercamos, empieza a perseguirnos y a disparar con su cajita roja. Entonces, no perdamos más tiempo y empecemos. Ah, caso vendido, tiempo para el último enemigo. Y tenemos al vagabundo Copeland. Tenemos el cobarde volador I. Y ahora tiempo de introducir el rodar un hongo. De acuerdo, entonces, ¿qué hace la patrulla en seta mientras el hongo patrullero en realidad tiene un par de puntos a los que camina hacia y desde. Por lo que vamos a sumar un par de puntos. Por lo que pasó del 1 al siguiente, al siguiente, al siguiente al siguiente al siguiente, al siguiente y así sucesivamente. Y como hace esto, si el jugador se acerca, entonces empezamos a perseguirlo. Entonces, y si el jugador se mete en el rango con el rango de tiro, sin entrar en el rango de la persecución, también empezamos a disparar. Entonces, empecemos. Lo primero que vamos a hacer es que vamos a entrar aquí y vamos a añadir otra parte. Entonces esto es para los enemigos que patrullan. Y aquí dentro, en primer lugar, vamos a obviamente como siempre crear un booleano y decir que debe patrullar, debe patrullar. No sé por qué olvidé dónde está el P S en el teclado. De todos modos. Después seguimos con un campo serializado, que es la transformación. Y es un conjunto de puntos de patrulla. Ahí vamos. Y por último, vamos a crear una variable para hacer seguimiento del actual punto de patrulla. Entonces punto de patrulla actual o puntos o no sé, es sólo un punto porque es un entero privado. Está bien, genial. Ahora si nos desplazamos hacia abajo aquí donde estamos persiguiendo, donde nos estamos preguntando, dónde estamos huyendo. También tenemos que comprobar si estamos patrullando. Entonces te lo voy a mostrar como un reto y tu reto es apuntar y la dirección correcta. Entonces, en primer lugar, comprueba si deberíamos estar patrullando. Eso es bastante fácil. Entonces tendrás que determinar la dirección en la que debe moverse el enemigo. Y así es de la misma manera que en realidad acabamos con el enemigo persiguiendo. Por lo que necesitarás hasta la posición del punto y luego retirarte de él o restarle la posición del enemigo real. Pero entonces, ¿cómo vas a saber cuando llegaste a este punto? Si bien necesitarás hacer un seguimiento de la distancia entre el enemigo y el punto hacia el que va. Y si está cerrado así alrededor de una fiesta menos 0.2 F aumentar el punto de patrulla para que el enemigo siga caminando. Entonces espero que entiendas lo que quise decir en cerca aumentar el punto de patrulla. Vamos a empezar en cierto punto de patrulla, y luego vamos a seguir aumentando, estableciendo un nuevo punto de patrulla utilizando el actual punto de Patrulla que hemos creado. Si sientes que el último donde aumentamos el punto como un poco demasiado duro para ti, entonces no te preocupes. Al menos trató de hacer los tres primeros. Conozco el último como mordí duro, pero si te sientes a la altura, ve al caldea. De acuerdo, bienvenido de nuevo. Este fue uno de los retos más difíciles que conozco. Lo admito. Entonces aquí vamos a crear si deberíamos estar patrullando. En tanto que entonces vamos a fijar la dirección para avanzar. Y va a ser igual a puntos de patrulla en el actual punto de patrulla. Pero la posición menos la transformación de la posición de punto enemigo actual. Y entonces vamos a seguir adelante y crear un, o saber qué, vamos a mantenerlo aquí arriba. El vector de 3 puntos distancia, es la distancia entre la transformación esa posición y la posición de punto de patrulla. Copia eso, pegarlos aquí. Entonces ahora tenemos la distancia, y si esa distancia es menor a 0, así que necesitamos, en primer lugar, así que llamaremos a esto el vector tres nano, en realidad, lo siento, lo siento, es un flotador. Y la distancia y el punto me es igual a la distancia vector 3. Entonces si el punto enemigo de distancia es menor a 0.2 F, por lo que está muy cerca. No queremos tener exactamente 0. Queremos empezar a pasar al siguiente punto. En cuanto lleguemos a la primera, vamos a aumentar en uno el actual punto de patrulla. Y luego vamos a comprobar si estamos en el último punto de patrulla actual o quiero decir, si el punto neutral actual es mayor que los puntos de patrulla, puntos patrulla longitud de puntos, entonces vamos a volver a colocar el punto de patrulla actual en 0. Entonces, ya sabes, cuando sólo tenemos una sola línea bajo la condición if, entonces podemos simplemente ponerla así, guardar eso. Entonces, ¿qué está pasando aquí? Nosotros revisamos, ¿deberíamos Patrullar? Sí, claro, obtenemos la dirección que es el punto de posición de patrulla menos transformada. Entonces nosotros, al igual que perseguimos al jugador, hacemos un seguimiento de la distancia. Cuando esa distancia es menor a 0.2, aumentamos el punto de patrulla. Eso significa que nuevamente iniciamos la actualización hasta aquí. Esto aumenta en uno, obtenemos un nuevo punto de patrulla. Se transforman, se retira la posición, obtenemos la distancia, comprobamos, es entonces cuando llegamos a la última, empezamos a retroceder la primera. Entonces guardamos eso y vamos a armar todo. Entonces voy a entrar, ¿dónde está? ¿ Aquí? Espera a que se compile el guión, y este tipo es un arrastrero. También debe patrullar. Ahora sigamos adelante y creemos un par de puntos. Ahora bien, esto es cuestión de debate. Lo que me gusta hacer es sólo tener aquí los puntos de patrulla. Así que haga clic derecho en Crear. ¿ Y por qué es un punto de debate? Si bien principalmente porque se quiere tener para cada nivel sus propios puntos de patrulla. Entonces, por ejemplo, podrías crearlo dentro de la habitación. Entonces tienes la puerta, los enemigos, y los puntos de patrulla, o simplemente puedes añadirlos al enemigo patrullero real. Y luego cada vez que lo pones en un nuevo nivel, repente patrullas tú mismo apuntas. Eso depende de ti. Voy a llamar a esta patrulla dV, lo siento, puntos de control. Y luego voy a crear aquí un objeto de juego vacío. Este será el primer punto de control. Por lo que Patrulla 0. ¿ Y por qué estoy agregando estos corchetes? Bueno, porque ahora cuando duplique este, tengo el de inmediato dentro de éstos. Entonces este es un truco realmente genial. Ponlo aquí. Envía aquí el segundo. Tercero aquí, éste de aquí, éste de aquí, éste de aquí. Y ahí vamos. Creo que ya son puntos suficientes para hoy. Entonces ahí vamos. Empezamos 12345678, y luego de vuelta en el arranque. Y ahora voy al enemigo patrullero. Yo lo encerraré. Me aseguraré de saber antes de aplicar los cambios, déjame solo establecer todo en los Puntos Petro, guarde eso. Aplica los cambios, ejecuta el juego. Y no quiero maximizar porque quiero CV, en realidad quiero mirar aquí. Así que corre el juego. A ver cómo se ve eso. Entonces ahí lo tienes. Empieza a caminar. Y sigue caminando. Chica. Entonces no hacer nada muy inteligente. Eso es porque creo que debemos hacer un seguimiento del punto actual. Entonces lo haré público sólo por un par de segundos para que sepamos lo que está pasando. Entonces C, corre el juego y estamos en 0. Él va a, debería estar yendo al 0, cuál es dónde está? Ya veo, oh, whoa, entonces hay un problema y ¿cuál es el problema que podrías estar preguntando? Bueno, el problema obvio, ahí está tu punto de patrulla, ¿verdad? Si muevo al enemigo. Entonces esto es algo muy torpe para mí. El punto de Patrulla se mueve con el enemigo. ¿ Por qué? Porque el enemigo ahora es padre de los puntos de patrulla. Entonces mi inteligente detrás lo va a poner dentro de las habitaciones. Sí. Abren prefabs. Ya no lo queremos. Está bien. Entonces ahora me vas a hacer hacer un montón de cosas, ¿verdad? Así que haga clic con el botón derecho prefabricado, desempaquetar completamente. Ahora podemos mover esto a las habitaciones y ahora podemos oh, esperar un segundo. Patrullando. Está bien. Por lo que desempacamos los puntos de patrullaje, los ponemos para la habitación. Perdón por esos chicos. Eso fue un enorme error. Creo que ese error no debe ser perdonado. En serio, eso no sería perdonado. Entonces ahora vamos a, ¿dónde está, El enemigo patrullero? Si puedes ver aquí mismo, si hacemos doble clic sobre él, el prefabricado tiene esto. Entonces lo que vamos a hacer es que vamos a eliminar el hongo patrullero y luego volver a crear el nuestro propio. Entonces ahí vamos. Entonces ahora cuando corremos el juego, deberíamos ver un sistema de patrullaje mucho mejor. Ahí vamos. Se puede ver que va a la primera en cuanto llega ahí, Ahí vamos. Cuando va al siguiente punto donde toda la patrulla apunta el segundo, el tercero. Ahora a este punto y mira, en cuanto llega ahí, empezó a ir al último punto, dispara flechas. Estamos en el camino. Intenta empujarnos, pero estamos atascados en lo que sea. Entonces me muevo. Obviamente, este no es el enemigo más inteligente del mundo, por lo que se estará metiendo en cosas que necesitas para asegurarte de poner los puntos de patrulla de formas que no encontrará ningún objeto sólido ni obstáculo. Entonces como pueden ver, camina por ahí, nos dispara, y caminó por su punto de patrulla correspondiente. Ahora obviamente te darás cuenta del suyo, algo que estos picos están representando sobre el enemigo, que es algo que no queremos. Es por eso que todo el tiempo estaba poniendo cada objeto de juego como la salud, como los picos en la capa de jugador, eso estuvo muy mal. Deberíamos ponerlos en un objeto de nivel. Es bastante fácil de arreglar más adelante. Pero sólo para que lo sepas, esto no es algo que queremos de alguna manera con eso, fuera del camino, volvamos aquí. Y una cosa que queremos hacer es igual que teníamos para el enemigo errante. También queremos estar persiguiendo al jugador. Entonces aquí dentro, y si no estamos persiguiendo, y si no es persiguiendo, patrullamos. Y aquí perseguimos al jugador. Deberían perseguir jugador. ¿ Qué estamos seleccionando? Perdón, así que patrullar hongo debe perseguir jugador. Y eso también fue el 10 amarillo? Entonces el amarillo era para seguir persiguiendo al jugador. Tan rojo, amarillo. Y vamos a ver, vamos a guardar eso. Ejecutemos el juego que ha intentado tenerlo JSON. Entonces hagamos más grande la ventana de juego. Entonces caminamos por ahí. Estamos a su lado. Ahí vamos. Se puede ver que empieza a perseguirnos y dispararnos las pelotas pequeñas. Por alguna razón no están disparando correctamente. Siento que algo definitivamente va mal con las pelotas. A lo mejor. No lo sé. Ya veo. Sí, sí. Por supuesto que definitivamente hay algo mal con las bolas. Entonces a pesar de que cuando salimos de alcance, sigue patrullando, entonces cuando estamos cerca, nos dispara. Por lo que obviamente hay un problema con la posición de fuego. Creo que está golpeando la cabeza del enemigo. Está interactuando con él. No estoy seguro de cuál es el problema, pero por ahora, esto es algo que necesitaremos ajustar ya sea extremadamente rápido. Entonces no lo sé, tal vez sí tenemos un problema aquí. Pero lo principal aquí es que queríamos crear la mecánica petrolera. Con eso, espero que disfrutes, espero que te hayas divertido creando diferentes tipos de enemigos. Ahora, nuestra ganancia realmente está tomando forma. Como se puede ver, ahora tenemos la mecánica del núcleo. Tenemos múltiples enemigos que se mueven de diferentes maneras. Y obviamente, juegos como estos que son tan increíbles y divertidos necesitan algo llamado menú principal, menú de pausa, y transiciones entre ellos. Entonces eso es lo que podríamos estar haciendo en el siguiente apartado. Eso fuera del camino, espero que lo disfruten. Asegúrate de comprometer tus cambios y te veré en el siguiente. 74. Sección 13: sistema de tienda y dinero - crear dinero (Bitcoin): Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, hemos creado dinero, así que empecemos. Cuando corro el juego. Se puede ver que tengo 0 Bitcoins. Si golpeo el GKE, tengo 20, 40, 60, y luego también puedo sacarlos de mi inventario. No es nada muy especial. No hay nada al video de los refrigerantes excepto por el símbolo realmente bonito aquí mismo del gestor de juegos. Entonces, no perdamos más tiempo y lleguemos a crear dinero. O k Entonces ahora tenemos enemigos, ahora tenemos armas, todo está listo. Es hora de dinero sonoro. Tenemos que hacer algo de dinero. Entonces y creo en el último video, les dije que vamos a estar creando menús. Perdón por esa honestidad. En realidad no recuerdo lo que tenemos. Yo sólo paso de un video al siguiente. Obviamente todo el tiempo sé lo que estoy haciendo. Obviamente, sé hacia dónde nos dirigimos. Pero de todos modos, sigamos. Contamos con el gestor de nivel y aquí es donde queremos hacer un seguimiento del dinero que tenemos. Entonces, en primer lugar, vamos a crear una variable aquí que va a ser un campo serializado, y va a ser un fin de las monedas actuales. De acuerdo, entonces aquí es donde tendremos nuestras monedas actuales. Y ahora es tu trabajo crear dos métodos para conseguir y gastar los Bitcoins. Por lo que crearás dos métodos. Uno que agrega, debería cambiar esto, ya sabes qué, déjame chequear o ningún electrón cambiará esto a Bitcoin. Por lo tanto, crea dos métodos. Uno que agrega monedas de bit, uno que quita los Bitcoins. Entonces cada uno debe tomar un parámetro para la cantidad. Asegúrate de que nunca tengamos cantidades negativas de dinero porque eso es muy malo. Entonces con eso fuera del camino, pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. Entonces en lugar de monedas actuales, voy a llamar a esto las monedas de bits actuales. Y si no te gusta Bitcoin, bueno, deberías probarlo de todos modos. No estoy tratando de meterte nada en la cabeza. Sigamos adelante. Centrémonos en lo principal. Ahora, algo aquí dentro que quizá quieras considerar. Entonces es genial. Contamos con Level Manager el cual toma, cuida todo el nivel. Pero cuando se trata la cantidad de dinero que llevamos con nosotros, creo que es mejor tenerlo en algo llamado gestor de juegos que es solo para el futuro. No es problema. Puedes crearlo en gestor de nivel. Hace la funcionalidad, pero level manager parece que solo maneja el nivel actual en el que estamos. Cuando se trata de la mente que sostenemos, debe estar alrededor de todo el juego. Entonces en cuanto inicias el juego, cada nivel recolectas más monedas, vas al siguiente nivel, luego añades a eso. Por lo que el manager de nivel es un poco raro. No lo sé, tal vez deberíamos trasladarlo a un gestor de juegos. Ya sabes qué, pasémoslo a un gestor de juegos. Yo me he convencido. Entonces aquí dentro, voy a hacer clic derecho. Crea un gestor de juego vacío, pulsa Enter. Reiniciaremos la posición. Y aquí en el mánager va a crear un guión de cuatro C-sharp para el manager del juego en Enter. Y es exactamente por eso que quería crear un gestor de juegos solo para mostrarte este extraño símbolo por alguna razón, ningún otro cambio de guión excepto éste. Esta tiene esta extraña perilla en ella. No sé por qué. No me preguntes por qué. Todavía no estoy seguro. Pero de todos modos ahora el gestor de juegos tiene el guión de gestor de juegos. Y mientras estemos aquí, tenemos al manager de nivel, tenemos al manager de juego, también tenemos al Audio Manager. Ahí vamos, el Gerente de Audio. Entonces voy a hacer clic con el botón derecho para crear un vacío. El directivo golpeó Enter. Voy a restablecer su posición para que el gerente de juego, manager de nivel, y el dónde está? Audiomanager. Ahí vamos. Por lo que ahora tenemos una lista de todos los directivos. Y en las prefabs, prefab el nivel y el gestor del juego. Entonces, ¿tenemos dónde se guarda el AudioManager? Creo que está en los prefabs donde z. De acuerdo, entonces AudioManager, su propio Albany, gerentes de carpetas, AudioManager, manager de nivel, y el gestor de juegos. De acuerdo, con eso fuera del camino, abramos de nuevo el guión. En tanto que el manager de nivel, vamos a tomar los Bitcoins de aquí y trasladarlos al gestor de juegos. Y entonces vamos a seguir adelante y crear dos métodos aquí. Mantendré el inicio y la actualización. Tengo la sensación de que podríamos usarlos más adelante. Entonces aquí, en primer lugar, el vacío público, obviamente tiene que ser público porque vamos a serlo. Llamándolo desde diferentes guiones. Por lo que el vacío público consigue bitcoins. Y aquí dentro la cantidad a conseguir. Entonces abrimos los corchetes o líneas garabateadas o lo que sea. Y el Bitcoins plus actual es igual a la cantidad a obtener. Y si quieres, podemos ponerlo en 21 millones, pero vamos a mantenerlo como infinito. Podemos conseguir tantos como queramos. Y entonces vamos a crear el vacío público, gastar monedas, bitcoins. Y éste va a ser un entero de cantidad a gastar. Y aquí dentro vamos a conseguir las monedas actuales, discúlpame, sacarles las monedas actuales, la cantidad a gastar. Y por último, vamos a comprobar si las monedas actuales son menores o iguales a 0, lo que serán las monedas actuales. Las monedas actuales se fijarán en 0. Guarda eso. Y ahora vamos a crear un pequeño Peston cerca. Entonces si ingresa y pone punto, consigue la llave abajo, abrigo gen G, así keycode. Entonces quiero decir conseguir, si, GET, entonces conseguir bitcoins y digamos que obtenemos 25 o 20. Entonces si lo mismo aquí dentro. Pero en lugar de un G, usamos el H, H gastamos, pero monedas. ¿ Y cuántos gastamos? Digamos 10. Entonces obtenemos 20, Nos gastamos diez. Y por último, vamos a crear una depuración. Oh, nos olvidamos de esta depuración. Tengo Bitcoins actuales más equivale a bitcoins. Y obviamente estaremos configurando todo esto en la interfaz de usuario, pero por ahora ahorramos, entramos en nuestro juego. Creo que todo está bien. Entonces lo arreglamos todo. Las monedas actuales siempre van a empezar en 0. Entonces iniciamos el juego. Ahí vamos. Tengo 0 Bitcoins, así que voy a conseguir, conseguir, conseguir, conseguir, ahí vas. Y luego voy a gastar, gastar, gastar, gastar, gastar, gastar , pero gastar, gastar, y como pueden ver, no podemos ir menos de 10 Siempre que traté de gastar 10 porque sólo tengo 10. Y esto es algo que tendremos que tener en cuenta si es menor o igual, si lo ponemos a menos o igual que 0. En realidad, creo que es una buena idea. Entonces ahora en realidad podemos gastar lo que tenemos problema aquí, Es eso, vale, Lo siento. Es así como dijimos el menor que o igual. Entonces hay algo que tendremos que tener en cuenta y que cada vez que estamos gastando, realmente necesitamos tener estas monedas con nosotros. Pero esto es algo que creo que será manejado más adelante por el guión Sharp. Entonces aquí, vamos a ver, yo paso, gasto, gasto, gasto. De acuerdo, eso aún no funciona. Hey, bienvenido de nuevo. Por lo que fue totalmente algo muy sencillo. Cuando tenemos el colapso aquí mismo, se puede ver que empezamos en 0, 20, 40, y etcétera. Pero cuando empiezo a gastar, cuando llego a 0, ya está aquí por lo que no aparece. Y los mensajes que puedo mostrarles si quitamos el colapso. Por lo que cada sola línea no es maximizar en el juego, por favor. Si hago clic aquí, así que ahora puedes ver que cuando golpee el gigi, gigi, 120, vendo, vendo, vendo, vendo, vendo, vendo, vendo. Ahí vamos. Todo está funcionando. Entonces no fue por el menor que o igual, en realidad fue nuestra incapacidad para verlo. Por lo que espero que lo disfruten. Asegúrate de comprometer tus cambios. Y te veré en el siguiente video donde estaremos realmente recogiendo los bitcoins y no solo agregándolos usando teclas mágicas en el teclado. Entonces nos vemos. 75. Conección de Bitcoin: Bienvenido de nuevo Mis desarrolladores de juegos favoritos a un video completamente nuevo y éste, en lugar de simplemente agregar los puntos a nuestra capa o a nuestro gestor de juegos, en realidad tenemos esta moneda aquí mismo. Y como se puede ver, gira. Es realmente genial. Y si oyes cuando lo recogemos, hay una pequeña explosión. ¿ Por qué una explosión? Porque no me tomé el tiempo para realmente encontrar algún efecto de sonido para la recogida de la moneda. Entonces con eso de paso, no perdamos más tiempo y empecemos. Ah, está bien. Entonces es hora de empezar realmente a recoger el dinero que hemos creado. Entonces voy a despejar todo esto. Voy a abrir el guión y eliminar lo que tenemos aquí para la BBC o lo que sea que esté mostrando y agregando usando el teclado. Por lo que de vuelta aquí manera para que se compile. Y en los sprites de aquí, voy a crear una nueva carpeta para las monedas. Haga doble clic, abra esto y voy a entrar en los recursos aquí dentro. Y como pueden ver, tenemos la moneda giratoria, la moneda parpadea y la moneda brilla. Entonces elige lo que quieras. Yo quiero la rotación porque me gusta ver rotar las monedas. Por lo que a este final aquí se abre. Veamos cómo se ven estos. Monedas realmente bonitas, pero siento que podrían estar un poco fuera de lugar con los gráficos 2D que tenemos, pero sin preocupaciones, estamos usando activos libres del arte del juego abierto. Entonces ahí vamos. Agregamos esto aquí. Esta será una moneda enorme. Prepárate para el enorme Coyne. Whoa, nunca pensé, realmente no sabía que esta moneda sería tan enorme. Entonces hagámoslo un poco más pequeño. Aún más. Entonces 400, veamos. Podemos, por cierto, hacer que la escala sea un poco más pequeña, pero me gusta cambiar los píxeles por unidad. E incluso esto, Hagámoslo 800. Entonces hacemos dos veces más pequeño que lo que sea en este momento. Eso sigue siendo enorme. Y hagámoslo 1600. Así que vamos, por favor. Necesitábamos un poco más pequeños. Oh Dios mío. No esperaría esta cantidad. 3500 en serio, esto debería ser muy pequeño en este momento. Está bien, genial. Entonces creo que esta moneda, Ahí vamos. Entonces esta es una moneda pequeña que va a estar girando alrededor y podemos recogerla. Y en realidad, ya sabes qué, tal vez que sean 3000. Y ahí vamos, aplicamos los cambios. Hagámoslo punto. Punto, y no necesitamos hacer múltiplo. Ahí vamos, guarde eso. Ahora este va a ser el caso Bitcoin 0. Entonces ahora lo que vamos a hacer es entrar en la animación y crear una animación. Por lo que las animaciones de un activo hacen clic derecho en Nueva carpeta, rotando un Bitcoin, haga doble clic aquí y roten. Eso es todo. Todo lo que necesitamos hacer. A drag estos n y eso es correcto. Está bien, eso es demasiado rápido. Vamos a separarlos un poco. Entonces cada punto, allá vamos, creo que esta es una buena rotación. Entonces y por alguna razón siento que es un poco molesto, pero sin preocupaciones. Ahora vamos a seguir adelante y añadir un nuevo guión aquí. Entonces voy a entrar a los guiones y a adorar a las pastillas. Haga clic derecho y cree un nuevo guión C-sharp, que va a ser el ir y recoger una moneda. Recoger. Ahí vamos. Por lo que ahora tenemos la camioneta de monedas. Hagamos eso más pequeño. Ahí vamos. Por lo que se agregó al Bitcoin y vamos a abrirla y Visual Studio. Entonces si voy por la camioneta de salud, es más o menos lo mismo. Entonces, ¿dónde está? ¿ Dónde está la camioneta de salud? Entonces esto es más o menos lo mismo. Yo sólo voy a copiar el código. Yo lo voy a pegar aquí. Y las únicas cosas que van a cambiar como por ejemplo, el monto de la moneda que obtendrás de esta moneda, así que la guardo en ellas. Y tal vez también el recogido, que va a ser bueno y recogerlo. Y k se puede recoger método. De acuerdo, entonces la camioneta, la capa. Eso es obviamente algo que también vamos a añadir a la moneda porque más adelante querremos quizá romper un frasco o matar a un enemigo. Y así queremos tener un poco de retraso. Por lo que en cualquier momento ahora vamos a hacer esto más pequeño en componente las capas o recoger la capa. Ahí vamos. tiempo antes de la recogida es de 0.5, que es lo suficientemente bueno para nosotros. Y luego aquí dentro, ¿qué más tenemos que hacer? Destruimos el objeto del juego. Nosotros, en lugar de agregar HP, vamos a eliminar esto. Y nos vamos a asegurar aquí, también podemos quitar el jugador lo colocará en la capa de recogida. Por lo que las pastillas. Y recuerda que dejamos de usar la capa, capa. O sea, lo siento, la etiqueta de jugador con el fin de recoger cosas. Y aquí dentro dijimos que la camioneta es verdad, así que no cogemos dos veces. Y aquí dentro deberíamos de hecho aumentar la cantidad de monedas que tenemos y eso va a ser un reto. Tú. Por lo tanto, agrega la moneda y juega un efecto de sonido. Por lo que antes que nada, crea el gestor de nivel y agréguale las monedas. Dicey crear, me refería a sacarle el gestor de nivel y las monedas y reproducir los efectos de sonido cuando recogemos las monedas, puedes elegir como suene la fractura. A lo mejor puedes incluso ir y conseguir los tuyos, encontrar algunos si luego te proporcionaría un para que fuera del camino, pausar el video ahora mismo y ir al reto. De acuerdo, bienvenido de nuevo. Entonces aquí vamos a conseguir el manager de nivel, o lo siento, no el gestor de nivel, el gestor de juegos, pero el gestor de juegos no es una instancia. Entonces aquí vamos a crear un Game Manager público estático. Podemos encontrar el objeto, eso es algo que podríamos haber hecho, pero porque vamos quizá a acceder en múltiples ocasiones, creo que tener una instancia es mejor. Entonces aquí dentro, voy a encender el despierto y la instancia es igual a esto. Guarda eso. Quitemos el inicio y actualicemos por ahora. Si los necesitamos, los crearemos más adelante. Guarda eso de nuevo en la camioneta. Juego. Gerente. Instancia de punto, punto, agregar moneda u obtener monedas, obtener bitcoins. ¿ Y cuánto queremos? Es la cantidad de la moneda. Guarda eso, y ahora queremos reproducir el audio. Entonces AudioManager, usted dirige la instancia que se reproduce como fax y ¿qué efecto de sonido queremos reproducir? Podríamos crearlo aquí. Sí, claro, hagámoslo. Por lo que la caja de arena para jugar. Ahí vamos. Como fax para jugar, guarde eso. Y de vuelta en nuestro juego. Veamos qué tenemos aquí dentro. Y el Audio Manager, ¿dónde está el Audio Manager? Y qué tenemos la explosión, rifles enemigos, escopetas, tiper jugador siendo atropellado, tiro de pistola, explosión. Añadamos la Explosión. Seguro. ¿Por qué no? Porque no encuentro ninguna camioneta común. Puedes agregar cualquier cosa que quieras. Solo necesita algún tipo de metal. En realidad, creo que sí agregué algo aquí pero no lo agregamos. De todos modos, usemos la explosión sólo por diversión. De todos modos, elemento dos. Entonces los dos salvan eso, corre el juego. Y ahora cuando lleguemos a la moneda, deberíamos escuchar nada porque aquí dentro, no, no hay error ahí. Ok? No. Pero ni siquiera se destruyó a sí mismo. Entonces hay un problema. Y obtener componente. No se ha recogido la capa de recogida. A ver, porque esto debe ser sencillo. Esperemos este tal vez temporizador 0.5. No, no funciona en absoluto. Entonces veamos cuál es el problema. 0, vale, vuelve. Por lo que creamos un On Trigger Enter. Eso está bien, pero no tenemos un gatillo para desencadenar esto. Por lo que necesitamos agregar un colisionador de caja o colisionador circular 2D y convertirlo en un gatillo. Entonces el colisionador de círculo, creo, es extremadamente enorme. No, ¿dónde está? A pesar de que está exactamente en la moneda, Eso es excelente. Guarda eso, ejecuta el juego. Ahora debemos desmutar la música. Y se podía escuchar un débil sonido de la explosión en el fondo. Podía oírlo. Espero que lo hubieras escuchado. Vamos a las prefabs, vamos a las pastillas y dijimos el Bitcoin aquí mismo. Por lo que espero que lo disfruten. Asegúrate de comprometer tus cambios, asegúrate de dejar una reseña. Me ayudó mucho y te veré en el siguiente video. 76. Muestra la UI en nuestro lienzo: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos en este video, lugar de cada sola vez tener que buscar ya sea en la consola para la depuración o mirar en el objeto del gestor de juegos para saber cuántas monedas tenemos. En realidad hemos creado el lienzo de la interfaz de usuario para registrar todos los Bitcoins que tenemos. Entonces como puedes ver, tenemos 0 en este momento, pero si recogemos una moneda, eso lo conseguimos. Entonces, no perdamos más tiempo y empecemos en este video realmente sencillo. Oh, vale, Así que ahora es el momento de mostrar realmente los Bitcoins que hemos recogido en nuestro lienzo de interfaz de usuario. Entonces voy a hacer la escena un poco más grande. Voy a encontrar el Lienzo y aquí en alguna parte. Entonces haga doble clic en el lienzo de la IU. Abrámoslo. Veamos qué tenemos y haga clic en View IU canvas para que podamos ver todo. Tenemos la salud de la interfaz de usuario del arma, y sigamos adelante y creamos un nuevo juego vacío. No, no, lo siento, no en la salud en el lienzo de la interfaz de usuario crear un objeto de juego vacío. Y estas serán las monedas o lo que sea. Pero el rastreador de monedas, no sé, con el maíz se producen. Ahí vamos. Entonces Bitcoin tracker, y aquí vamos a agregar en la UI y la imagen, y esto representará la imagen, la imagen. Ahí vamos. Y sólo va a ser, déjame mirar a través de los sprites. Sprites hacen estos más pequeños. Ahí vamos, las monedas, mientras que la moneda la acabo de ver, monedas, monedas de estrella. Y agreguemos los objetivos de la terapia de imagen en el sprite. Podemos establecer a tamaño nativo. Ahí vamos. Creo que ya es lo suficientemente bueno. Lo ponemos justo aquí justo al lado puedes ponerlo donde quieras obviamente, como siempre digo, pero solo lo voy a poner justo aquí. Y luego voy a crear una, otra UI aquí. Oh, perdón por eso. No debimos haber puesto la imagen. Permítanme simplemente establecer la imagen. bug de posición moverá todo el objeto en tan solo un poco. Y voy a crear texto mucho pro aquí. Y obviamente lo voy a hacer, digamos 99, 99, negrita, y cambiar la fuente en ella, que sea la que tenga el robot pensando, voy a mover todo este objeto aquí. Me muevo un poco la imagen a la izquierda. Ahí vamos. Y luego el texto un poco a la derecha. Y esta será la cantidad de texto del BDC. Y lo mantendremos en mi 99 solo para representar todo. Y lo pondremos en el medio en la alineación y lo estableceremos en tamaño automático, aumentamos el máximo. Y déjame cambiar un poco el texto. Ahí vamos. Eso se ve bien. Yo creo. Sí, eso se ve bien en mi opinión. Por lo que tenemos el número justo aquí mostrado por encima de la salud y cada vez que recogemos, deberíamos conseguir esto. De acuerdo, genial, Así que voy a guardar esto. Voy a entrar en el lienzo de UI y voy a abrir el Administrador de UI. Entonces aquí, obviamente necesitaremos una referencia. Por lo que la primera referencia va a ser un campo serializado del texto tipo. De qué se trataba texto Mesh Procore, puré gravado Pro GUI. Usted estoy de acuerdo. De acuerdo, eso es todo. Y el texto BTC. Guarda eso. De acuerdo, entonces volvamos aquí. Hagamos una referencia a este día. Ahora. Ahí vamos. Y vamos a aplicar los cambios en el lienzo de la interfaz de usuario para que se aplique en todas partes. Está bien, genial. Ahora de vuelta en nuestro extremo aquí, ¿qué vamos a hacer? Bueno, obviamente cada vez que recogemos una moneda o empezamos de nuevo, o pasamos el punto, queremos que se muestre aquí mismo en el lienzo de la UI. Y este va a ser tu reto para establecer el valor de la moneda y actualizarla cada vez. Entonces crea un método que actualice el texto de la moneda y el Administrador de UI, ponlo al principio para que no necesitemos saber dónde está el principio, ¿dónde lo vendemos? Y también asegúrate de que cada vez que agreguemos o eliminemos monedas para actualizarlo en el lienzo de la interfaz de usuario. Para que fuera del camino, paren el video ahora mismo y vayan a hacer el caldeo. De acuerdo, bienvenido de nuevo. Entonces en el Administrador de UI, mientras que el Administrador de UI, y vamos a desplazarnos hacia abajo y aquí vamos crear un vacío público, Actualizar texto Bitcoin. Y aquí todo lo que voy a hacer es acceder al texto de PTC, texto, texto. Y va a ser igual al entero aquí mismo, que es la cantidad de BDC. Y va a ser igual a cantidad de BTC. Ahí vamos. Entonces esto no funciona porque no se puede convertir en cadena. Entonces voy a añadir la cadena de punto dos. Guarda eso. Entonces esto es un poco de truco. A lo mejor no sabías hacer eso. Hay otras formas de evitar esto, pero esta es una forma que te voy a mostrar por ahora. Por lo que de vuelta en el gestor de juego, cuanto empecemos. Entonces en principio o sabes qué? Mientras tengamos el despierto, vamos a venderlo en el despierto. Pero el problema con el despierto es que podría comenzar antes de que tengamos una instancia de UI Manager. Entonces para eso, hagámoslo y empecemos por ahora. Es un poco más seguro. Administrador de Ui, instancia de punto, actualización de puntos, textos de Bitcoin, y van a ser los Bitcoins actuales. Y luego cuando tengamos los Bitcoins, también vamos a actualizar esto y lo gastado después venderlo porque no queremos tener negativo, así que no lo vamos a vender aquí. Lo dijimos después de comprobar si tenemos menos de 0 y luego lo hacemos 0. Entonces guarde eso. De vuelta en nuestro juego. Nosotros vamos a ejecutar el juego. Hagamos esto un poco más grande. Entonces corre el juego, deberíamos ver 0 aquí porque no tenemos monedas. Ahí vamos. Tenemos 0. Y ahora cuando recojamos esto, así que por favor mute el audio. Cuando recogemos esto, deberíamos ver que obtenemos diez. Excelente. Por lo que ahora podemos recoger nuestras monedas y por supuesto también las podemos gastar. No tenemos la oportunidad de gastarlos, pero en un rato empezaremos a crear tiendas y ahí es cuando podremos gastarlos. Entonces con eso fuera del camino, no estoy seguro por qué sigo diciendo esta mezcla para comprometer todos tus cambios. Espero que estés disfrutando y te veré en el próximo video donde aprenderemos cómo realmente podemos ganar nuestros bitcoins y no solo recogerlos del piso. Entonces nos vemos. 77. Cómo ganar Bitcoin: Hey, bienvenidos de nuevo a un video totalmente nuevo, mis desarrolladores de juegos favoritos. Esta será una muy corta porque creo que ya sabemos hacer estas cosas. Entonces te voy a dar un reto virtual. No hay toboganes, no hay tiempo. Basta con pausar el video y pensar en cómo podemos realmente ganar estos Bitcoins. De acuerdo, se acabó el tiempo. Y ahora que lo has pensado, ¿dónde deberíamos estar haciéndolo? Bueno, deberíamos estar haciéndolo cada vez que matamos a un enemigo. Entonces voy a encender al duende errante. Aquí dentro, estamos ocupados. Así que enciende al duende errante, enciende el cobarde volador y las setas patrulleras. Entonces ahora tenemos una tonelada de enemigos y nuestro juego volando alrededor y tratando de clase. Ojalá consigamos el rifle. ¿ Y cómo vamos a hacer esto? Bueno, si recuerdas, cada uno de los enemigos tiene aquí el gotero de objeto. Y se puede ver que tenemos una gota de artículo que es la mitad. Entonces lo que podemos hacer, podemos agregar uno justo aquí y hacer el Bitcoin. Y otro mecánico fresco es que podemos crear los dos o agregar dos bitcoins o incluso tres bitcoins y 1.5 back. Y esto hará que el juego sea un poco más realista porque como sabes, siempre que no seas realista, tal vez duro. Yo materialista por unos juegos realistas. Por lo que nuestra ganancia se convertirá en una más verde, más fundamentada. Entonces nosotros, al jugar un juego, ya sabes, por ejemplo, pasas por habitaciones o matas enemigos, pero no todos ellos te dan salud. La mayoría de ellos no. Entonces lo que tienes que hacer es que necesitas matar mucho y trataste de sobrevivir tanto como sea posible hasta conseguir un bot de salud, bot el dinero, bueno, obtienes mucho dinero. Por lo que agregamos más bitcoins. Y si recuerdas, si entramos en el ítem Docker, verás aquí mismo que creamos un entero variable aleatoria y usamos eso para conseguir uno de los trabajos de ítems. Entonces cuando agregas más bitcoins, obtienes una mejor oportunidad de recoger un poco tranquilo. Entonces, ¿qué pasó en años? Entonces el cobarde volando, Vamos a añadir el bitcoin. ¿ Lo es? Entonces estoy agregando el que ya está aquí. No creo que sea buena idea. Permítanme añadir el prefabricado y las estadísticas. Entonces voy a entrar al nivel Prefabs, no a balas enemigas. Prefabs, ¿dónde están las pastillas? Entonces aquí dentro eso es volver a la de aquí, y en su lugar usaremos el Bitcoin, ese es el preferido. No creo que vaya a hacer mucha diferencia, pero sólo para asegurarnos de que no hagamos algo estúpido. Y sumemos el Bitcoin aquí mismo. Agregamos 24, el patrullaje, tenemos una oportunidad 5050. Entonces cuando cotejamos patrullando enemigo, tenemos oportunidad efectiva. Ahorramos todo eso. Corremos el juego y ojalá lleguemos a ver, no, no la escopeta. Yo quiero el rifle. Hacer las cosas más rápidas. Vamos. Otra vez. Vamos a jugar. Vamos. Rifle llamó, vamos. Dame ese mando. Vamos a intentarlo. Honestamente, no quiero el rifle. O sea, yo sí quiero el rifle. Podría pensar que este video es poco conocido de la pistola. Por favor, vamos. Rifle, rifle, rifle, rifle. Ahí vamos. Entonces ahora le voy a disparar la vida a estos duendes. Entonces como puedes ver, qué guay es eso. Entonces la vida nos da una vida, No conseguimos el Bitcoin que queríamos. De nuevo, intentemos matar esto. De acuerdo, entonces otra vez, tenemos una vida por alguna razón, o nuestra suerte es extremadamente mala o hicimos algo mal. Entonces veamos qué hicimos mal. Entonces tenemos el Bitcoin aquí, la oportunidad laboral como 1, 0. De acuerdo, bienvenido de nuevo. Entonces por alguna razón acabo de jugar eso, lo probé un par de veces más y todo el tiempo que siempre tuvimos con consola. No lo sé. Supongo que nuestra suerte fue tan mala. Permítanme sólo sacar la pistola de aquí. Y también quitemos la escopeta. Yo sólo quiero conseguir rifle, correr el juego. Déjame coger el rifle. Y ahora deberíamos ver eso cuando mate a este hombrecito aquí mismo. De acuerdo, entonces ahí vamos. Obtenemos Bitcoin, lo recogemos, obtenemos diez. Y te has dado cuenta de que nuestra ganancia es en realidad bastante dura. Entonces tengo que caminar alrededor de este tipo y tengo que matarlo y mirar cómo huye rápido y ahí vamos En otra moneda. Y luego nos vamos a casa y nos llevamos otra moneda. Ahí vamos. Entonces ahora tenemos 30 monedas. Ahora, otra cosa que también podemos hacer para ganar estos son, ¿dónde está, Dónde está La olla rompible? Se puede ver aquí mismo podemos sumar un par de estos. Ahí vamos. No, agrega un par de Bitcoin para que tengamos una mejor oportunidad y aplicemos estos cambios. Porque aplico los cambios, no sé si afectó. No debería haber afectado, pero supongo que tal vez lo rompimos. Ahí vamos, conseguimos esto. Intentemos romperlo de nuevo. Deberíamos conseguir el Bitcoin. Entonces por alguna razón cuando agregamos un nuevo oh, ahí vamos. Y luego lo recogemos y lo conseguimos. Por lo que espero que lo disfruten. Asegúrate de comprometer tus cambios, pesar de que no hicimos nada. No es necesario que cometas tus cambios esta vez. Diviértete, diviértete cada vez, y te veré en el siguiente video. 78. Artículos de tienda: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y éste, no hacemos nada muy elegante. Creamos una nueva escena. Tenemos una escena de compras ahora mismo, y como pueden ver, tenemos tres artículos aquí. Son muy idénticos. No hacen nada especial, pero esta es solo la configuración para el próximo video donde empezaremos realmente a crear cosas. Entonces, no perdamos más tiempo y empecemos. De acuerdo, así que ahora es hora de crear una tienda. Y para crear una tienda, quería convertirla en una escena separada todo por sí sola. De esa manera nos inspiramos en el juego Hades. Podemos ir de una escena a la siguiente gueto, una tienda, tienda ahí luego crecer a las otras escenas. Entonces lo que voy a hacer es que voy a duplicar el nivel dos. Y ahora tenemos nivel tres y voy a llamar a esto la tienda, puede llamar a esto el nivel de tienda o escena de tienda o lo que sea. Entonces voy a hacer doble clic y se puede ver que a pesar de que es lo mismo, pero estamos en la tienda ahora mismo, aquí arriba en la jerarquía. Entonces voy a eliminar primero el Bitcoin, eliminar el arma, pastillas de salud por dejó caer el rompeble comprado y vamos a abrir la habitación y vamos a seguir adelante y eliminar a todos los enemigos. Yo sólo los voy a quitar de aquí y sólo mantener esta habitación tal como está. Creo que vamos a hacer de esto un prefabricado y poder añadirlo a cualquier habitación que queramos. Pero de todos modos, más adelante pensaremos en eso. Pero por ahora solo eliminaremos a todos los enemigos y causaremos que esto se mantendrá la capa, se mantendrá el portal obviamente porque queremos salir de la tienda más adelante. Y voy a hacer clic aquí y crear un objeto de juego vacío, que va a ser el artículo de la tienda. Y vamos a empezar con la salud. Ahí vamos. Por lo que vamos a tener principalmente tres artículos de tienda en los que enfocarnos ahora mismo. Donde obtenemos salud 14, la salud de actualización, y queremos comprar algún tipo de arma, una mujer al azar, creo. Entonces. Vamos a poner estos tres. Entonces vamos a tener uno aquí, uno aquí, y otro aquí. Empecemos con el más sencillo, que es el elemento afilado regular. Voy a añadir aquí un componente que va a ser un sprite. O saber qué, tal vez queremos ir en la sala de urgencias, saber qué, solo agreguemos un sprite por ahora. Entonces un renderizador sprite. Y vamos a ir en los sprites en el, ¿Dónde está? Ah, así que las pastillas. Y ahí vamos. Esta es la salud. Y yo sólo voy a añadir el sprite aquí mismo. Y lo vamos a poner en la capa de jugadores, pesar de que dijimos que ya no vamos a estar haciendo esto. Pero de todos modos, sigamos. Entonces obviamente vamos a agregar un colisionador de cajas 2D, y esto será un disparador. Entonces mientras que es un gatillo, Veamos el tamaño y obviamente queremos hacerlo mucho más grande. Para que así el jugador pueda entrar aquí. Y tendremos, por ejemplo, al declarar pasos en las inmediaciones de este artículo de compras, va a recibir un mensaje que aparezca. También vamos a añadir un lienzo y solo un poco donde leerá. Puedes comprar este artículo, por ejemplo, una salud o reponer tu salud por, digamos, 50 monedas. Y esto aparecerá sólo cuando el jugador se quede cerca del botón o del objeto afilado o lo que sea. Y también queremos crear un pequeño colisionador de caja que se asegure de que no golpeemos este objeto real. Entonces un segundo colisionador de caja, solo lo haremos un poco más pequeño para que solo sea suficiente para que no golpeemos el objeto real aquí dentro. Ahí vamos, cierran eso, guarden eso. Y ahora lo que vamos a hacer es añadir un lienzo a esto. Entonces iremos a la UI. Vamos a añadir un, dónde está el lienzo. Y llamaremos a este artículo D afilado Lienzo. Y vamos a establecer, queremos ver la interfaz de usuario, de acuerdo, Así que no podemos ver la interfaz de usuario. ¿ Dónde está? Esto es, la gran lona gigante? Enciendamos los artilujos. Y no me está permitiendo quitar la báscula porque necesitamos ajustarla al espacio mundial. Y cero punto cinco en el eje x, cero cero punto cinco en el eje y. Y reiniciemos su posición a 0. Ahora haga doble clic en el artículo de la tienda, y ahí vamos. Ahora tenemos el pequeño lienzo por aquí. Y vamos a ponerlo en arco. Sí, creo que ya es suficiente aquí arriba. Y vamos a sumar, en primer lugar, una visita a los textos. Por lo que vamos a ir a UI texto mucho Pro. Este es el primero. Esto es para el, digamos el botón de presionar, texto. Y otro que va a ser el Considerando que, este será el texto que represente el precio del artículo. Por lo que artículo, artículo para texto de hielo. Ahí vamos. Y voy a mover éste hacia abajo y mover éste hacia arriba. Y hagamos un par de edición y hagamos esto más grande. Prensa. E para comprar. Y desplázate hacia abajo un nuevo conjunto en el medio y asegúrate de que el tamaño automático. Y también bajaremos esto. No queremos ver esto y hacerlo audaz, hazlo robot. Y no lo podemos ver porque necesitamos entrar en el lienzo y la capa de clasificación y ponerla en el jugador. Ahí vamos. Entonces ahora lo podemos ver todo. Y ahora de vuelta en el botón, este es el ajuste perfecto. Bueno, creo que podemos aumentar el máximo. Entonces cuando presionas en el lado opuesto, tienes las opciones aquí mismo para auto size opción el mínimo, el máximo, y lo que sean estas. Por lo que acabo de aumentar el máximo para llenar todo el espacio aquí dentro. Ahí vamos. Y ahora de vuelta en el artículo del precio, ya sabes qué, déjame simplemente borrar este y luego duplicar éste. Y ahora lo movemos hacia abajo. Esto será, digamos, precio dos botones. Y entonces podemos decir, por ejemplo, 99, 99 monedas. Ahí vamos. Entonces como puedes ver en este momento es una mesa. A lo mejor es un poco grande, pero no se preocupe por eso. En realidad podemos disminuir los tamaños de estos dos porque parecen un poco demasiado voluminosos. Entonces ahí vamos. Algo así. Y este también Algo así. Sí, claro. ¿Por qué no? Así que tómate tu tiempo para crear todos estos, asegúrate de que se vean realmente bien por tu propio bien. Y por último, quiero añadir algún tipo de plataforma bajo el alma, el jugador o quien esté jugando a tu juego no solo confunde esto con algún tipo de objeto en el suelo. Entonces voy a entrar en mis recursos y tengo esto algún tipo de teletransporte, lo voy a usar como plataforma. Entonces, arrastrémoslo a los sprites aquí mismo. Y es molesto cuando tenemos los archivos tan pequeños. Por lo que haga clic aquí, cree la plataforma de la tienda. Y sumémoslo aquí. Y tenemos esto ahora mismo. Entonces voy a hacer que sea un múltiplo, que apunte, aplique los cambios go Sprite Editor. ¿ Y cómo vamos a rebanar a este bebé? A ver, creo esto como uno de los sprites más grandes. Por lo que puedes ver aquí mismo que es 128 por 320. Por lo que de vuelta en el Sprite Editor, creo que intentemos automático. Sí, seguro ¿por qué no? Automático parece bueno. Si lo deseas, puedes seguir adelante y crear animaciones para esto. Sí lo recomiendo para que puedas jugar todo el tiempo. A lo mejor vamos a hacer esto. Entonces voy a volver al artículo aquí mismo. Y sólo agreguemos este teletransporte. Ahí vamos. Por lo que este será el artículo plat formulario. Y deberíamos ponerlo en la capa, capa. Es muy pequeño. Entonces vamos a ir en el, ¿dónde está? De acuerdo, Así que aquí, hagámoslo 50. A ver cómo se ve eso. Hagámoslo aún más grande. 25. Ahora que tenemos 25. No, eso es un poco demasiado grande. Ahora. ¿ Qué hay entre 25 y 50? Eso es camión 14. Aplicar. Genial. Entonces 40 parece ser del tamaño correcto y voy a ponerlo en 00 y luego moverlo un poco hacia abajo. Bueno, dejémoslo. A lo mejor si quieres, puedes empezar a mover esto arriba y abajo. Y pero sólo lo voy a mantener como es para el botón, tal vez quiera girarlo. Te recomiendo que hagas eso. Pero recuerda que si quieres mover el plus real aquí, el plus verde, debes asegurarte de configurarlo como un objeto separado. Porque si movemos este alrededor, mira lo que pasa a lo ancho, todo se voltea. Por lo que debes asegurarte de que si quieres agregar algún tipo de animación para animar esto también, tal vez lo haré más adelante, pero por ahora centrémonos en crear el elemento real. Entonces voy a mover esto un poco aquí abajo. Entonces ahí vamos. Por lo que ahora podemos ver que se trata de un artículo. Voy a crear un guión aquí que será, y los guiones, voy a hacer esto un poco más grande. ¿ Y tenemos algo? De acuerdo, así que sigamos adelante y haga clic derecho aquí y creemos una nueva carpeta. Y esto será para la tienda. Y dentro de tu continuo para crear el artículo de la tienda. Ahí vamos. Espere a que se compile y voy a saber, Gracias lo que esta abierta. Y voy a sumar al cual es el asunto. Por lo que la nueva Unidad es muy horrible. Sigue estrellándose, sigue deteniéndose. El cargamento del juego lleva mucho tiempo. Porque no se puede encontrar el guión. Excelente, Genial. Entonces tenemos el guión, no se puede encontrar el guión. Nuestro caso, obviamente hay un problema. Permítanme borrar esto. Oh, lo siento mucho. Fue por mi culpa porque acabo de notar como lo estoy borrando, que agregué una opción de espacio, elemento afilado, no podemos agregar espacios entre ellos. Artículo tan afilado. Ahora esto debería funcionar. De acuerdo, ahí vamos. Entonces abre el guión. Ahora tenemos este artículo afilado. Permítanme duplicar esto una y dos veces. Y ahora tenemos estos tres artículos. Déjame mover esto un poco a la izquierda y mover éste un poco también a la izquierda. Y por último, este también, tal vez podamos hacerlos un poco más pequeños, pero sin preocupaciones por ahora, tenemos estos tres artículos más adelante, los estaremos cambiando. Obviamente esta será la actualización sanitaria y ésta serán las armas. Armas impactaron Enter. Espero que haya disfrutado. Esto fue sólo la configuración de nuestros artículos. En el siguiente video, estaremos iniciando todo el proceso de scripting, cambiando los comportamientos. Y antes de irme, déjame simplemente crear un objeto de juego vacío, restablecer su posición. Y estos serán los artículos de la tienda sólo para que tengamos una bonita jerarquía aquí para todo. Guarda eso. Y te veré en el siguiente video. 79. Comprar en la tienda: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en este, cogemos un par de monedas, nos golpean. Por lo que nuestra vida es de 200 más de 300. Pero afortunadamente, tenemos esta salud aquí para que pueda comprar un par de salud y actualizar mi salud, pero no todo funciona. Entonces puedes ver aquí mismo porque esto es algo diferente. Esto no es una media actualización, quiero decir, un artículo de restauración de la salud. Este es, y yo compro. Pero finalmente se puede ver que tengo 0 cantidades de dinero. Entonces si trato de comprar más, desafortunadamente, no puedo culparlo a la economía, culparlo a quien tú quieras. No perdamos más tiempo. Empecemos. Ah, caso. Entonces ahora es el momento de empezar realmente a comprar los artículos. Y lo primero que queremos hacer es que estos textos aquí aparezcan cuando el jugador está parado dentro del colisionador de cajas justo aquí. Y si está parado afuera de ese colisionador de cajas, no queremos ver el texto y no podemos comprar. Entonces lo primero que vamos a hacer es que creo que quiero aumentar un poco esto. Entonces haremos el tamaño un poco más grande a partir de esto. Ups. Un segundo. Aumenta los colisionadores de cajas por todos lados, hazlos un poco más grandes y tal vez incluso haga el colisionador de cajas que no es un gatillo, que es éste, y tal vez solo cubría toda la superficie de este lo que sea, plataforma con un poco plus green plus, y de todos modos, con eso, fuera del camino, voy a hacer esto fuera de pantalla es bastante fácil, nada demasiado. Y siempre vuelve a ti lo grande, lo pequeño que quieres hacerlo. Pero hay algo que no depende ti y ese es el reto de hoy. Queremos que el texto aparezca cuando nos acerquemos. Entonces obtén una referencia al texto de byte. Utilice el emprendedor enter y exit para establecer el texto activo en verdadero y falso respectivamente. Y también crea un bool que comprueba verdadero cuando el jugador está en los jugadores encendidos y falso cuando está fuera de él. Para que aunque el camino pause el video ahora mismo y vaya a llegar a poco profundo. O K. Bienvenido de nuevo. Entonces yo solo estaba terminando con estos primero que haré es seleccionar estos tres artículos y hacerlos las las pastillas? Sí. Hacer a los niños también camionetas. Entonces ahora vamos a abrir los artículos de la tienda, un guión, creo que se está abriendo aquí, y vamos a parar. Entonces antes que nada, voy a crear una tía azúcar entrar y salir. Entonces, Trigger Enter 2D y en la salida de azúcar 2D. Ahora necesitamos una referencia al mensaje de adiós. Entonces aquí voy a crear un campo serializado de tipo texto Mesh Pro. O ya sabes, lo que tal vez lo que podamos hacer es que podamos seguir adelante y simplemente cambiar todos los artículos. O lo que quiero decir es apagar todo el lienzo y encenderlo. Entonces conseguimos todo el lienzo, podemos encenderlo y apagarlo. Entonces tal vez esa sea la mejor manera de crear una referencia al lienzo. Y aquí, podemos crear una referencia a un objeto de juego. Realmente no importa. Pero en cualquier caso, el mensaje de Canvas, llamemos a esto el mensaje de Canvas. Y ahora cuando entremos, porque solo tenemos la camioneta y las pickups de pick up solo interactúan con los jugadores de esto no será un problema. Entonces aquí, el mensaje de adiós, fuera, Lo siento, mensaje de adiós. Sigo pensando en una variable diferente. Por lo que el lienzo mensaje dot set active o dot game object dot set active, true. Y luego lo voy a duplicar. Y aquí dentro cuando salimos, es falso. Guarda eso. Entonces también necesitamos una variable que va a ser un bool privado en por zona. Y aquí dentro vamos a decir que en por Zona es igual verdadero y por zona igual a falso. Y tal vez lo instanciamos aquí mismo como falso. Entonces empezamos con falso. No queremos poder comprar cuando estamos de pie muy lejos. De acuerdo, Genial Con eso fuera del camino. Vayamos aquí. Y seleccionemos estos tres lienzos. Por lo que 123, apáguelos, corre el juego, camina hacia él. Ahí vamos. No pasa nada, obviamente porque nos olvidamos de hacer lo más importante, que es la asignación del lienzo. Por lo que asignamos el lienzo a cada uno de los que ejecutan el juego. Y ahora deberíamos haber arreglado nuestro problema Cualquier día ya. Entonces bajamos. Ahí vamos. Presionamos E para comprar precio 99 moneda, precio 99 moneda y priceline.com. Está bien, genial. Entonces ahora se apaga, se enciende. Y obviamente el bi también debería funcionar. Tenemos un error que es algo. Presente y la versión actual de Unity. Gracias Unidad por esta muy mala actualización. De cualquier manera, sigamos. Ahora hay algo que tomar en consideración. Tenemos los tres tipos de artículos que podemos comprar. Eso es bueno. De acuerdo, entonces podemos por ejemplo, decir si este artículo es así y demás, lo hacemos, así que hay algo mejor que quiero enseñarte en este video y eso se llama el interior. No voy a entrar en las diapositivas porque es bastante sencillo de entender. Podemos crear una enum. Va a ser el tipo de artículo. Y podemos abrir los corchetes aquí y decir que uno de ellos es la restauración de la salud, la salud, restaurar. El segundo es el de salud subiendo grado, y el último es un arma. Entonces, ¿cuál es el tipo de elemento enum en básicamente, en sus términos más simples, nos permite crear un nuevo tipo de variable. Entonces al igual que tenemos el booleano, el lienzo, y así sucesivamente, también podemos crear una enumeración, que es el tipo de elemento. Y ahora podemos crear una variable aquí, que es un campo serializado de tipo, tipo de elemento, y es el tipo de elemento real. Ahí vamos. Entonces como se puede ver, la enumeración ha mayúscula primera letra y en cada palabra, mientras que la variable no está en mayúscula, es en minúscula. Entonces si guardamos esto y volvemos a nuestro juego, mira lo genial que será esto. Si elijo el tipo de artículo, déjame cerrar los colisionadores de caja. Se puede ver que tengo un menú desplegable y puedo elegir uno de estos ítems. Y esto es algo realmente bonito. Y esta es una actualización de la sección anterior donde los enemigos tenían cada uno su propia caja para tomar y así sucesivamente y así sucesivamente. Y hay que desmarcar algo para tomar algo más. Esta de aquí es una manera mucho mejor, una forma mucho más suave. Por lo que esta será la media actualización y la última será el arma. Genial. Por lo que ahora tenemos el tipo de ítem del que podemos elegir ir. Pero hay una cosa más que necesitamos agregar aquí, y ese es el costo del artículo. Tan campo serializado y el costo del artículo, pero esto no es lo que estaba en. Quería enfocarme en que quería enfocarme en algo llamado la declaración de cambio. Pero antes de hacer eso aquí, voy a crear la actualización. Y voy a comprobar si soy envidia por zona. Entonces voy a comprobar si tenemos input dot, get keydown, open this up, keycode, key code dot e.Y aquí lo que podemos hacer es por ejemplo, podemos empezar a crear tal vez si, digamos el ítem escriba dot algo y lo que sea, y comience a revisar los artículos y comprar en base a eso. Pero tenemos, en este caso, algo mucho más poderoso. Y ese es el caso del interruptor. Entonces déjame mostrarte lo que es este caso de cambio. Tan similar a las declaraciones if, nos permite la ejecución de código condicional. Si tenemos cierto tipo de elemento, queremos llamar a algo diferente. Si queremos que se actualice la salud, debemos llamar a un método diferente al que compramos un arma. Por lo que la declaración de cambio va a ser muy efectiva aquí. Y al igual que la sentencia if, funciona de la misma manera que tenemos ejecución de código condicional, pero está estructurado como un poco diferente y más eficiente cuando se trata de cosas como estas. Por lo que empezamos por escribir interruptor. Agregamos el interruptor de caso. Entonces aquí dentro esto podría ser cualquier cosa que queramos. En nuestro caso, será el tipo de artículo que tengamos. En el caso uno. Por ejemplo, digamos que el tipo de elemento es una actualización de estado. Entonces en el caso 1, uno aquí dice, por ejemplo, actualización de salud. Ejecutamos algún código que rompemos. Esto es muy importante y luego vamos al segundo caso. El segundo caso digamos es el arma. Después ejecutamos algún código diferente, rompemos, y luego comprobamos el valor predeterminado. Ahora obviamente puedes sumar cuántos casos quieres a 123, 1520, 500 si quieres. Pero eventualmente tendremos que conseguir algún tipo de cosa por defecto. Entonces, ¿qué pasa si no tenemos ningún tipo de artículo? Esto es algo que no sucederá, pero por si acaso no hay tipo de elemento, necesitamos tener un descanso por defecto y luego Terminamos las sentencias de cambio. Así que asegúrate de entenderlo. Veremos la implementación y solo un poco, pero solo miren la estructura. Nosotros entonces sin Mira lo que es. Y volvamos a nuestro código e implementemos esto. Antes de crear esta declaración de cambio, necesitamos saber si realmente les tenemos dinero para esto. Entonces, en primer lugar, vamos a comprobar si el gestor de juegos punto instancia. Déjame ver. ¿ Tenemos acceso a la corriente que va? No, no lo hacemos. Entonces vamos a crear un int público. Y consigue monedas de bit actuales. Y esto acabará de devolver Bitcoins actuales. Guarda eso, vuelve atrás y escucha el punto de instancia obtener bitcoins actuales. Y si tenemos más o al menos igual a, entonces si tenemos más o al menos igual al costo del artículo, entonces podemos seguir adelante. Y en cuanto compremos el artículo, entonces vamos a ir al gestor de juegos, instancia de punto, punto, gastar monedas. Y la cantidad de monedas que vamos a gastar como costo del artículo. Pero entonces lo que sucederá después de que gastáramos nuestra moneda, deberíamos conseguir un artículo. Entonces vamos a crear el interruptor. Y aquí dentro vamos a decir el tipo de artículo. Entonces este es el caso alrededor del cual estamos cambiando. Y ahora vamos a abrir esto. Entonces en caso de que tengamos el tipo de artículo dot health restore y no me está permitiendo oh, no, no lo es. El tipo de artículo pequeño es el tipo de artículo grande dot health restore. Ponemos los dos puntos, pega Enter. Aquí vamos a, mientras que aquí podemos o bien encontrar objetos de tipo y va a ser el manejador de salud del jugador. Y entonces podemos entrar aquí. Y qué es lo que no hemos declarado manejador de salud daña al jugador. De acuerdo, Así que en HP a jugador, en HP a jugador. ¿ Y cuánto queremos sumar? Bueno, podemos elegir aquí si 10 o 20 o el valor que quieras agregar, guarde eso. freno tenía esto y ahí vamos, Guarda eso. Entonces hice una pausa ahí por un segundo porque no estaba seguro si debíamos usar el objeto de archivo de tipo o si quieres aún mejor, crea una variable aquí para el jugador. Por lo que una variable privada para la capa y luego ponerla justo aquí y la colisión, esto sería más inteligente y más económico porque sabemos que solo el jugador puede ser la colisión aquí dentro la capa que nos hemos sentado. Y encontrar objeto de tipo a veces es un poco engorroso. Es, toma mucho espacio del procesamiento, mucho, mucho poder de procesamiento porque objeto fino de tipo simplemente pasa por toda la lista en tu escena y luego elige uno de ellos. Por lo que depende de ti. Cualquier cosa que quieras hacer realmente depende de ti. Entonces, ¿dónde tenemos el artículo justo aquí? Entonces, elijamos el primero. Ese es el costo a 20. O saber qué? Vamos a mantenerlo a las 10. Y esto restaurará un poco de Salud. Y yo voy a entrar a los Prefabs. Y aquí dentro voy a sumar los picos. Entonces, ¿o son las pastillas? Añadamos un poco de moneda y aquí, 23 monedas. Entonces tenemos dinero para gastar. Y luego volveremos a entrar en las Prefabs y añadimos una. ¿Dónde está? ¿ Dónde está? ¿Dónde está? Nivel objeto en los picos justo aquí. Ejecuta el juego. Por lo que quiero que me golpeen los picos. ¿ De acuerdo? Recoge un par de conos, baja aquí y estamos de visita. Entonces ahí vamos. Presionamos igual. Sí, ahí vamos. Nos ponemos bronceado, bronceado, bronceado. Y si traté de comprar más, ahí tienes. Tenemos 0, así que ya no puedo comprar nada. Ahí vamos, tan genial. Eso parece estar funcionando. En el siguiente video estaremos usando la actualización de salud creará un método separado y el manejador de salud. Y como he dicho, y por cierto, este error sigue apareciendo. No te preocupes por ello. Como ya he dicho aquí, el objeto fino de tipo algo que no me gusta particularmente no me gusta sobreutilizar objeto definido de tubería se remonta a ti. Realmente espero que intentes crear tu propia variable, ponla aquí mismo. Con eso dicho, espero que lo disfruten. Espero que estés guardando todo, cantando todos tus archivos, y te veré en el siguiente video. 80. Cómo mejorar de salud: Bienvenido de nuevo Mis desarrolladores de juegos favoritos a un video completamente nuevo. Y en esta recogemos un par de monedas, nos dan golpes, bajamos. Podemos o restaurar nuestra salud o podemos mejorar nuestra salud. Entonces, actualicemos nuestra salud. Como se puede ver, tiene, el máximo se ha incrementado en diez, y nuestra salud ahora está llena porque ese es nuestro mecánico en el juego. Entonces, no perdamos más tiempo y empecemos. De acuerdo, entonces es hora de mejorar nuestra salud. Pero antes de que hagamos eso, hay algo que me molesta y algo que necesitamos arreglar. En primer lugar, vamos a encender estos tres campus de aquí. Y en cada lienzo voy a cambiar el, sea cual sea el precio aquí que diga. Entonces por ejemplo, el precio 999 en su lugar vamos a guardar esto como la restauración de la salud. Restaurar la salud. Y diremos, ¿cuánto dijimos que cuesta? ¿ Cuánto es el costo de la salud restaurar 10. Entonces aquí, luego BTC. De acuerdo, Entonces en el segundo, va a ser la actualización. Entonces se abre, selecciona el botón, déjame cerrar los abajo. ¿ Qué fue? Actualizar la salud. Actualización, salud. Y digamos que éste va a costar 30 antes de Cristo. Y finalmente el nuevo artículo, déjame cerrar esto otra vez y dar vuelta estos dos lienzos de y finalmente, tenemos éste aquí mismo. Y esta será la por arma o por arma. Y esto será, digamos 40 BTC. Ahí vamos. Ahora tenemos todo configurado correctamente Al pensar en el siguiente video, también voy a añadir tal vez un poco de animación a cada uno de estos ítems y tal vez algo a la plataforma solo para darle un poco más de vida. De acuerdo, con eso fuera del camino, dejemos caer esto de nuevo hacia abajo. Pero antes de irnos, quiero cambiar el sprite real aquí. Y te he proporcionado un par de sprites. Entonces tenemos en primer lugar, éste, pero honestamente me pareció un poco feo. Por lo que también uso estos, y realmente depende de lo que quieras que tenga tu juego. Se puede ver que aquí hay muchas pociones, así que voy a seleccionar el rojo. Y tenemos este vidrio grueso tal vez deberíamos usar el vidrio grueso? No, solo usemos el vaso regular. Y lo voy a agregar a los sprites aquí dentro. Por lo que dentro de sprites se abre más grande. Y sigamos adelante y haga clic derecho aquí y tal vez creemos una carpeta separada para esto o simplemente añadimos a las pastillas si tenemos algo o algo para la salud. Cualquier cosa. ¿Pickups? Sí, seguro. Eso se suma a las pastillas. No se preocupe por eso. Guárdalo aquí. Creo que este es un buen lugar. Y luego vamos a entrar en la actualización del ítem y darle éste. Ahí vamos. Bonito. Muy grande. Entonces voy a hacerlo tal vez 200, aplicar, hacerlo punto bilineal. Aplicar. Todavía grande. 400, 400 creo que sería demasiado pequeño. Se aplican 300. Y el sí parece ser lo suficientemente bueno. A lo mejor podemos subirlo un poco. Pero esta es la razón por la que quería crear el elemento real sprite aquí para cada uno. ¿ Ahora qué? Adelante y hagamos eso. Algunos en curso crean el elemento sprite. Y siempre es mejor tener estos brillantes en un diferente. Y lo que podemos hacer es seleccionar aquí y dar click en Copiar Componente. Entonces copia componentes, selecciona el elemento sprite y selecciona aquí y básicamente componente como nuevo. Por lo que ahora puedo volver aquí y quitar el componente por completo. Y ahora este sprite es libre para moverse arriba y abajo y podemos agregarle algún tipo de animación libremente. Entonces voy a copiar esto y pegarlo para el primer elemento y aquí. Y luego para éste también aquí. Y debemos restablecer la posición de cada uno de esos. Y para éste. Y aquí dentro, en lugar de tener este rojo, vamos a añadir el sprite habitual que estamos usando. Y aquí dentro sólo quitaremos el componente. Ahí vamos. Excelente. Por lo que ahora podemos controlar este ítem sprite todo en canción. ¿ Y qué más queremos hacer? Y el último de aquí, artículos privados, quita este artículo y electrón y el siguiente video estaremos agregando su propia arma. De acuerdo, Para que fuera del camino, también asegúrate de cambiar los planeadores de caja en cada uno de esos, solo para que no colisionemos con los artículos con eso fuera del camino. Sigamos uno y ahora es el momento de la actualización de salud. Entonces vamos. En primer lugar, crear un método y el manejador de salud del jugador que nos permita aumentar el nivel máximo 2. ¿ Tenemos algo para hacer eso? No, nosotros no. Entonces lo voy a agregar aquí mismo. Entonces aquí voy a crear un vacío público. Aumentar max. ¿ Qué es eso? Máxima salud. Y aquí y la cantidad máxima de salud. Y luego vamos a conseguir el máximo de salud y aumentarlo por cantidad de salud V-max. Y entonces vamos a conseguir la salud actual y es igual a la salud máxima. O si quieres, puedes evitar esto y no hacer esto. Entonces obtenemos una actualización, pero no nos da salud. O por ejemplo, si lo desea, puede establecer en lugar de la salud máxima, puede establecer la salud actual más 75 por ciento o algo así. Creo que esto es algo que pasa en Hades o puedes aumentarlo solo en diez o como quieras hacer con, solo lo mantendré simple como aquí. Y luego hay una cosa más que tenemos que hacer, y es que necesitamos entrar en la instancia de UI Manager Door, y necesitamos actualizar The Wait un segundo, mientras que el UI Manager, necesitamos actualizar la media barra por lo que necesitamos asegurarnos de que muestre lo que está pasando. Aumenta el valor máximo y el valor de nuestra salud aquí, en la instancia de administrador de la interfaz de usuario, actualizamos el valor máximo, que es la salud máxima del deslizador. Y esto es importante porque esto determinará cómo funciona el perezoso. Entonces, después de actualizar la salud máxima, necesitamos ir a la instancia de punto de UI Manager, punto de salud slider dot max value. Y va a ser igual al máximo Hola otra vez. Entonces guarde eso. Y también nos aseguraremos de actualizar la salud del jugador que estás al final. Guarda eso. Está bien, genial. Ahora con eso fuera del camino, hora de comprar realmente el artículo aquí. Entonces te lo voy a emitir como un reto. Y eso es crear otro caso para la actualización de salud. Por lo tanto, crea un nuevo caso que tome el tipo de elemento de actualización de salud. Entonces necesitarás encontrar el sistema de salud del jugador al igual con anteriormente o si estás usando la colisión, entonces finalmente aumentar la salud máxima de nuestro jugador. Fue eso aunque la forma pausar el video en este momento e ir al reto. Oh, hey, bienvenido de nuevo. Por lo que de vuelta en el artículo de la tienda aquí tenemos otro caso al que vamos a llamar al caso tipo de artículo dot health upgrade. Y nosotros vamos a hacer lo mismo. Vamos a encontrar al manejador de la salud de la capa. Y entonces vamos a aumentar el máximo de salud por cuánto aumentamos el Mac Sur? Vamos a mantenerlo a las 10. Mantén las cosas simples para que podamos entenderlas fácilmente y luego nos vamos a romper. Entonces de vuelta en nuestro juego, Vamos a ver, dijimos que esto causará 13 Bitcoins. Entonces en cualquier lugar hagámoslo 30. Guarda eso, ejecuta el juego. Ahora, deberíamos ver que recogemos un par de monedas. Podemos salir lastimados si quieres. Ahí vamos. Entonces ahora estamos en 200. Podemos o restaurar la salud o podemos mejorar nuestra salud. Entonces si actualizo la salud, Ahí tienes. Se puede ver que ahora tengo 310 y también puedo actualizar. Yo lo puedo comprar pero nada se mejora. Si crees que esto es injusto que realmente podamos comprar el artículo, pero no obtenemos ningún beneficio de él, entonces sé mi invitado. Yo sí te recomiendo que intentes revisar, en primer lugar, antes de que aumentemos la salud, ¿realmente lo tenemos al máximo? Si lo tienes al máximo, No lo tomemos ni lo compres ni algo así. Entonces con eso fuera del camino, espero que lo disfruten y los veré en la próxima donde realmente estaremos comprando las armas. A continuación, pongámoslo a partir de ahora, 40. Guarda eso. Y te veré entonces. Ah, y que no se te olvide por supuesto comprometer tus cambios. Nos vemos en el siguiente. 81. Comprar armas: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video completamente nuevo, un nuevo video largo. Pero vale la pena porque ahora cuando ejecutamos el juego, recogemos algunas monedas. Vamos aquí, vale, Así podemos restaurar la salud, podemos mejorar la salud o podemos hacer algo mucho más fresco, y eso es por nosotros mismos alguna arma. Entonces conseguimos un rifle y luego podemos ir a dispararlo a todos lados. Entonces no perdamos más tiempo y lleguemos a comprar armas, visas como Paxos, cualquier caso. Entonces tiempo para el último artículo que podemos comprar, que es el arma. Entonces voy a entrar en el ítem sprite. Y por cierto, lo que hice fuera de pantalla es que agregué un par de animaciones y asegurarme de que el elemento sprite esté en un nivel diferente. Por lo que ahí se puede ver a todos rotar y se puede ver que la plataforma tiene esta pequeña animación sobre ella. Bastante simple, bastante fácil. No voy a entrar demasiado en eso. Pero lo que voy a hacer es que voy a entrar aquí y cambiar este orgullo en el último. Y entremos a los sprites. Pickups. No, no pastillas. Armas arma, arma arma arma arma pickup. Selecciona este y solo agreguemos el rifle por ahora. Ahí vamos. puede ver. Hagámoslo un poco más grande. Perdón por eso. Deberíamos de alguna manera mantener la relación de aspecto. ¿ Ahora qué? Vamos a aumentar la escala en dos, dos, en 1.5, en 1.5. Está bien, genial. Entonces ahora cuando ejecutamos el juego, creo que esto debería estar girando porque tiene el animador. Ahí vamos. puede ver que es giros y esperar a que vengamos y recolectemos. Ahora, la diferencia entre los otros dos artículos y el artículo de arma es que no queremos tener, por ejemplo, sólo un rifle de artículo 40. Queremos conseguir algún tipo de objeto aleatorio o arma aleatoria cuando queremos comprar un arma. Entonces voy a entrar en el script del ítem y este error me está molestando mucho. Y en el artículo de la tienda de aquí, voy a crear un par de líneas. Entonces primero que antes, quiero crear un campo serializado del sistema de armas. Y va a ser una matriz de las armas potenciales para comprar. Ese es un nombre largo para una variable. Y luego voy a crear un privado y el sistema de armas y el arma real, sin arma también. Por, Ahí vamos. Y por último, vamos a hacer dos cosas. Lo primero va a hacer bien esto porque queremos cambiar el sprite basado en el arma que vamos a comprar. Así sprite privado, renderizador. Y ahí vamos. Y el artículo sprite, no el artículo sprite, el sprite de arma. Entonces arma, así porque esto sólo se va a usar para el arma. Y luego vamos a conseguir el campo serializado, el texto Mesh Pro o TMP Pro, Tempe pro, sí, taquigrafía P Pro. Y este va a ser el texto de precio en el que queremos cambiar el precio en base, vale, Así que no podemos usar esto porque necesitamos TMP Pro, perdón por eso. O ya sabes lo que podemos hacer en realidad, podemos, en lugar de usar TMP sonda dot text Mesh pro Gu. Ahí vamos. Entonces de esa manera no necesitamos agregar una biblioteca completa. Entonces esta es sólo una forma novedosa de hacer las cosas. Y ahora que tenemos un precio por cada una de nuestras armas y un sprite por cada una de nuestras armas. Entrémonos al sistema de armas. Y sigamos adelante aquí y creemos un campo serializado por el precio de las armas. Tan int precio arma. Y también crearemos un campo serializado para el sprite. Y este será el sprite de la tienda de armas. Y obviamente todos estos son campos serializados, por lo que no podemos acceder a ellos. Por lo que necesitamos crear un par de métodos aquí. El primero será un público y qué y, y obtener un precio de arma. Y esto le devolverá el precio del arma. Y entonces tendremos un sprite público por el derecho, y conseguir un sprite tienda de armas. Y esto regresará, devolverá el arma, ¿no? Tienda de armas sprite. Ahí vamos. Por lo que la imagen del arma y las armas Sprite son cosas totalmente diferentes. A lo mejor no deberían serlo, tal vez podamos tener solo uno que devuelva todo el sprite. Pero si miras aquí, quiero tener el que tiene la línea blanca pequeña delgada a su alrededor para que podamos distinguir fácilmente el arma. En lo que incluso puedes cambiar esto aquí mismo, éste. No nos preocupemos por eso. Sigamos adelante como estamos. Esos pequeños trucos entonces se pueden ajustar al final y podemos cambiar todo esto. Entonces ahora entremos a las armas. Eran las armas que están en las prefabs. El residual, residual reservado, las armas enemigas rotas. Ahí vamos. Entonces el rifle que encerró esto y veamos qué tenemos aquí dentro. Entonces el sprite de la tienda de armas y el precio del arma, ¿cuánto cuesta el rifle? Digamos 10. Digamos que la pistola cuesta 20. No, perdón por eso. ¿ Ahora qué? Hagamos que el rifle cueste 20. Volvamos atrás. El arma costará diez, y la escopeta costará 30. Y estos son solo números arbitrarios. No sé lo que quieras usar NOSOTROS. Derecho. Vamos a montar los sprites. Entonces voy a hacer este un poco más grande para poder ver los nombres aquí dentro más rápido. ¿ Y qué tenemos aquí dentro? Pastillas? No. Cada vez. Está bien. Por lo tanto, agrega el sprite de escopeta para el rifle. Desbloquea esto para el rifle. Voy a no, no, no, no. Esto es un poco engorroso, ¿no? Por lo que en cualquier lugar en el rifle. Y por último, seleccionamos las armas y el Prefab, la pistola. Armas, recoge el PESTEL, nos ahorramos eso. Y ahora tenemos una referencia a todos estos. Genial. Ahora que tenemos el sprite, tenemos el precio del arma, lo siguiente que hay que hacer es ir y empezar y armar todo tan pronto como las armas reflexionen. Entonces en el artículo de la tienda de aquí, voy a ahorrar, voy a crear un inicio, y te voy a emitir un reto. Por lo que tu reto es comprobar tipo, seleccionar armas aleatorias, establecer el sprite, y el impuesto. Entonces y empieza a comprobar si tenemos un artículo tipo arma, deberás seleccionar un arma aleatoria de armas potenciales o armas potenciales. Y necesitarás establecer el costo del artículo como el precio del arma. Tendrás que poner el sprite como el arma apropiada. Tendrás que satisfacer los textos también. Y creo que este es el último punto. Entonces con eso fuera del camino, pausa el video ahora mismo y ve al HL7. Oh, bien, bienvenido de nuevo. Entonces en principio, Eso no es lo que quise decir. Si tenemos un tipo de objeto que sea igual al arma tipo artículo. Entonces aquí dentro vamos a poner un par de cosas. En primer lugar, crearemos un arma seleccionada al azar y va a ser igual al rango de puntos aleatorios. El 0 y el potencial. ¿ Qué es esto? El potencial de armas para comprar longitud de punto. Entonces aquí dentro vamos a seleccionar el arma a comprar y va a ser igual al arma potencial para comprar en la posición del arma seleccionada. Entonces vamos a seguir adelante y conseguir el costo del artículo, que va a ser el arma a comprar, que obtengan precio de arma. Ahí vamos. Y por último, vamos a poner este orgullo. Entonces, ¿cómo vamos a conseguir primero el sprite? Vamos a conseguir componente y niños el sprite. O saber qué tal vez esta de aquí no vamos a necesitar. Pero de todos modos, sólo saltémoslo. Entraremos al renderizador sprite. Este es el componente sobre los niños, ¿por qué los niños mientras? Porque en este ítem que tiene el script real, el ítem sprite está aquí abajo. Y porque no hay otros objetos de juego, oh, sí tenemos otro objeto de juego que es la plataforma de ítem. Esta será una complicada. Entonces, sabes qué, por el bien de tener todo correctamente configurado, voy a hacer de este un campo serializado y guardar eso. Y luego vuelve, lo siento. Y luego regresa y a cada uno de esos y espera un segundo. Armas sprite renderizador. Yo estaba y estaba confundido. Estaba confundido ahí por un segundo, lo siento por eso de vuelta aquí. Entonces voy a seguir adelante y añadir el ítem sprite. Y aquí el sprite. Y aquí también el artículo sprite. Entonces no confundimos ninguno de estos. Y además, mientras estemos aquí, sigamos adelante y añadamos también el texto del precio. Entonces. De acuerdo, así que por alguna razón me olvidé de cambiar el nombre de estos. Entonces este será el texto del precio del artículo por alguna razón pensé que sí cambiamos al estudiante. No se preocupe por eso. Y estas son las cosas que tenemos que hacer. No nos gustan, pero tenemos que hacerlos en algún momento. Entonces sigamos adelante y arreglemos todo. Ahí vamos. Por lo que ahora tenemos una referencia a todos estos. De vuelta aquí. El renderizador sprite armas. El sprite va a ser igual al arma para comprar eso, conseguir armamento shop sprite. Ahí vamos. Guarde eso. Y lo último que tenemos que hacer es establecer el texto. Entonces vamos a obtener el texto del precio. El texto. ¿Y qué decimos aquí dentro? Veamos lo que originalmente se escribió aquí por arma. Entonces en lugar de sólo por arma, empezaremos con por. Entonces lo vamos a concatenar con el arma para comprar dot get arma nombre. Y esto es una cuerda, por lo que podemos hacer esto legalmente. Y entonces diremos el precio. Por lo que vamos a sumar estos dos más el costo del artículo, costo del artículo. Y este es un entero. Entonces recuerda cuando teníamos un entero previamente en alguna parte, me olvidé. Entonces recuerdas porque era un entero, no pudimos simplemente venderlo. Teníamos que decir punto toString. Entonces y tal vez no tenía claro lo que hace esto. Por lo que toString simplemente convierte cualquier entero o cualquier flotador en una cadena y puedes usarlo. Pero aquí dentro, porque estamos concatenando, concatenando significa que agregamos un plus entre una cadena y un entero o una cadena y un flotador. Entonces cuando concatenamos una cadena con un elemento o lo siento, con un entero, entonces no necesitamos agregar dos cadenas inmediatamente. Visual Studio y C Sharp código entiende que esto, aunque es un entero aquí, lo estamos usando como cadena. Por lo que guardamos eso y también tenemos que sumar aquí BTC. Guarde eso. Y ahora volvamos a nuestro juego y veamos si esto funciona. Todavía no hemos agregado el arma, pero vamos a ver si esto realmente funciona son selección aleatoria. Entonces bajemos por aquí. De acuerdo, entonces un rifle. Ahí vamos compramos un arma y no funcionó . ¿Por qué es eso? Porque no hemos agregado nada a la matriz. Entonces aquí, tenemos que sumar las armas potenciales para comprar. Y es una consistente así que aquí arriba en las prefabs, prefabs armas, seleccione las armas potenciales y sólo tengamos la escopeta y el rifle porque estamos sosteniendo una pistola y nuestra mano. Así que corre el juego. Vayamos a ver qué pasa. Entonces un rifle allá vamos. Compra un rifle por 20 bitcoins. Probemos esto de nuevo para tratar de conseguir la escopeta, asegúrate de que funcione. Ahí vamos. El escopeta por la escopeta, monedas de 430 bits. Pero ahora cuando presionamos E, no pasa nada porque aún no hemos agregado ninguna forma de comprar. Entonces de vuelta aquí abajo, vamos a crear un caso. Y este caso será para el tipo de objeto dot el arma. Ahí vamos. Y ahora aquí dentro vamos a primero que nada, encontrar al jugador que queremos sumar, las armas también. Entonces aquí voy a decir que tenemos un controlador de jugador, que es el jugador Quién está comprando al jugador, el jugador que compra. Por lo que jugador compra. Realmente me cuesta mucho seleccionar nombres para objetos de objeto finito de tipo. Y como pueden ver, tenemos código redundante cada vez. A lo mejor deberíamos cambiar esto. Estamos haciendo mucho hallazgo. No lo sé, creo que deberíamos cambiar esto en algún momento. Entonces en lugar de declarar manejador de salud, vamos a conseguir el controlador de jugador. Ahí vamos. Por lo que ahora tenemos una referencia al controlador del jugador. Entonces aquí dentro vamos a decir que el arma que tenemos, así que vamos a instanciar el arma que tenemos. Por lo que el arma para comprar. Y vamos a instanciar en el jugador comprando punto. Obtener las armas son. Entonces igual que lo hicimos cuando estábamos recogiendo un arma. Por lo que instanciamos el arma en el brazo de las armas. Y lo último que tenemos que hacer, también tenemos que decir esa arma en el arma de los jugadores disponibles. Entonces vamos a seguir adelante y conseguir una referencia a esto. Porque si recuerdo correctamente, si estamos comprando arma de punto agregar arma disponible, ahí tienes. Se puede ver que lleva en el arma para agregar. Por lo que necesitamos conseguir una referencia aquí, o en realidad puedes copiar esto y ponerlo aquí. Eso no se ve muy bonito, eso no se ve muy profesional. Si miras hacia atrás el código, no entenderás exactamente qué está pasando. Entonces, en cambio, vamos a crear un sistema de armas aquí dentro. Y es el arma para agregar un igual para instanciar. Y luego aquí dentro dijimos el arma para agregar y no te olvides de romper. Esto es algo que necesitamos y si acaso vamos a crear el valor predeterminado aquí. Esto dice que si ninguno de estos funciona entonces depuración predeterminada, registro de pensamiento, y no se eligió ningún tipo de elemento. Y todo. Me gustan mucho los casos de cambio. Son realmente amables. Si los miras. De verdad se ven muy bonitos. Entonces tienes un caso, todo está realmente arreglado correctamente. Entonces volvamos a ver qué pasa aquí. En caso de que sea un arma, obtenemos el controlador del jugador, una referencia al controlador del jugador. Sólo tenemos uno, así que esto no es problema. Entonces instanciamos el arma. Lo ponemos en una variable, y por supuesto lo ponemos en la compra del jugador, que tiene un ejército siempre quiere poner al niño, ponemos al padre del arma que hemos instanciado como el brazo, y luego conseguimos que el jugador compre, agregamos el arma disponible. Obviamente necesitamos tener, como ustedes recuerdan aquí, tenemos las armas disponibles en el jugador. Agregamos esa arma, nos rompemos y tenemos a nuestros Robins. Por lo que de nuevo en. A ver si eso funciona. Ejecuta el juego. Y recogemos algunas monedas para comprarnos una escopeta. Entonces ahora tenemos una pistola, conseguimos la escopeta. ¿ Qué tan guay es eso? Entonces ahora tenemos una escopeta, y no sólo tenemos aquí dentro, ojalá no usara el maximizar en juego y maximizarlo, Vamos a quitarlo. Entonces no sólo tenemos la escopeta y brazos y funciona y dispara y lo hace todo. Pero nosotros también, si vamos, ¿Dónde está? ¿ Dónde está en el jugador DOM? Desbloquea este aquí. Ahí lo tienes. Se puede ver que tenemos una escopeta y una pistola. Entonces con eso fuera del camino, hemos terminado de crear todos nuestros artículos de compra. Espero que lo disfruten. Espero que te guste cómo está resultando ser el juego. Asegúrate de comprometer siempre tus cambios y asegúrate de dejarme una reseña si aún no lo has hecho con eso dicho, te veré en el siguiente video. 82. Sección 14: crear menus de nombre de título: Bienvenido de nuevo Mis desarrolladores de juegos favoritos a un nuevo video largo. Y en este, cuando corremos el juego, verás que tenemos al pino comprado invasor 2D. ¿ Por qué suena así? Pero de todos modos, tenemos dos botones. El botón de salida que solo muestra este texto justo aquí, y el botón Inicio cuando lo elegimos, ahí vamos. Vamos al primer nivel. ¿ Qué tan guay es eso? Podemos disparar, podemos conseguir ayuda, también podemos morir. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Entonces es hora de crear un par de menús y vamos a empezar con la pantalla de título, porque obviamente cada juego necesita una pantalla de título. Entonces lo que decidí hacer es tener la pantalla de título, la test1, y la voy a convertir en la pantalla de título. Sí, recargar. Y voy a quitar el esqueleto. Yo sólo voy a quedarme con el jugador y voy a añadir un par de artículos rompibles. Entonces en las prefabs. Y vamos a aumentar el tamaño aquí sólo un poco. ¿ Y dónde está? Portales de camionetas, cuartos. De acuerdo, así que un par de partes rompibles. Entonces añadiré uno aquí y otro aquí dentro, y otro aquí dentro. Y solo un par de partes que nos divertiremos destruyendo. Y en este menú, también tendremos los dos botones que nos dirán ya sea iniciar el juego o salir del juego. Entonces sigamos adelante y hagamos eso. Voy a hacer clic aquí. Voy a agregar un lienzo de UI, y este será el lienzo de menú principal. Voy a poner el sistema de eventos aquí. Voy a asegurarme de que sea lo siento, como superposición de espacio de pantalla y asegurarme de que la escala va a tamaño de pantalla. Y ahí vamos, 1920 por 1080. Pulsa Enter, haz doble clic para podamos verlo correctamente aquí. Y qué vamos a tener mientras sólo vamos a tener la pantalla donde nos movemos. Pero también tendremos dos botones y el nombre del juego op aquí. Entonces tal vez deberíamos hacer esto un poco más pequeño. No lo sé. Todavía estaba pensando en cómo vamos a encajar todo esto. A lo mejor podemos intentar seleccionar todas las ollas y el jugador de cúpula y simplemente hacer todas las partes un poco más pequeñas también en la escala, tal vez hacerlas 0.30.20 a eso. Todavía pequeño. ¿0.50.5? Sí, seguro. Y entonces no lo hacen jugador es también 0.50.5. Entonces ahí vamos. Si tratamos de correr el juego ahora con nuestro pequeño hombrecito. O como pueden ver, sigue siendo muy grande y no puede recoger los artículos porque la báscula es muy pequeña. Eso es porque el, me acabo dar cuenta de que las animaciones lo mantendrán grande. Entonces vamos a traerlo de vuelta a uno. Y sin preocupaciones, trataremos de encajar todo aquí dentro. Entonces volvamos a uno. Guarda eso, vale, los enemigos corren el juego. Tendremos al chico sprite. Estarás caminando por ahí. No puede recoger las cosas porque aquí dentro tenemos algún tipo de error. Y eso es porque no tenemos al gerente, no tenemos un empresario entrar en la moneda. Hay un problema. ¿Por qué es eso? Bueno, porque el gestor del juego no está disponible también en la moneda. Entonces vamos a detener el juego. Y vamos a seleccionar todas estas partes y asegurarnos de que el cuentagotas del artículo, Vamos a quitar el componente por ahora y sólo mantener el rompible para evitar cualquier error. Entonces ahí vamos, rompemos algunas ollas y nos divertimos. Y también vamos a añadir dos claves aquí para permitir al jugador seleccionar si salir o continuar el juego. Por lo que en nuestra pantalla y nuestro lienzo aquí mismo, voy a hacer clic derecho seleccionar tu, añado un texto Mesh Pro. Este será el título. Entonces título de juego, así bot de tiempo, invasor, no estoy seguro de querer llamar a esto puede estar condenado, comprado y Vader, pero vamos a mantenerlo como está. Cambió el tamaño automático de la fuente, aumente el máximo, y hagámoslo un poco más grande. Vamos a ponerlo en el medio. Aumentemos aún más el máximo. Entonces ahí vamos. Necesitamos un título grande, enorme 40 tiempo tanto invasor a d. Y podemos agregar algunos underlay, algunas iluminaciones sobre el resplandor. Entonces por ejemplo, podemos aumentar el o el calco base y añadir un color aquí para que sea un poco más fresco. Así que adelante, etiquetar esto, aumentar la suavidad, el desplazamiento en la y, o algo así. Por lo tanto, elige los colores que encuentres apropiados. A lo mejor hacer este rojo o negro o antinodo. No, el negro es malo. A ver, tal vez aumente esta totalmente roja y en la Y, aumentarla. Entonces ahí vamos. Por lo que tenemos algo así como un bot de tiempo y Vader 2D. Y no es muy bonita, pero hace su trabajo. Y ahora vamos a añadir dos botones más. Entonces aquí voy a hacer clic derecho y UI y agregar un botón. Este va a ser el botón de inicio. Y voy a moverlo un poco a la izquierda. Y aquí es donde decidimos dónde lo queremos poner. Entonces porque no tenemos demasiado espacio, se puede ver cómo estoy mirando el juego. Voy a ponerlos tal vez aquí mismo. A ver si ejecutamos el juego. ¿ Cómo se ve eso? Entonces tener un botón aquí abajo, no, creo que eso no está mal. Eso no está nada mal. Entonces voy a quizá aumentar el tamaño. Y en los recursos. Podemos entrar aquí y puedes encontrar los elementos de menú que te he proporcionado. Entonces estos son los botones. Entonces de vuelta en nuestros sprites, vamos a ver, ¿tenemos algo debajo de los elementos de la interfaz de usuario, elementos interfaz de usuario y clic derecho, crear 140 botones. Abre esto, y arrastremos los botones todo el camino hacia Unity. Y veamos qué tenemos aquí dentro. Y vamos a la mentira múltiple Sprite Editor. Eso es rebanar a estos bebés. Ahí vamos. Por lo que estos están perfectamente rebanados con las sombras. Entonces aplique los cambios. Ahora tenemos estos y voy a seleccionar el botón Inicio. Y como pueden ver, tenemos el componente React normal al que estamos acostumbrados. Y tenemos también la imagen y las cosas de botón aquí mismo. Y puedes agregar un evento al hacer clic en este botón. Siempre que se haga clic, se puede cambiar la forma en que se comporta. Entonces si el color normal, por ejemplo, puede ser completamente negro o blanco o rojo o lo que sea, puede cambiar el color resaltado. Entonces, por ejemplo, si movemos nuestro ratón sobre este botón, una pulsación libre del botón y se vuelve, por ejemplo, verde. Y si seleccionamos, no sé, color seleccionado, no estoy seguro de qué es eso. Entonces si ejecuto el juego ahora mismo, te darás cuenta de que si paso por encima del botón y se vuelve rojo, una vez que hago clic en él, se vuelve verde. Entonces así es como funcionan los botones. Se puede jugar con un montón de cosas aquí dentro. Pero en lo que quiero enfocarme es cambiar la fuente sprite. Y veamos qué tipo de botones tenemos aquí. Entonces algo no bueno sucedió en el Sprite Editor. ¿ Y cuántos sprites tenemos? 1, 2, 3, ¿qué son estas cosas vacías aquí? No me gusta el aspecto de esto, pero de todos modos, intentemos agregar este botón. Ahí vamos. Para que veas que este es el botón que hemos agregado. Tratemos de configurarlo puede ser a tamaño nativo o tal vez aumentarlo en la Y. Así que ahí vamos. Podemos establecer dos botones cada lado de la pantalla de título. Y tal vez puedas agregar un tipo diferente de botón, puede ser éste el cual es un poco más claro. Creo que es mejor. Entonces ahora cuando ejecutamos el juego, se puede ver que tenemos un botón de aspecto realmente bonito e incluso cambia de color cuando lo presionamos. Y tal vez no quieras tener ese tipo de cosas. A lo mejor lo único que tal vez quieras tener es no tener esto presionado. A lo mejor podemos hacerla más oscura o algo o mantenerla como está, pero simplemente cambiar el alfa en él, lo cual también es una buena idea, pero voy a asegurarme de tener algún tipo de color verde solo para que sabemos que estamos presionando este botón. Y ahora con eso tenemos el botón de inicio. Vamos a duplicar esto y moverlo a la izquierda. Y este será el botón de salida. Entonces Botón de salida. Y ahora qué tenemos que hacer o sabes qué? A lo mejor lo hice demasiado pronto. Eso es sólo borrar el botón X porque queremos cambiar el texto. Y aquí se puede ver que tenemos textos de botón. No queremos este texto. Nosotros borramos. Agregaremos nuestro propio texto, que es un texto Mesh Pro. Y obviamente vamos a hacer que sea el cyborg audaz. El tamaño automático, mayores demandas, lo puso en el medio. Y eso es todo, eso es todo lo que tenemos que hacer. Y voy a aumentar el tamaño de éste. Entonces hagámoslo un poco más grande y pongámoslo en el medio y solo asegurémonos de que encaje correctamente. Ahora lo único que nos podría molestar aquí es que el cuándo, cuando intentamos cambiar, por ejemplo, el color de éste. Oh no, no, todo está funcionando. Entonces, ¿deberíamos oscurecerlo? Creo que oscuro. Eso es antes que nada, intenta escribir el nombre, así que empezó llegó. De acuerdo, entonces aparentemente, tenerlo completamente oscuro no es el camino a seguir. ¿ Qué colores debemos estar eligiendo? A lo mejor incluso deberíamos quitar el calco base. Pero si quitamos aquí el calco de base, quitamos también el calco de aquí arriba. Entonces es por eso que a veces no me gusta usar sonda de malla de texto porque todo está algo relacionado. Estamos cambiando todo el shader de lo que detecta malla Pro es. Los sombreadores son toda una raza diferente de información. Entonces no voy a ahondar demasiado en eso. Por lo que de vuelta en Unidad. Y veamos cómo se ve eso. Si ejecuto el juego, ¿es visible? Así que inicia el juego y no mucho. Cuando se vuelve roja, es más visible. A lo mejor podemos cambiar el fondo del botón. Entonces solo estoy jugando honestamente, no estoy seguro de lo que estoy haciendo. Solo estoy probando las cosas igual que tú. No, creo que éste es mejor para nuestro juego de inicio. Y ahora que tenemos este, ahora podemos duplicar, llámalo el botón Salir. Y vamos a moverlo a un lado. Del otro lado. Y aquí dentro vamos a cambiar el texto para acceder a eso. Otra vez. Hit Enter. Ahí vamos. Entonces ahora tenemos dos botones. Hemos configurado el menú. Podemos andar por ahí, podemos destruir estas cosas, podemos disparar a nuestro alrededor. Estamos usando los botones muy aterradores. Ahí vamos. Y podemos iniciar el juego, salir del juego. Pero como puedes ver, no hacen nada ahora y otra vez. Entonces lo que vamos a hacer es agregar un par de funcionalidades a estas. Entonces voy a entrar a los guiones. Voy a hacer clic derecho y crear una carpeta para el menú. Haga doble clic aquí, haga clic derecho y cree un script nítido en C para el Administrador de Menús Principal. Y solo llamémoslo menú, menú principal porque tendríamos que agregarlo al Administrador de Menús Principal si lo hiciéramos. ¿ Cuál es el problema aquí? Tenemos un problema con los efectos de sonido, creo. Sí, creo que es un problema con los efectos de sonido. El problema con un par de cosas. Aquí hay muchos problemas porque no agregamos todo el gerente y todas esas cosas, pero realmente no nos importa. Esto no será un problema porque en realidad no estamos haciendo nada. Y en este nivel, por lo que ahora era el menú principal. Añádalo al lienzo del menú principal. Y hagamos doble clic y abramos el guión aquí mismo. Entonces vamos a crear en primer lugar un método para el juego de salida. Por lo que el juego de salida del vacío público. Y debido a que seguimos en el editor y no hemos implementado el juego, esto no estará funcionando. Pero si escribimos aplicación dot close, me refiero a la aplicación enseñada dejar de fumar. Esto saldrá de la aplicación y sale de la aplicación de jugador. Y como puedes ver, pero porque estamos en el modo de juego del editor de Unity, esto no funcionará. Entonces lo que haremos es que solo agregaremos un registro de puntos de depuración. Y diremos que salimos del juego. Confía en mí, cuando hagas construir este juego, este botón funcionará. No te preocupes por ello. De todos modos, esto correrá el juego. Y si volvemos a Unity, si vamos al botón de salida, podemos desplazarnos hacia abajo aquí y en el evento onclick, podemos presionar este botón Plus y podemos agregar, primer lugar, un objeto que nosotros accederá a las funciones de. Entonces si añado el menú principal, notarás que ahora puedo acceder a funciones y a una de esas funciones. Entonces, por ejemplo, puedo acceder a objeto de juego y hacer un par de cosas aquí. A lo mejor apagar el objeto del juego, dirigir, transformar, cambiar de nombre, y así sucesivamente y así sucesivamente. Pero también puedo acceder al menú principal. Y puedes ver aquí tengo Canvas, lienzo, escalador, gráfico, ray caster, y todos estos son componentes dentro del lienzo del menú principal con el que he proporcionado el botón en él también contiene el menú principal. Por lo que en el menú principal, lo voy a seleccionar. Y se puede ver que tengo muchos métodos que puedo usar. Y uno de ellos es el juego de salida que acabo de crear. Por lo que cuando hago clic en este, ejecuto el juego. Puedo caminar y hacer las cosas que hago. Y luego si hago clic en el juego de salida, notarás que salimos del juego. Por qué capitalizamos, no lo sé, pero se puede ver que este botón realmente funciona y puedo presionarlo. Entonces ahora es el momento de crear el método de inicio del juego, y ese va a ser tu reto. Por lo que establece la escena y el índice del edificio como primera escena y el primer nivel para ser la segunda escena. Por lo que recuerdas las cubiertas del edificio. Si no lo haces, tendrás que seguir adelante y comprobarlo. Está en la Configuración de compilación de archivos, creo. Sí. Sí. Por lo que necesitamos iniciar el juego. Para poder iniciar el juego, necesitamos cargar el primer nivel. Para cargar el primer nivel, obviamente, necesitamos tener un gerente de escena y todas esas cosas buenas. Espero que no te hayas olvidado cómo hacer eso. Fue hace un par de secciones. Crea el método del juego de inicio, asegúrate de que sea público. Y el método accede al gestor de escenas y consigue la configuración de compilación del activo actual visto. Y luego necesitarás aumentarlo en uno. Y así como una pequeña pista, Necesitas acceder al gestor de escenas, obtener escena activa y construir índice más uno. Entonces con eso fuera del camino, pausa el video ahora mismo y ve a hacer el solo. De acuerdo, bienvenido de nuevo. Entonces, en primer lugar, permítanme quitar el inicio y actualizar. No estoy seguro de que alguna vez los usaremos. Y aquí voy a sumar en el motor dot alta dirección. Y ahora voy a crear un vacío público. juego estrella del vacío debe ser capitalizado y éste no debe iniciar juego. Eso ha abierto las líneas garabatas. Y aquí dentro voy a acceder al gestor de escenas de carga de puntos vista. ¿ Y qué escena debería estar cargando? Bueno, antes que nada, vamos a la Configuración de compilación de archivos. Y la pantalla de título ya es la primera. Entonces lo que quiero hacer como quiero conseguir el índice de este y luego aumentarlo en uno. Entonces voy a seguir adelante y conseguir esta escena. Gerente dot, consigue escena activa. Y aquí dentro voy a conseguir el índice de compilación y sólo lo voy a aumentar en uno. Por lo que vamos de inmediato a la siguiente escena. Guarda eso. Ahora volvamos a nuestro juego. Y veamos si eso funciona. Entonces voy a correr de nuevo. Andamos por ahí, destruimos cosas, salimos del juego, no funciona. Inicia el juego. Y no funciona porque no hemos asignado qué tan inteligentes de nosotros, no hemos asignado el botón de parada para hacer nada en absoluto. Entonces menú principal, ¿cuántas veces cometeré este error hasta que finalmente guardemos eso? Ejecuta el juego. Empecemos de nuevo. Ahí vamos. Por lo que ahora estamos en el primer nivel. ¿ Qué tan guay es eso? Y sabemos que es el primer nivel porque aquí tenemos todos los esqueletos. Mira, a pesar de que no hicimos ningún cambio en este nivel, pero como hemos cambiado las prefabs del esqueleto, ahora pueden recoger las cosas. Obviamente, hay un par de cosas que necesitamos cambiar. Pero por ahora, sabemos que el juego de inicio funciona, el juego de salida funciona. Hemos creado una pantalla de título. Nosotros vamos a comprometer nuestros cambios y te vamos a ver o en realidad, te voy a ver en el siguiente video. 83. Tener pantalla de victoria: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, como puedes ver, hemos creado una victoria, visto nada demasiado especial, nada demasiado elegante, y solo tenemos la victoria. Tenemos pulsada cualquier tecla, recogemos, vamos al menú principal, empezamos juego, solo empezamos de nuevo. Tenemos esto raro por alguna razón, tenemos el arma no funcionando correctamente. Nos ocuparemos de eso más adelante por alguna razón cuando nos movamos por los niveles podría ser que algo se perdió en el camino. Pero hay algo que quiero hacer en esta introducción y no se me ocurriría mientras hago el video y eso es agregar la capa aquí mismo. Lo que voy a hacer es hacer clic derecho en el lienzo de la victoria y la interfaz de usuario. Será muy sencillo. Te acordarás de hacer esto. Voy a llamar a esta capa D. Yo le añadiré el sprite, lo enviaré a la noche rebajada. Y entonces crearé una animación que está en la animación de activos. Y vamos a ver, sí creo que hice el bailador aquí. Quitemos esto y creemos mi propio jugador de baile. Entonces guarde eso. Sí, quiero reemplazarlos. Y luego crearé la animación de los bailarines o seleccionaré a estos dos, los pondré aquí, y veamos eso. Está bien, eso es demasiado rápido. Detener, parar, parar, parar, parar, parar. Copia esto, pegarlo aquí. Y veamos cómo se ve eso. Eso sigue siendo extremadamente rápido. Asumémosles cinco de diferencia. Y sin embargo no se ve muy bien. Pero sí, nosotros, nos gustaría tener al jugador haciendo el Cancún en cada lado. Entonces ponemos uno aquí, lo duplicamos, ponemos uno aquí, pero vamos a hacer la escala de este menos uno. Entonces ahora cuando ejecutamos el juego, quiero decir que corremos la pantalla de la victoria. Ahí vas. Tenemos dos ken, Ken, la victoria y más NEG, y luego vamos a la capa. Excelente. Entonces como puedes ver, obviamente aquí hay un problema. Lo veremos más adelante, pero por ahora, no perdamos más tiempo y lleguemos finalmente a la pantalla de la victoria. 0 caso. Entonces ahora que tenemos una pantalla de título, también queremos crear una pantalla vectorial. Entonces sigamos adelante y hagamos justamente eso. Voy a entrar a mis sprites, eso digo sprites, me refería a mis escenas. Y en escenas voy a seguir adelante y crear una nueva escena. Así que haga clic derecho en Crear. Ah, ¿dónde está la escena? Y aquí, allá vamos. Entonces escena, y esta será la pantalla de la victoria o escena Vector3 o como quieras llamarla, pulsa Enter. Y vamos a añadirlo a la configuración de compilación ahora mismo. Entonces voy a arrastrar la pantalla de la victoria vista aquí mismo. Ahí vamos. Ábrela. Como pueden ver, no tenemos absolutamente nada va a mantener esta cosa simple. Es muy fácil. Entonces solo voy a ir a tu Canvas y esta será la victoria Lienzo. Nada demasiado aquí, así que solo el escalador de lona que está establecido en 1920 por 1080. Entonces aquí vamos, 1920. Entonces AT, y estás muy familiarizado con lo que está pasando. Sólo hay una cosa que va a ser tal vez sólo un poco particular. Entonces voy a saber no sólo todavía, no el reto, sólo todavía. Déjame sólo hacer un par de cosas aquí. Entonces esta es nuestra escena de la victoria. Veamos cómo se ve en el juego. De acuerdo, así que haz clic con el botón derecho, vamos a crear una imagen , imagen aquí, y vamos a asegurarnos de que llena toda la pantalla así como así. Hagámoslo completamente negro. O puedes mantenerlo ancho, puedes hacer lo que queramos. Entonces voy a ponerme a negro. Y aquí dentro voy a decir que también quiero agregar una sonda de malla de texto. El apilamiento. Mucho pro será el texto de la victoria. Ahí vamos. Hagámoslo auto tamaño, aumente el máximo. Y sólo hagámoslo un poco más grande. Ahí vamos. Cambiemos, hagámoslo audaz. Hazlo en el medio. Ponlo al Robo. Y quitemos el calco de aquí. No me gusta eso subyace tanta agua, así que sólo intentémoslo aquí dentro. Victoria con un par de signos de exclamación y aumentará el máximo para caber toda esta pantalla. Ahí vamos. Por lo que fábrica. Y entonces lo que vamos a hacer es duplicar este texto, moverlo un poco hacia abajo, y tal vez tamaños hacia abajo. Ups, y esto leerá. En tanto que lo, por lo que esta será la prensa cualquier tecla. Y aquí dentro, presiona cualquier tecla para volver al menú principal. Por lo que allá vamos, presiona cualquier tecla para volver al menú principal. Vamos a ejecutar este juego y ver cómo se ve eso. Y ahí vamos. Por lo que como puedes ver, victoria presiona cualquier tecla para volver al menú principal. Muy sencillo, nada muy complicado. Entonces te voy a emitir un pequeño reto para que el texto aparezca después de dos segundos. Por lo tanto, crea una animación que haga que el texto aparezca después dos segundos y haz esto sin ningún código. Y si quieres un reto extra que no he incluido en la diapositiva, también puedes crear una forma para que presionemos cualquier tipo de botón. Por lo que no necesitamos hacer un poco de investigación aquí. Por lo que presionamos cualquier botón y luego vamos al menú principal. Eso también es un reto para que hagas en ambos lados. Para que fuera del camino, paren el video ahora mismo y luego vayan al reto. De acuerdo, bienvenido de nuevo. Entonces lo que vamos a hacer aquí es que sólo vamos a crear una animación. Y entraremos en las animaciones de activos y creemos una nueva carpeta para la victoria. Texto. Abrieron, abrieron, y escucharon cerveza. Después de dos segundos. Y siento, mira cuántas carpetas tenemos ahora. Y siento que este oh, proyecto se trataba de crear tantas carpetas como puedas. Así que bienvenido a la versión más reciente de crear las más carpetas que puedas. De todos modos, sigamos. Entonces tenemos esto justo aquí. Vamos a acceder a la prensa cualquier texto de tecla. Y aquí dentro voy a añadir un grupo de lona. Por lo que este grupo. Por lo que ahora podemos jugar con el Alfa. Ahí vamos. Y eliminemos la interactividad y el bloqueo del recast. Y aquí dentro vamos a presionar disco y después de dos segundos. Por lo que empezaremos a las 0. Y a la marca de 2 segundos, nos vamos a quedar en 0 y tal vez añadir el boleto, tal vez 1 segundo para cargar. Entonces aquí dentro esto se convertirá en uno. Pero a la marca de 2 segundos. Por lo que como pueden ver, esto progresará lentamente. Entonces no, no quiero que sea así. Yo quiero agregar 0, ten esto. ¿ Y cómo vamos a hacer que la sal aparezca por sí sola? Bueno, esto será probablemente un poco impactante para ti, pero cuando ejecutemos el juego, esto sucederá todo por su cuenta. Entonces iniciamos el nivel. Entonces venimos 12. Ahí vamos. Entonces tenemos el texto apareciendo. Obviamente no queremos tener looping. Entonces voy a ir a la victoria y asegurarme de que no hagamos bucle. Ahora lo siguiente que hay que hacer es que presionemos cualquier tecla para volver al menú principal. Entonces voy a entrar en los guiones aquí dentro. ¿ Y dónde debemos agregar? Vamos a añadirlo en la interfaz de usuario. Creo que este es un buen lugar para ello. Y vamos a hacer clic con el botón derecho crear C-sharp. Victoria. No, En realidad, ya sabes lo que eres es un mal lugar para esto. De todos modos, pantalla de victoria. Y esto será extremadamente sencillo. Pero, ¿dónde debería ponerlo? Si no está en la carpeta UI? Guiones, Vamos a ver, trampas, armas, menús, sí, monumento. Claro, el menú es un lugar mejor. Entonces arrastremos esta victoria y a la carpeta del menú. Y en carpeta de menús, solo sumemos la victoria a la victoria Lienzo. Y aquí dentro Vamos a hacer doble clic se abre , quitar el inicio. No lo necesitamos por ahora. Y debido a que vamos a estar cambiando de escena a escena, sólo vamos a añadir el gestor de escenas de la interfaz de usuario o gestión vista. Y aquí dentro vamos a decir el punto de entrada bajar la tecla o no, lo siento, no bajar la tecla porque no queremos ninguna clave específica. Entonces aquí, espero que trataras de hacer un poco de investigación. Hay algo que se llama la tecla cualquiera hacia abajo. Y sólo vamos a decir eso, y esto es suficiente. Y se puede ver aquí mismo devuelve verdadero. El primer fotograma, el usuario golpea cualquier tecla o incluso un botón del ratón. Entonces vamos a ir al Gestor de Escena carga de puntos vista. Y vamos a cargar la primera escena porque sabemos que siempre, siempre, siempre, siempre el menú del título será el primer C. Así que guarde eso. Volvemos a nuestro juego. Nosotros vamos a correr la ganancia. Entonces ahí vamos, victoria. Dos segundos. Presione cualquier tecla para continuar en el botón Demos. Y ahora estamos en la escena del menú del título y algo que se me olvidó decirte. Y es que en realidad tal vez puedas agregar algún tipo de música aquí. Para que veas que podemos salir, iniciar el juego. Y ahí vamos. Estamos de nuevo iniciando el juego. Whoa, ¿qué es eso? ¿ Qué es eso? Parece una especie de lanzallamas. Creo que hay un pequeño problema, pero no nos preocupemos por eso por ahora. Arreglaremos el problema más adelante. Obviamente hay algún tipo de error y algún tipo de parte del código por la forma en que estamos transitando, pero no te preocupes por eso más adelante. A lo mejor creo la última sección donde realmente hacemos la unidad avanzada o C-sharp avanzado, Una de esas, en realidad creamos una forma muy sofisticada de pasar por niveles, manteniendo todo con nosotros. Entonces nos salimos del camino. Gracias por ver. Espero que estén disfrutando. Espero que estéis poniendo en escena todos vuestros expedientes. escena todos sus archivos, cometiendo todos sus cambios. Acaba de hacer una pantalla de victoria. Comete los cambios. Y te veré en el siguiente. 84. Nivel de relleno después de la muerte: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, vamos a agregar un poco de funcionalidad a nuestra pantalla sorda. Por lo que actualmente cuando caminamos, estamos vivos y todo está bien. Cuando morimos, tenemos la opción de reiniciar el nivel, por lo que empezamos en el mismo nivel, o tenemos la opción de volver al menú principal y llorar un poco. Entonces, no perdamos más tiempo y empecemos. De acuerdo, entonces ahora tenemos todo. Tenemos el título, tenemos la victoria. Es hora de hacer algo sobre pantalla sorda. Por lo que actualmente cuando morimos, se puede ver ahora mismo si ejecutamos el juego con AI, se puede ver que tenemos la UTI, tenemos el lote enfriado, pero no hay nada que hacer. Por lo que nos hemos quedado sentados ahí hasta que detengamos de nuevo el modo play. No queremos hacer eso. Queremos tener un bucle continuo en nuestro juego. Entonces lo voy a hacer es que voy a entrar a la pantalla sorda. Y aquí voy a hacer clic derecho y voy a crear un botón o sabes qué? Antes de hacer todo eso, te voy a emitir un reto. Y tu reto va a ser crear los dos métodos y los dos botones. Entonces, antes que nada, necesitas crear dos botones, querer reiniciar el nivel y querer volver al menú principal. Tendrás que crear un método para cada uno de estos botones. Y luego necesitarás asignar las funcionalidades a estos dos botones. Entonces con eso fuera del camino, creo que ya sabes reiniciar un nivel. Es necesario cargar la escena en la que estamos actualmente en la que podemos conseguir al ser vistos activos. Así que pausa el video ahora mismo y ve a hacer el reto. Oh, bien, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Entonces porque los retos actuales se están poniendo un poco aburridos porque ya lo sabes todo. Entonces sólo me encantó todo el video para ti. Y estoy editando cosas sin ver siquiera la pantalla de profundidad. Entonces volvamos el Alfa a uno para que podamos ver correctamente el botón. Y veamos qué vamos a hacer aquí dentro. Entonces tenemos el botón. Seleccionemos este y hagámoslo más grande. Muévete a la izquierda. Y luego aquí dentro vamos a quitar el texto y añadir nuestros propios textos. Entonces todo lo que estoy haciendo aquí dentro ya lo hemos cubierto. Entonces digamos reiniciar nivel. Y vamos a establecer el todo adecuado, el correcto todo y tamaño, max, el max y el obviamente el botón justo aquí debería tener los botones de UI Elements y debería tener este sprite aquí mismo. Ahí vamos. Por lo que ahora podemos aumentar el texto y hacerlo un poco más grande. Ahí vamos. Nosotros lo hacemos audaz. Atrevido, quiero decir audaz. Entonces ahora tenemos el texto en negrita y hagamos este botón. Yo he sido más grande. Sí, ¿cómo se ve eso? Creo que se ve bastante bien. Entonces voy a duplicar esto. Mueve esto aquí abajo. Este será el botón del menú principal, y el texto será el menú principal. Ahí vamos. Entonces creo que eso se ve lo suficientemente bien. Quizá sólo sepamos esto, el texto. Quiero aumentar un poco el tamaño del texto para el reinicio. Y ahí vamos. Entonces creo que eso se ve lo suficientemente bien. Guarda eso. Y ahora sigamos adelante y sumamos las funcionalidades. Por lo que en Scene Manager, queremos crear todo. Es decir, no gerente invisible, eres un gerente. Queremos crear los métodos que nos lleven o reinicien al amante o nos lleven al menú principal. Pero la cosa aquí es, y esta es una filosofía en el desarrollo de juegos. ¿ Y dónde realmente quieres hacer esto? Entonces el Administrador de UI, ¿qué hace? ¿ Nos lleva de una escena a otra? No, no lo hace. Simplemente gestiona la interfaz de usuario y este es su trabajo. Entonces un mejor lugar creo, de hacer este método o crear estos métodos como en el manager de nivel, pero también al mismo tiempo, no queremos que los botones tengan acceso al gestor de nivel. Solo queremos que los botones sean capaces cambiar las cosas en el Administrador de UI. Entonces estamos en un poco de pepinillo si quieres llamarlo así. Entonces lo que voy a hacer es que voy a confiar en mis instintos intestintos y voy a crear los métodos aquí dentro. Es un nivel de reinicio de vacío público. Y la forma en que reiniciamos el nivel es que simplemente obtenemos al gerente de escena, la carga vista. Y en qué escena vamos a cargar el gestor de escena, punto ponerse activo visto que construir y x. Así que ahora sólo cargamos la escena de la escena activa actual. Eso significa que recargamos el nivel y luego el vacío público re, regresamos al menú principal. Y aquí dentro vamos a conseguir esta escena manager dot load scene. Y solo cargaremos las escenas 0 porque sabemos que la escena o la escena del título o la escena MainMenu está en el índice 0. Y ahora volveremos al Administrador de UI. Y aquí dentro vamos a crear los mismos métodos. Pero en lugar de realmente hacer las cosas, vamos a acceder al gestor de nivel y ¿tenemos una instancia? Sí, sí tenemos una instancia. Entonces aquí vamos a conseguir la instancia de punto manager de nivel, punto nivel de reinicio. Y hagamos lo mismo aquí, pero en lugar de reiniciar el nivel, regrese al menú principal. Entonces guarden eso, vuelvan a Unidad. Y sé que esto se siente un poco redundante. Sé que esto se siente como si estuviéramos haciendo lo mismo una y otra vez. Pero creo que esta es una forma más adecuada de hacer las cosas. Por lo que podemos ir al Administrador de UI, nivel reiniciado y menú principal. Acude a tu manager, y regresa al menú principal. Guarda eso. Apagemos la pantalla de profundidad. En primer lugar, vamos a aplicar los cambios que hemos hecho. Entonces ahora apagamos. En primer lugar, pondremos el Alfa en 0. Volveremos de la pantalla sorda. Más grande el juego muere. Y ahora tenemos el reinicio y el menú principal. Si hago clic en el menú principal, vuelvo al menú principal. Excelente. Probemos esto de nuevo con lo mismo de reiniciar el nivel. Moriremos, empezamos nivel. Ahí vamos. Estamos de vuelta en el nivel 2, nena. Tan excelente trabajo. Espero que lo disfruten. Espero que hayas hecho este reto. Espero que hayas intentado lo mejor posible y te felicito si lo hiciste de principio a fin, todo por tu cuenta. Voy a escenificar todo, sabio todos cometen los cambios. Se creó una forma de reiniciar el nivel o volver al Menú Principal al morir. Y no una forma creada. Dos botones para reiniciar el nivel todos vuelven al menú principal al morir. Y cuando los cambios. Si no me has dejado ya una crítica, si no, puedes esperar un poco y luego dejarme una reseña. Este es el momento perfecto y te veré en el siguiente donde estaremos creando uno de los aspectos más cool de cualquier juego, que es el menú de pausa. Entonces te veré entonces. 85. Configuración de el menú de pusas: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, cuando ejecutamos el juego, cuando tuvimos el peaky, se puede ver que tenemos un menú de bolas. Podemos o ir al menú principal en las obras, confíe en mí, o podemos reanudar el juego. Si retomamos el juego, Estamos de vuelta y de nuevo, también podemos pausar esto de nuevo, y en lugar de hacer clic en el uno de los botones, podemos golpear el máximo. Pero estamos que esto es algo que también cubriremos en el próximo video. Pero por ahora, sigamos adelante y creemos nuestro menú de pausa. Ah, está bien, así que ahora queremos sumar la capacidad para que nuestro jugador pasione el juego. Nuestro jugador, quiero decir, el tipo que, o la chica que realmente está jugando nuestro juego. Entonces, ¿cómo vamos a hacer esto? Bueno, va a ser bastante sencillo. Vamos a duplicar la pantalla de profundidad. Y esta será la pantalla de pausa o el menú de pausa. Así que pausa el menú y pulsa Enter. Y aquí vamos a tener todo igual excepto por el déjenme encender esto excepto por el lote. Entonces antes que nada, la sangre, no queremos la sangre y el menú de pausa, se me va a dejar ponerla en el uno. Entonces tenemos la imagen aquí dentro, pero queremos que solo se desvanezca un poco para que podamos ver el fondo. Entonces digamos 0.5, ¿de acuerdo? Por lo que lo tendremos a 0.5. Y luego vamos a mover el botón de reinicio. Y solo haces que el más pequeño mueva el botón de reinicio aquí, mueve el menú principal aquí. Y en lugar de reiniciar el nivel que puedes mantener si quieres, pero vamos a hacer este botón Reanudar. Entonces botón Reanudar y en el texto aquí solo reanudará juego. Entonces ahí vamos. Ahora tenemos estos dos botones. Obviamente tendremos que cambiar las funcionalidades y aquí. Pero eso es algo y yo un par de minutos. En primer lugar, abramos el Administrador de UI. Y aquí dentro vamos a hacer un par de cosas. En primer lugar, obviamente necesitamos una referencia. Entonces voy a crear un campo serializado del objeto del juego, que es el menú de pausa. Guarda eso. Pero la cosa aquí es que, como hemos dicho en el video anterior, UI Manager, está bien, tal vez sí enciende y apaga el menú de pausa, pero no se hace responsable de pausar realmente el juego. El gestor de nivel es el script que se encarga de hacer eso. Entonces en el nivel manager, vamos a crear un bool público. Y vamos a llamar a esto, el juego está en pausa. Y obviamente no quiero hacerlo público, pero vamos a estar usándolo mucho. ¿ Sabes qué? No lo hagamos público. Hagámosla una variable privada, y crearemos una forma de acceder. Entonces un bool público es juego pausado, y acabaremos de regresar. Por lo que estas a veces son un poco engorrosas. A lo mejor estás pensando, Bueno, estoy creando mucho oro. Pero confía en mí, cuando llegas a los niveles superiores, al nivel profesional, estas son cosas esenciales para tener. No quieres que tu juego sea fácilmente corruptible a través del código. Entonces ahora que tenemos el juego está en pausa hasta que yo manager tenemos el menú de pausa al que obviamente queremos acceder de alguna manera, cambiar el menú de pausa. Entonces voy a crear un método aquí dentro que va a decir que el vacío público gire, pausa, menú encendido, apagado. Y va a tomar un booleano que va a ser el on, off. Y sé que esta no es la mejor manera de representar la variable, pero de todos modos, sigamos adelante. Ya verás a qué me refiero. Entonces aquí solo vamos a seguir adelante y conseguir que el menú de pausa, la directiva de puntos se encienda, se apague. Por lo que ahora volvemos al gestor de nivel. Y aquí dentro vamos a crear un vacío público. Pausa, Reanudar juego. Y lo que vamos a hacer aquí es que vamos a comprobar si no estamos en el juego pausado. Por lo que aún no hemos pausado. Después accederemos al Administrador de UI. Instancia de punto, punto, pausa, giro, pausa menú de pausa encendido y apagado. ¿ Y qué lo vamos a poner? Bueno, sólo lo pondremos en verdad. Porque si no somos juego sin oposición, cuando presionamos algún tipo de tecla, entonces queremos encender el menú de pausa. Y de lo contrario. Eso significa que si no hemos pausado el juego. Entonces si nosotros o me disculpas, si estamos en un juego pausado. Entonces vamos a hacer lo mismo aquí dentro, pero en cambio vamos a apagarlo. Y esto irá al eje UI Manager, éste y lo apagará. Entonces con eso fuera del camino, hay algo que todavía tenemos que hacer y que en realidad es girar o cambiar este juego a diferencia de usar algún tipo de botón. Y este va a ser tu reto para reanudar el juego usando algún tipo de clave. Entonces comprueba si hay entradas y cuando se presiona, debemos llamar al método y reanudar ganancia o pausar el juego y asegurarnos de cambiar el estado del juego. Entonces si está en pausa o si ya no lo es, así que pausa el video ahora mismo y ve a crear una entrada. De acuerdo, bienvenido de nuevo. Entonces, ¿dónde lo quieres poner? Creo que aquí arriba. Entonces una actualización, vamos a comprobar si el punto de entrada bajan tecla y un código clave para p. Entonces vamos a pausar, reanudar, el juego. Es así de sencillo. Y luego termina aquí. Si no hemos pausado el juego, por lo que la ganancia no se pausa. Hacemos clic en el peaky, encendimos. Por lo que el encendido, apagado es cierto. Entonces aquí vamos a decir que el juego está en pausa, es igual a cierto. Y duplicar esto y mover esto aquí abajo. Falso. Guarda eso. Entonces vamos a probar esto. Espero no haber cometido un error con lo falso y lo verdadero. Por qué creo que es correcto. Entonces en el botón Reanudar y vamos a agregar algo aquí, que es el lienzo de UI. Y dentro de aquí vamos a ir a la UI Manager. Vamos a encontrar turno, pausa menú encendido, apagado. Y como pueden ver, tenemos la opción de agregar ya sea verdadero o falso. Y este es el booleano real aquí mismo que gira en todos los caminos. Entonces de vuelta en nuestro juego y aquí, primero volvamos al menú de pausa, ejecutemos el juego. Entonces y aquí tenemos el peaky. Podemos volver al menú principal. También podemos golpear el peaky de lo que tenía el peaky espalda. Y luego apagamos el menú de pausa. Ahí vamos. Pero todavía hay una cosa que es el botón Reanudar. Ahora voy a seguir adelante y añadir el evento onclick aquí. Y voy a romper mi propia regla de agregar el manager de nivel de el mundo del manager ahora mismo es como, Oh, no rompas las reglas. Pero sí lo soy. Voy a entrar en el juego de currículum de pausa restaurado. Así que corre el juego. Y ahora vamos a presionar la tecla, reanudar el juego, y todo funciona bien. Pero como pueden ver, si hago una pausa en el juego, todavía puedo andar por ahí. Todavía puedo disparar enemigos y aún puedo morir. Ahora, si quieres crear un almas oscuras pregunta tipo de pausa en el juego donde el juego continúa en segundo plano. Y solo te sientas ahí impotente tratando averiguar qué está pasando en el menú. Sé mi invitado. Si no, si quieres que se detenga el mundo, entonces continúa con el siguiente video. Pero antes de que hagamos eso, obviamente habrá que comprometer nuestros cambios. Entonces nos vemos. 86. Realamente pausas el juego: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, vamos a estar aplicando los cambios que hemos realizado. No sólo eso, vamos a correr el juego cuando deberíamos imponer, notarás que hasta la bala se congela y el espacio matemático, si tratamos de caminar, no pasa nada. Y si tratamos de disparar, también, no se producen balas. Entonces este es el análisis real del juego, no solo tener un menú. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Por lo que a pesar de que tenemos la pantalla de pausa, podemos volver atrás. Podemos ir al menú principal. En realidad no estamos deteniendo el juego. El juego sigue funcionando, todavía podemos correr, todavía podemos saltar. Podemos hacer todo. En realidad, no saltamos. El enemigo aún nos ataca. Por lo que necesitamos encontrar una manera congelar realmente nuestra ganancia. Y realmente no me estoy sintiendo a la altura. Entonces les voy a presentar un reto para detener toda la palabra mundo con un l, congelar el mundo usando escala temporal. Entonces este es el único punto y el reto, bastante fácil, creo que ya sabes qué hacer. Así que pausa el video ahora mismo y ve a congelar el mundo. Hey, bienvenido de nuevo. Te conozco malditamente odio cuando te doy un reto al principio de un video, solo estás sentado. Sí, por fin, voy a aprender algo y entonces Michael sólo te da un reto. De acuerdo, de todos modos, aquí dentro, una vez que paremos el juego y accederemos al tiempo, un punto un tiempo delta. Y va a ser igual a ningún tiempo que escala temporal 0, F. Y aquí cuando detenemos al jefe, la escala temporal de punto de tiempo es igual a 1.5. Guarda eso de nuevo en nuestro juego. O vamos a hacer esto un poco más grande, correr el juego. Así que pausa el juego. Excelente. Hay un problema sin embargo, y eso es nada está apareciendo. No sólo eso, sino que seguimos siendo capaces de mover el arma. ¿ Y qué pasó aquí dentro? Bueno, el problema es que nuestro menú de pausa como se maneja o está apareciendo usando la animación. Entonces lo que voy a hacer es que sólo voy a entrar al animador aquí dentro. Y yo sólo voy a quitar los componentes para que ya no tengamos animaciones. Entonces ahora cuando ejecutamos el juego, pausé el menú y todo se detiene. Pero como viste, todavía puedo moverme con el enemigo. No me muevas, pero aún puedo disparar y producir balas. Ahí vas. Se puede ver la estabilidad y yo puedo producir algunos de esos. Y esto no es algo que queremos cuando reanudemos el juego, todo vuelve a la normalidad, pero esto no es suficiente. Entonces lo que vamos a hacer es entrar en el ¿dónde está? Controlador de jugador. Entonces jugador, el controlador de jugador. Entonces controlador jugador. Y aquí dentro, si nos desplazamos hacia arriba la actualización, vamos a seguir adelante y terminar aquí. Diga que si el juego de punto instancia de punto de nivel manager se pausa como juego pausado. Entonces si es cierto, eso significa que simplemente vamos a regresar. Y recuerda lo que pasa cuando simplemente regresamos, simplemente evitamos todo el objeto. Entonces si llegamos a esta línea, comprobaremos que está pausado, cierto. Después regresamos y luego volvemos a la Actualización, y luego volvemos a la actualización. Por lo que el jugador no hace nada. No puede moverse, no puede apuntar el arma. No se puede animar, saber correr corriendo, cambiar las encías, no, nada. Por lo que ahora de vuelta en nuestro juego, cuando corremos la ganancia, ahora podemos pausar el juego. Y se puede ver que nuestro jugador ya no se mueve pesar de que todavía podemos producir una bala por alguna razón. Ah, eso es porque el tiroteo real está en lo que se llama el sistema de armas. Entonces retomamos el juego, el barco se va volando. Puedes hacer esto en cualquier lugar que quieras dentro de la actualización siempre que tengas algún tipo de así mientras que el sistema de armas que entramos aquí, una actualización. Ahí vamos. Ahora ya no podremos disparar balas. También puedes agregar esto a los controladores enemigos donde también nos disparan con lunares. Entonces supongo que este es el final de la creación de menús y nuestro juego. Voy a comprometer nuestros cambios. Llamaremos a esto hecho el menú de pausa. En realidad bolas. Otra vez. Comete los cambios. Espero que lo disfruten. Echemos un vistazo a nuestros amos. Mientras tengamos aquí, todavía tenemos tiempo. Este video fue muy corto. Es decir, mira, mira lo mucho que hemos logrado juntos. Esta ganancia es increíble. Tiene tantas cosas, tiene tantas opciones, tantas variables, tantos scripts, tantas carpetas como las carpetas que tenemos son no sé lo que ella casi a 100 carpetas, creo. Probablemente tenemos tantas animaciones aversión. Mira cuántos y aún no animamos todo. Todavía tenemos mucho que hacer. Puede animar a los enemigos cuando disparan, todavía hay un montón de cosas que podemos agregar. Entonces debido a que este video es corto, quiero que te tomes el tiempo para rezar, luego exhales, y aprecias lo lejos que has llegado en tu viaje de desarrollo de juegos. Y qué revisión increíble. De todas formas me dejaste dejarme. Muchísimas gracias por ver. De verdad, de verdad aprecio si tienes hasta este punto. Si me dejaste un mensaje en el marcador, vamos a charlar. Dile a la comunidad cuánto has venido, cuánto has aprendido, cuánto has logrado y te veo en la siguiente, supongo, dónde estaremos creando una pelea de jefes, creo, que es como la cosa más cool del mundo. 87. Sección 15: batallas de jefe (máquina mayor de estado C# estado) introducción a la máquina Sate: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a un video completamente nuevo en sección totalmente nueva. Y una de las mejores secciones, te presentaré al jefe del autobús Skelly. No voy a perder demasiado tu tiempo. En primer lugar, hablaremos de la máquina estatal, qué es, cómo es, por qué la estamos usando, cómo la vamos a estar usando, usando el animador, todo eso bueno. Y en la segunda parte del video, estaremos hablando de las animaciones que he creado sólo para guiarlos a través del proceso. Si has creado las animaciones, el medio, tendremos un reto. Si ya hiciste todas las animaciones, puedes saltarte la segunda parte. O si crees que necesitas un poco de ayuda, solo te guio a través de un poco de lo que hice. Entonces con eso fuera del camino, no perdamos más tiempo. Entonces empecemos con el caso de pelea de jefe 0. Entonces, uh, bienvenido a una de las partes más emocionantes de todo este proyecto y esa es la más batalla. ¿ Qué ganancia es completa sin un botón de pérdida? No hay juego. Entonces sigamos adelante y pensemos en cómo vamos a crear una batalla de jefes. En primer lugar, hablemos de algo llamado la máquina estatal. Si miramos aquí en el animador, te darás cuenta, y tomemos por ejemplo al jugador de la fatalidad. Notarás que estas son de hecho animaciones, pero también funcionan como estados. Entonces tenemos los estados, o estoy en el estado de los enlaces de identificación de jugador o jugador cualquiera nombre. Es una finca. Él puede hacer cosas específicas. No puede moverse. Por ejemplo, puede disparar , puede hacer muchas cosas, pero está en estado de ralentí. Después tenemos el estado caminando y luego tenemos al jugador apestoso. Entonces, por ejemplo, cuando estamos apestosos, tenemos ciertas animaciones. Tampoco se puede mover. O sea, lo siento, no podemos disparar con nuestras armas ni con nuestras armas. Entonces eso es señal de un estado diferente donde tenemos diferentes mecánicas y comportamientos diferentes. Entonces vamos a utilizar al animador para producir este tipo de estados. Y yo estuve todo el tiempo llamando a estas animaciones. Pero a mucha gente le gusta llamarlos estados. Y eso está bien. Puedes llamarlos como quieras siempre y cuando se describa adecuadamente lo que está sucediendo. Entonces hablemos más de estados y qué máquina estatal, como máquina estatal es un modelo conductual. Consiste en un número finito de estados. Entonces modelo de comportamiento, al igual que tenemos el ralentí, igual que tenemos el avión, lo siento, lo corriendo y lo apuesto. Estos son modelos de comportamiento y son finitos. Por lo que siempre necesitamos saber cuántos estados tenemos. Y una entrada dada la máquina realiza transición de estado y produce salidas. Entonces al igual que tenemos las transiciones entre las animaciones en el animador, ¿ entonces una máquina estatal tiene transiciones? Entonces por eso el animador es el perfecto, Digamos herramienta para crear esta máquina estatal. Entonces hablemos de lo que tenemos en nuestros estados. En primer lugar, tenemos el estado de salida. Entonces tenemos el estado de partida, pasamos a otro estado que es el a o lo que sea. mejor empezamos por ralentí, luego transitamos a caminar, entonces podemos transitar entre, por ejemplo, y todo esto es un ejemplo entre dos estados, B y C. Y por ejemplo, cuando pasamos de estado a al estado C, no podemos volver al estado a, bot del estado C, podemos ir al estado B, ir al estado a, y luego de ida y vuelta entre a y b Así que esto es sólo un ejemplo de lo que podría ser un estado. Y obviamente en todas y cada una de las transiciones, tenemos condiciones. Por lo que se tienen que cumplir ciertas condiciones para transitar de un estado a otro. Y esto es algo que hemos estado haciendo todo el tiempo y las anotaciones. Entonces sólo voy a seguir adelante. Hablemos de la máquina jefe estatal que vamos a tener. Por lo que el primer estado será el que aparezca. Entonces el jefe, en cuanto entremos a la sala del jefe, el jefe empezará a aparecer desde el suelo y verás a los sprites del jefe en tan solo un poco. Yo les proporcioné en los recursos. Entonces empezamos a caminar. Por lo que tan pronto como el jefe llegue la vida, entonces comenzará a caminar hacia el jugador. Entonces no hay tiempo que perder, ni ralentí, ni nada. El jefe acaba de empezar a caminar hacia el jugador. Después tenemos los cinco tiros. Por lo que le daremos la capacidad a nuestro enorme jefe esqueleto que verás en tan solo un poco para disparar ciertos disparos adder. Entonces así como teníamos las balas enemigas, igual que teníamos las balas de jugador, también tendremos las balas de jefe que se dispararán desde muchas direcciones. Entonces tendremos los ataques cuerpo a cuerpo o justo como te prometí, vamos a crear un ataque cuerpo a cuerpo para nuestro Jefe que atacará al jugador una vez que esté cerca de aquí. Entonces tendremos algún tipo de temporizador. Y obviamente queremos que la transición vaya en ambos sentidos. Entonces, por ejemplo, no queremos aparecer, caminar y luego volver a aparecer. Entonces eso es todo. Una vez que comparecemos, nunca volvemos al estado bajo cierta condición. Empezamos a caminar. Bajo ciertas condiciones, comenzamos a disparar disparos y luego empezamos a caminar de nuevo. Y bajo ciertas condiciones, también empezamos a atacar cuerpo a cuerpo, y bajo ciertas condiciones volvemos a caminar. Pero luego está la segunda parte de la pelea. Y ahí es cuando nuestro enemigo se enoja o nuestro jefe se enoja cuando le disparamos lo suficiente para que su salud baje. Después empieza a caminar enojado. Empieza a disparar tiros enojado. Comienza angularmente, principalmente atacándonos. Él va a cambiar de colores, tú cambiarás de tallas. Y finalmente, cuando lo matamos, si lo matamos, si logramos hacerlo, tenemos el estado de morir donde ya no puede hacernos daño. Desaparece y nos fuimos. Entonces voy a, si quieres, puedes pausar el video, mirar esto, tomar este fin. Vamos a estar haciendo todo esto en nuestros próximos videos, pero te voy a dar también un reto para crear todas las animaciones y pensarlo así, crear las animaciones que tendremos para el jefe. Y déjame solo mostrarte los recursos. Tenemos la aparición, el ataque, el tinte, el ocioso, la caminata. Y si no estás seguro de lo que va a ser el Angry todos te mostrará brevemente después de que haya terminado todas las animaciones, no las estaré haciendo en vivo porque honestamente tomará mucho tiempo. Se necesitará mucho esfuerzo. Simplemente crearé una nueva escena, pondré las barras ahí, y crearé el par de animaciones. Entonces necesitarás crear el aparecer, atacar, caminar, disparar, enojarse, enojarse, atacar enojado, disparar enojado, caminar. Y ahora si no estás seguro de cómo crear el enojado, solo al menos el paseo enojado, por ejemplo, es lo mismo que el tiroteo enojado, lo siento. O sea, la caminata enojada es igual que la caminata regular. Pero lo que haré es aumentar la escala del enemigo, del jefe. Y también le haré un poco de color rojo para que se vea diferente. El ataque enojado es justo lo mismo que el ataque. Y por último, queremos establecer el estado enojado, que el estado enojado sólo tendrá al jefe como color rojo, un poco más grande y escala y animaciones un poco más rápidas también. Entonces con eso fuera del camino, pausa el video ahora mismo, y no sé, Tal vez te voy a mostrar en el siguiente video las animaciones. A lo mejor te mostraré en este las animaciones solo para que pueda ver todo, armar todo. Y te veré en el próximo mes tal vez, ya sabes. Hey, bienvenido de nuevo. Entonces, ¿cómo te llevaste con eso? Yo sólo quería mostrarles un par de cosas o la forma en que creé mis estados y cómo hice el enojado caminar y el tiroteo enojado y ataque enojado y cómo hice el enojarse puede ser que te puedas inspirar. También arreglé un par de cosas. Si hiciste el ataque, podrías haber notado que el sprite se mueve hacia la derecha, lo cual no es muy bonito. Por lo que también arreglo eso. Entonces déjame mostrarte lo que hice. En primer lugar, tengo todos mis sprites aquí, la Biblia ataca a los ociosos que no usamos. Para que se pueda ver el caminar. Todos ellos se mantuvieron casi igual. Acabo de cambiar el filtro y hacer los píxeles por unidad 75. Y qué hice yo, este jefe de Kelly. Entonces déjame mostrarte lo que hice aquí. Entonces digamos que estamos en la aparición. Déjame mostrarte la comparecencia. Muy sencillo, muy normal. Sólo ahí tienes. Se puede ver que tenemos el esqueleto apareciendo. Ya puedes ver he añadido dos colisionadores de cajas. Uno de ellos es un gatillo para que podamos caminar como ustedes saben, donde caminamos por las paredes. Me tenía ver. Está bien. Entonces el de abajo, el de arriba, que es éste. Ahí vamos. Puedo apagarlo y encenderlo. Y se puede ver ese es el que vamos a hacer un gatillo que es sólo para que podamos golpear al enemigo, pero al mismo tiempo el enemigo puede pararse detrás del fondo aquí mismo. Entonces ahí vamos. Tenemos la aparición, como pueden ver. Y esta estructura aquí en el animador. Todavía no creé las transiciones porque quiero hacerlas conforme creamos el código. No quería hacerlas sin que lo supieras porque en algún momento tendremos tiempo de salida, tendremos tiempo de transición y todas estas cosas buenas. Entonces como puedes ver, empezamos con aparecer igual que hicimos en toboganes que caminar y entre el caminar y el tiroteo, luego nos enojamos que el andar enojado, ataque enojado y enojado tiroteo. Por lo que la visita la caminata. Ahí vamos. Muy sencillo. Simplemente caminamos por ahí. Entonces tenemos el ataque. Entonces como puedes ver, tal vez en tu caso e incluso en mente aún, puedes ver que el jefe sólo se mueve un poco así a la, hacia arriba y hacia la derecha. Por lo que nota ahí vamos. puede ver que se movió sólo un poquito, pero eso es a pesar de que cambiamos un poco en los sprites. Si los mantuviste igual, notarás que el tuyo se mueve mucho. Entonces para arreglar esto, me he asegurado de entrar en el Sprite Editor. Y aquí cambié el pivote personalizado. Entonces este es el punto donde lo llamemos el centro. Es un pivote en realidad. Pero hay una ligera diferencia entre pivote y centro, pero este es el centro ahora mismo cuando el centro estaba justo aquí, porque toda la imagen se movió a la derecha. Por eso todo el enemigo se mueve hacia la derecha. Entonces lo que hice es cambiar el centro justo aquí, creé un pivote personalizado y fue 0.6554878. Si quieres copiar este número igual que yo hice, o tal vez puedas encontrar uno que sea mejor. mente no es perfecta. Como se puede ver, se mueve un poco a la derecha. Para que puedas encontrar tu propio valor y puedes ver que no tienes que ir a editar todos los sprites. Simplemente puedes seleccionarlos todos. Y aquí dentro, puedes seleccionar el pivote personalizado en la parte inferior y luego anotar este número, mantenerlo en 0.5. Esto en la Y, en la x, cámbialo a 6554878. De acuerdo, ¿y qué más hicimos? Entonces este es el ataque y se puede ver que dejo un poco de espacio cuando está golpeando. Por lo que tendremos un ataque de este lado. Y una vez que el tipo es APU, espera un poco solo para darle espacio a nuestro jugador a tal vez fugado. Y luego volvemos hacia abajo. Y cuando vamos a estar creando son principalmente ataque. Ya verás cómo esto es crucial porque vamos a sumar sistemas de eventos que dañarán al jugador sólo cuando la sal esté en una posición determinada. No queremos dañar al jugador cuando los soldados se levantan porque obviamente el esqueleto no se balancea. Entonces simplemente lo dañaremos cuando la fuente esté justo aquí y crearemos algún tipo de colisionador circular justo aquí. Y si el jugador está dentro, entonces se daña. Así crearemos el ataque malayo. Entonces, ¿qué más le debemos al tiroteo? Entonces tengo este de los sprites moribundos, creo. Sí, ahí vamos. Entonces es de los sprites moribundos y no es lo más inteligente del mundo. Sólo necesito algún sprite en particular. Y como puedes ver cuando estamos disparando, solo cambia la escala. La escala aumenta y luego vuelve a bajar. Se puede ver aquí mismo. Entonces envío el botón de grabación y luego los hice más grandes, más pequeños, más pequeños, más pequeños, más grandes, más pequeños. Y aquí es cuando estaremos disparando. Vamos a sumar, igual que hicimos con un irregular. Y significa que vamos a sumar puntos de tiro, por lo que vamos a sumar cuatro. Y luego cuando esté enojado, vamos a sumar seis y hablar de enojado. Veamos cómo nos enojamos. Entonces ahí vamos. Se puede ver así es como nos enojamos. Nosotros en primer lugar, nos hacemos más grandes. Entonces tenemos los más pequeños, más grandes, más pequeños, más grandes. Y también agregué aquí los sprites ociosos. No tienes que hacerlo. No noté mucho cambio. Si eliminamos todos los sprites legales, nada cambia honestamente, pero yo sólo quería tener algo diferente que solo una imagen rancia. Esto agrega, tal vez en sólo un pequeño movimiento sutil al jugador que con el enemigo, me refiero al jefe, a Selly, puede ver que se hace más grande, más pequeño, más grande, más pequeño, y su mano se contrae sólo un poquito lo suficiente para solo tener un poco de vida y él creciendo más o más pequeño. Y luego se puede ver que se hace grande donde tenemos la escala en 1.3 en la x y en la y, obviamente en el SAT, no la necesitamos. Y luego sólo esperamos un par de segundos para el jugador se dé cuenta de lo que acaba de pasar. Y entonces finalmente empezamos a caminar enojados. Entonces mientras que el caminar enojado o enojado caminar, es exactamente lo mismo que el caminar regular, pero es un poco más rápido. Y en el primer fotograma, me aseguré de fijar la escala en 1.3. Entonces en la animación, tenía el disco. Cambio el color a rojo completo. Ah, y por cierto aquí dentro, mientras que el enojarse. Por lo que se enojan, te darás cuenta de que se vuelve lentamente leerla. Y aquí, aquí es donde lo pongo a rojo y se mueve lentamente. Se puede ver el color aquí mismo. Se mueve lentamente a leer. En la caminata enojada, sólo lo ponemos a leer al principio, aumentamos la escala a 1.3 por todos lados y hacemos que el caminar un poco más rápido. Esto es lo que sucederá cuando se enoje. Empezará a caminar más rápido, por lo que las animaciones serán más rápidas. Tenemos el tiroteo enojado, así que exactamente igual, el color que apenas cambia. Es completamente rad porque en este punto todo el NME o jefes rojos. Y finalmente el ataque enojado. Es exactamente lo mismo, solo con una escala más grande, un color diferente, y movimientos mucho más rápidos. Por lo que se puede ver que no hay tiempo de espera cuando las fuentes se levantan, simplemente sigue cortando todo el tiempo y vamos a crear lo mismo que vamos a tener aquí dentro, el daño. Esta posición tendremos los daños. Y en esta posición también tendremos los daños. De acuerdo, entonces con eso fuera del camino, espero que hayan disfrutado de este video. Espero que hayas creado todas tus animaciones. Tomó el tiempo para hacerlas. Eso es escenario todo nuestro whoa, eso es lindo. De todos modos, por alguna razón tengo un error. Eso lo arreglaré más adelante. Pero por ahora, espero que lo disfruten y los veré en el próximo video donde estaremos realmente moviendo a nuestro enemigo y destruyendo cosas. Entonces nos vemos. 88. Configuración de movimiento de jefe: Bienvenidos de nuevo a mis compañeros desarrolladores de juegos a un video totalmente nuevo. Y en este, si maximizo en juego para ver todo cuando corro el juego, notarás que el jefe apela desde el suelo y empieza a caminar hacia nosotros. Y cuando llega a cierta posición, empieza a colaborar con nosotros obstruyendo. ¿ Eso es incluso un verbo apropiado? Empieza a golpearnos con su sal gigante. Entonces eso no es perder más tiempo. Y empecemos. Ah, vale, Así que ahora hagamos que el enemigo realmente camine o no enemigo el jefe en realidad empiece a caminar Hacia el jugador. Entonces, ¿cómo vamos a hacer esto? Si vamos al animador, lo primero que queremos hacer es querer transitar de la apariencia a la caminata real. Entonces voy a crear una transición hacia el caminar. Y no va a haber ninguna condición. Sólo va a haber un tiempo de salida y tal vez una duración de transición que vea cómo se ve eso. Entonces aparece el enemigo y ahí vas. Se puede ver que cuando termina de aparecer, luego transita hacia la caminata. Puedes jugar por aquí. Entonces, por ejemplo, aumentemos el tiempo de salida al 97 por ciento. Por lo que hemos terminado su aparición por completo. Veamos cómo se ve eso. De acuerdo, entonces hay una especie de error aquí. Y quiero hacer todo esto frente a ti solo para que veas cómo suceden las cosas. A lo mejor tomará un poco de tiempo más del video, pero tengo que mostrarles esto. No quiero ninguna confusión de todas formas. Ahora que tenemos el caminar, en realidad es el momento de primero que nada, encontrar la transformación del jugador, conseguir un cuerpo rígido, encontrar la dirección, y así sucesivamente, agregar la velocidad. ¿ Cómo vamos a hacer esto? Bueno, como saben, tenemos a todos estos estados configurados aquí mismo. Entonces lo que voy a hacer, voy a dar click en la caminata. Y se puede ver aquí mismo que puedo agregar algo llamado comportamiento. Entonces vamos a dar click en Agregar comportamiento. Sigamos adelante y creemos un nuevo guión. Y en lugar de que el jefe se enoje por alguna razón, vamos a llamar a esto el paseo del jefe. Por lo que agregar un script de comportamiento a un estado tiene un tipo diferente de convención de nomenclatura que voy a usar. En realidad MI unidad usa el guión bajo, así que voy a seguir con ese estándar, digamos. Por lo tanto, crea un anuncio, espera a que se importe el archivo. Y ahí vamos. Ahora tenemos la posguerra. Si hacemos click en y vemos donde realmente está eso, ahí vamos En los activos. Es de inmediato en los activos. Entonces si algún día ahora, si hago esto un poco más grande para que podamos ver correctamente las carpetas. Y se puede ver que sólo está en los activos. Y por esa razón, voy a entrar en los guiones de aquí, hacer clic derecho y crear una nueva carpeta para el sistema jefe o jefe. Llamémoslo el sistema POS. Pulsa Enter y luego backend los activos. Arrastrará esto al jefe. Ahí vamos. Y el jefe da click en caminar. ¿ Sigue ahí el guión? Por lo que la nueva versión de Unity es extremadamente válida de todas formas, ojalá la tuya no tome tanto tiempo compilar y entender todo. Entonces ahora hagamos doble clic en el malecón y veamos qué tenemos aquí dentro. Como puedes ver, ya no tenemos un comportamiento mono. Como se puede ver aquí mismo, comportamiento Mano suele reservarse a un guión que se adjuntará a un objeto de juego. Entonces algo que se moverá. Por ejemplo, aquí dentro, no tenemos un comportamiento motor, tenemos un comportamiento de máquina estatal. Y este es un guión que sólo está apegado a ciertos estados. Entonces Sigamos uno, ¿qué tenemos aquí? Al igual que tenemos el inicio y actualización del comportamiento mono, tenemos el Enter on-state y la actualización on-state. También tenemos la salida en estado, movimiento en estado y el IQ en estado, sea lo que sea. De todos modos, no nos estaremos centrando en los dos últimos, por lo que podemos seguir adelante y eliminarlos. Y aquí dentro, voy a seleccionar todas estas líneas porque están comentadas. Y podemos descomentar todo usando el turno de control o no, lo siento, Control K, tú. Ahí vamos. Así que asegúrate de que para mantener presionada Control y pulsa K te al mismo tiempo. Como pueden ver, tenemos muchos errores. Y eso se debe a que estas líneas son en realidad los comentarios. Entonces al igual que aquí tenemos sobre la actualización, la actualización de comentarios se llama cada fotograma que se puede ver aquí, en estado enter se llama cuando se inicia una transición, y la actualización en estado se llama cada actualización y a la salida se llama en las transiciones. Y bien, Excelente. Entonces ahora sigamos. Aquí voy a crear en primer lugar, la transformación para que la capa persiga. Entonces me voy a poner. Un cuerpo rígido 2D. Entonces jefe cuerpo rígido, sin jefe. Cuerpo rígido 2D. ¿ O sabes qué? No vamos a tener que liderar todo este juego es un juego 2D, así que no vamos a necesitar eso y un vector de tres puntos dirección para movernos. Y así al igual que los enemigos regulares, tenemos los componentes del jefe caminando y así sucesivamente. Entonces ahora que tenemos estos, es hora de un poco de reto. Y tu reto va a ser encontrar la capa IP y conseguir el cuerpo rígido. Entonces, antes que nada, piense en dónde deberíamos estar sacando todas las referencias. Por lo general usamos el arranque, pero ahora no nos hemos detenido. Entonces, ¿dónde deberíamos estar? Piensas dónde deberíamos estar usando un, ¿dónde deberíamos estar sacando todos nuestros componentes? Entonces tendremos que encontrar al jugador, obviamente. Entonces tendremos que ponerle el cuerpo rígido al jefe. Y te voy a dar una pequeña pista. Tendremos que utilizar el animador a partir de los parámetros. ¿ A qué me refiero con el animador a partir de los parámetros? Déjame mostrarte eso. Entonces si entramos aquí, se puede ver que en la entrada on-state, en la actualización estatal y en la salida on-state, tenemos ciertos parámetros aquí dentro, y uno de ellos es el animador. Por lo que tenemos acceso inmediato al animador. Eso es lo que vas a usar una orden para conseguir las referencias. Por lo que de ida y vuelta a nuestro reto, esto es un poco duro. Haz lo mejor que puedas, prueba cosas diferentes, trucos diferentes, comete errores, haz lo mejor que puedas. No hay presión sobre ti. Pausa el video ahora mismo y ve a hacer el reto. O K volverá. Entonces debido a que no tenemos arranque, vamos a utilizar el on-state enter and away Allstate enter works es tan pronto como entremos al estado, vamos a configurar los parámetros y luego estaremos viendo lo que queremos hacer más adelante. Por ahora, vamos a seguir adelante y usar la persecución del jugador. Cuál es el jugador Chase va a ser el juego objeto dot find objetos de tipo. O en realidad dónde se encuentra objeto de tipo. Y va a ser el controlador del jugador. Nota en la parte superior bala el controlador del jugador. Entonces encuentra el objeto de tipo. Creo que ya hemos visto esto antes. Y usamos objeto de juego porque solo podemos usar objeto de juego sin tener el comportamiento mono aquí arriba. Por lo que necesitamos la clase de objeto de juego. Después obtenemos el objeto final de tipo. Obtenemos el controlador de jugador. Y por último, necesitamos conseguir el transporte de ese objeto de juego que encontramos. Por lo que ahora tenemos una referencia al jugador a perseguir. A continuación, necesitamos los cuerpos rígidos. Entonces voy a decir que los jefes cuerpo rígido es igual al componente animador. Y vamos a conseguir el cuerpo rígido 2D. ¿ Y agregamos un cuerpo rígido al jefe? Echemos un vistazo a eso y veamos si lo hicimos. Si hacemos click en el Selly, no lo hicimos. Entonces sigamos adelante y sumamos un cuerpo rígido 2D. Ahí vamos. Entonces ahora tenemos un cuerpo rígido. Y asegurémonos de que congelemos la rotación con este fin. Y nos aseguramos de que la gran escala a 0. Ahí vamos. Guarda eso. Si no quieres poder empujar a tu jefe, puedes asegurarte de configurarlo como estático cinemático o tal vez incluso estático. Pero creo que no podrá moverse. De todos modos, sigamos uno ahora necesitamos asegurarnos de que el enemigo o el jefe realmente comience a moverse. Entonces, ¿dónde deberíamos estar haciendo eso? Bueno, obviamente debería ser lo contrario. Entonces una actualización, voy a decir que tenemos un vector dos, que es la nueva posición en la que deberíamos estar. Y va a ser igual al vector a la niebla hacia. ¿ Y hacia qué deberíamos estar avanzando? Debe ser el punto jefe, posición de punto cuerpo rígido. Entonces esto será, como se puede ver aquí mismo. En primer lugar, tenemos la corriente, después tenemos el objetivo, después tenemos la distancia máxima. Entonces aquí vamos a seguir adelante y decir esa posición cuerpo rígido. Por lo que de los jefes cuerpo rígido obviamente. Entonces vamos a decir que la posición del jugador chase dot es el objetivo. Y voy a crear aquí arriba una velocidad de flotación pública. Y esta será la velocidad a que vamos a estar moviéndonos. Y luego un flotador público de vuelta. Rango, y este será un rango de ataque más adelante en el uso de la herramienta. Entonces aquí lo que vamos a hacer es que vamos a decir que vamos a movernos a la velocidad, pero vamos a sumarle Time dot fijo delta prime y y tiempo delta fijo. ¿ Y cuál es la diferencia? Se puede ver aquí, el intervalo en segundos en el que la física y otros fotogramas fijos aceleran las actualizaciones. Entonces es, es casi lo mismo que el tiempo delta, pero es tiempo delta fijo. Simplemente agrega un poco de rendimiento extra al juego. Y por alguna razón me di cuenta cuando usamos el tiempo delta regular, tenemos algún comportamiento extraño porque estamos en un animador. A lo mejor esa es la razón. No estoy 100% seguro, pero lo que he encontrado usando el tiempo delta fijo, que es exactamente como el tiempo delta, solo fijo y más preciso. Entonces sigamos. Por último, ¿qué queremos hacer cuando entramos en cierto rango? Queremos empezar a atacar a nuestro jugador. Entonces si el vector de dos puntos distancia entre la capa para perseguir posición de punto y el cuerpo rígido. El jefe de la posición de punto cuerpo rígido. Si es menor que el rango de ataque que hemos creado aquí arriba. Mientras estábamos creando la velocidad. Entonces aquí dentro vamos a decir que el animador que disparan, el gatillo set y vamos a empezar a atacar. Entonces volvamos a nuestro juego. Vamos a crear una transición entre el caminar y el atacante. Y transité entre el atacante y el caminar. Y aquí dentro vamos a asegurarnos de que no tengamos tiempo extra o no que en realidad saltemos eso porque a veces podría necesitarlo. Entonces aquí vamos a decir que queremos atacar. Este será el nombre del gatillo. El condicionante para la transición de caminar y al ataque va a ser el ataque desencadenante. Lo voy a pegar aquí, guarde eso. Y ahora aquí dentro voy a ver cómo vamos a volver. Entonces primero que nada, lo hacemos, vamos de The Walking, empezamos a atacar, pero después ¿cómo regresamos? En primer lugar, veamos cómo se verá eso. Entonces voy a correr el juego y vamos a ver nuestro comportamiento de jugador. Entonces como se puede ver, apareció, pero por alguna razón no se está moviendo y se desliza con mucha facilidad. Entonces vayamos al plan de estudios y veamos cuál es el problema aquí dentro. A lo mejor deberías hacerlo un poco dinámico o cinemático. Probemos esto otra vez. Y otra vez. Aparece empieza a caminar. Y cuando estamos en rango, como pueden ver, él está. Ahí vas. Todo parece estar funcionando. El único problema es que estamos siendo rendidos encima de él. Entonces voy a volver. Voy a revisar por estos privados y la capa de jefe. Entonces esta es tu preferencia. ¿ Quieres aparecer detrás del jefe, frente al jefe? Pero en realidad lo que queremos es quizá aparecer detrás del jefe. No queremos estar caminando sobre el jefe. Entonces en las capas agregadas, jugador, Ahí vamos. Entonces ahora cuando ejecutamos el juego, ahora hay un problema obvio aquí que está bien, Así que nos renderizan detrás del jefe. Eso es bueno. Está luchando contra EU, está haciendo un ataque que otro ataque que caminar EBIT que otro ataque. Pero aquí el problema es que aún no camina hacia nosotros. Eso es porque en realidad no hicimos el movimiento del jefe. Esto fue un error de mi parte. Cuerpo rígido en el autobús. Podemos usar la posición Move. Y aquí dentro lo vamos a vender como la nueva posición. Entonces guarde eso. Se puede ver aquí mismo, Mover la posición no hace, mueve el cuerpo rígido a la posición, guarda eso atrás. Ahora juego, ejecuta el juego. Y ahora deberíamos ver que cuando aparece el jefe, empieza a caminar hacia la capa y empieza a golpear al jugador y a caminar hacia él. Pero como se puede ver, no está mirando hacia la dirección correcta y se está deteniendo demasiado cerca de la capa. Eso es porque si hacemos click en el plan de estudios en el caminar discúlpame, en el caminar justo aquí, fue que se puede ver que la velocidad y el ataque van a ser tal vez un poco más grandes. Entonces hagámoslo tal vez cinco. Veamos cómo se ve eso. Ejecuta el juego. Y ahora se acerca, después te vas, puedes ver que empieza a pelear con nosotros y empieza a caminar hacia nosotros. Entonces eso se ve un poco bien. Creo que no queremos poder caminar detrás del jefe. No me gusta mucho. Entonces tal vez esto no debería ser un disparador después de todo. A lo mejor deberías poder simplemente golpear al jefe en la cabeza. No es un gran trato si realmente podemos caminar por esto o puedes hacer que el, por ejemplo, el muro de rejilla cambió el muro a cierto nivel y asegurarnos de que el jefe no interactúe con muro, que creo que es una muy buena idea. A lo mejor vamos a probar eso. Guardemos eso. Pero por ahora, todo parece estar funcionando bien. Ahí está el problema de obviamente el volteo del enemigo. Y tenemos que hacer un par de arreglaciones para el movimiento, pero nos quedaremos con eso para un video posterior. Por ahora. Espero que lo disfruten. Espero que estés cometiendo tus cambios y te veré en el próximo. 89. Mejor movimiento de jefe: Bienvenido de nuevo mi favor los desarrolladores de juegos. En este video, vamos a estar arreglando un par de bichos o inconvenientes y el movimiento de nuestros jefes. Entonces ahora cuando ejecutamos el juego y hay un par de pequeños retoques que tal vez no te des cuenta. Entonces, por ejemplo, ahora, si nos vamos, no tenemos el doble ataque. Y también podemos ver que nuestro enemigo está siendo volteado cada vez. Entonces con eso fuera del camino, no perdamos más tiempo y lleguemos a voltear. Ah, está bien, Así que ahora que hemos establecido el primer tipo de caminar y un ataque de piruvato. Lo siguiente que vamos a hacer es que vamos a estar arreglando el movimiento jefe y vamos a estar avanzando con él a lo largo toda la máquina del estado jefe, SAP. Entonces, empecemos. Lo primero que quiero arreglar esto, el doble ataque. ¿ Cuál es el doble ataque? Bueno, si dirijo el juego, lo voy a mantener como está aquí mismo. Como se puede ver, se acerca, ataca una, dos veces. Si me escapo, sigue atacando a uno. Entonces 12, este es el doble ataque. No queremos que eso suceda. Entonces para evitarlo, voy a abrir el Visual Studio y aquí y en la salida on-state. Entonces cuando salgamos de la caminata del jefe, voy a seguir adelante y acceder al animador. Y voy a reiniciar el gatillo. Entonces aquí voy a decir de nuevo ataque. Entonces lo que esto va a hacer es, puede ver aquí mismo cuando estamos a cierta distancia, desencadenamos el ataque. Entonces entramos en el ataque. Pero luego en cuanto salgamos de la caminata, vamos a reiniciar el gatillo que ya no estemos en el ataque. Por lo que de vuelta aquí, ya no atacamos dos veces. Entonces ahora si corro el juego, los jefes enemigos sólo deberían atacar una vez que tuviéramos impuestos. Entonces impuestos, nos vamos. Ahí vamos. Se puede ver que sólo ataca una vez. Genial, Bueno eso arreglado. Lo siguiente que me gustaría arreglar es la animación de ataque. Por lo que notarás que no hace los dos columpios completos arriba y abajo. No eres el único arriba y luego se detiene. ¿Por qué es eso? Bueno, porque es la hora de salida justo aquí en la transición. Entonces si hago clic en estos, Kelly, y te darás cuenta aquí en la vista previa cuando haga correr el juego, dispara una vez y luego vuelve a caminar, que no es algo que queremos. Entonces en cambio lo que voy a hacer es fijar el tiempo de salida para jugar alrededor del 90 por ciento de la mudanza. Sí. Ahí vamos. A lo mejor aún, sólo un poquito más. Entonces tal vez 97 ish de la mudanza. A ver cómo se ve eso. Y todo esto necesita ser calibrado en función de cómo quieres que se sienta tu juego. Entonces ahí vamos. Atacamos una, dos veces abajo y abajo. Ahí nosotros, entonces otra vez, empezamos a caminar. Excelente. Una cosa más que está un poco molestando aquí es el tiempo de salida al caminar al ataque. Por lo que ahora tenemos todo preparado. Entonces ahora deberíamos ver un poco de una manera más suave. Ahí vamos. Entonces atacamos, caminamos, atacamos, caminamos, atacamos, caminamos un poco y seguimos empujando hacia el jugador. Pero obviamente todavía falta una cosa y es que el enemigo no está mirando en nuestra dirección, que es algo que yo llamaría un problema enorme por la forma se instalará nuestro ataque cuerpo a cuerpo. Entonces arreglemos eso. Lo primero que vamos a hacer es obviamente vamos a rotar al jugador igual que lo escribimos. Enemigos. Pero, ¿dónde hacemos esto? Podríamos querer hacer esto y la caminata. Bueno, ¿y si estamos atacando? También queremos estar mirando al jugador y ¿no deberíamos estar también mirando al jugador y disparando? Entonces esto parece ser algo que es más general y no de base estatal. Entonces vamos a crear aquí un guión que se llama el jefe controlador. Y voy a esperar a que se compile y agregue este controlador jefe a estos objeto de juego de Kelly boss aquí. Y aquí dentro, voy a primero que nada conseguir una referencia al jugador a perseguir. Por lo que un vacío privado. Vacío, vacío yo había transformado. Y la capa a perseguir. Ahí vamos, guarden eso ahora y empiecen. Voy a seguir adelante y decir que el jugador a perseguir es igual al objeto final de tipo. El controlador del jugador. Y voy a seguir adelante y acceder a la transformación sobre eso. Por lo que ahora tenemos al jugador a perseguir listo para salir. Ahora lo siguiente que hay que hacer es empezar realmente a voltear. El jefe siempre que el jugador va de un lado a otro del enemigo. Entonces porque ya lo hemos hecho, te lo voy a emitir como un reto. Y tu reto es rotar al jefe en la dirección correcta. Por lo que en primer lugar, comprobar la posición del jefe en relación con la posición del jugador. Recuerda, conseguiríamos eso a través las transformaciones en base a eso, rotar el transporte en autobús alrededor del eje y. Por lo que necesitarás voltear 180 grados. Entonces es similar a la forma en que estábamos volteando las armas, no sólo la NMI. Tendrás que agregar al revés , por supuesto, obviamente. Y luego llama a ese método antes de caminar al enemigo. Pruébalo. ¿ Hay algún problema? ¿ Por qué hay un problema? Por lo que obviamente se encontrará con un problema. No se preocupe por eso. Haz lo mejor que puedas. Encuentra la manera de voltear, y te veré en solo un poco. De acuerdo, bienvenido de nuevo. Entonces en la actualización, voy a comprobar si la transformación, la posición punto x, que es que el jefe, es mayor que la capa para perseguir esa posición, la RX. Y por cierto, esto se basa en cómo se ve inicialmente la masa. Entonces si miraba al revés, Podríamos haber querido revisar esto al revés. Entonces, de todos modos, si la posición del jefe es mayor que la posición del jugador a perseguir, obviamente en el eje x, solo. Entonces lo que vamos a hacer es aquí dentro vamos a conseguir la posición de punto de transformación. Y vamos a, discúlpame, la Transformación Girar. En tanto que rota. Y luego 0 F en el eje x y 180 en el eje y y 0 en el eje z. ¿ Y por qué es eso? Si volvemos a nuestro juego, y si conseguimos a estos Kelly jefe, si hacemos una rotación aquí mismo, allá vamos, se puede ver que gira al revés, que es exactamente lo que queremos. Entonces también vamos a asegurarnos de que lo demás si transformamos esa posición, pero esta vez es al revés. Eso significa que el jugador es lo que pasó. El jugador es el en el otro camino. Entonces vamos a asegurarnos de dar la vuelta al enemigo de nuevo. Entonces ahí vamos. Guarde eso. Entonces ahora si volvemos aquí, ¿ y cuál es el problema? Entonces tal vez hicimos un tipográfico aquí dentro. Sí, ahí vamos. Por lo que de nuevo en, ejecutamos el juego. A ver qué pasa. Y ahí vamos. Por lo que obviamente hay un pequeño problema. ¿ Cuál fue el, cuál fue el problema? Obviamente, nuestro jefe enemigo está teniendo algún tipo de incautación. ¿ Y por qué está pasando eso? Bueno, porque estamos tratando de voltear. Entonces note lo que sucede aquí en la rotación, estamos volteando y luego estamos volteando hacia atrás. Estamos tratando de voltear al enemigo, me refiero al jefe basado en la dirección de los jugadores. Pero porque lo estamos llamando cada fotograma y por la animación que nos hace caminar en cierta dirección, estamos teniendo este constante volteando todo el tiempo. Entonces lo que vamos a hacer es volver aquí, vamos a crear una variable que va comprobar si hemos volteado o no. Entonces aquí dentro, voy a crear un público. Y sólo para mantenerlo público por ahora, obviamente no seguiremos el ritmo como para siempre. Entonces si está volteado lipídico y voy a ponerlo en falso al principio. Entonces aquí vamos a comprobar si tenemos un flippant. Eso significa que se voltea es igual a falso porque esta es la dirección regular que estamos mirando. Si el jugador está del lado izquierdo, aquí mismo. Entonces si el jugador está del lado izquierdo, no queremos que nos volteen. Y aquí dentro se volteó es igual a cierto. Perdón. Por alguna razón, el tabulador no se toma lo que quiero. Visual Studio Community no me está manteniendo al día. Y luego lo vamos a sumar aquí en nuestras condiciones. Entonces si el jugador está del lado izquierdo y, y está volteado, por lo que está volteado, entonces vamos a voltearlo de nuevo al otro lado. Y aquí dentro, si no es volteado, entonces vamos a darle la vuelta atrás. Entonces espero que entiendas lo que está pasando aquí. En primer lugar, tenemos el se volteó al principio, es falso. Entonces aquí dentro, esto no funcionará sólo cuando el jugador esté del otro lado del camino y no hayamos volteado, entonces voltearemos. Pondremos esto en realidad, y esto nos permitirá no voltear de nuevo cuando obviamente no estamos necesitando que nos volteemos. Así que corre el juego. Y te darás cuenta ahora que aparece el enemigo, va tras nosotros. Obviamente la distancia necesita ser ajustada un poco. Y luego cuando vamos al otro lado, mientras que estos voltearon, ahí vamos. Se puede ver que ahí vamos. Está volteado. Está volteado. Está bien. No está volteado. Está volteado. No está volteado. Entonces ahí vamos. Ahora tenemos mantequilla, movimiento y mantequilla y una misión transiciones pueden ser un mejor manejo de distancia sería bueno. Entonces cinco creo que es mucho, tal vez 3.5 es un buen número. No quiero que el jugador o en realidad el enemigo esté golpeando jugador V. A lo mejor hasta tres es bueno. Voy a guardar eso. Agregamos un poco de transición. Tómate tu tiempo y juega con las transiciones y hazlas perfectas bidireccionales, te gustaría, con eso fuera del camino, asegurarte de comprometer tus cambios. Espero que lo disfruten y los veré en el próximo video donde estaremos montando el ataque real principalmente y empezaremos a lastimar a nuestro jugador y no solo balanceando MC. Entonces nos vemos ahí. 90. Preparación de ataque de jefe: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, en realidad vamos a estar atacando cuerpo a cuerpo. Entonces la forma en que vamos a hacer esto es que vamos a crear un método para el atacante. Y aquí vamos a crear un círculo de superposición alrededor de un punto determinado. Vamos a asegurarnos de llamar a este sistema de defensa cada vez que rompamos una espada. Entonces sin más ni hacer, permítanme mostrarles lo que hemos hecho aquí. Entonces el enemigo se levanta. Hace una vez, daña dos, tres veces, y te das cuenta de que sólo nos daña cuando realmente nos golpean en la cabeza con la espada. Entonces, no perdamos más tiempo. Y empecemos. O K. Así que ahora sigamos adelante y creemos el ataque malayo. Obviamente en este momento, el jefe apenas se balancea alrededor de lo ido, quiero decir, lo siento la espada. Lo balancea por ahí pero en realidad no hace ningún daño. Entonces vamos a hacer un daño real. Entonces voy a explicarles en primer lugar cómo hacer un ataque. Por lo que obviamente hay muchas, muchas formas de crear ataques cuerpo a cuerpo, pero esta es la forma en que vamos a estar implementándolo. Perdón por eso. Y es la forma en que aprenderemos más de ella. Entonces lo primero que haremos es crear un círculo de daños al jugador desde cierta posición. Entonces cada vez que la clasificación de jugadores esté en esta posición en la animación, crearemos un círculo aquí mismo, o un círculo superpuesto, que sabrás más adelante que comprobaremos si el jugador está dentro el radio del círculo, se dañará. Si no lo es, si se escapa a tiempo, no te dañarán. Por lo que nos aseguraremos de que usaremos algo llamado el círculo de superposición 2D de física cada vez que ataque el pulso. Entonces recuerda la física al círculo de superposición. Y sigamos adelante y creemos un par de variables para hacer justamente eso. Vamos a estar manejando este ataque aquí mismo desde el guión. Entonces sigamos adelante y empecemos. Lo primero que vamos a hacer es crear un campo serializado. Y sigamos adelante y hagamos privado este porque ya sabemos lo que hace. Por lo tanto ent cantidad de daño y va a ser igual a 20 como defecto. Entonces tendremos que crear una transformación que representará el punto de ataque. Entonces punto de ataque. ¿ Y por qué tenemos un punto de ataque? Porque si te llevo de vuelta aquí mismo, verás que tenemos cierto medio y este será el punto de ataque alrededor del cual construiremos nuestro círculo y comprobaremos el jugador que está dentro de él. Entonces vamos a obviamente simplemente desviar crear ese objeto de juego. Pero antes de que hagamos eso, obviamente también necesitará algo llamado radio, que es el radio de ataque. Por lo que no debe confundirse con el rango de ataque y. Por lo que el rango de ataque es el rango al que comenzaremos a atacar. El radio de ataque es el radio en el que el jugador se daña si se queda ahí. Y luego vamos a crear finalmente un campo serializado de tipo máscara de capa. Y se va a llamar lo que es jugador y ¿por qué lo llamamos así? Bueno, yo, desde que empecé a usar Unity, todos los foros, videos de YouTube, otros cursos, y en general la comunidad de Unity siempre causé lo que es jugador cada vez que queremos establecer algún tipo de capa. Entonces, y no sólo el jugador, a veces se llama lo que es tierra. Entonces yo, estoy acostumbrado a ello. Puedes llamarlo como quieras, pero este es el consenso general al respecto. Y antes de seguir adelante, necesitamos una manera de ver realmente ese radio. Por lo que vamos a utilizar el vacío OnDraw artilugios seleccionados. Ya hemos hecho esto. Aquí no hay nada demasiado de fantasía. Entonces artilugios color, color rojo. Y acabemos de cerrar esto. Hit Enter. Y aquí vamos a ir a los artilugios dibujar alambre, esfera. Somos esfera y va a estar al punto de la posición de punto de ataque. Y va a ser el radio de ataque como el radio. Entonces ahí vamos, La esfera andro, como se puede ver, un centro y un radio. Acabamos de darles el punto de posición de ataque, radio de ataque. Por lo que de vuelta en nuestro juego. ¿ Y necesitamos esperar algo para compilar? Sepan que fue rápido. Entonces voy a hacer clic derecho y crear un objeto de juego vacío como hijo del jefe. Y lo llamaremos el punto de ataque. Y sobre estos Kelly jefe de aquí abajo, voy a sumar el punto de ataque. ¿ Cuál es el jugador? Es el jugador y el radio de ataque. Yo sólo voy a entrar en escena para ver qué está pasando. Y ahí vamos. Obviamente, como siempre hacemos, esto depende de ustedes. ¿ Dónde quieres configurar tu animación o, lo siento, estaba pensando en la animación. ¿ Dónde quieres fijar el punto de ataque y qué tan grande quieres hacerlo? Entonces voy a desplazarme hacia abajo y ver el ataque. Entonces en el ataque, ahí vamos. Este es el punto donde vamos a atacar, así exactamente aquí. Y a partir de este punto podremos determinar cuánto queremos mover el radio. Y fíjate que debido a que los artilujos OnDraw están en el controlador del bus, eso significa que aumentamos aquí solo un poquito, solo hazlo también. Creo que dos es un número apropiado, pero voy a seguir adelante y hacerlo tres. Entonces solo con fines de prueba. Entonces voy a moverlo un poco Selly. Y luego si vemos otro ataque por aquí, así que no lo hemos hecho, Ahí vamos. Si el jugador está parado en cualquier parte dentro de este radio, se le tendrá. Entonces sin más preámbulos, vamos a guardar eso y vamos a emitirte un reto porque esta vez vas a hacer el ataque. En primer lugar, es necesario crear un método y el controlador jefe lo haga público. ¿ Por qué? Porque lo necesitamos en otro lugar. Entonces vamos a revisar el círculo de solapamientos en los perros de la unidad. Este será tu trabajo. Tendrás que ir a ver cómo funciona todo. Y hay que comprobar si el jugador está dentro del radio de ataque. Si lo está, entonces aplicaremos daños. Llame a este método usando una animación de eventos. Entonces con eso fuera del camino, recuerda, déjame solo mostrarte algo. Se llama la física al círculo de superposición. Y ahora pausa el video y sigue adelante y haz el Shalon. Oh, bien, bienvenido de nuevo. Entonces aquí voy a seguir adelante primero y crear un vacío público. Y lo voy a llamar la capa de ataque. Genial. Ahora, ¿qué vamos a hacer aquí? En primer lugar, tendremos que entender cómo funciona el círculo de superposición 2D de física. Entonces digamos que soy un desarrollador de juegos despistado. No tengo idea de cómo funciona la física al círculo de superposición. Entonces, antes que nada, acabo de facturar aquí. Entonces la declaración, una estática pública, no hay necesidad de preocuparse por la estática. Podemos hacerlo sin la estática. Me escabullo aquí. Puedo ver que es un colisionador 2D superposición círculo. Tenemos un punto, tenemos un radio, una máscara de capa, me refiero a profundidad, y una profundidad máxima. Entonces esto es para las coordenadas z cuando estamos trabajando en 3D, presumo, o tal vez algo incluye objeto O, objetos que están en la z Así que también comprueba la profundidad. No vamos a estar necesitando esto. Si nos desplazamos hacia abajo, podemos ver que en realidad también podemos obtener algún tipo de resultados aquí. Y también podemos usar las fotos de contacto que se están aprendiendo sobre los filtros de contacto en uno de los videos, obtenemos un, una matriz, pero también vamos a desplazarnos hacia abajo. De acuerdo, entonces eso es todo, eso es todo lo que necesitamos. También podemos devolver listas. Entonces esto es lo que necesitamos y esto devuelve un colisionador, colisionador 2D superpuesto al círculo comprueba si un colisionador cae dentro del área circular. El círculo redefine coordenadas, etcétera, etcétera. Y aquí dentro puedes ir más a fondo en las coordenadas z. Pero de todos modos, esto es lo que necesitamos la física, el círculo de superposición de nuevo en nuestro juego. ¿ Qué queremos hacer aquí dentro? En primer lugar, tendremos que conseguir al jugador que estamos atacando. Entonces voy a crear un colisionador 2D. Y va a ser el jugador a atacar. Y voy a decir que es igual al círculo de superposición de puntos 2D de física. Y voy a decir, ¿qué tenemos aquí dentro? Entonces, en primer lugar, tenemos el punto. ¿ Cuál es el punto? Obviamente, es el punto de ataque, esa posición. Entonces necesitamos el radio. Entonces es el radio de ataque. Y entonces necesitamos lo que es Player porque sólo queremos estar golpeando al jugador. Entonces aquí dentro vamos a comprobar si el jugador para atacar capa, capa. Entonces, vale, entonces jugador a atacar es diferente a nulo. Entonces, ¿por qué decimos que es diferente a nulo? Si miramos aquí, vamos a guardar eso. Eso es antes que nada, imprimir el jugador para atacar. Entonces guarde eso. Y vayamos y recuperemos, y sumémoslo al sistema de eventos. Entonces, ¿dónde queremos que se llame esto? Si entro en el ataque aquí dentro, balanceo la espada y así como él se balancea y vendió, voy a aplicar la función. ¿ Y qué función debemos aplicar? En esa capa. Y entonces otra vez, cuando bajemos aquí, vamos a añadir una, otra opción, lo siento, quiero decir, otro evento. Y vamos a atacar al jugador. Entonces guarde eso, ejecute el juego. Y veamos a qué nos referimos con nulo. Entonces que nos ataquen. Entonces ahí vamos, jugador de la condenación, hacemos capa. Ahí vamos. Si nos balanceamos, Ahí vamos. Podemos ver que tenemos un nulo aquí dentro cuando estábamos afuera. Entonces porque de la forma en que vamos a continuar, porque vamos a conseguir que el jugador ataque ese obtengan componente a través del manejador de salud del jugador. ¿ Y cuál era el método que ahí? Creo que fue daño al jugador y la cantidad de daño, la cantidad de daño que hemos creado aquí arriba. Entonces parece que espero que entiendas lo que no hicimos. Si no tenemos o no comprobamos que el jugador es nulo. Por lo que vamos a acceder al manejador de salud del jugador, que no existe, lo que provocará un error. Por lo que tenemos este paso extra de seguridad. Verificamos si el jugador a atacar es diferente a nulo. Si lo es, entonces atacamos o realmente dañamos. Si no lo es, eso significa que está fuera del radio. Eso significa que no lo hacemos. Kim y yo vamos a mantener esto aquí sólo con fines de prueba. Entonces, vamos a guardar todo eso. Y volvamos a nuestro juego y aquí, y vamos a correr y ver qué va a pasar. Por lo que el jugador se acerca, pelea, y como puedes ver, recibe daño cada vez. Entonces voy a hacer que el jugador de dunas max ayude un poco más grande. Máxima salud. Hagámoslo 500 para los propósitos de prueba, ejecute el juego. Qué guay es eso, que podemos cambiar la vida cada vez que queremos, porque hemos creado el juego. Por lo que ahí vamos, 202020. Ahí vamos. Se puede ver que nos atropellan. Nosotros lo conseguimos. Nos golpean cada vez. Quitamos o conseguimos que nuestras vidas se reduzcan en 20. Y podría estar pensando, bueno, ¿por qué no nos golpean en el swing hacia abajo? Bueno, déjame mostrarte. Por lo que traté de que me golpearan. Segundo. Hazte atropellado. De acuerdo, Entonces eso no funcionó bien porque somos un poco invencibles en un par de segundos. Para que veas, déjame solo tratar de hacer esto. Sé que no está funcionando. Entonces déjame ver si puedo quitar el tiempo de sensibilidad a 0. Y de esa manera no nos volveremos invencibles. Notarás que nos golpean el camino arriba y en el camino hacia abajo, en el camino hacia arriba y en el camino hacia abajo. Y como puedes ver, por eso le agregamos un poco de invencibilidad a nuestro jugador porque esto no es muy divertido tener que dañarse cada vez. Y si seguimos dañándonos, eventualmente, el jugador va a morir para sucumbir a sus heridas. Por lo que se puede ver aquí mismo tenemos un par de errores por el Enter en estado. Estamos tratando de encontrar al jugador, pero no hay capa. Ahora bien, podríamos quedarnos con esto. Obviamente no debemos quedarnos esto porque esto es un error. Esto podría causar problemas, podría provocar que no se tomen en cuenta un par de líneas. Entonces una vacua aquí es sólo comprobar si está disponible y así sucesivamente y así sucesivamente. Pero no nos preocupemos por eso. Preocupémonos por la mecánica del núcleo, los pequeños detalles por los que podemos trabajar más adelante. Entonces con eso dicho, espero que lo disfruten. Espero que estés cometiendo tus cambios cada video individual. Espero que me hayas dejado una crítica porque me ayuda mucho. ¿ Y eso se va a salir del camino? En el siguiente video, vamos a estar llevando a nuestro jefe a la segunda etapa, segunda o dos, a la etapa enojada. 91. Jefe en la segunda etapa: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, vamos a hacer enojar a nuestro jefe. Entonces como pueden ver, he creado una transición aquí. He creado un gatillo que no usamos. Y podemos pasar de caminar a enojarnos, demasiado enojarnos , caminar demasiado enojado, atacar. Entonces veamos cómo se ve eso en nuestro juego. Voy a maximizar en el juego. Voy a ir al plan de estudios y hacer, no, quiero decir, ir a la caminata enojada y hacer la velocidad cinco, guardar eso, y maximizar en juego, ejecutar el juego. Entonces ahora deberías ver que el jefe se enoja, se hace más grande, y ahora camina mucho más rápido. Y te darás cuenta de que hace mucho más daño y nos podemos escapar. Se puede ver que ahora mismo nuestra salud se ha agotado. Tratamos de dispararle. No tiene sistema de salud. Qué tipo de juego es este, y ahora llegamos a nuestra muerte muriendo. Entonces con eso fuera del camino, volvemos al menú principal. Rompemos un par de gafas, lloramos, y tratamos de salir del juego, pero no nos va a permitir. Entonces, no perdamos más tiempo y empecemos. Oh, bien, Así que ahora es el momento de llevar a nuestro jefe al siguiente nivel. Y para el siguiente nivel, obviamente me refiero a que se enoje, no se preocupe por el tiroteo. Nos ocuparemos de eso más adelante. Ya conocemos todas las mecánicas de tiro. Entonces voy a crear una transición de la caminata regular al enojarse. Y aquí dentro, voy a crear un nuevo gatillo o en realidad un gatillo. Entonces voy a llamarlo enojarse. Entonces cuando estamos caminando, nos enojamos y luego transitamos a la ira. Entonces nos hacemos más grandes, nos volvemos más rápidos y nos volvemos más fuertes, supongo. Bueno, obviamente nos volveremos más fuertes. Y luego cuando pasemos de la nos enojamos, quiero decir, cuando terminemos la transición enojada, pasaremos al enojarse. Entonces veamos eso. Nos enojamos. Terminamos la animación, respiramos un poco, y luego empezaremos a caminar de nuevo. Tan excelente, todo esto funciona perfectamente bien. Lo siguiente que vamos a hacer es crear una transición de la caminata enojada al ataque enojado y una transición de regreso. Y vamos a quitar cualquier hora de salida aquí. Y voy a hacer esta hora de salida y aquí están alrededor de los 90. ¿ Cuánto tiempo fue el anterior? Entonces aquí, 97. De acuerdo, entonces 97. Entonces cuando estamos atacando, atacamos una, una, dos, una, dos. De acuerdo, Excelente. Entonces tenemos todo configurado correctamente y vamos a usar el mismo gatillo aquí mismo para el ataque. Porque, ¿por qué no? Podemos hacer eso, guardar todo eso. Y ahora tenemos el ataque enojado. Pero obviamente cuando estamos atacando, queremos tener más daños. Queremos tener un radio enojado más grande. Entonces para eso, te voy a emitir un reto para hacer enojado ataque al jefe. Por lo que en primer lugar, crear un nuevo método que maneje el enojado ataque del jefe. Este ataque debería tener un alcance más grande y un ataque más fuerte. Por lo que necesitarás crear variables solo para eso y agregar eventos al enojado con la animación tecnológica. Entonces con eso dicho, pausa el video ahora mismo y ve a crear el nuevo ataque enojado. Hey, bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Déjame mostrarte lo que está pasando en nuestro servidor de discordia por un segundo. Esta es una persona a la que voy a ayudar y como pueden ver, me manda un poco de código. Le envié un poco de código de vuelta. Tenemos una charla, tenemos los chats todo el tiempo en el desarrollo general del juego y así sucesivamente. Esto es tan activo todo el tiempo. La gente se está ayudando entre sí. Traté de ayudar tanto como sea posible. Así que asegúrate de unirte a la Discordia. Debí hablar de esto antes, pero no se preocupe por eso. Acabemos de terminar este video para que pueda ir a ayudar a marcar. Entonces me voy a desplazar hasta aquí. Voy a crear dos nuevas variables. El primero va a ser un campo serializado en D-mayor y va a ser el enojado que el promedio alrededor. Y vamos a ponerlo como tal vez 30. Entonces 30 o 40. Por lo que duplicamos porque duplicamos el tamaño, duplicamos la cantidad de daño. Y un campo serializado para el flotador y el enojado en el radio. Y ahí vamos. lo guardamos. Adelante y quitemos esto. Y luego me voy a desplazar por aquí. Y, y por cierto, si quieres, puedes dibujar el radio de ataque aquí también. Entonces el radio de ataque enojado, no voy a hacer eso. No creo que sea necesario. Yo sólo voy a crear un nuevo método aquí para el ataque enojado. Y hay otra filosofía a esto, u otra manera en realidad suficiente, no filosofía, pero puedes llamar a filosofía si quieres sonar fantasía, como yo quiero ahora mismo, podemos, en lugar de hacer otro método, en realidad podemos cambiar el que tenemos aquí, pero creo que es más apropiado crear un nuevo método sólo por el bien de no tener ninguna confusiones. Tan enojado con la capa trasera. Y vamos a hacer exactamente lo mismo. Entonces aquí, otra cosa que podemos hacer es quizás, tal vez solo hacer esta parte de una variable general solo por no tener ningún código redundante, pero solo vamos a copiar esto, pegarlo en aquí, y vamos a quitar la huella aquí. Y aquí dentro. Esto fue solo con fines de depuración. Siempre te recomiendo usar esto todo el registro de puntos de depuración. Y en lugar de la cantidad de daño, vamos a usar la cantidad de daño enojado. Y en lugar del radio de ataque, el radio de ataque enojado, salvamos eso. Volvemos a nuestro juego. Comprobamos las animaciones sobre el jefe Selly. El ataque enojado, enojado, ataque enojado. Entonces es la primera, la pendiente y las escenas. Estamos atacando furiosamente y en el columpio. Ahí vamos. Por lo que aquí añadimos un evento. Nosotros llamamos el ataque enojado. Y ahora nos balanceamos hacia abajo en esto justo aquí. Agregamos otro evento y hacemos al jugador de ataque enojado. Entonces guarde eso. Vayamos también al disco Z donde el Syllabus. Desplácese hacia abajo radio de ataque enojado, este era tres, Eso es hacer este 16. Diga que tal vez aunque no sea muy lógico cuando tenemos el suelo, solo imagínense como si tuviéramos algún tipo de, no sé, tal vez algunos, algún campo de fuerza o algo así. No lo sé. Entonces ahora guardamos todo eso. Corremos el juego y deberíamos ver que ahora se enoja y no hace absolutamente nada porque hay algo que nos olvidamos de hacer. Si vamos con el animador, podemos ver que andar enojado no tiene ningún comportamiento. Entonces intentemos sumar así el caminar. No, no funciona en la conducta. Y solo caminaremos el jefe. Ahí vamos. Entonces ahora tenemos un rango de ataque y hagámoslo un poco más grande. Entonces tal vez cuatro, porque e es más grande y la velocidad se convierte en cuatro, digamos eso, correr el juego. Y ahora deberíamos ver que se enoja y ahora es más rápido. Entonces como puedes ver, ahí vamos. Esto es ataque. Es mucho más rápido en tratos, mucho más daño y él es un poco más rápido. A lo mejor lo haremos aún más rápido agregando un 50. Oh no, no, no, no, baja baja. Tú. Ahí vamos. Entonces como puedes ver, cuando el jefe está enojado, está realmente enojado obviamente. Pero hay un problema. Habría notado que no era muy difícil no darse cuenta es que de inmediato vamos al filete angular y esto no es algo que queremos, pero esto es algo que vamos a tener más control de una vez tengamos un sistema de salud para nuestro jefe, que es algo que haremos en el próximo video. Así que asegúrate de comprometer tus cambios y te veré en el siguiente. 92. Agregar el sistema de salud del jefe: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, vamos a estar haciendo la capa, quiero decir que el jefe recibe daños. Entonces cuando ejecutamos el juego que se pone en Selly desplácese hacia abajo. Se puede ver en este momento que tiene un máximo jefe de salud y un bus de salud actual. Entonces debería él una vez te darás cuenta de que se convierte en cuatro. ¿ Por qué se convierte en cuatro? Es decir, ¿por qué se enoja? Porque a mitad de su ayuda, vamos a hacerle enojar. Entonces cuando su salud como a medio camino se enoja. Volvemos a dispararle. Deberíamos inferir la última vez. Como se puede ver, muere y desaparece y el final. Entonces, no perdamos más tiempo y Empecemos. Ah, caso. Por lo que es hora de agregar una salud BRAF a nuestro jefe. Entonces sigamos adelante y empecemos. Lo primero que vamos a hacer es pasar de andar enojado a morir. Y vamos a seguir adelante y crear un gatillo aquí llamado un die, y establecer aquí las condiciones para morir. Y entonces vamos a desplazarnos hacia abajo. Y aquí en donde estamos caminando para enojarnos, vamos a agregar una condición y ponerla como el caso de gatillo de ponerse enojado 0. Entonces con eso fuera del camino, creo que eso es todo lo que teníamos armar antes de empezar. Por lo que voy a entrar en la carpeta de script boss y hacer clic derecho y crear un nuevo script de C Sharp llamado el jefe de salud. Hit Enter, espere a que se compile. Y lo arrastraremos a estas jefas de Kelly. ¿ Por qué lo estamos haciendo aquí? Bueno, porque morir es o el jefe encargado de la salud o toda la salud es parte de todo el jefe. No se especifica a un solo estado, al igual que dijimos, es para todo el jefe y va a ser bastante sencillo. En primer lugar, aquí dentro, voy a crear un campo serializado, que va a ser un entero y el jefe, max health, y va a ser igual a 500. Y entonces vamos a crear una salud de corriente pública. Y obviamente vamos a cambiar eso más adelante. Entonces jefe, salud actual, guarde eso. Y luego, y empezar. Sólo vamos a decir que los jefes salud actual es igual a los jefes max salud. ¿ Correcto? Por lo que ahora necesitamos crear un método que nos permita dar daño a nuestro jefe. Entonces para eso, te lo voy a mostrar como un reto porque ya lo hemos hecho. Así que haz que el jefe sufra daños. En primer lugar, es necesario crear la variable calidad máxima salud y la salud actual. Obviamente, no me preparé adecuadamente porque pensé que deberías haber hecho esto por tu cuenta. Pero ahí lo tienes. Un paso extra de mí tampoco para ti. Continuemos y empecemos en el actual movimiento extra inteligente de salud por mí, luego creemos un método que permita al jefe recibir daño basado en un parámetro. Por último, algo nuevo para que hagas. Cuando la salud es la mitad de la salud máxima, necesitamos pasar a la animación moribunda. Oops, digo morir. Me refería a decir, esperar la magia de la edición. Oye, tú Bienvenido de nuevo. Por lo tanto, crea un método que permita al jefe recibir daños cuando la salud es tener la transición máxima de salud hacia la animación enojada. Entonces ya sabes qué hacer cuando el corazón está en 0, transición a la animación moribunda y finalmente destruirlos ambos usando un sistema de eventos. Entonces con toda esa información, pausa el video ahora mismo. No cometas ningún error como yo. Y seguir adelante y hacer el reto. De acuerdo, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Entonces aquí voy a crear un vacío público. El daño fue un entero, la cantidad de daño. Todo esto es bastante básico. Creo que ya sabes hacer todo. Entonces aquí voy a decir, voy a decir que los jefes salud actual es menos igual a la cantidad de daño. Entonces voy a decir si los jefes la salud actual como menor o igual a, menor o igual a la máxima salud jefe, bus, max salud dividida por dos. Entonces esto significa que estamos a mitad de camino en su salud. Entonces vamos a conseguir componente, el animador. Y puede hablar. Gracias. Y vamos a poner el gatillo. Y nos vamos a enojar. Entonces vamos a entrar a nuestro animador y vamos a copiar el enojarse de nuevo aquí. Pega aquí mismo. Ahí vamos. Entonces ahora nos enojamos. Y entonces vamos a seguir adelante y decir, si el jefe de salud actual es menor o igual a 0, entonces vamos a seguir adelante y hacer lo mismo aquí dentro, pero en lugar de enojarnos, vamos a morir. Excelente. Tan dy, así que ahora vamos a crear un método para morir. Entonces aquí voy a decir vacío, destruir, destruir al jefe. Y simplemente vamos a seguir adelante y destruir el objeto del juego. ¿ Y dónde deberíamos estar llamando a esto? Hagamos público este, por si acaso para poder acceder a él desde el sistema de eventos. tanto que el sistema de eventos, si hago clic en estos, Kelly, vamos a las animaciones, morimos. ¿ Qué tenemos aquí dentro? A ver, en las escenas, ahí vamos. Entonces nosotros, tenemos este charco de ABA, nada de sangre ósea ni algo así. Y deberíamos hacer este un poco rojo obviamente. Y tal vez en este punto, sólo guárdelo un par de segundos. Y luego vamos a añadir un sistema de eventos. O quizá sepamos qué. Vamos a moverlo al segundo dos. Y aquí dentro, destruimos al jefe. Entonces en la animación, morimos y luego destruimos al jefe. Excelente, guarde todo eso. A ver, ¿qué más tenemos? Ah, así que obviamente necesitamos también desencadenar que tome daño. ¿ Dónde llamamos al viaje tomar daños? Bueno, si entramos en la capa, tenemos bala. Si abro esto y encuentro al jugador, entonces digo Jugador salud bala. Me refería al jugador controlador de bala. Aquí dentro. Nosotros vamos a comprobar si tenemos al enemigo, entonces vamos a dañar al enemigo. A ver, ¿tenemos una capa para el jefe? No tenemos abogado para el jefe, así que sigamos adelante y editamos las capas. Crea una capa de jefe, o puedes crear una etiqueta de jefe. Eso también es algo que podemos hacer. O tal vez sí tenemos una nota de etiqueta de jefe no tenemos la oscuridad de Abel, así que sigamos adelante y editamos. Crear unas etiquetas. Jefe DAG. Ahí vamos. Entonces ahora si entramos aquí, entonces ahora, ahora este es el ejemplo perfecto para que entiendas la diferencia entre una etiqueta y una capa. Entonces recuerda dónde. De acuerdo, Así que ni siquiera recuerdo tal vez en los picos de aquí, te dije que podemos evitar usar el comparador de etiquetas. Podemos decir de inmediato que los picos son algún tipo de capa de daño, por lo que están en el Do tenemos nada, las pastillas o cualquier cosa, por ejemplo, las copias de seguridad. Por lo que podemos evitar usar la etiqueta a para compararla con el jugador, por ejemplo, para asegurarnos de que solo la capa lo lleve. Por lo que sólo el jugador puede interactuar con las pastillas a través de capas. No necesitamos comprobar si hay una etiqueta comparada en el empresario. Entrar. Recuerda que hablé de esto, pero ahora en el un controlador de bala, podemos decir que la bala solo interactúa con el jefe, pero eso no es suficiente porque queremos también revisar otra cosa. Si hay una etiqueta collision.com con un jefe, entonces necesitamos llamar a un componente totalmente diferente o totalmente diferente sí, componente. Entonces de vuelta aquí, vamos a ver, está el programa de estudios. Ah, no creamos la capa de clasificación de etiquetas. No, no. ¿Por qué tenemos que clasificar capas para el jefe? El tag es tan jefe. Copiar eso. Entonces ahora no lo sentimos, necesitamos poner la etiqueta de jefe. Ahí vamos. Eso lo guardamos. Ahora de vuelta en nuestro juego, comprobamos por el jefe. Y si es el jefe, entonces vamos a seguir adelante y conseguir la colisión que consigue componente, el jefe de salud manejador. Y desde aquí vamos a recibir daños y va a ser la velocidad de bala. No, la cantidad de daños. Por lo que cantidad de daño, guarde eso. Ahora tenemos todo preparado, así que estoy muy contenta de que esto surgiera. Esta es una forma de demostrarte. Podríamos haber dicho que el tenemos una capa de bala, una capa de bala de jugador, y sólo interactúa con el jefe y el enemigo. Pero si golpeamos a un enemigo, el jefe no es cualquier enemigo. También es jefe de manejo de salud. Entonces tendremos que acceder a la salud y al jefe. Si tratamos de usar este, no va a funcionar. causará un error tan bien que aunque la forma guarde eso, también puedes seguir adelante y copiar estas dos líneas y podemos ponerlas aquí. Por lo que obviamente este es código redundante. Entonces lo que podemos hacer es hacer clic derecho y aquí acciones rápidas y refactorización y podemos decir crear efecto de sangre, extraer el método, llamarlo instanciar efecto sanguíneo. Y escribo instanciate correctamente es Dan Shi Da. Sí, ahí vamos. Aplica los cambios y aquí dentro vamos a instanciar el efecto sanguíneo. Guarda eso. Por lo que ahora de vuelta, nuestro juego no debería estar funcionando a la perfección. Entonces si hago clic en este calibre, desplácese hacia abajo y el jefe Mac Sur, Hagámoslo 20. Uh, no, no, 20, tal vez 40, sólo para que podamos ver las transiciones correctamente. Corremos el juego. Entonces ahora viene el jefe. Le disparamos una vez, y no quiero maximizar en el juego de nuevo. ¿ Quién debería el jefe? ¿Dónde Z? Entonces deberíamos el jefe. Desplazémonos hacia abajo. Cuál es su salud actual sabia salud, los libros. Entonces una bala tan nueva. Y bien, entonces este error no es nada también porque el cristal tiene algún tipo de daño. De acuerdo, entonces voy a hacer este cuatro en lugar de 40. Saber qué, Hagámoslo ocho. Ejecuta el juego. El sistema es muy pobre, así que deberíamos de inmediato, ahí vamos, nos desplazamos hacia abajo, es a las seis. Deberíamos, uh, dos veces. Ahí vamos. Podemos ver que se enoja y ahora empieza a correr mucho más rápido. Entonces le volvemos a disparar. Deberíamos de él por última vez. Y ahí vamos. Se mete en la botella y muere. Pero hay algo un poco mal pero yo no lo hice, como quizá no lo hubieras visto porque yo no lo hice. Pero cuando le disparamos una vez, le disparamos dos veces, se está enojando. Todavía puedo dispararle. Y ahí tienes. Se puede ver que aún le disparan y muere inmediatamente después de transiciones a la caminata. Entonces en el siguiente video, vamos a asegurarnos de que sea invencible mientras se enoja. Y sólo por el bien de recordar, voy a añadir un comentario aquí y hacer, ya sabes qué, vamos de inmediato a la derecha. Si se enoja, esto no debería funcionar. Y esto es sólo una demostración de cómo a veces podrías querer agregar algo en el futuro, solo para que no lo olvides. Añade un comentario, asegúrate de que funcione. Espero que haya disfrutado. Este fue un video realmente bonito que pensó como la lección importante de la diferencia entre etiquetas y capas, porque a veces es difícil de explicar, pero este era el lugar perfecto para aprenderlo. Por lo que espero que lo disfruten. Espero que estés cometiendo tus cambios y te veré en el próximo. 93. Agregar barra de salud de salud de tu jefe: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, como puedes ver, hemos agregado un poco de imagen, hemos agregado un poco de texto, y hemos agregado una gran barra de salud para representar la salud de nuestro jefe. Entonces ahora cuando ejecutamos el juego, cuando aparece el jefe, le disparamos. Se puede ver que su vida se agota. Cuando le volvemos a disparar, está enojado. Y si le disparamos mientras está enojado, notarás que no puede soportar ningún daño. Y este es un mecánico de cada jefe y cada juego. Entonces le vuelvo a disparar, le mostré de nuevo, el Bot de Salud desaparece, el jefe muere. Y no perdamos más tiempo con un video muy largo, pero déjame, es importante, y esto es lo que pasa cuando estamos creando tus ojos. Entonces, empecemos. De acuerdo, entonces ahora tenemos todo funcionando como bien. Estamos en condiciones de dañar al jefe. Estamos en condiciones de matarlo, somos capaces de sacarlo, pero no tenemos ninguna pista de dónde está sumando su salud. Entonces lo que vamos a hacer es que vamos a crear un ayudante para el jefe. Entonces voy a subir aquí. Y en este video en realidad, creo que hay algo que puedes elegir por ti mismo. Por lo que hay dos tipos de barras de salud que puedes agregar al jefe. Uno de ellos será, por ejemplo, si quieres que la Barra de Salud siempre se mueva con el jefe. Pero personalmente creo que esa no es la mejor idea porque querrías que tus enemigos regulares tengan esa barra de salud encima de sus cabezas. Entonces tal vez tener un bar de salud jefe es mejor ser como Dark Souls, ya sea estar en la parte inferior o en la parte superior. Y porque ya tenemos la salud y el dinero y las armas en la parte inferior para exhibir para el jugador. Entonces lo voy a crear aquí arriba en la parte superior. Entonces voy a abrir el lienzo de UI. Voy a abrir la salud, voy a conseguir el deslizador de salud. Y el, sabemos qué recortes no usaron los efectos para la salud para el jefe. Yo lo voy a duplicar. Y lo voy a mover afuera. Y necesitaré abrir los prefabs y necesitaré mover el, ¿dónde está? Salud, slider y afuera justo aquí. Guarda eso de nuevo en nuestro juego. Ahora tenemos un deslizador de salud 1, que también es un yo por accidente. Quitar el real tienen slider sí. Abrir breve para arriba. Perdón por eso. Debería haber movido el otro deslizador de salud. Entonces ahí vamos. Este está aquí. Y luego voy a duplicar este. Y voy a mover este fuera de la lona. Y el que tenemos mayor que aquí, simplemente podemos eliminar. Entonces, ¿dónde está el deslizador de salud? Ahí vamos. Este es el que necesitamos. A ver, mueve esto hacia arriba. Este será el jefe. Tener slider. Ahí vamos. Y solo voy a seguir adelante y tal vez crear un objeto de juego vacío justo aquí, ponerlo afuera. Entonces el jefe diapositiva, conozco este juego objeto al campus. Falsa salud. Y luego agregar el jefe tiene deslizador bajo la salud jefe. Entonces esto es muy molesto cada vez que tienes un prefab por nuevo quieres cambiarlo, es extremadamente molesto. Entonces aunque mueva este, todavía necesito cambiarlo aquí mismo. Por lo que la salud de Estados Unidos, deslizador y luego el lienzo de la interfaz de usuario y el objeto de juego vacío, que es la salud jefe. En tanto que el jefe tiene. Y movamos el deslizador al jefe Salud. Y pongamos la posición para que esté en 0, 0. Y ahí vamos. Entonces ahora tenemos el deslizador jefe. Estamos trabajando en el prefabricado. Entonces aquí también quiero hacer esto un poco más grande. Entonces si acerco zoom y veamos qué tenemos aquí dentro. Haz esto más grande en el costado. Hacer esto más grande en el sitio. También. Muévete un poco hacia arriba. Y yo sólo voy a seguir adelante. Y si quieres, puedes seguir adelante y hacerlo tú mismo. Llenar todo. Veamos todos los pequeños ajustes. Esto va a tomar un poco de bien cada vez que estés, creo que lo eres. Es por ello que los videos donde te tenemos son más largos de lo habitual. Entonces ahí vamos. Creo que esto es lo suficientemente bueno. Sí, me parece bien. Y por último, quiero añadir un poco de imagen. Entonces voy a entrar en la imagen de la interfaz de usuario. Y esta imagen tendrá la imagen del jefe. Y también podemos añadir aquí el nombre del jefe. Por lo que voy a añadir una sonda de malla de texto. Y esta será Kelly. Hacerlo audaz, hazlo en el medio. Que sea audaz, que sea un robótico. Y vamos a No, no, no. Y quizá lo movamos. Tú ya sea por debajo o por encima. No importa. Elige tu propia forma de crear esto. Haré que sea auto size. Y ahí vamos. Entonces Kelly, allá vamos, Selly y aquí la imagen representará al jefe. Entonces voy a encontrar en los sprites, la z, mientras que estas barras de caramelo, ahí vamos. Por lo que la imagen, Skelly y nativo conjunto a tamaño nativo. Preservemos la relación de aspecto. Y hagamos que se vea mucho, mucho más pequeño. Y tal vez ponerlo aquí y saber qué, tal vez esta no sea la mejor manera de hacerlo. A lo mejor puedes quedarte con la cabeza para que sepas qué, déjame solo borrar esto o esperar un segundo y voy a editar esta foto. De acuerdo, bienvenido de nuevo. Entonces todo lo que hice fue solo editar esta foto y probablemente la tengas en tus recursos. Entonces lo voy a agregar aquí. Y la imagen de los autobuses será el esqueleto que tenía. Entonces ahí vamos. Ahora tenemos esto. Sé que esto no es mucho, realmente no hace que el juego sea mucho mejor, pero solo agrega un poco de finanzas. que sepas que esta barra de salud pertenece al jefe de Selly y tienes una pequeña imagen de su cabeza. Entonces ahora tenemos una buena representación. Entonces ahora si vuelvo de la prefab y por alguna razón no está en su lugar. Tenemos el jefe de salud. Sólo eliminemos esto. Mantén esta salud tanto. Y por alguna razón no estaba en su lugar. Voy a ir Slider y fijar la posición 0, 0. Y ahora lo tenemos apropiadamente. Y ajustemos un poco la posición. Y ahí vamos. Ahora tenemos los dos. Salud Selly. Vamos a moverlo un poco a la izquierda. Y creo que está bastante bien ahora mismo. Entonces esta es la ayuda que podemos ver en el jefe si quieres. También podemos cambiar la imagen del relleno. Entonces no quiero que sea rojo. A lo mejor quiero que lo tenga en los sprites. A ver. Tienes tu ojo. Tú eres tú, eres yo elementos. Estaba presionando a la UE, pero eso no lo conseguí. De acuerdo, entonces voy a entrar en los elementos de la interfaz de usuario y conseguir el azul. Entonces usaremos el azul. Imagen. El azul, no, no, no, no, éste no. Área de llenado. El relleno el deslizador azul. Está bien. Entonces ahora tenemos el deslizador azul moviéndose hacia arriba y hacia abajo. Y como ya he dicho, toda esta sección o todo este video, necesitas hacer tu propia investigación. Necesitas crear tu propia interfaz de usuario, y necesitas hacer las cosas de la manera que te gustaría que fueran. Ah, está bien. Entonces creo que esto es lo suficientemente bueno. No estoy seguro si es lo suficientemente bueno. Y hay un poco de los bordes no son muy suaves, pero no se preocupe por eso siempre y cuando represente las cosas adecuadamente. Entonces ahora tenemos la salud. Lo siguiente que tenemos que hacer es tener control sobre. Entonces voy a entrar en la salud de los jefes, voy a entrar en el guión. Y en la UI o nano en realidad en el jefe. Ahí vamos. Haga clic derecho en crear guión C-sharp, y esta será la barra de salud jefe en Enter. Espere a que se compile. Y cualquier día ahora tenemos al jefe indefenso agregarlo al jefe de salud aquí dentro que se ha abierto el jefe Health Bar. ¿ Y qué necesitamos tener aquí dentro? Bueno, obviamente queremos una referencia al deslizador. Por lo que serializado slider de campo, necesitamos tener un motor de interfaz de usuario, Unity engine dot u i Así que ahora podemos tener el control deslizante, luego tenemos el control deslizante de salud jefe establecido luego aquí. Entonces lo primero que hacemos en cuanto empecemos ya que necesitamos establecer el valor máximo, obviamente. Por lo que el jefe tiene slider dot max valor es igual para encontrar objetos de tipo. Y va a ser el jefe de la salud. Y desde el jefe del manejador de salud, necesitamos conseguir la máxima salud. Entonces vamos a entrar al jefe de salud. Y aquí crear un pequeño método el cual va a ser un int público. Obtén la máxima salud, o obtén la salud máxima del jefe. Abre los paréntesis, regresa Max, tiene. Vamos a guardar eso. De vuelta aquí. Consigue jefe, max, salud. lo guardamos. Ahora nos vamos a deslizar en la Actualización, conseguirla diapositiva porque estamos usando un slider o con qué frecuencia esperando en un slider. Por lo que una actualización vamos a todo el tiempo conseguir la pérdida de hub tener valor de punto deslizante y va a ser igual encontrar objetos de tipo, manejador de salud, jefe, manejador de salud. Y vamos a conseguir la corriente. Entonces voy a duplicar este. Consigue jefe, salud actual, salud actual, guarde eso. Entonces esto es solo un método de retorno de entero. Nada demasiado complicado. Así que consigue jefe salud actual todo el tiempo. Y ahora sigamos adelante y asignemos el deslizador. Entonces abre esto. El deslizador y el trabajo es el deslizador. Este son los deslizadores guardar todo eso. Hagamos esto un poco más grande, corre el juego. Por lo que ahora deberíamos ver el deslizador de salud mover a los enemigos ambos para que le dispares. Ahí vamos. Entonces como puedes ver, su salud se vuelve más pequeña y él se enoja justo por el punto medio de nuestro juego. Por último, cuando les disparamos por última vez, muere. Pero aún tenemos esta corteza de salud. Y no sólo eso, tenemos este pequeño error apareciendo aquí, bueno en realidad no un pequeño error, un error constante. Entonces voy a derrumbarlo. Haga doble clic aquí y vea cuál es el problema. Encuentra objetos de tipo. Entonces esta es una referencia nula. Referencia nula significa que estamos tratando de conseguir una referencia a algo que no existe o el retorno no lo es. Entonces aquí tenemos al jefe de salud. Y obviamente cuando morimos, destruimos al jefe. Y cuando destruimos al jefe, el jefe del manejador de salud se dirige a William. Entonces necesitamos encontrar una solución a eso, y ese va a ser tu reto. Tu reto es quitar la Barra de Salud y hacer invencible al jefe. A lo mejor tu reto no es arreglar el error. De todos modos, veamos qué tenemos aquí dentro. En primer lugar, cuando el jefe muera, asegúrese de que se quite la barra de salud y detenga el error. Tendrás que quitar obviamente la Barra de Salud y quitar la imagen y la imagen. Por lo que ya no tenemos que llamar a eso cada vez. Entonces tendrás que asegurarte de que cuando el autobús vaya al estado enojado, queremos hacerlo invencible. Entonces cuando se está enojando, no queremos poder dispararle. Esto es ante todo, no justo para el jefe porque no puede atacarnos ni moverse cuando se está enojando. En segundo lugar, porque en cada partido cuando un jefe transita a la segunda fase, no se puede golpear. Esto es algo estándar y todos los juegos. Entonces les voy a dar un indicio de cómo hacer la última parte. Tendrás que agregar comportamiento al estado de ira get. Y como les dije, necesitamos solucionar el problema del error. Si bien obviamente cuando realmente desactivamos la media ladra a ya no llamadas para los jugadores sostuvieron el manejador de salud jefes, por lo que ya no tenemos la flecha. Entonces con esa información, pausa el video ahora mismo y ve a hacer el reto. Entonces, está bien, bienvenido de nuevo. Entonces lo primero que vamos a hacer es que vamos a entrar en la actualización y aquí. Y vamos a comprobar si el valor del punto del slider de salud del jefe es menor o igual a 0, eso significa que vamos a destruir todo el objeto del juego. Ahora nosotros, no tenemos que destruir el objeto del juego. Tal vez podamos establecer el objeto del juego en activo, falso, o ponerlo en inactivo. Pero sólo lo voy a destruir sólo que nos aseguremos de que ya no tengamos nada. Entonces guarde eso. Y luego vamos a entrar al jefe de salud. Y aquí dentro vamos a crear una variable. Y esa variable va a ser un bool público y está en invencible. Y se va a poner en falso al principio o ¿sabes qué? No lo hagamos público. Hagámoslo un privado. Y vamos a crear un método aquí dentro que va a ser público, int o no, En realidad, lo siento, vacío. Conjunto. El jefe. Incluso sutil. Y va a tomar un parámetro que es un booleano. Y va a ser es Selly o normal no que sea jefe en un símbolo dado. Y entonces aquí dentro vamos a decir que es invencible es igual a, es jefe invencible. Guarda eso. Y aquí dentro, antes de recibir daños, como pueden ver, tenemos el comentario si nos enojamos, esto no debería funcionar. Entonces vamos a decir, si es invencible, entonces vamos a ayudar, entonces simplemente vamos a regresar. Por lo que significa regresar. Cuando sí regresamos, igual que tenemos los valores de retorno y aquí una vez que lleguemos al retorno, todo este método se detiene. Entonces cualquier cosa bajo esta línea de código. Entonces aquí, cualquier cosa que escribamos no se registrará después de la devolución. Y esto es exactamente lo que hacemos aquí dentro. Entonces cuando cobramos daños aquí, comprobamos si es invencible. Abrimos éste. Perdón. Entramos a la condición, ejecutamos el retorno y ninguna de estas líneas se ejecuta. Entonces básicamente regresamos un valor, y como esto es un vacío, podemos devolver cualquier cosa. Si fuera un entero, no un vacío, podríamos simplemente devolver 0. Entonces voy a quitar esto. Voy a salvar todo esto. Y ahora ¿cómo vamos a estar fijando el es invencible? Voy a volver aquí. Tenía éste corriendo. Y vamos a salir esto. En primer lugar, el Colegio de Abogados de Salud. Entonces Shruti, debería el Shruti. Seguramente, ahí vamos. Y cuando termine esta animación, morirá. Y se puede ver que ya no tenemos barra de salud y ya no tenemos ningún error. Excelente. Ahora lo siguiente que hay que hacer es entrar al animador y al estado de enojamiento. ¿ Y por qué esto no se hace más pequeño? De acuerdo, entonces al final, enojarse, vamos a añadir un comportamiento. Vamos a llamarlo el jefe, subrayado, enojarnos. Nuevo guión, crear un anuncio. Y obviamente se va a crear en los activos de aquí, el jefe se enoja. Voy a moverlo a la carpeta de guiones Boss para archivo o como quieras llamarlo. Así fue, ahí vamos. Entonces ambos se enojan. Abre éste. Como podemos ver, los dos últimos no vamos a necesitar. Y estos serán KU de control. Tecla de control, puedes controlar KU. Entonces aquí, ¿qué deberíamos estar haciendo? ¿ Dónde debemos estar asegurándonos de que el jefe sea invencible o configurándolo? Bueno, creo que antes que nada deberíamos ponerlo en realidad cuando entremos en el estado. Entonces voy a acceder al componente animador. Por lo que ahora tenemos acceso al jefe de salud. Y aquí dentro vamos a hacer realidad la invencibilidad del jefe. Y luego cuando salgamos, voy a duplicar esta línea y bajarla. Y cuando salgamos del estado, entonces de nuevo nos pueden golpear. Entonces como puedes ver, aquí mismo, hemos creado el set boss invencible. Tenemos un parámetro que necesitamos para enviarlo. Se accede a ella utilizando el componente del manejador de salud jefe, que también está presente con el animador. Por lo que tenemos ambos componentes en el mismo objeto de juego. Es por eso que podemos acceder al animador, conseguir un componente que es el medio Handler dijo la invencibilidad del jefe a cierto. Y aquí dentro, cuando dijimos es invencible a lo que sea el jefe, invencible cualquiera que sea el parámetro. Si es cierto, entonces regresa. Si es falso, entonces no regresamos. El jefe recibe daños. lo guardamos. Volvemos a nuestro juego. Quienes fueron. Entonces aquí arriba, ejecutamos el juego. Deberíamos el autobús una vez, dos veces. Y se puede ver aquí mismo que mientras está enojado, no se daña. Entonces le he disparado de tres a cuatro veces. No se daña. Por último, le disparo, muere. Y ahí vamos. No tendríamos errores a excepción de éste que es yo creo algo que no es de nuestra preocupación, algo sobre el panel. Tenemos esta hora OK. Entonces vamos a salir, vamos a asegurarnos de poner en escena todos nuestros archivos y ahora creamos una barra de salud. Entonces espero que hayan disfrutado, discúlpame por el largo video, pero esto es lo que pasa cuando estamos creando UI. Todo esto se basa en tu preferencia, cómo quieres que se vea tu juego. Y te veré en el siguiente video. Y creo el video final donde vamos a hacer que el jefe realmente dispare después de una cierta cantidad de tiempo. Entonces nos vemos. 94. Añadir capacidad para tomar: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Sé que a estas alturas probablemente estás diciendo Michael, cada video que dices que este es el video más largo, pero este será el video más largo. Espero que estés emocionado por eso o no. No lo sé, pero este video requerirá mucho retoque. Yo sí cometí un par de errores y luego los arreglé en el lugar frente a ti. Para que siempre sepas que soy transparente tanto como puedo, así que ya no te voy a perder el tiempo. Vamos a empezar. De acuerdo, entonces ahora tenemos un bar de salud. Tenemos salud, tenemos principalmente atacando, tenemos caminar, tenemos máquina estatal, tenemos todo para nuestro jefe, pero también necesitamos agregar un poco de enojado y soporte o tiro. Entonces sigamos adelante y hagamos eso. Lo primero que tenemos que hacer es que realmente necesitamos crear puntos a partir de los cuales estará rodando nuestro jefe. Y voy a acercarme al jefe. Y la forma en que va a funcionar el tiroteo es que vamos a tener ocho puntos alrededor del jefe. Cuatro será el rodaje regular, y ocho serán para el enojado tiroteo. Cuando se enoja, dispara más. Eso es lógico. Adelante y hagamos eso. Haga clic con el botón derecho aquí, cree unos puntos de tiro vacíos. Y aquí dentro voy a crear el primero, que va a ser 0.1. Y sigamos adelante y lo movamos aquí arriba o justo aquí a su derecha. Duplica este. Y obviamente esto no será muy conveniente. Entonces voy a llamar a esto. Entonces 0.1.2, se lo voy a poner en la cabeza. 0.3, muévala aquí. Y 0.4, muévelo aquí mismo. Ahora cuando estaremos creando nuestro tiroteo o la bala de musgos, se moverá en dirección a las balas, ¿verdad? Entonces tendremos que rotar todos estos y más adelante, pero por ahora, solo duplicemos los cuatro. Ponlo aquí. A lo mejor alrededor de este punto casi. Y luego otra vez aquí, 678. Entonces ahí vamos. Ahora tenemos ocho puntos en torno a nuestro jefe. Ahora, lo siguiente que tenemos que hacer como necesitamos seguir adelante y crear las conexiones aquí dentro. Entonces desde la caminata, una transición al tiroteo, y cualquier transición del tiroteo al caminar. Y vamos a añadir un gatillo aquí, que va a ser el rodaje. Y luego aquí arriba vamos a hacer lo mismo. Entonces hacer la transición, puede la transición. No tengamos tiempo de salida. Y sí, mantener la duración de la transición como lo ha hecho. No se preocupe por eso. Eso está aquí también no tienen tiempo de salida, duración de transición, la hora. Por lo que nos olvidamos de añadir también un padecimiento aquí. Por lo que la condición es que deben desencadenar. Y aquí la condición como el oh, gatillo de disparo. Y después volviendo, creo que no necesitamos tener un tiempo de salida. Y aquí también, creo que no vamos a tener un tiempo de salida, pero vamos a querer tocar toda la animación para luego volver. O tal vez veamos, veremos qué sucede a medida que creamos la ganancia, qué vamos a necesitar. Ahora, el siguiente paso obvio es crear la bala de los autobuses. Entonces voy a hacer clic con el botón derecho dentro de la carpeta Boss. Y aquí dentro voy a crear al jefe. Bala. Golpearon balas Enter. Espere a que se compile el script. Y vamos a hacer doble clic y abrirla. ¿ Y qué vamos a hacer aquí dentro mientras vamos a estar haciendo lo obvio? Entonces lo primero, obviamente vamos a ser un flotador para la velocidad. Y entonces vamos a tener un vector privado 2 o vector 3 en realidad para la dirección de bala. Entonces tendremos 14 al daño talámico. Esto debería ser un entero. Está bien, genial. Ahora en el inicio vamos a establecer la dirección de la bala y va a ser dirección de sangre igual a punto de transformación, ¿verdad? Entonces correcto significa que si miramos aquí, el eje rojo en la transformación, si subimos. Entonces tal vez lo hice demasiado rápido. Por lo que el eje rojo de la transformada y el espacio mundial. Por lo que de vuelta en la escena. Y note que éste, este es el eje rojo. Por ejemplo, el a la bala volará hacia la derecha. Entonces lo que tendremos que hacer como necesitamos rotarlo así, creo. Entonces. Ahí vamos. Podemos ver que lo tenemos lo pondrá en 90 grados. Entonces el tercero a un 180 grados dijo el punto en la parte inferior a tal vez 90 grados? No, no, no 90 grados menos 90 grados. Y tenemos este punto aquí mismo. ¿Qué debemos ponerlo? A ver. Entonces si no eres buen camino, éste es perfecto. Ahí vamos. Entonces 45, creo. Sí, 45 es bueno para los seis. Eso debería ser menos 45. Ahí vamos. Vamos a cambiarlo. Pero para que puedas jugar, puedes hacer lo que quieras, y como quieras. Si lo desea, puede establecer todas las posiciones de tiro para que estén en una dirección. A lo mejor así alrededor de esa manera. Sí, seguro. ¿ Por qué no? Entonces ahí vamos. Por lo que debe ser un 135. ¿ Y por qué es 135? Bueno, porque he sumado 90 grados y después he sumado un 45. Esto es cien, diez cientos sigue. Ahora tenemos un ángulo perfecto y éste sería 135. Sí, Ahí vamos. Entonces ahora tenemos muy buenos puntos de utillaje de nuestro jefe. Entonces vamos a ahorrar eso. Vamos a hacer esto más pequeño. Y ahora vamos a volver a nuestro guión y ver qué más tenemos que hacer aquí, una actualización. Voy a seguir adelante y conseguir la posición de punto de transformación y plus iguala la dirección de bala veces la velocidad. Y obviamente tiempo.Deltatime. Ahí vamos. Entonces time.Deltatime se asegura que a pesar de que a esto se le llama cada fotograma, lo estamos separando usando el tiempo.Deltatime. Lo siguiente que vamos a hacer, vamos a comprobar si no tenemos al jefe en nuestra jerarquía. Entonces si el jefe controlador punto instancia para tener una instancia, no tenemos una instancia, así que vamos a seguir adelante y encontrar la mayoría objeto de tipo. O tal vez deberíamos crear una instancia. Creo que es mejor, o podemos conseguir una referencia al jefe, lo cual también es una buena idea. Pero ¿sabes qué? Sólo encontremos al jefe y al mundo. Tan bien. Objeto de tipo, jefe controlador. Y si es activo y objeto de juego y está activo, activo en la jerarquía. Entonces si no está activo en la jerarquía, entonces queremos destruir todas las balas que ya están volando. Destruye objetos de juego. Por lo que el bolo se destruye una vez que el jefe muere, no queremos que las balas mantengan cliente. O si quieres, podemos mantener las balas volando en el mundo. Depende de tus preferencias. Ahora lo siguiente que queremos hacer es que queremos manejar la forma en que las balas interactuarán con el mundo. Y obviamente aún no hemos creado las balas. Pero estoy bastante seguro de que a estas alturas ya sabes y tienes todo el conocimiento. Entonces voy a crear un emprendedor entrar al, y dentro de este Centro Emprendedor. Voy a, bueno, quería decir que quería revisar la etiqueta de jugador, pero como sabemos, pero como sabemos, ya nos aseguraremos de que las balas solo choquen con un jugador y nada más. Por lo que punto de colisión obtener componente. Y vamos a revisar por el manejador de salud del jugador. Y vamos a recibir daño o daño jugador. Y en este jugador de daño vamos a daño de bala centrado el daño de bala que no tenemos aquí, podemos hacer doble clic y asegurarnos de que es con lo que estamos trabajando. Y entonces, ¿qué deberíamos estar haciendo? Bueno, creo que deberíamos destruir el objeto del juego. Pero el problema aquí que no me gusta es que si le pegamos a otra cosa, no va a interactuar con ella. Por lo que el barco seguirá volando para siempre. Por lo que de nuevo, tendremos que comprobar la colisión. Entonces si collision.com emparejó etiqueta y es la capa, y entonces vamos a hacer esto. Y siempre que solo tengamos una línea de código bajo la condición, podemos evitar usar las dos líneas ardilladas. Y por qué elegí de nuevo crear la etiqueta y no sólo mantenerla como estaba porque la bala se va volando. Queríamos chocar contra un muro para que se destruyeran en todo caso, porque no queremos que la bala siga volando siempre en el mundo y tenga muchas balas y la jerarquía que sólo ocupará espacio y entorpecer el rendimiento de nuestra máquina. Entonces, finalmente, ¿qué más deberíamos estar haciendo? Yo creo que esto es todo, y creo que esto es todo. Entonces vamos a crear nuestra bala. Entonces, ¿dónde están nuestras balas en la prefabricada? Tenemos balas, tenemos balas AMI o no, no queremos replicar las balas enemigas. Vamos a entrar, ya sabes, voy. Jugador de pullets y aún fusil, arma de tiro. Adelante y duplicemos la escopeta llamada S1, la bala del jefe en Enter. Y veamos qué usaremos aquí que vean los sprites. Podemos usar uno de estos y tal vez usar el grande, enorme rojo. Sí, claro. ¿Por qué no? Usemos el grande enorme rojo. Veamos cómo se ve eso en el mundo. Entonces, ¿de vuelta en el Boss prefabricado? ¿ O es preferir jugador de balas? Vamos a moverlo al exterior. Entonces aquí dentro tenemos la bala del jefe. Pongámoslo en la escena. Ahí vamos. Esto es todo. ¿ Qué debemos ser HACER? Balas, claro, está en la capa de balas. A ver, ¿qué más tenemos? ¿ Qué vamos a estar haciendo aquí? Creo que la bala es un poco más pequeña. Escala uno en la x también. Y en lugar de tener menos cambio, tal vez el colisionador, ¿cómo? Porque el colisionador no, es perfecto. Veamos el daño de bala del jugador. Obviamente, vamos a quitar el componente y vamos a seguir adelante y añadir el nuestro propio, que es el controlador de bala jefe. Ahí vamos. Por lo que ahora tenemos el jefe de balas, la cantidad de daño, el punto de ataque. Tenga en cuenta que esto es un control de jefe o no. Me preguntaba cómo qué, ¿qué tiene de malo esta bala jefe? Boss balas. Ahí vamos. Entonces ahora tenemos velocidad que debería ser animal como cinco, daño de bala será, puede salvar eso. Y cuando sí creemos un nuevo prefabricado, no te preocupes, éste será removido o simplemente podemos aplicar los cambios a la bala jefe. Entonces de vuelta en nuestra posibilidad aquí dentro, si nos desplazamos hacia abajo y elegimos éste en realidad el jefe, pero puedes aplicar todo. Y ahora tenemos la bala trabajando regularmente. Entonces supongo que esta es una bala lo suficientemente buena para nosotros. Entonces voy a borrar la bala del jefe. Ahora lo tenemos en nuestra jerarquía. Tenemos el guión, tenemos el colisionador, tenemos un cuerpo rígido lo cual es importante, que salvan todo eso. Y veamos ¿qué más tenemos que hacer? Bueno llevará a emitirte un reto. Y tu reto es hacer que el jefe dispare. Por lo que en primer lugar, crear una referencia a los puntos de tiro y a los puntos de tiro enojados. Por lo que necesitarás crear dos referencias aquí. Y todo esto obviamente va a suceder. Y el jefe controlador, entonces necesitarás obtener una referencia a la bala de los jefes. Obviamente, necesitarás crear un método que recorra todos los puntos usando un bucle foreach e instanciar las viñetas. Entonces necesitarás crear otro método para el tiroteo enojado. Y necesitarás usar los eventos para llamar a los métodos y las animaciones para que la información, pause el video en este momento, todo esto tendrá que hacerse y el jefe controlador e ir a hacer el reto. Oh, bien, bienvenido de nuevo. Entonces, ¿dónde estamos jefe, jefe controlador aquí arriba vamos a seguir adelante y crear un campo serializado de la forma trans. Esta será una matriz obviamente para los puntos de tiro. Entonces vamos a crear un campo serializado para la transformación, también, los enojados puntos de tiro. Y luego vamos a crear un campo serializado para el objeto del juego, que es la bala jefe. Y espero que hayas hecho el reto. Espero que no fuera demasiado difícil en este punto, deberías estar bastante bien informado con todo lo que estamos haciendo. Entonces nada se sabe realmente. Por eso solo estoy pasando por la moción y haciendo todo muy rápido, no explicando. Entonces estoy bastante seguro de que ya conoces la mayoría de las cosas que hemos hecho aquí. Sigamos adelante. ¿ Qué más necesitamos hacer? Bueno, necesitamos crear el método que queremos. Entonces aquí, bajo el jugador atacante angular, voy a crear un jugador de tiro de vacío público. Y aquí dentro voy a crear un para cada bucle, o un para cada bucle que recorrerá todo el punto transformado. Y jugador de tiro. ¿ Qué? Yo soy puntos de tiro. En puntos de tiro. Y aquí dentro vamos a instanciar la bala jefe en la rotación de transformación de posición de punto de transformación. Por lo que necesitamos asegurarnos de que tengamos la misma rotación que tuvimos con el punto de tiro real que se está instanciando. Entonces tendremos que crear un vacío público. Disparos enojados. Déjame simplemente copiar este y añadir enojado también. Siempre agrega el enojado, enojado. Y sé que este video es largo. Yo quería separar estos en dos videos. Uno para el Basilea a los 14, el rodaje regular. Pero en realidad, solo pensé que no tiene sentido crear solo un postulado. A muy simple, ya hicimos eso. Por lo que quería crear dos videos al mismo tiempo. Puntos de tiro tan enojados. Ahí vamos. Eso lo guardamos. Ahora cualquiera o puedes agregar un mecánico extra y sí te recomiendo que hagas eso. Es bastante sencillo. En lugar de tener estos puntos de tiro y puntos de tiro enojados, solo puedes crear uno enorme o uno grande, solo los puntos de tiro enojados. Y cuando estamos disparando regularmente en lugar de un para cada uno, puedes crear un bucle for, pasar por puntos aleatorios e instanciar balas de ellos. Este será tal vez un mecánico de juego fresco. No sé si quieres hacer eso. Adelante sé mi invitado y largo. Y no hice eso porque realmente quiero tener la dirección b y estos cuatro, o se puede hacer eso, no importa. Este es tu juego en tus propias cosas a ella. Entonces en el plan de estudios me voy a desplazar hacia abajo. ¿ Y dónde lo tenemos? De acuerdo, entonces puntos de tiro, abran esto. Soy yo. Simplemente bloquea la báscula hacia abajo, elige los cuatro primeros. Y estos son los puntos de tiro regulares y luego todo lo demás son los puntos de tiro enojados. Esta es la bala del jefe. Y guarde eso. Y por último, tenemos que ir a las animaciones en el rodaje. Entonces tiroteo, ¿dónde deberíamos estar disparando? A ver, y quizá aquí dentro. Por lo que en esta posición, agregamos un evento. Simplemente desbloqueemos esto. Lo que hacemos jugador de tiro. Entonces nos volvemos más pequeños, más grandes. A lo mejor en este punto otra vez, tuvimos un evento debería jugador. Y luego volvemos tal vez una última vez, y aquí le disparamos al jugador. Entonces deberíamos jugar o tres veces. Genial. Entonces guarde eso. Ahora, de vuelta en nuestro tiroteo de ira, tan enojado tiroteo, nos hacemos más grandes. Deberíamos tener más tiros aquí mismo. Tan enojado jugador de tiro, hazte más grande, más pequeño, más grande. ¿ Por qué no nos hacemos más grandes? Y en este punto, no lo sé, pero obviamente cometimos un pequeño error aquí dentro, pero sin preocupaciones. Hagamos de este el jugador de tiro angular más grande, más pequeño. Y otro evento. Jugador de tiro angular más grande, más pequeño. Creo que en este punto es bueno. No se preocupe por la animación. No lo hicimos perfecto. Jugador de tiro enojado. Ahorramos todo eso. Ahora tenemos todo preparado. Lo último que tenemos que hacer es que realmente tengamos que entrar en ese tiroteo. ¿ Y cómo queremos tener a este mecánico? Si bien creo que la mejor manera de hacerlo. Como digamos los jefes caminando, caminando, caminando, no puede llegar al jugador. El jugador sigue huyendo. Y después de una cierta cantidad de tiempo, apenas empieza a disparar al jugador. Entonces vamos a hacer exactamente eso. Voy a abrir la caminata del jefe. Y aquí dentro voy a crear algún tipo de cuenta regresiva o algún tipo de contador de choques. ¿ Y por qué necesitamos crear un contador de disparos? Bueno, ¿por qué no un comportamiento mono? Bueno, porque cuando estás en un comportamiento de máquina estatal, no tienes dicey una co-rutina. Quise decir ¿por qué no podemos crear toda una rutina? Se puede crear una llamada dentro, porque esto no es un comportamiento mono, sólo podemos crear igualdad y lado de un comportamiento mono. Entonces por esa razón aquí dentro, voy a crear un contador de tiro flotante privado y un campo serializado para la sesión de fotos. Yo me guardo eso. Y luego voy a entrar a la actualización on-state. Y aquí dentro voy a decir En caso de tiempo como menos igual, menos igual el punto de tiempo tiempo tiempo delta fijo. Fue el problema aquí dentro. También. Menos igual, no igual menos, perdón. Y entonces aquí dentro voy a decir si el tiempo del show como menor o igual a 0, entonces vamos a seguir adelante en el gatillo animador y copiar al camionero de tiro. Copiar esto debe desencadenar, ponerlo aquí, cerrar esto, guardar todo esto. Creo que necesitamos una manera de volver atrás. Entonces aquí necesitamos una manera de volver atrás. Por lo que agregaremos un tiempo de salida. Y nos aseguraremos de que tocamos toda la animación al 97 por ciento. Entonces veamos cómo se ve eso en la vista previa. Y ahí vamos. Podemos ver que jugamos, deberíamos, deberíamos emitir y luego volvemos a caminar. De acuerdo, creo que ya es suficiente. Y aquí dentro también tendremos un tiempo de salida al 97 por ciento. Yo tengo eso. Creo que en la salida on-state, también necesitaremos reiniciar el rodaje. Entonces guarde eso. Y creo que eso es todo. Creo que esto es todo lo que tenemos que hacer. Entonces vamos a ver. En The Walking aquí, ¿cuál es el corto tiempo? A lo mejor después de dos segundos de caminar. Y si vamos a la caminata enojada, después de lo cual tiempo, tal vez después de tres segundos de caminar. Por lo que estos son solo números arbitrarios. No he pensado si esto es bueno o no. Entonces voy a hacer esto más grande. Y como se puede ver, hay algo mal. En primer lugar, tenemos una bala aquí dentro que no es buena. Entonces, ¿dónde está, Dónde está? En tanto que las escenas, esta bala que ayudará, Vamos a cerrar Dui. ¿ Qué hace esa bala aquí en realidad ? No tengo ni pista. ¿ Por qué no puedo seleccionar, oye, bienvenido de nuevo. Entonces por alguna razón no puedo encontrar qué demonios es esto. No nos preocupemos por eso. De lo que tenemos que preocuparnos es cambiar la capa de balas a la bala enemiga. Guarda eso. Y ahora veamos cómo se ve eso. Cuando el balón nos dispara son realmente no se puede encontrar lo que es esto. Entonces anda por ahí, empieza a disparar y es muy malo. Está bien, genial. Por lo que obviamente tenemos algo que no funciona correctamente. Hey, bienvenido de nuevo. Un enorme error que cometí. En lugar de usar la transformación esa posición, no debería haber usado el punto que está justo aquí. Y el punto que está justo aquí. Perdón por eso. Esto es muy malo, no, no se ve bien. Pero ahí vamos. Ahora arreglamos todos los problemas. Esto debería funcionar ahora mismo. Entonces de vuelta en nuestro juego, deberíamos ver que ahora cuando el jefe dispara, ahí vamos. 123. Pero por alguna razón la bala que sube no está disparando un apropiadamente. Entonces, ¿cuál es el problema? Ahí vamos, hasta nos disparan. Tratemos de ver cuál es el problema cuando se dispara. Por lo que hacia arriba hay un problema. Y la forma en que sólo me di cuenta de cómo funcionaba el último como por ejemplo, mira, podemos usar fotograma por fotograma. Se hace más grande 0. Observe lo que pasó. Entonces vamos a quitar la pausa. Y veamos qué pasa cuando dispara. Se puede ver que sale la bala, que son las balas del jefe, mira, vale, así que éste, éste sale. Y en cuanto sale por alguna razón simplemente desaparece. Entonces, ¿cuál es el problema aquí? A ver, Tal vez sea por el colisionador. Puede serlo. Entonces veamos el punto, obviamente este 0.2 y el colisionador. Pero no debería ser por el colisionador porque, bueno, obviamente la bala enemiga no interactúa con el jefe o ¿viene? Por lo que he notado que cuando muevo el punto hacia arriba, esto no crea un problema. Entonces mi sospecha es que la bala jefe, que está sobre la palanquilla enemiga, está interactuando con este jefe de Kali, que está en la capa predeterminada. Entonces lo que voy a hacer es que voy a crear una capa para el jefe. Entonces en las capas de aquí, crea una capa de jefe Selly. Y luego sobre el jefe, son las balas enemigas. Entonces voy a entrar en la Edición, Configuración del proyecto, Física 2D, desplazarme hacia abajo y asegurarme de que no interactúe con el jefe. Cráneo. Se mueve, impulsa a Selly, impulsa escamoso. Volvamos a capas, editamos capas y no potenciemos la cesta de Skelly. Por lo que Muschelli no interactúa con tanto Selly que funcionan. De vuelta aquí. Dijo el jefe, Kelly. Sí, Cambia a todos los niños. lo guardamos. Volvemos atrás y la configuración del proyecto. Y el tercero es x al y el horario de autobuses no interactúa con Boss Kelly, y no interactúa con el jugador. Pero en realidad podemos mover todos estos honestamente, pero sólo los mantendremos. Y ahora deberíamos ver que todas las balas, todos los puntos disparan adecuadamente, aunque ese punto esté dentro del colisionador de cajas del jugador, el enemigo. Entonces ahora deberíamos este tipo, como puedes ver, dispara cada dos minutos a segundos o lo que sea. Entonces miramos aquí. Vamos a disparar, ¿verdad? Cierto. Entra ahí. Y vamos a tratar de dispararle y hacer que se enoje. Por lo que está al 50 por ciento de salud. Por lo que hay un problema con la animación. Entonces el problema está en que el jefe camine aquí, es el contador de disparos. Y cuando el contador de disparos se establece en menor o igual a 0, entonces necesitamos restablecer el contador de disparos para que sea igual al disparo de tiempo a tiempo. Guarda eso. Y ahí vamos. Todo debería estar funcionando correctamente. Ahora. Entonces volvemos a ejecutar el juego. Ojalá este sea el último error que cometamos. Disparamos, ahí vamos. Terminamos la animación de rodaje. Caminamos un poco, y luego volvemos a disparar. ¿ Y está funcionando? No, no creo que esté funcionando correctamente. Algo anda mal. Está bien. Bienvenido de nuevo. Entonces no estaba seguro de cuál era el problema. Resulta que el contador de disparos era muy raro. Entonces cuando estábamos restableciendo el contador de disparos aquí, cada vez que transitábamos al rodaje, el problema era que sólo contaba hacia abajo cuando realmente estábamos en ese estado. Por lo que sólo contamos atrás cuando estamos en actualización estatal de la caminata del jefe. Por lo que la mejor solución es simplemente mover el reinicio del contador de disparos, que es solo configurar el contador de disparo para el tiempo de disparo. Nada la actualización on-state sino en la salida on-state. Entonces ahora el contador de choque se restablece cada vez que en realidad entramos en otro estado. Entonces aquí, cuando corremos el juego, verás que ahora el jefe camina arriba, dispara, verás el conteo de disparos. Y aquí dentro, ahí vas. Cinco se remonta a 0. Entonces ahí vamos. Ahora todo está funcionando bien. Ahora lo hacemos enojar. Veamos el tiroteo si funciona cuando estamos enojados. Sí, ahí vamos. El tiroteo tanto más prevalente, 123. Y creo que falta uno de ellos. Queríamos tener en la animación varias tomas. Este es el video más largo y todo el curso, te lo prometo. Ataque tan enojado. Pero tenemos No, quiero decir, tiroteo enojado, 1, 2, 3, 4. Tenemos eso que debemos permitirnos. No emitimos el cuarto. Creo que eso es por el tiempo de salida. 97. Juguemos juguemos todo el asunto. Entonces uno, guarde eso, guarde eso, ejecute el juego. A ver cómo se ve eso. Y podría haber hecho esto todo fuera de pantalla, pero realmente quería mostrarte cómo está funcionando todo. Entonces espero que eso sea bueno. Entonces cuántas veces serán 2, 1, 2 , 3, 4, así que cuatro, a pesar de que estamos caminando, creo que eso es bueno. Eso no está mal. Podemos disparar en la última vez mientras estamos caminando. Esta es buena mecánica, son jefes finalmente terminados después de 40 minutos de grabación. Es el tiempo que me lleva después de la edición, tal vez sea un poco menos. Entonces voy a comprometer todos los cambios que hemos hecho. Voy a decir que finalmente, hizo el jefe. Dispara después de casi 100 errores. Esto no es algo que debas escribir. Esto es para mí recordar cuánto realmente cometí errores en este video. Pero en todo caso, espero que lo disfruten. Espero que aprecien la transparencia y yo mostrándoles todo lo que está sucediendo detrás de bambalinas. Si aún no lo has hecho, este es el momento perfecto para dejarme una reseña y te veré en el siguiente video de la última sección. A lo mejor no sé dónde estaremos creando el flujo de nivel real de una escena a la siguiente ahora que tenemos todo en su lugar. Entonces te veré entonces. 95. Sección extra: Generación de habitaciones (programación en forma con objetos avanzados C# objetos) y configurar las habitaciones: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, acabamos de crear un par de nuevos niveles para toda generación de niveles aleatorios. Entonces, en primer lugar, hemos creado el nivel de picos. Si la báscula es donde tenemos un par de esqueletos, la tienda donde solo tenemos un enemigo resguardando la nueva arma, donde matamos al enemigo y recogemos un arma nueva, la salud con salud espalda que da nos un nivel cobarde 120.5. Todo el mundo es un año cobarde. Y el nivel de jefe, y eso es todo. Eso es todo lo que tienes que hacer. Eso es todo lo que hemos hecho. Entonces, no perdamos más tiempo y empecemos. De acuerdo, así que bienvenidos a una nueva sección en avanzado C agudo. Por lo que el primer video es todo sobre la creación de múltiples salas. Por lo que ya tenemos el nivel 1, nivel 2, el nivel 3, el nivel agudo, y la pantalla de título con la pantalla de victoria. Lo siguiente que tenemos que hacer es crear un par de habitaciones más. Yo lo voy a hacer por separado porque no quiero desperdiciar demasiado tu tiempo. Entonces lo que voy a hacer es emitirte un reto para crear múltiples salas. Por lo que en primer lugar, queremos tener múltiples salas por las que pasar. Es similar a la forma en que tendremos el juego del hades. Por lo que contamos con múltiples habitaciones. Tenemos la opción de pasar por dos puertas en cada habitación una vez que terminemos de matar a todos los enemigos. Eso es exactamente lo que queremos hacer y nuestro juego también. Por lo que estas son algunas de las habitaciones que tendrás. Necesitarás tener una habitación afilada, la sala de salud donde acabas de entrar y recoger todo lo que quieras. El pico Roma. Entonces una habitación que está llena de picos, no hay enemigos. Puedes tener enemigos si quieres, pero está lleno de picos. Necesitas pasar por eso sin morir. Obviamente un cuarto jefe, y tres salas más de diversas formas. Por lo que en total 1, 2, 3, 4, y 56, 7. Por lo que casi siete habitaciones para recoger. Y es importante tener estos porque tendremos múltiples opciones en dos puertas de salida diferentes y así sucesivamente. Obviamente la pantalla del título y la pantalla de la victoria no son parte del juego. Por lo que eso quedará para otra cosa. Y necesitarás agregar, asegúrate de agregar. Y esto sería, y asegúrate de agregar las reglas al índice de compilación, obviamente. Y te voy a dar una pequeña pista. Simplemente puedes duplicar el nivel y cambiar un par de cosas alrededor para que no tengas que pasar realmente por el proceso de crear una nueva escena, agregar cuadrícula, hacer todas esas cosas solo puede simplemente selecciona uno de los niveles , duplicado, configura todo, y antes de irme, hay algo que necesitamos cuidar. Y es que en el lienzo de UI tenemos a los jefes salud siempre presentes. No queremos que eso suceda. Por lo que podemos o hacer esta la sala de jefe y luego duplicar y crear otros niveles a partir de ella. Y otros Lienzos de UI no tendrán al jefe retenido. O si quieres algo más inteligente que hacer es aquí en el UI Manager, podemos conseguir una referencia a la salud del autobús, y luego podemos encenderlo y apagarlo en base a si podemos encontrar un jefe y el área que estamos peleando. Y entonces qué toda esa información. Déjame llevarte de vuelta al reto. Pausa el video ahora mismo y ve a crear un par de salas para los próximos videos. Te veré en tan solo un poco 0 caso. Entonces, ¿cómo fue eso? Déjame mostrarte lo que he creado. Por lo que he creado en primer lugar, la escena del jefe donde se encuentra un jefe. Todo es igual. Guardé las puertas son los portales. Yo lo que hice aunque sí es tener los portales aquí mismo en la sala separados de 12 portales para estar justo alrededor de la jerarquía. Los pongo dentro de los portales objeto dentro de las habitaciones. Otra cosa que hice es en el admin, cerrarlos. Este abajo en el Administrador de UI, aquí mismo. En el UI Manager, obtuve una referencia al menú del jefe y me aseguré encenderlo o mantenerlo como apagado si no podemos encontrar el controlador jefe. Entonces esto es solo para barra T de las bolas. ¿ Qué más hacemos, los cobardes? No este es el peso. También por qué mi error. Entonces éste debería ser el cobarde yo, así que aquí es donde tenemos todos estos ojos actualmente. Recuerda, estos son los que huyen y éste será el cuarto de salud. Mal. Ahí vamos. Y esta sala de salud tiene un halfback y este Outback restaura 120 salud. Entonces básicamente solo restaura toda tu salud. Y puedes notar aquí mismo que todavía tengo un enemigo, incluso en la tienda, que no debería tener un enemigo. Pero sí. Lo meto ahí porque las puertas no se abren a menos que matemos a un enemigo. Y sé que esto es un poco engorroso. A lo mejor deberíamos añadir un par de más. A lo mejor, digamos una línea extra de código para asegurarnos de que no siempre tenemos que matar a los enemigos. Para abrir las puertas. Podemos simplemente abrir las puertas en un conocido, ¿sabes qué? No quería pasar por eso porque es bastante simple, pero al mismo tiempo consume. Entonces solo pensé que lo dejáramos en eso. Simplemente agregamos un enemigo que nos reunimos mientras pasamos por las habitaciones y seguimos adelante. Entonces creé la habitación de los picos por alguna razón no es la habitación de los picos. Tenemos los esqueletos. ¿ De dónde son los picos? Entonces las nuevas armas. Tan bien. Por lo que la nueva arma está en el esqueleto con los picos por alguna razón. No sé por qué. Déjame renombrar los picos FUE solo para que no tengamos el mismo nombre. Entonces picos y me voy a quitar las armas justo y en estos picos. Sí, guarda este y el cuarto de los picos. Simplemente me quedaré con estos como el y éste. ¿ Qué tiene éste? Oh espera, también estos son los picos, éste como los esqueletos y éste. Entonces éste no tiene nada. Voy a eliminar a todos los enemigos aquí dentro. Sólo quédate con uno solo mantén uno de ellos para proteger, digamos el cofre. Si entro a las pastillas Prefabs, ¿dónde está? Objetos de nivel. De acuerdo, entonces ahí vamos. Este es el cofre. Y luego nosotros, una vez que vengamos este enemigo, podemos abrir el cofre, coger el arma, y luego salir de ahí. Entonces ahora, ¿qué más hacemos? Y este esqueletos, esqueletos, picos, picos. Estos son el sí de Kelly. Renombrar que esteles. Y entonces éste es el nuevo cuarto de armas. Armas nuevas. Sólo armas nuevas. Hit Enter. Sí, ahí vamos. Entonces como pueden ver, tenemos un par de niveles. Obviamente, tenemos que ir al dónde está, la configuración editable, y ahí vamos. Tan nuevas armas, picos. Añadamos el nivel jefe, los ojos del cobarde, el nivel de salud. El nuevo arma ya está ahí. El nivel de tienda, estos barrancos y los picos ya están aquí. Entonces como pueden ver, tenemos ahora cuántos son? De acuerdo, Entonces seis niveles, 1234567. Por lo que siete niveles, una pantalla de título y una pantalla de victoria. Y a eso vamos a estar accediendo en el próximo par de videos, tratando de ver cómo funciona todo. Espero que hayas disfrutado comprometer tus cambios y te veré en el siguiente. 96. Crear Enemy: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, como puedes ver, tenemos algo un poco diferente. Tenemos ondas, pero estas ondas no son solo elementos regulares o variables regulares. Tienen las variables de amigo dentro de ellas. Y podemos crear otra ola y otra. Y como puedes ver, cada uno de esos tiene su propio elemento. Así que bienvenidos a la sección Avanzado C-sharp. No perdamos más tiempo y empecemos. Pero necesito tu concentración total, tu lapso de atención completo, y tu caída. Pacientes conmigo. Entonces, empecemos. Ah, bien, Así que ahora que tenemos nuestros niveles aleatorios, es hora de crear ondas NME aleatorias. Entonces no sólo vamos a tener aquí a los enemigos regulares. Acabo de configurarlos en el video anterior para que sepamos cuál es la idea general en cada nivel y solo tengamos un poco de diferencias entre ellos. Pero en este video vamos a crear un desovador enemigo. Entonces, empecemos. Lo primero que vamos a hacer es que vamos a abrir a los directivos. Y aquí no tenemos gerentes. Entonces vamos a ir a una de estas que no tiene mánager y se acabó. Y lo que voy a hacer es que voy a entrar en el prefabricado. Tenemos unos gerentes aquí y solo voy a agregar toda la carpeta de gerentes para que podamos sumar gerentes a cualquier escena que necesitemos. Entonces voy a entrar al nivel jefe que tenemos a todos los directivos aquí dentro. Sí, sí lo hacemos. Los cobardes. no tenemos a los gerentes ni Aquíno tenemos a los gerentes nia los gestores prefabricados y a los gerentes. Ahí vamos. Ahora tenemos el nivel de juego y todo tu manager. Y volvamos a ver. Entonces los cobardes, sí, salvan la salud. ¿ Tenemos gerentes? No, no lo hacemos. Por lo que de nuevo, vamos a las prefabs Gestores de Prefabs. Y ahí vamos. Agregamos a los gerentes al salón de salud. Vamos a ver qué más tenemos lo nuevo tenemos gerentes top. No volvemos a hacerlo. Entonces encuentra a los directivos en esto. Y si quieres, solo puedes saltarte esta parte e ir directo a la, tienes aquí dentro. Pero este no es el prefabricado, así que voy a borrar esto. Voy a añadir el actual manager prefab debería haber hecho esto en uno anterior. También escenas, ¿qué es esta tienda? Esta vista de Kelly, sin gerente. Y los directivos. Y escenas picos, guardar gerentes. Ahí vamos. Nivel jefe. Gerentes que queremos. Este no es el encargado que estás buscando. Entonces cobardes ven? Sí, sí. Sí, sí, sí. Está bien, genial. Por lo que en todas partes sí tenemos gerentes ahora es el momento de crear realmente un spawner. Y el mejor lugar que creo para empezar es en estos Kelly justo aquí. Entonces en este caso, vaya al gestor de nivel y sigamos adelante y agreguemos un componente aquí o no, en realidad, vamos a entrar en los guiones. ¿ Y dónde vamos a añadir el desovador de olas? Y solo agregémoslo dentro de los gerentes aquí dentro vamos a crear un nuevo script C-sharp, que va a ser el gestor de spawner de olas. Hit Enter, acabamos de agregar el Administrador de nombres. Por lo que de nuevo, tenemos una excusa para otros altos directivos. Entonces voy a seguir adelante y agregarlo al gestor de nivel. Y aquí dentro voy a abrir el guión. Entonces, ¿qué queremos hacer aquí? Queremos crear otra clase. ¿ Por qué queremos crear otra clase? Bueno, porque antes que nada, esto es avanzado C-sharp. En segundo lugar, queremos crear toda una clase diferente para las olas porque las olas han nombrado a las olas tienen enemigos, las olas tienen un equilibrio de enemigos, el retraso entre cada vez que engendramos un enemigo, y así sucesivamente y así sucesivamente. Entonces aquí dentro, voy a seguir adelante y crear una clase pública. Y se va a llamar la ola. Y esta ola tendrá un par de cosas. Por lo que en primer lugar, tendrá un nombre público String. Y obviamente no queremos tenerlo siempre como público, pero en este caso, sólo para que podamos ahorrar un poco de tiempo sin tener que crear todas las cosas extra. vamos a hacer públicos. Después tendremos un objeto de juego público y una serie de enemigos. Qué variedad de enemigos y yo es. Ahí vamos. Entonces tendremos un público y la cantidad de enemigos que engendrarán. Y luego finalmente, tendremos un retraso de desove de flotación pública. Ahí vamos. Entonces estos son todos los elementos, o digamos la parte de la onda, todas las variables dentro de la onda. Si quieres llamar a esa variable, porque esta es una clase, es algo totalmente diferente. Pero esto no es lo único que tenemos que hacer. También tenemos que asegurarnos de decir que aquí arriba, este es un sistema de punto serializable. Entonces guardamos eso. ¿ Y qué significa serializable? Significa que ahora si abro los guiones de Unity aquí mismo, lo verán. De acuerdo, no pasó nada. ¿ Por qué es eso? Bueno, porque también necesitamos hacer una cosa más. Y aquí vamos a decir que esto tiene una ola pública. Como puedes ver ahora tenemos una clase totalmente nueva, una matriz de ondas. Entonces guardamos eso. Ahora cuando volvamos a Unidad, veremos que tenemos la opción de crear ondas. Y si solo agrego una ola aquí, verás que tengo diferentes elementos para esta ola. Y puedo tener una puntería, puedo tener una cantidad, puedo tener el retardo de engendrar y los enemigos que yo quiero. Y si agrego otro elemento aquí dentro, te darás cuenta de que otra vez, tengo un nombre diferente, diferentes enemigos, diferentes cantidades, y diferentes retrasos. Entonces como se puede ver, es por eso que recreó o se aseguró de que se trata de un sistema de punto serializable. Esto nos permitirá crear diferentes elementos de esto y nos permitirá crear este tipo de variables. Entonces básicamente hemos creado una nueva variable que tiene diferentes variables dentro de ella. Entonces sigamos ahora que tenemos todo esto, lo siguiente que hay que hacer es obviamente ir adelante y empezar a comprobar onda tras ola. Entonces lo primero que tenemos que hacer es aquí vamos a crear un final privado y vamos a mantener la cuenta de la siguiente ola. Y obviamente vamos a empezar a 0. Por lo que la primera ola será 0. Y cada vez que creamos una nueva ola con una nueva cantidad de enemigos, con los nuevos diferentes tipos de enemigos, iremos a la siguiente ola aumentándola en uno. Entonces vamos a crear un campo serializado donde vamos a hacer un seguimiento del tiempo entre ondas. Y pongámoslo en cinco F como defecto. Y entonces también vamos a hacer un seguimiento del conteo de olas. Entonces onda flotante, digo conteo de olas, me refería a contar regresiva. De acuerdo, guarde eso. Y ahora cuando inicio necesitamos inicializar la cuenta regresiva de olas para ser como el tiempo entre las olas. Y entonces vamos a hacer algo para más adelante y estaba pensando, pero ahora queremos tener algo también como extra. Y creo que este es el lugar perfecto para crear algo de o algo que ya hemos cubierto, que es una enumeración. ¿ Y por qué queremos crear una enum? Debido a que las olas estarán en tres estados separados, tendremos un desove. Entonces aquí es donde estamos desovando cada uno, no sé el tiempo ni el retraso entre los enemigos. Por ejemplo, cada dos segundos engendramos un nuevo enemigo. Engendramos a un nuevo enemigo. En este momento, no queremos estar haciendo ciertas cosas con nuestro controlador o gerente de wave spawner. Es decir, así que necesitamos crear diferentes estados. Entonces lo que voy a hacer es que voy a emitir un reto. Y tu reto es crear una enum para los diferentes estados que vamos a tener. Por lo que ya hemos cubierto enums en la sección de recogida. Por lo que en primer lugar, crear una E nada para los diferentes estados de desove que tendrán, necesitará tener el desove, esperando y contando. Y finalmente, todo lo que necesitas hacer es crear una variable de este tipo para que podamos usarla como referencia. Así que pausa el video ahora mismo y ve a hacer cada uno. Oh, bien, bienvenido de nuevo. Entonces como les he dicho, en una de las camionetas, mientras que la pick-up. Pickup, ¿una bilayer? No. Cuentagotas de artículo, droga. ¿ Dónde estaba? ¿Dónde estaba? En el oh, bien. Entonces en el artículo de la tienda como puedes ver, hemos creado una enumeración para la restauración de la salud, mejora de la salud y el arma. Y en base a cada uno de esos, tenemos una declaración de cambio. Nosotros vamos a hacer casi exactamente lo mismo. Entonces aquí voy a crear una enum privada, privada. Y estos serán estos Estados palpitantes. Y vamos a tener el bombardeo, la espera, y el conteo. Y entonces solo crearemos una variable de este tipo la cual va a ser un estado y estados fundadores privados. Ahí vamos, guarde eso. Y aquí en el inicio, ¿con qué queremos empezar? Bueno, vamos a empezar con el conteo. Estado es igual a estados de desove conteo de puntos. Por lo que empezamos contando atrás y luego empezamos también necesitamos asegurarnos de que nos fijamos. Ah, así que ya dijimos la cuenta regresiva de olas. Queremos actualizar, empezar a contar regresiva en la ola. Entonces si la cuenta regresiva de olas es menor o igual a 0, entonces lo que vamos a hacer es que vamos a comprobar, primer lugar, si el estado en el que nos encontramos actualmente es diferente al estado de desove, desove de puntos. Entonces lo que vamos a hacer es empezar desovar mientras el si no no hemos terminado la cuenta regresiva, entonces vamos a conseguir la cuenta regresiva y quitar por tiempo de inscripción, tiempo delta. Entonces, ¿qué está pasando aquí? Hagamos un pequeño recapitulación porque todo esto es bastante nuevo. En primer lugar, tenemos al gerente de spawner wave, que está adscrito al encargado de nivel aquí. Está bien. Espere a que esto se compile en cualquier día ahora. De acuerdo, gracias. Entonces, ¿qué tenemos? Tenemos una onda y cada una de ellas tiene diferentes elementos adscritos a ella. Entonces lo que decidimos hacer es crear una clase pública completamente nueva sólo para representarla. Podríamos tener si quisiéramos, creado una clase separada solo para éste, en un script separado, solo para éste, y no tener que sea un comportamiento mono, solo un tallo serializable y sistema medios serializables que nos permite crear esto aquí mismo. Y nos permite cambiar los diferentes elementos aquí mismo sobre cómo siempre queremos. Por lo que nos puede dar la capacidad de cambiar los objetos de valor mucho más fácil. Por lo que creamos las olas, hacemos un seguimiento de la siguiente ola que podría ser pública si solo quieres asegurarte de que lo veamos todo apropiadamente, que sea público. Creamos el tiempo entre las olas, las olas bajan. Esto es bastante sencillo. Después creamos una enumeración para los Estados de desove porque tenemos diferentes estados de desove. En primer lugar, podemos estar desoviendo, esperando o podemos estar contando atrás. Y luego creamos uno para simplemente hacer un seguimiento de todo lo que sucede, igual que teníamos en el artículo de la tienda. Después tendremos fuera diferente si digo, vamos a tener diferentes métodos siendo ejecutados y la actualización en base a si nosotros, en qué estado estamos, estaremos teniendo diferentes elementos, cosas diferentes. Y este es el primer ejemplo de ello. Si estamos contando atrás, si terminamos de contar atrás y no estamos en estado de desove, entonces empezaremos a desovar. Si no hemos terminado de contar atrás, sólo vamos a quitar de la cuenta regresiva el tiempo, tiempo delta hasta que esté bajo 0. Después revisamos nuestra respuesta. Si no, entonces empezaremos a desovar en el siguiente video, donde realmente estaremos desoviendo enemigos. Por lo que espero que lo disfruten. Sé que esto es un poco complicado, pero esto es para lo que te inscribiste. Llegaste a la sección avanzada C-sharp en aguinaldo uno. Por lo que espero que lo disfruten. Espero que estés cometiendo tus cambios y te veré en el siguiente video. 97. Desplantar varios tipos de Enemies: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, en realidad hemos empezado a engendrar enemigos de una manera inteligente. Entonces ahora cuando ejecutemos el juego, Hagamos esto más grande para que veas correctamente lo que está pasando. El después de que termine el candidato, aparece el primer enemigo, aparece el segundo enemigo, y simplemente se sientan ahí esperando que los matemos. Entonces una vez que sí los matemos, intentemos ir a ellos. Está bien. Eso es en realidad, oh, bien, eso fue vergonzoso. Reiniciemos el nivel. Espera eso. Entonces hicimos tan buenos enemigos que no podemos matarlos. De acuerdo, así que déjame intentarlo. Déjame llegar a cierta distancia para que ya no podamos. Entonces una vez que los llamamos, se puede ver que tenemos la ola completa. Y entonces otra vez, conseguimos que el enemigo desove porque hemos hecho la cantidad de enemigos y aquí también para esta ola. Entonces, no perdamos más tiempo y empecemos. Ah, caso. Entonces sigamos adelante y en realidad empieza a ser dueño de enemigos. El primero que vamos a hacer es obviamente crear aquí algún tipo de ya sea una co-rutina o podemos crear también un contador. Pero nos vamos a quedar con el Coubertin Y este cortejo se llamará cada vez que tengamos este retraso engendrado. Por lo que este equipo central estará engendrando a los enemigos. De todos modos, empecemos y veremos cómo funciona todo. Entonces vamos a crear un enumerador de ojos aquí. Y se va a llamar la onda de desove. Y la ola que queremos realmente engendrar. Por lo tanto onda a mancha. Por lo que ya tenemos la ola que queremos abarcar. Tendrá sus propios enemigos, su nombre, y la cantidad de enemigos que tiene. Entonces vamos a crear un bucle for. En este for loop, vamos a empezar con un entero I igual a 0. Nos vamos a asegurar que nunca superemos el peso para engendrar, o es la ola para engendrar, la cantidad de enemigos? Y también vamos a estar incrementándolo en uno cada vez. Entonces aquí vamos a crear un número enemigo aleatorio. Y va a ser el rango aleatorio. Y este rango será superior a 0. Y la ola para engendrar enemigos longitud de puntos. Entonces ahí vamos y recordamos que los enemigos, y aquí hay una serie de objetos de juego. Por lo que queremos pasar ahí dentro a un enemigo aleatorio. Entonces voy a entrar aquí donde diremos que algún tipo de método para engendrar porque queremos tenerlo fuera del, esto aquí mismo. Esta sólo será la ola de desove. Este será el desovador enemigo aquí dentro. Y qué vamos a hacer, y la forma en que funcionará este numerador ya que vamos a ceder retorno nuevo, espera cuatro segundos. Y va a estar en la ola. Responder. No demora, retraso de desove de puntos. Entonces, ¿qué está pasando aquí? Esta es la primera vez que creo que usamos el retorno de rendimiento dentro de un bucle for en un enumerador o una coroutine. Entonces pasamos por este bucle. Cada vez que elegimos un número aleatorio, engendramos algún tipo de enemigo, y luego esperamos cuatro segundos. Y entonces otra vez, engendramos a un enemigo, engendramos a un enemigo. Por lo que esto nos permitirá ceder retorno y llamar a esto varias veces, esta ola engendrada varias veces. Y después de hacer esto, vamos a crear también el método real que engendrará al enemigo. Así engendra enemigo. Y aquí dentro vamos a decir que le vamos a mandar el objeto de juego y el enemigo a desovar. Y aquí dentro vamos a decir debug dot log solo para asegurarnos de que sabemos qué enemigo está siendo engendrado y todo está funcionando correctamente. Entonces desove al enemigo. Y le vamos a dar el enemigo para engendrar. Pero nombre. Ahí vamos. Y simplemente estamos llegando a instanciar. Y luego se comió el NMI. Demasiado pequeño. Y va a ser, oops, discúlpame. Entonces va a ser toda la posición de punto de transformación y transformamos la estación de fila. Entonces, ¿cuál es la transformación? ¿ De qué transformación estamos hablando? Por lo que debido a que el spawner de olas está apegado al gestor de nivel, esta será la posición y la rotación del objeto de juego level manager en nuestra escena. Y más adelante, estaremos creando varios puntos sobre los que estarán desovando los enemigos. Por lo que funcionará así. Tendremos algún tipo de array. Nos ocuparemos de eso más adelante que ahora está enfocado en instanciar realmente a estos enemigos. Así engendrar enemigo, la ola para engendrar enemigos en la posición del número enemigo aleatorio que acabamos de crear. Entonces voy a añadir un entrar aquí. ¿Qué estamos haciendo? Tenemos que llamar también a la coroutina y aquí, así que antes de que nos olvidemos, tan co-rutina. Engendrar, engendrar, enemigos, ola. Sí, ahí vamos. ¿ Y de qué manera deberíamos estar desovando? Si bien aquí solo vamos a decir que es la ola, ondas en la posición siguiente onda. Entonces va a ser probablemente 0 en este momento porque la siguiente ola, mientras que la siguiente, comienza en 0 justo aquí. Entonces va a ser la primera ola que es por solo experimentar por ahora, que está enfocada en lo que esto hace. Entonces una co-rutina que inicia si nos aseguramos de que no estamos desove de la cuenta regresiva es menor a 0, no estamos desove, estamos listos para empezar a desovar. Entonces iniciamos el recubrimiento aquí dentro tenemos el bucle recorrerá la cantidad de enemigos en la ola que recibimos. Como coroutina, creamos un número aleatorio. Engendramos a un enemigo aleatorio que sólo tiene la depuración para decirnos qué enemigo se está generando probablemente lo eliminará más adelante. Y luego instanciamos al enemigo real sobre el manager. Y entonces qué pasa? Rendimos retorno, esperamos cuatro segundos y luego engendramos en otro enemigo. Entonces antes de que se llame este bucle que de nuevo, tenemos que sopesar el retraso de desove que nos designa. Entonces voy a guardar todo eso. Voy a volver atrás y unidad. Y veamos qué tenemos aquí como gerente de nivel. Espere a que esto compile cualquier cosa. De acuerdo, entonces vamos al encargado de nivel del gerente y ¿qué tenemos aquí dentro? Estaba jugando por ahí, tal vez no hice esto en el video. Entonces tenemos esta ola aquí mismo. Es la onda esqueleto. Los enemigos que tenemos aquí dentro son el enemigo esqueleto y el cobarde volando alto. El número de enemigos que queremos es y responder laico será de dos segundos. Voy a salvar esto. ¿ Dónde está el nivel manager y nuestro mundo? No está en el 000. Volvamos a ponerlo a 0, así que está justo delante de nuestro jugador. Y vamos a ejecutar el juego y ver cómo se ve. Entonces ahora 12, deberíamos ver la cuenta regresiva de olas. Ahí vamos y whoa, eso son demasiados enemigos. Veamos qué hicimos mal aquí dentro. Entonces guardamos eso. Lo que está pasando aquí, estamos revisando la cuenta regresiva es menor a 0. ¿ No estamos en estado de desove? Bueno, veamos. Empezamos con el conteo, así que no lo estamos. Por lo que obviamente necesitamos cambiar nuestros estados aquí. Entonces antes de que realmente creemos el bucle o iniciemos el bucle, vamos a decir que estamos en un estado que es igual a los Estados desove, pero desove. Y luego cuando terminemos de desovar, vamos a entrar en un estado, que es la ponderación. Por lo que estamos esperando a que los enemigos sean engendrados. Entonces ahora empezamos antes de que realmente pasemos por el bucle, dijimos el estado. Entonces ahora esto no se llamará cada vez y no tendremos tantos enemigos. Volvamos a probar esto. Ejecuta el juego. Podemos ver la cuenta regresiva aquí. Yo lo hice público. Ahí vamos. Entonces 0, conseguimos al enemigo y empieza a disparar. Después conseguimos otro enemigo, y luego les dimos otro enemigo, y se está llamando cada dos segundos. Así que mira a estos pequeños cowers aquí mismo. Este es un mecánico de juego genial realmente agradable, como puedes ver, cada dos segundos, 1212, y ahí vamos. Entonces, como puedes ver, se está llamando a enemigos cada segundo. Pero ahora quizá te estés preguntando, ¿por qué tenemos tantos enemigos, a pesar de que dijimos que la cantidad de enemigos debería ser sólo también. Bueno. Es porque aquí dentro, en realidad no tenemos reiniciando la cuenta regresiva de las olas. De nuevo, algo con lo que trataremos más adelante. Pero primero pensemos en cuándo estaremos reiniciando realmente la ola y cuándo hace una onda real? Y así podemos o crear un tiempo entre ola. Entonces digamos la primera ola y la segunda onda, hay un retraso entre ellos. O podemos tener algún mecánico realmente agradable y darle a nuestra capa o a la persona que está jugando nuestro juego oportunidad de seguir adelante y matar a todos los enemigos en esta ola antes de que comience la siguiente ola. Entonces esto es lo que vamos a hacer. Y para ello, vamos a crear algún tipo de método que hará un seguimiento de si un enemigo ha muerto o no. Entonces volvamos aquí abajo. Y después del enemigo engendrado, vamos a crear un privado. Va a haber un booleano, y van a ser los enemigos o vivos. Y esto volverá cierto si todos los enemigos están vivos o no. Ah sí, si todos los enemigos están vivos y falsos, si uno de ellos o ninguno de ellos está vivo. Entonces aquí lo que voy a decir, voy a crear una condición if. Y voy a tener el objeto final de tipo. Y los objetos de tipo en realidad no encuentran objetos, encuentran objetos de tipo. Y el controlador enemigo, estaré buscando el controlador enemigo longitud de punto. Y va a ser igual a 0. Y si lo es, entonces vamos a devolver falso. Tan falso, eso significa que todos los enemigos han muerto. Y luego si pasamos por este y no regresamos falso, entonces vamos a volver verdad. Eso significa que los enemigos siguen vivos. Entonces ahora tenemos una ola o de asegurarnos de que todos nuestros enemigos se hayan agotado y podremos usarlo aquí mismo como condición de alguna manera. Pero hay un pequeño problema que me está molestando. El hallazgo de objetos de tipo en el controlador enemigo es en realidad un muy engorroso, digamos operación en el sistema. Ocupa muchos recursos cada vez para pasar por todos los objetos en el controlador enemigo, lo que a veces no es muy necesario. Entonces lo que queremos hacer es que queremos tener algún tipo de temporizador en los enemigos están vivos checker. Por lo que en realidad no comprobamos cada fotograma si todos los enemigos están muertos. Pero en cambio, tenemos esto siendo comprobado cada par de segundos. Entonces te lo voy a emitir como un reto, y tu reto es retrasar la comprobación. Por lo que antes que nada, necesitarás crear una variable para el tiempo que transcurre entre buscar enemigos. En el método booleano se asegura de que no miremos a todos los enemigos excepto cuando se acabe el tiempo. Preste atención a dónde debemos restablecer este contador. Por lo que esto será muy importante. Entonces con eso dicho, pausa el video ahora mismo y ve a hacer cada Shannon. De acuerdo, bienvenido de nuevo. Entonces me voy a desplazar hasta aquí. Y voy a crear un flotador privado. El tiempo entre la búsqueda del enemigo, entre la búsqueda del enemigo. Y digamos que es una F. Así que 1 segundo. Cada 1 segundo comprobamos por todos los enemigos de la deuda. Y entonces aquí dentro voy a decir que el tiempo entre la búsqueda se está reduciendo por el tiempo.Deltatime, cada fotograma, y esto se llamará cada fotograma. Y luego aquí abajo, voy a revisar antes de que realmente verifiquemos todos los objetos. Si el tiempo entre búsqueda es menor o igual a 0, entonces estaremos buscando. Ahí vamos. Y entonces, ¿cuándo realmente restablecemos esto? Por lo que una vez que el tiempo entre búsqueda es menor o igual a 0, empezamos por comprobar si todos los enemigos han muerto. Y también podemos seguir adelante y restablecer esta vez entre búsquedas. Y voy a ponerlo en 1.5 porque no creo que esto sea algo que quizá quieras cambiar en el inspector, el tiempo entre búsquedas enemigas, esto puede ser bastante estándar. Pero si crees que podrías necesitar cambiar esta variable, obviamente esta f no funcionará. Necesitas subir aquí, crear una variable separada si hiciste eso, felicitaciones, este es el mejor paso o la mejor forma de pensar, el mejor diseño del juego tal vez. Pero para mí, creo que esto será algo muy constante, algo que no va a cambiar. No creo que alguna vez tengamos que cambiar el tiempo entre las búsquedas enemigas. ¿ Eso terminará? Volvamos a subir aquí. Y tenemos que asegurarnos de que nosotros, ¿Dónde está aquí y actualizar. Vamos a comprobar que el estado es igual a los estados de desove punto de espera. Entonces eso significa que constantemente estamos desoviendo enemigos y estamos en la espera. Por lo que comprobamos después de que obviamente terminamos esto para bucle, comprobamos es el estado esperando. Entonces si está aquí, vamos a comprobar si los enemigos están vivos. Y note que agregamos este signo de exclamación, que significa exactamente lo contrario. Entonces si todos los enemigos tienen Lloyd van a guardar debug dot log, ola. Completa. Guarda eso. Y de lo contrario, si no lo es, entonces simplemente vamos a regresar. ¿ Y por qué estamos haciendo esto? ¿ Por qué estamos diciendo retorno? Dijimos que devuelto significa que no hacemos nada más dentro del método, sobre todo en actualización. ¿ Por qué? Porque una vez que la ola esté completa, no queremos volver a entrar en la ola, ahora podemos comprobar si no estamos en desove, que no estaremos n porque obviamente estamos y la espera y volver a empezar la grabación y empezar a crear de nuevo a los enemigos. Por lo que una vez que la ola esté completa, queremos evitar que toda la actualización funcione. Entonces voy a guardar eso. Voy a volver a mi ganancia. Y ahora deberíamos ver eso cuando corremos el juego. Entonces conseguimos, después de cinco segundos de Cuenta atrás, obtenemos el conteo al enemigo. Después de dos segundos podemos contar otro al enemigo. Y ahí vamos. Se puede ver que lo hemos detenido todo para que ya no tengamos más enemigos que tenemos que hacerlo. Entonces voy a tratar de matar esos. Entonces los tenemos a ambos. Y como puedes ver, de nuevo, se ha completado la ola y luego los enemigos empiezan a desovar de nuevo. Está bien, genial. Entonces con eso fuera del camino, asegúrate de comprometer tus cambios. Espero que lo disfruten y los veré en el próximo video donde estaremos desovar puntos por múltiples olas y completándolos todos, matando a todos los enemigos, completando todo el camino, y tal vez tener algún tipo de mensaje realmente bonito. Entonces nos vemos. 98. Completar las ondas: Bienvenido de nuevo, Mis desarrolladores de juegos favoritos. En este video, en realidad vamos a estar completando la ola, iniciando nuevas olas. Una vez terminados todos ellos, tenemos la opción de abrir las puertas. No las abras todavía, pero lo haremos. Desafortunadamente, porque esto podría tomar mucha diversión. No lo voy a demostrar en la intro, pero siéntete libre de ver el video. Verás que en realidad está funcionando. Nos aseguramos de que lo haga. Siempre nos aseguramos de que lo haga. Está bien. Entonces creo que estamos en un buen momento. Entonces como puedes ver, buscabas a los enemigos desovando aleatoriamente. El tiempo ha terminado. Déjame bien. Entonces la columna vertebral en la misma posición los llamamos, deberíamos ver en el Inspector que hemos completado todas las olas, lo que significa que abriremos las puertas. Entonces, no perdamos más tiempo y empecemos. Ah, está bien. Entonces, ¿qué está pasando ahora mismo? En primer lugar, me olvidé de poner en escena todos mis expedientes. Voy a llamarlo instanciado, varios tipos de enemigos. Este fue el video anterior, pero ahora centrémonos en lo que está pasando en yield. Entonces recuerdas que en la última, realidad empezamos a completar olas, pero no tanto White porque aunque terminamos una ola, podrías haberte dado cuenta de que Entonces otra vez, y significa empezar desove. ¿ Por qué es eso? Bueno, eso es porque obviamente la cuenta regresiva de olas sigue siendo menor a 0. Estamos volviendo a desove. Y bueno, obviamente, lo siento, no vamos a volver a desove, así que siempre estamos empezando con la co-rutina otra vez. Entonces, ¿qué necesitamos? ¿ Necesitamos realmente, en primer lugar comenzar una nueva ola? Y en segundo lugar, necesitamos restablecer todo eso y asegurarnos de que al final detengamos las todas las olas. Ya terminamos todas las olas. Podemos abrir la puerta y así sucesivamente. Hombre. No sólo eso, nosotros también en este video, queremos crear varios puntos a partir de los cuales estarán desovando los enemigos. Entonces tenemos las manos llenas. No perdamos más tiempo. ¿ Qué deberíamos estar haciendo aquí? En primer lugar, voy a desplazarme hacia abajo y crear un nuevo vacío, Start New Wave. ¿ Y qué pasó? Y aquí dentro voy a decir que en cuanto queramos iniciar una nueva ola, entonces vamos a poner el estado a los estados desove ese contando. Entonces aquí estamos contando para la siguiente ola y la cuenta regresiva de onda será igual al tiempo entre olas. Personas, no enemigo busca el tiempo entre olas. Y luego aquí dentro vamos a comprobar si la siguiente ola más 1 es igual a las olas consiguieron longitud. Entonces eso significa que estamos en el último camino, que la siguiente ola como la última. Entonces vamos a decir que debug dot log. Y aquí diremos que hemos completado todas las olas. Y acabo de decir algo que creo, ¿no es eso cierto aquí? En primer lugar, necesitamos sumar dos iguales, iguales para comparar cuando sumamos uno igual, eso significa que estamos asignando dos iguales como cuando comparamos. Y dije aquí que la siguiente ola es la última. No, Cuando dije la próxima semana más 1 es igual a onda esa longitud, eso significa que la siguiente onda aquí mismo sin el más uno como último índice. Entonces siguiente onda más 1 es el tamaño de toda la matriz, que es la longitud del punto de las ondas. Entonces eso significa que actualmente estamos en el último, lo que significa que debug dot log dice que hemos completado todas las ondas. Y sólo vamos a añadir un comentario aquí. Podemos abrir las puertas, abrir puertas, conseguir recompensas, etc. De acuerdo, Y entonces una vez que terminemos, entonces si no estamos en la última ola, ¿qué vamos a hacer? Bueno, vamos a decir que la siguiente ola, más, así más, más, más, así que aumentamos la semana siguiente en una. Entonces ahora todo lo que tenemos que hacer es cuando comprobemos por los enemigos y actualicemos y la ola esté completa, vamos a empezar una nueva dispensa. Entonces creo que eso es todo lo que tenemos que hacer. Entonces voy a volver a mi juego aquí dentro y voy a decir cualquier día ahora, por favor. Entonces en el nivel manager, vamos a ver, tenemos asegurarnos de que no tengamos ningún problema. Voy a cambiar esto por el, ¿dónde están los enemigos? Hagámoslo más pequeño o los enemigos son prefabs, enemigo? De acuerdo, entonces tenemos el petróleo, vamos a asegurarnos de que la primera ola sólo tenga un esqueleto enemigos. Y vamos a crear una segunda ola aquí dentro, que es la, vamos a llamarla ola alta porque tenemos los ojos voladores y vamos a tener ambos. De estos sean los cobardes. Por lo que sabremos cuando estemos en la siguiente ola. Entonces voy a guardar todo eso. Voy a facturar aquí, vale, tiempo entre olas. Corremos el juego y veamos cómo se ve eso. Entonces voy a correr el juego y sólo deberíamos ver esqueletos. Esqueleto, ahí vamos. Esqueleto, ahí vamos. Entonces ahora cuando los matamos, sólo deberíamos ver cuervos voladores después de los cinco segundos. Ahí vamos, El cuervo volador, lo puedes ver por detrás de estos dos, y me mataron, pero todo parece estar funcionando perfectamente bien. Como pueden ver, estamos restableciendo el tiempo. Si nos desplazamos hacia abajo. Si no entendiste completamente lo que está pasando, déjame rehacerlo una vez. Entonces en cuanto iniciamos una nueva ola, empezamos a contar regresiva hasta llegar a la siguiente ola. Después se restablece la cuenta regresiva de onda al tiempo entre olas. Entonces una actualización. Y aquí vamos a quitar tiempo.Deltatime cada fotograma, lo que significa que estamos iniciando la nueva ola. Entonces comprobamos, ¿estamos en la última ola? Si lo estamos, eso significa que hemos completado todas las olas y podemos abrir la puerta. Desafortunadamente, nuestros enemigos nos mataron antes de que tuviéramos la oportunidad de hacerlo. Pero antes de que realmente probemos esto y nos aseguramos de que está funcionando esta condición aquí mismo. Primero que nada, creemos varios puntos a partir de los cuales los enemigos puedan engendrar. Porque como puedes ver, realmente no nos gusta tener todos los enemigos machacados juntos y 1 y tenerlos pequeños. Queremos tener algún tipo de diversidad. Entonces para eso, lo que voy a hacer es que voy a emitir un reto para crear puntos de desove para enemigos. En primer lugar, es necesario crear una matriz para engendrar bonos. Por lo que este engendro puntos, esto debe ser de tipo transformar esta matriz. Entonces necesitarás crear los puntos en unidad y agregarlos al inspector, obviamente en el gestor de nivel. Por último, cuando engendramos a un enemigo, elige unos puntos de desove aleatorios y ponlos ahí. Entonces les voy a decir que paren el video porque por alguna razón mi punk no solo está funcionando correctamente. Entonces te veré en solo un rato. Hey, bienvenido de nuevo. Entonces, ¿cómo te pusiste con eso? Entonces si me desplazo aquí arriba y creo un campo serializado de transformación, que se convierte en una matriz de los puntos de desove. Guarda eso. Y luego me desplazo hacia abajo hasta el, veamos qué tenemos aquí dentro. Ah, entonces donde están respondiendo los enemigos aquí mismo, simplemente podemos quitar la depuración. Ni siquiera lo usó una vez. Entonces aquí, ¿qué haremos? Bueno, primero que nada, crearemos una transformación de obviamente una variable de tipo transformar la transformada en el objeto del juego para este punto de poder. Y ojalá este sea el último video donde tengo que decir la palabra spawn, spawn, sea lo que sea. Entonces entre estos puntos, y aquí dentro voy a decir rango aleatorio entre 0 y los puntos de desove sobre la longitud. Por lo que estamos eligiendo un punto de desove aleatorio. Y aquí dentro, en lugar de usar la transformación del objeto del juego, usaremos el punto de desove que el punto de desove aleatorio que obtuvimos. Entonces creo que es bastante fácil si no entendieras lo que está pasando aquí. Creamos obviamente los puntos de desove que estaremos agregando una nueva unidad en tan solo un poco. Entonces cuando instanciamos a un enemigo de antemano, usamos para ponerlo inmediatamente en el objeto de juego manager de nivel. Dijimos que no queremos hacer eso. Entonces lo que hacemos en su lugar es usar el punto de bomba de caja transformada. Creamos uno aleatorio usando la matriz que tenemos ahí arriba, usando un rango de puntos aleatorios desde 0 hasta este punto, puntos de longitud de punto. Y luego ponemos al enemigo, instanciamos y respondemos documentación puntual. lo guardamos. Volvemos a la Unidad. Voy a crear todo este punto de bono bajo el gestor de nivel, ya que está manejando todos los puntos de origen de desove. Y voy a crear un punto de desove vacío, 1, 2, 3. Por lo que tendré tres puntos de desove. Hagamos la escena un poco más grande. Y aquí dentro, Vamos a ver, el primero estará aquí, el segundo estará aquí, y el tercero estará aquí. Así que guarda todo eso de nuevo en gestor de nivel. Veamos qué tenemos aquí dentro, los puntos de desove. Vamos, oops, vamos a cerrar esto. Vamos a arrastrar, Perdón. Arrastremos los puntos de desove aquí mismo. Nosotros decimos, bueno, que manejamos el juego. Y ahora deberíamos ver como estamos buscando, así 321, Ahí vamos. Entonces engendramos uno aquí. Después de dos segundos, uno está ahí arriba. Entonces voy a tratar de matarlos a todos. Y veamos la segunda ola. Esa ola bajó. Entonces tenemos un enemigo que está aquí arriba, un segundo enemigo que está aquí abajo. Y luego trataré de matarlos usando y la vista en la escena para poder atraparlos desde muy lejos. Entonces muere la corriente, el enemigo. Y ahora tenemos una cuenta regresiva. Podemos ver aquí mismo que todas las olas se han completado. Si hacemos doble clic, ¿dónde está? Es justo aquí donde vamos a estar abriendo las puertas obviamente. Y el siguiente video y creando también portales que nos llevarán a otra dimensión. En realidad es sólo otro nivel. Pero de todos modos, se obtiene el punto. Detengamos el juego. Pero detén la unidad. Asegúrate de comprometer nuestros cambios. Y voy a llamar a esto el, el, ahora en realidad completamos Waves. Empezamos a comprometer esos cambios. Y te veré en el próximo. Y si estás disfrutando, esto está por encima del final del curso. Asegúrate de dejar una crítica en ayudar mucho. Y te veré interesado. 99. Elige una habitación: Bienvenidos de nuevo mis compañeros desarrolladores de juegos a un nuevo video largo. No vamos a perder tiempo. Y este video, lo que hacemos es cuando matamos a los enemigos, esto no es muy emocionante. Sólo te diré, cuando matemos a los enemigos, escogemos dos números aleatorios. Eso es todo. Eso es todo lo que hacemos. Siguiente video, verás por qué, pero es un concepto bastante complicado donde aprendemos un nuevo tipo de bucle. Aprendimos las tablas de verdad. Entonces es muy, muy vale la pena. Entonces eso no es perder más tiempo y empecemos. Ah, caso. Por lo que ahora estamos completando las olas. Es hora de salir de la habitación e ir a la siguiente. Entonces, ¿cómo vamos a hacer esto? Solo tomemos un breve momento para hablar de eso. Vamos a entrar a las habitaciones, a las puertas. Y como pueden ver, tenemos dos puertas con dos portales detrás de ellas. Y esto es algo que será lo mismo en cada nivel. No quería agregar demasiada cosa solo para mantener todo menos complicado y comprensible. Entonces lo que tenemos aquí son los dos portales y las dos puertas. Entonces, ¿qué pasa cuando matamos a todas las olas o a todos los enemigos en la última ola, ola, estas puertas tendrán la capacidad de abrirse. Pero como viste en el juego Hades, siempre tenemos dos opciones. Entonces tenemos dos portales que podemos pasar por 14, digamos el afilado, el otro a otra arena enemiga. Y eso es lo que también queremos hacer. Queremos tener la opción de ir a uno de estos dos? Por lo que tendremos que poner estos dos portales antemano y estas dos puertas también de antemano. Posteriormente estaremos creando tal vez algún tipo de nombre tal vez apareciendo una vez que estemos al lado de la puerta. Entonces cuando lo abrimos, sabemos a dónde vamos. Pero por ahora, vamos a centrarnos en cambiar realmente The, mientras que si hacemos clic en el Portal y desbloqueamos esto, se puede ver que tenemos el nivel 2 va o el nivel a cargar. Entonces lo que haremos es tratar de cambiar estos en cuanto matemos a los enemigos. Entonces, empecemos. Voy a volver a nuestro código y lo primero que voy hacer es que voy a entrar al nivel de salida aquí dentro. Y en lugar de usar una cadena, vamos a estar usando un entero. Entonces un entero. ¿ Por qué estamos trabajando con enteros? Bueno, porque aquí dentro estaremos usando varios métodos en el gestor de escena que sólo pueden tomar un parámetro entero con el que podemos trabajar. Entonces por eso lo estamos cambiando para poner en peligro. Posteriormente verás por qué está pasando todo esto. Voy a asegurarme de que esto esté comentado y luego volveremos a cambiarlo. Pero por ahora porque el nivel de carga está tomando un entero o sabes qué, vamos a mantenerlo. Y dejémoslo. Y vamos al encargado de nivel. Y en el siguiente nivel de carga, en lugar de una cadena, vamos a usar un entero. Entonces el siguiente nivel es un entero, y la escena de carga en realidad puede tomar un entero como parámetro. Entonces todo está funcionando bien por ahora. Lo siguiente que tenemos que hacer es establecer las dos puertas o las salidas de dos niveles. Y porque ya tenemos todo preparado y sabemos que siempre habrá dos puertas. Para simplemente hacer simple, voy a crear un nivel público y de nivel para ir a subrayar uno. Y luego voy a copiar esto y convertirlo en el subrayado dos. Entonces esto es para el segundo nivel. Y luego también voy a crear una salida a nivel público. Y este será el nivel exit underscore uno y el nivel exit underscore dos. Entonces ahora tenemos la estrategia de salida de dos niveles y sigamos adelante y creamos un recolector de nivel. Entonces me voy a desplazar hacia abajo, pero no demasiado, tal vez aquí mismo. Y voy a decir que tengo un recolector de nivel de vacío público. Y aquí dentro vamos a estar empleando un par de cosas. Entonces lo que queremos hacer es escoger un nivel. Pero eso no es tan sencillo como se podría pensar porque nosotros, digamos que estamos actualmente en el nivel esqueleto. Este de Kelly. Está bien. Digamos que tenemos la opción de ir, por ejemplo, a la tienda. Uno de ellos será la tienda. Trataremos de elegir un nivel aleatorio. Entonces tenemos la opción de ir a la cima en la primera puerta, pero en la segunda puerta obtenemos la opción de ir al cráneo es pero ya hemos estado en el Skelly. Entonces lo que tenemos que tener en cuenta es que cada vez que queremos tener la opción de elegir otro nivel, tiene que ser diferente al nivel actual en el que estamos. Y no sólo eso, necesitamos tener también el nivel. En la puerta izquierda diferente al nivel de la puerta derecha. Entonces, esencialmente, necesitamos tres cosas de las que hacer un seguimiento. El nivel en el que estamos actualmente. El nivel al que irá si pasamos por la primera puerta y el nivel irá a si pasamos por la segunda puerta. Entonces, ¿cómo vamos a hacer esto? ¿ Cómo vamos a implementar esto? ¿ Encontrar cosas mientras seguimos en el mismo nivel? Aquí es donde usaremos algo llamado un bucle while. Entonces déjame decirte qué es un loop while y verás lo importante que es en esta situación aquí mismo. Entonces, en primer lugar, es similar a for loops at ejecuta un bloque de código varias veces. En lugar de determinar el número de veces antes de la mano, esperamos hasta que se cumpla cierta condición. Por lo que esto es perfecto para nuestro caso aquí mismo, porque no sabemos cuántas veces tenemos pasar buscando un nivel, pero sabemos que seguiremos buscando mientras el nivel que queremos establecer la primera puerta es diferente al nivel actual. Y también seguiremos buscando mientras el segundo nivel en la segunda puerta es diferente al primero, que ya es y diferente al nivel en el que estamos actualmente. Entonces déjame solo llevarte a través la estructura del for loop. Se puede ver aquí mismo, tenemos el tiempo. Abrimos los corchetes, ponemos en una condición. Es exactamente lo mismo que la declaración if. Y si es cierto, entonces haremos algo llamado ejecutar y luego volveremos a la condición, cambio de condición. Si no lo ha hecho, volvemos. Así que asegúrate de tomar precauciones cuando uses while loops porque pueden causar muchos problemas. Podrás terminar en un bucle interminable donde la condición no cambia y tu Unity se estrellará. Confía en mí, me pasa y me todo el tiempo siempre que estoy usando while loops. Así que asegúrate de conocer el problema. Asegúrate de cambiar siempre la condición y siempre salir del bucle while. De todos modos, con eso dicho, volvamos a Unidad. Y aquí, me refiero a Visual Studio. ¿ Y qué vamos a hacer aquí dentro? Vamos a decir que si bien nivel para ir a uno es igual al gestor de escena, dot, ponte activo, visto índice de puntos. Entonces vamos a seguir adelante y crear un número aleatorio que sea igual a un rango de puntos aleatorios desde 0 o en realidad desde uno. ¿ En qué estamos usando uno? Pues bien, porque sabemos que la escena del índice 0 no es algo a lo que quisiéramos acudir. Déjame mostrarte a lo que me refiero. Si vuelvo al Archivo, BuildSettings, el primero como pantalla de título, el arma nueva se pone y todo está disponible excepto el 0, que, y el, obviamente el último. Entonces aquí dentro, lo aleatorio empezaremos en uno. Por lo que de uno al gestor de escenas, la escena cuenta en Configuración de compilación. Y puedes ver aquí mismo, este es el número de escenas y los ajustes de compilación. Y lo vamos a reducir por uno, porque obviamente no queremos el último ahí dentro. Entonces ahora que tenemos un número aleatorio de nuestras escenas, solo voy a seguir adelante e imprimir ese número aleatorio. Así que imprime y digamos la habitación para el número aleatorio, número aleatorio es y primera ronda. Y entonces aquí dentro vamos a fijar el nivel ir uno para ser igual a despotricar. De acuerdo, entonces, ¿qué está pasando aquí? En primer lugar, decimos que si bien el nivel a ir es igual al índice de compilación actual, entonces vamos a entrar al bucle while, número aleatorio elegido asignado el nivel a ir si sigue siendo el mismo, y luego revisa el estado aquí. Si sigue siendo igual, entonces de nuevo crearemos otro número aleatorio y lo asignaremos al nivel para ir. Y seguiremos haciendo esto. Si bien el nivel para ir 1 es igual al gestor de escena o al índice de compilación de la escena que está activa en este momento. Una vez No lo es, una vez que ya no se cumple esta condición, seguiremos poniéndonos sobre las cosas. Antes de continuar. Obviamente, necesitamos hacer algo que se establezca el nivel para ir uno para ser igual al encargado de escena. El justo copia este. Entonces solo lo estamos enviando al principio como éste sólo para que podamos entrar en el bucle y luego continuar. Entonces, vamos a guardar eso. Volvamos a nuestra ganancia o y nosotros en realidad. Todavía no tenemos esto. Entonces para llamar a esto, ¿dónde deberíamos estar llamándolo? Creo que esto es parte de tu reto. Bueno, creo que será parte de tu reto. lo que lamentablemente no podremos probarlo. Pero, o sabes qué, vamos a probarlo. Entonces si voy a donde crees que si quieres, puedes convertirlo en un reto. Pero desafortunadamente, ya te lo he mostrado. Entonces aquí cuando dijimos la depuración, todas las ondas están completas. Solo mantengamos esto, eliminemos lo común porque ahora realmente podemos seguir adelante y acceder al gestor de nivel. Y creo que es una instancia. Y accederemos al recolector de nivel. Y ahora en realidad podemos escoger un nivel y también debemos asegurarnos de que las olas estén completas. Y también necesitamos asegurarnos de que las olas estén completas. Entonces, ¿cómo vamos a hacer esto? Esto es algo que deberíamos haber hecho antes, pero sin preocupaciones. Vamos a crear una variable privada aquí y las olas se completan. Y lo pondremos como falso al principio. Tan privado, oh, lo siento, olas booleanas completas. ¿ Y dónde lo ponemos a verdad? Aquí abajo después de que todas las olas estén completas. Por lo que las ondas completas es igual a verdad. ¿ Y dónde afecta esto todo? Bueno, aquí arriba, si miramos donde estamos desovando cada vez. Entonces voy a sangrar esto usando la pestaña. Y voy a decir si las olas aún no están completas, entonces, ¿verdad? Ondas completas aún no están completas. Entonces si éste sigue siendo falso, lo cual no debería ser falso hasta que nos convertamos en verdadero aquí mismo. Entonces como esto lo mantengo así, creo que esto va a funcionar, pero sabes qué, voy a añadir las dos líneas ardientes, asegurarme de que todo esté configurado correctamente. Entonces ahora, una vez que destruimos o terminamos todas las olas, Waves completas se hace. Ya no estamos contando atrás y elegimos un nivel. Entonces trataremos de ver cómo se ve eso en nuestro juego. Entonces corremos. Y creo que deberíamos quitar el justo para hacerlo más rápido. Entonces voy a disparar a los enemigos un par de veces. Espera la segunda ola, que son los ojos cobardes hallan. Voy a disparar a los cobardes ojos voladores. Y ahí vamos. Y todavía tenemos uno aquí. Entonces una vez que lo matamos, tenemos el número aleatorio tres. Y abramos la consola y pausemos el juego. Entonces si miramos en la consola, tenemos el número aleatorio es tres. Por lo que obviamente este trabajo por primera vez. Veamos cuáles son los 40 índices de construcción, los de Kelly, sus dos. Entonces tres es el nivel de jefe. Por lo que elegimos otro nivel. Excelente. De verdad quiero que veas el número aleatorio siendo elegido varias veces, pero sin preocupaciones, tendremos mucha oportunidad para esas cosas. Voy a quitar este aquí y la depuración aquí mismo, porque ya sabemos que todo está funcionando perfectamente bien. Pero obviamente sigue habiendo el segundo nivel que queremos establecer. Entonces te lo voy a emitir como un reto. Y tu reto es establecer el nivel al que ir, para conseguirlo juego de palabras intencionado. Entonces, después de establecer el primer nivel al que ir, necesitamos establecer el segundo. Y el segundo debe ser diferente al primer nivel. Y el primer nivel al que ir y el que estamos actualmente. Por lo que tendrás que asegurarte de inicializarlo. Y te voy a dar una pista porque queremos asegurarnos de que sea diferente a la primera y diferente a la que estamos actualmente. Tendrás que usar el quirófano para que la condición while se detenga. Y aún no te he mostrado el mar, así que te lo voy a mostrar aquí mismo. Si quieres, tal vez puedas, no sé, tomar una captura de pantalla o tal vez luego volver atrás y ver todos los pasos del reto. Ahora les voy a mostrar la mesa de la verdad y la mesa de la verdad. Entonces empecemos con el final. Entonces el final una mesa de verdad. ¿ Cómo funciona? Si tenemos varias condiciones, como he dicho en este momento, necesitamos asegurarnos de que sea diferente al nivel actual y diferente al primero que hemos establecido. Entonces tiene que ser un bucle while que comprueba por usar el todo así mientras que el nivel dos que vamos a establecer es igual al amor y queremos ir o nivel dos para ir, entonces tendremos que cambiarlo. Tiene que ser diferente a ambos. Entonces déjame mostrarte cómo funciona la verdadera, la mesa de la verdad. Si tienes dos verdaderos, obtenemos un verdadero. Si tenemos un falso y un verdadero, obtenemos un falso. Si tenemos un falso y un falso, obtenemos un falso, tenemos un verdadero y otro falso, obtenemos un falso. Pero cuando se trata de la, O, verás que si tenemos una falsa y otra verdadera, entonces. La respuesta será cierta, pero si ambos son falsos, entonces la respuesta será falsa. Entonces con esa información, sé que es un poco confuso ahora cuando realmente tenemos la solución para el reto, te voy a explicar todo, a pesar de que este video se está haciendo muy largo, pero no se preocupe por eso. Pausa el video ahora mismo y ve a hacer el reto. De acuerdo, bienvenido de nuevo. ¿ Cómo te pusiste con eso? Entonces en el nivel manager, sé que este es uno de los retos más duros, pero estamos en el Desafío Avanzado. Entonces aquí voy a decir que el salvaje y el nivel 2, oops, el nivel al que ir es igual al nivel para ir uno. O cómo está el, o son estas dos columnas, o el nivel al que ir es igual al índice de puntos del gestor de escena. Entonces el actual. Entonces aquí dentro vamos a seguir adelante y hacer exactamente lo mismo. Copia esto, oops. Pega aquí. Y el número aleatorio 1, oops, perdón. Ahora, al azar número 1 y al azar número dos. Y el nivel al que ir es igual a aleatorio 2. Y la India, vamos a ahorrar que el nivel al que ir es igual a la instancia de punto del gestor de escena. O podemos decir que ese nivel para ir como igual a nivel para ir uno. Pero sabes qué, no quiero arriesgarme eso solo mantiene las cosas seguras. Pero, oops, péguelo aquí, guarde eso lo que está pasando ahora mismo. Entonces hay un problema porque no podemos usar el nivel de salida a, necesitamos establecer el nivel para ir a guardar eso. Entonces, ¿qué está pasando aquí? Hemos establecido el nivel al que ir, para ser exactamente como el gestor de escena o el índice en la escena actual. Y aquí dentro revisamos cuál es la condición aquí dentro, como hemos dicho, si volvemos a nuestra mesa de verdad del off, vamos a mantenerla aquí y veamos cómo se ve todo. Por lo que empezamos comprobando como nivel para ir a igual dos, nivel para ir uno. Y actualmente el nivel a ir o nivel sólido a ir uno será diferente al actual gestor de escena. Por lo que esta condición es falsa, que es buena. Eso significa que no entraremos en el bucle while. Pero entonces comprobamos nivel para ir a, ¿es igual al índice de compilación actual? Lo es. Entonces tenemos una verdadera condición que está justo aquí, y una condición falsa que está justo aquí. Entonces si miramos en la tabla de la verdad, tenemos una condición verdadera con una condición falsa, eso significa que todo el conjunto de condiciones es cierto. Eso significa que luego volvemos al bucle while, y eso es exactamente lo que queremos. Si tenemos 11 de estos verdaderos, queremos volver atrás y crear otro número aleatorio y volver a configurar el número aleatorio. Y seguiremos haciendo eso hasta que esta condición sea falsa. Y esta condición es falsa, porque sólo dos condiciones que son falsas hacen un falso total. Entonces de vuelta aquí, si el nivel para ir a diferente al nivel para ir uno, y es diferente al actual. Sólo entonces cuando ambos son falsos, toda la condición es falsa y seguimos adelante. Entonces volvamos aquí. Vamos a imprimir esos y ejecutar el juego y te deja saber qué, vamos a quitar 11 manager que ha quitado a uno de los tíos de miedo. Y quitemos este también y ejecutemos el juego porque queremos demostrarlo bastante rápido. Entonces el enemigo aparecerá en tan solo un poco para que tengamos solo un esqueleto a esqueletos en realidad, una vez que los matamos, deberíamos ver eso. Ahí vamos. Entonces los llamamos, vamos a la consola, pausas el video, pausas el juego. Es decir, y se puede ver que los ejecutamos. número 1 es 3, el número aleatorio 2 es 4. Ambos son diferentes. Hemos recogido niveles, asegúrate de comprometer tus cambios, y te veré en el siguiente. 100. Ir a la de la siguiente nivel: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, no hacemos mucho, pero sí entendemos algo o una serie de métodos y disecciones de cuerdas que es muy complicado pero extremadamente necesario para nuestro caso con el fin de continuar. Entonces, no perdamos más tiempo y empecemos. Este es uno de los videos más técnicos, creo, y toda la serie en todo el curso. Entonces necesito tu concentración total. O K. Entonces ahora tenemos las olas siendo completadas. Tenemos los niveles o los niveles potenciales que queremos ir tipo de ser configurados. Ahora es el momento de llevarlo al siguiente nivel y conseguirlo, tomarlo al siguiente nivel y en realidad empezar a mostrar los nombres de los niveles a los que podemos ir justo aquí en las puertas. Entonces lo que voy a hacer es ir a la puerta uno, voy a hacer clic aquí y voy a crear un lienzo de UI para esta puerta. Entonces, ¿dónde está el lienzo de UI? Ahí vamos, el lienzo. Y si abro esto, esta será la pantalla de texto Lienzo. Y si entro en este lienzo y ves lo que tiene la puerta, vale, entonces, genial. Y el lienzo aquí mismo, voy a seleccionar el espacio mundial. Y voy a hacer doble clic para ver todo el lienzo. Vamos a escalarlo a 0.001 en la x y en la y Y voy a restablecer la posición para estar en 0, 0. Ahora cuando hacemos doble clic, es muy pequeño. Por lo que necesitamos hacer este sin un 0 y éste sin un 0. Y o tal vez sí añadir un 0, pero hacer éste a2. Ah, un cinco. Sí, parece bueno. Y este 15, tal vez deberíamos hacer esto más grande. Hagamos en un ocho y este. Y también, sí, así que creo que es bastante bueno, bastante sólido. Entonces aquí vamos a estar agregando los textos que vamos a querer estar mostrando. ¿ Y qué mostrará este TextView? Estará mostrando el nivel al que podríais ir una vez que abras esta puerta en particular. Entonces voy a seguir adelante y aplicar los cambios. Y cuando sí aplique los cambios a uno inferior, notarás que la puerta a también tiene su propio Lona ahora y todas las demás puertas posteriores también deberían tener estos campus. Entonces voy a seguir trabajando aquí. Voy a hacer clic derecho y el lienzo de UI y voy a añadir un texto Mesh Pro. Por lo que un texto Mesh Pro, este será el nombre de nivel. Golpea Enter, y vamos a seguir adelante y hacerlo un poco más grande. Vamos a ponerlo aquí arriba o sabes qué? Pongamos el nombre del nivel debajo y el duplicado éste y lo agreguemos aquí. Y esto simplemente leerá para que abramos la puerta. Y cambiemos el todo. Bueno, todo lo que siempre estamos haciendo, auto size, max, nivel, color, y por alguna razón no lo veo. ¿ Por qué no puedo verlo? No debería ser el nombre del nivel, éste debe ser el texto abierto enter. ¿ Cuál es el problema? Si lo muevo aquí, pero no está mostrando y aquí. Y si abro la capa de clasificación de Canvas, ponlo en el jugador, así que ahí vamos. Por lo que he puesto la capa de clasificación para que esté en la capa y porque tengo el frente aquí dentro, voy a hacer solo una para hacer que todo sea un poco mejor. ¿ De acuerdo? Entonces cambio la capa de clasificación del lienzo real aquí mismo se puede ver lo vendo a jugador. Y he estado diciendo desde el principio, necesitamos establecer nuevas capas. Eso no lo he hecho. A lo mejor lo hiciste. Eso es mejor. Estás progresando más rápido que yo. Por lo que presiona E para abrir la puerta. Y aquí dentro este será el nivel de texto, nombre de nivel. Y cambiemos esto también. Véndelo a talla negrita, max. Y está bien, genial, Así que vamos a guardar eso. Vamos a ir a la puerta y vamos a aplicar los cambios. Y ahí vamos. Por lo que ahora puedes ver que éste también tiene su propio nombre de nivel y pulsa la tecla E para abrir la puerta. Entonces ahora ¿qué vamos a hacer en realidad? Queremos obtener el nombre del nivel, que debería ser una cuerda y esta placa aquí mismo. Pero como recuerdas. El nivel de salida, ¿dónde es una salida? Cambiamos esto a un entero. Entonces, ¿cómo realmente vamos a hacer esto aquí y empezar? Voy a crear el inicio. Y ahora necesitas enfocarte mucho, pero no te preocupes, todo se explicará lenta pero seguramente. Entonces, en primer lugar, voy a crear una variable de cadena que va a ser la ruta de escena. Y este camino será igual a utilidad vista. Visto utilidad, pero obviamente no podemos usarlo. Entonces voy a sumar aquí a la alta dirección. Y ahora deberíamos tener acceso a la utilidad de escena. Y luego desde la misma utilidad me voy a quedar visto camino puede ver justo aquí por el índice de compilación. Entonces ahora puedo agregar esto aquí mismo, y puedo decir el nivel a cargar. Guarda eso. Entonces, ¿qué nos dará esto? Yo sólo voy a seguir adelante e imprimir esto aquí dentro. Por lo que diré imprimir el camino de escena. Y sólo veamos camino concatenado. Guarda eso. Y antes de seguir adelante, hay algo que probablemente deberíamos haber hecho y que en realidad es usar el nivel salida uno y nivel salida a dos, asignado el nivel a ir. Entonces manager de nivel y ¿dónde están las salidas de nivel? ¿ Ondas? Tenemos engendrados 0, así que no están aquí. Y voy a seleccionar los portales. Por lo que portal tiene éste. Entonces, ¿cuál tiene el primer portal? Este y el segundo portal será el segundo en el nivel manager. Entonces ahí vamos, guardamos eso. Por lo que ahora tenemos acceso a ambos portales. Y ahora podemos volver aquí, deslizarnos hacia abajo y el encargado de nivel. Y después de obtener el nivel de salida, un punto en la salida de nivel, podemos asignarlo de inmediato, llamar a este público, o podemos crear un pequeño método aquí dentro, cual diremos que es un público vacío. Y haremos que fije el nivel para cargar. Y esta será la carga de nivel dos. O simplemente hagámoslo nivelar. Por lo que atajo. Y aquí solo vamos a decir que el nivel a nivel bajo dio un salto. Guarda eso de nuevo en el gestor de nivel que establece nivel para cargar. Y va a ser el nivel 1. Y luego aquí dentro vamos a establecer el nivel x2 punto set nivel a nivel bajo para ir a dos. Excelente. Por lo que ahora deberíamos tener este nivel para cargar siendo excepto aquí mismo. Y sólo voy a mostrarles lo que vamos a conseguir que se exhiban en la pantalla. Entonces cuando ejecutemos el juego, deberíamos ver justo aquí en la consola, Vamos a pausar eso. Y la consola veremos la escena path asset scene scene scene scene scene style scene. Entonces obviamente, este es el camino que nos están enviando y este es el nivel actual a cargar. ¿ Y qué hace el nivel actual en el que estamos? Actualmente se está fijando como 0. Entonces 0, si miramos en los ajustes de aquí, se puede ver que 0 es la pantalla de título, para que puedas ver cómo se mostraba la ruta de escena. Por lo que nuestro objetivo es quitarlo todo y simplemente mantener la pantalla del título y que se muestre aquí mismo bajo el nombre de la puerta. Entonces eso es lo que vamos a hacer. Si vuelvo aquí, quitemos la huella. Y ahora esta es la parte aterradora. Voy a decir que el entero es la última barra inclinada y es igual a la ruta de escena punto último índice de. Y usa esta slash hacia adelante. En realidad es entre una sola cita. Entonces, ¿qué pasa aquí dentro? Volvamos a imprimir y, o saber qué. Sigamos adelante y comprenderás fácilmente lo que eso significa. Entonces nombre de cadena y va a ser igual a la misma subcadena de ruta última barra y más 1, 0 más 1. Y tratemos de imprimir el nombre y ver qué obtenemos. Entonces se puede ver la última subcadena de índice, y luego vamos a ejecutar esto nuevo para que podamos ver qué está pasando. Entonces ejecutamos el juego y podemos ver que tenemos en este momento la pantalla del título. Entonces, ¿qué está pasando aquí? En primer lugar, hablemos de la subcadena. Déjenme mostrarles lo que es eso. De acuerdo, entonces aquí puedes ver el método de subcadena de punto de cadena y definición y recupera una subcadena de esta instancia. Y se puede ver podemos usar un int 32, recupera una subcadena, que obviamente será una cadena. Entonces tenemos una subcadena. subcadena comienza en una posición de carácter específica y continúa hasta el final de esa cadena. Entonces esto es lo que está pasando aquí. Estamos consiguiendo el último índice donde tenemos esta barra hacia adelante. Y entonces estamos usando una subcadena de eso. Entonces recuerda cómo antes se mostraría eso. Voy a imprimir aquí otra vez el camino de escena para que veas claramente cómo funciona todo eso. Bueno, me estoy tomando mi tiempo para explicarlo todo porque esto es un poco confuso. Entonces en la consola allá vamos, Activos, escenas, y el último índice donde tenemos esta barra hacia adelante y luego una pantalla de título. Tenemos el último índice, que es el entero justo aquí. Y entonces el nombre es una subcadena que comienza en la última barra más una. Por lo que empezamos inmediatamente después de la visita justo aquí después de la última barra. Ahora el paso final es quitar también el punto. Entonces yo voy a hacer eso. Y aquí dentro voy a decir que int dot es igual a nombre punto último índice de. Y luego voy a usar el puntito. Y entonces finalmente voy a imprimir. Y probablemente deberías hacer esto ahora que sabes cómo se hace todo. Nombre subcadena de punto. Y dónde está entre 0 y el punto. Y esta es también otra forma de la subcadena. Se puede ver aquí mismo, una subcadena y 32 y 32. Entonces, cuando le damos dos parámetros, recupera una subcadena de esta instancia comienza en una posición de carácter especificada y tiene una longitud especificada. Voy a volver aquí. Voy a guardar todo eso y voy a correr el juego. Y ahora ejecutan el juego. Y verás en la consola que tenemos, primer lugar, teníamos todo el camino, después lo reducimos. Y finalmente tenemos acceso a la pantalla de título. Entonces como pueden ver, esto es muy poderoso y admitiré un poco complicado, pero esta es la única manera de hacerlo realmente por la única manera que conozco tal vez haya otra manera, pero para ahora, es hora de un reto. Y tu reto es establecer el texto en un nuevo guión para que aparezca el texto y desaparezca si el jugador se encuentra en un área determinada junto a la puerta, conseguir un nuevo guión y adjuntarlo al objeto UI. Por lo que obviamente, necesitarás crear un nuevo guión agregado a los elementos de la interfaz de usuario o lienzo de la interfaz de usuario, o tal vez incluso la puerta si quieres, agregada inmediatamente a la puerta, usa el emprendedor enter y exit similar a los artículos de la tienda, usa la llave E para abrir las puertas y asegurarnos de que no podemos ver el lienzo cuando iniciamos el juego. Para que esa información, paren el video ahora mismo y vayan a hacer VJ solo. De acuerdo, bienvenido de nuevo. Por lo que este video se está haciendo demasiado largo. Ya estamos a unos 15 minutos en ello, y no quiero que este sea un video enorme, así que lo voy a cortar ahora mismo. Espero que hayas hecho el reto. En el siguiente video, seguiremos con todo. Espero que lo disfruten. Te veré en el próximo. No por primera vez no cometas tus cambios porque estaremos haciendo muchas cosas y la siguiente. Entonces nos vemos. 101. Siguiente nivel El camino adecuado: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. Mira lo que acabamos de crear. Corremos el juego. Veremos aquí a uno de los enemigos. Y cuando lo matemos, pasaremos por puertas. Y se puede ver que tenemos el nivel jefe y tenemos el cuarto de salud. Entonces si abro la puerta, caminé hacia el círculo justo aquí. Ahí vamos. Voy al salón de salud. Puedo coger una salud y puedo matar a un enemigo cuando muera. Aquí tengo algo diferente. Necesitaremos obviamente cambiar todo en cada nivel. Pero como puedes ver, ahora, todo funciona. Entonces, no perdamos más tiempo y empecemos. Está bien. Entonces pensaste que te he dejado, pero no lo hice. Espero que hicieras el reto de crear real apareciendo fuera del nombre. Entonces sigamos adelante y hagamos justamente eso. En primer lugar, voy a entrar a la puerta y aquí, y voy a seguir adelante y añadir otro colisionador de cajas, que va a ser el colisionador de cajas 2D, que va a ser un gatillo y voy a hacerlo un poco un poco más grande. Entonces lo voy a hacer yay grande. Entonces está justo alrededor de la puerta. Y voy a seguir adelante y aplicar los cambios, los cambios aplicados. Ahora deberíamos ver un colisionador de cajas justo aquí, que también es un gatillo. Ambos son desencadenantes. Y ahora voy a ir a la puerta o en realidad voy a entrar en los guiones aquí dentro. Hacer esto un poco más grande porque apenas podemos ver nada. ¿ Y dónde hay que añadir alguno? Vamos a seguir adelante y crear una nueva carpeta para la puerta. Y luego ábrela y crea un nuevo guión al que voy a llamar al nombre miedo. Hit Enter para que esto se compile. hoy. Ahora haremos doble clic aquí, abriremos el guión y empezaremos a escribir un par de cosas. Entonces lo primero que vamos a hacer es crear un campo serializado, que va a ser texto Mesh Pro, por lo que usando TMP Pro. Entonces aquí vamos a guardar el texto. Malla. Bro GUDDAT GUI es el nombre de nivel UI. Y luego vamos a crear un campo serializado del objeto del juego, que es el nombre de nivel Canvas. Y luego crearemos un campo serializado el cual sostendrá el objeto del juego, que es la puerta para abrir. Por lo que haremos un seguimiento de la puerta para abrir. Y por qué hacemos un seguimiento de las puertas abiertas pesar de que de inmediato lo voy a agregar a la puerta, puedo decir transformar dot SAT ACT o SAT no activo. Eso es lo que necesitamos para puerta. Pero tal vez podríamos agregarlo en un lugar diferente así que quería mantenerlo aquí mismo. Entonces, ¿qué estamos haciendo? Hagamos pública esta, la última y sabrás por qué y solo llévala zona de puerta abierta. Por lo que esto asegurará que sólo podamos abrir cuando estemos en la zona. Entonces cuando iniciemos el juego, voy a decir que el nombre de nivel Los puntos de Canvas están activos como falsos porque nunca quiero verlo visible. Voy a crear aquí un método que es un vacío público. Establece el nombre del nivel, que tomará en una variable de cadena, que llamaremos el nombre del nivel. Y aquí solo vamos a decir que el nombre de nivel dot txt, nombre de archivo, UI. Ahí vamos. El texto es igual al nombre de nivel que nos enviaron. Después una actualización. ¿Qué vamos a hacer? Vamos a decir que si el punto de entrada se mete la tecla abajo con un código clave punto E. Y estamos, y la zona de puertas abiertas, Zen. Zen, vamos Sue. Está bien. Una puerta abierta, la puerta para abrir, punto-punto, activa a falsa. Guarda eso. Ahora lo siguiente que hacemos es el on Trigger Entrar a D y la salida de gatillo armado a la salida de azúcar a D. Y yo voy a comprobar si el parámetro son en realidad para la colisión. Entonces si la colisión compara la etiqueta, aunque lo más probable es que diremos que esto sólo puede interactuar con el jugador. Pero sólo quiero tomar mis precauciones por si acaso, por si acaso. Entonces aquí en realidad están la puerta. ¿ Tiene la puerta alguna capa sobre ella? Yo no lo creo. No hay capa, así que tengamos en cuenta al jugador. Por lo que sólo el jugador puede interactuar con esto. Y lo que vamos a hacer es conseguir que el nombre de nivel Canvas dot set active a true. Y una zona de puertas abiertas es igual a intentar. Y cuando salgamos, copiaré esto, lo pegaré en un nuevo set, activo, falso, y ya no estamos envidia zona de puertas abiertas. Entonces creo que esto es todo. Lo hice un poco rápido, así que tal vez cometí un error en alguna parte. A lo mejor deberíamos. Ah, hay una cosa más que quiero hacer. Si por alguna razón, digamos que el jugador abre la puerta y luego regresa y quiere abrir la segunda puerta. Yo quiero volver a cerrar esta puerta. Por lo que siempre que salga de la zona, voy a decir que la puerta para abrir, puerta para abrir pensamientos, Triste, activo es verdad. Entonces guarde eso. Entonces tal vez, o tal vez el jugador realmente entra por la puerta y luego no puede regresar una vez que está fuera del área. Entonces esto significará que hay que tomar una decisión antes de pasar. Entonces con todo eso fuera del camino, creo que es bastante sencillo. No hay nada en absoluto que pueda ser complicado. Voy a entrar al nivel de salida. Y en lugar de tener todo esto y empezar, voy a seguir adelante y hacer clic con el botón derecho en acción rápida y refactorización. Y voy a extraer el método. Y voy a decir que este es el nombre impreso. Aplicar. Y voy a quitar de principio, realmente ya no lo necesitamos. Y también aquí dentro voy a decir que hay un entero que se está enviando con el índice de nivel. ¿ Por qué estoy haciendo esto? Porque lo verás en solo un poco. Por lo que el nivel a cargar sería igual al nivel y los textos que se ha enviado. Entonces ahora lo que podemos hacer es volver y el encargado de nivel aquí en lugar de nivel dominical para cargar, que está en el nivel de salida, podemos imprimir inmediatamente nombre de la habitación y puedo quitar este método. Así que imprimir Salida, salida, este público sabe que es privado. Entonces voy a hacer público decir eso de vuelta aquí. Y imprimir nombre de la habitación. Rentar un nombre de habitación, guarde eso. Como puedes ver, esto es un poco mejor, un poco más rápido de manejar las cosas. Guardemos todo eso. En realidad podemos quitar la impresión, y en su lugar, tendremos que seguir adelante y enviarla al nombre que aparezca aquí mismo. Y veamos en primer lugar dónde vamos a añadir el nombre a aparecer. Guardemos eso. Y veamos, lo añadiremos en las puertas. Lo agregaremos a dos o uno. Y vamos a aplicar los cambios. Por lo que ahora debajo de uno veremos el todo lo que está bloquearlo y sumar un par de elementos aquí. Entonces el nivel, nombre, peso, este es el texto que se muestra, este es todo el Lienzo. Entonces tenemos el nombre de nivel como el texto Mesh Pro y la puerta a abrir, que es la actual. Y en zona abierta, ¿por qué hice público esto? Todavía no lo sé. Vamos al nombre aparezca y así eliminar la clase, que sea privada. Ni siquiera recuerdo por qué decidí hacer público. A lo mejor sólo para asegurarse de que todo funcione. mejor, tal vez eso de todos modos, y si aplico los cambios, podemos ver eso en la puerta. Si me desplaza hacia abajo y tenemos todas estas opciones y en realidad está unida a la puerta 1 y la pantalla de texto está unida a la puerta uno también, lo cual es muy malo. Y todo estará en eso. Por lo que necesitamos hacer todo a mano aquí dentro. Entonces en el lienzo, al nivel nombre y va a oh, no, no, no, no, no, no. Eso es porque tenemos este candado abajo. Si hago click en la puerta real, veremos que estaba tan confundida por esto porque sé que al aplicar los cambios en la puerta uno, se puede ver que sólo la puerta uno está pegada, pero la puerta 2, se puede ver que el texto está justo aquí y el nombre del nivel es el que está justo aquí, que es lo que queremos. Entonces esta es la asombrosa obra de los prefabs. Y estuve realmente confundida por un segundo ahí porque tenía esta cerradura abajo y hice clic en la puerta. Fue lo mismo. De todos modos, no se preocupe por eso. Ahora que esto está fuera del camino, vamos a salvar esto. Y ahora necesitamos enviar de alguna manera, o es el nivel de salida que necesitamos enviar esta subcadena de nombre al nombre que aparezca. Entonces voy a decir que aquí dentro tenemos el campo serializado del objeto del juego. La puerta. Y aquí dentro tenemos el nombre que aparece, ¿ cuál nosotros dónde lo tenemos? De acuerdo, entonces nombre de subnivel. Ahí vamos. Entonces voy a quitar estas dos partes. Y luego decir que la puerta 0 que Get componente, que es el nombre, aparece el nombre de nivel establecido. Cerraremos esto y ahora tendremos todo funcionando. De acuerdo, entonces aquí en el portal uno, le he asignado la puerta uno. Entonces por alguna razón tenemos cosas un poco raras. A lo mejor podemos mover el portal uno justo aquí, y el portal justo aquí, sólo puedo decir, pero así portal uno tendrá la puerta uno como su puerta. Por lo que el puerto 1 y la puerta 1 y el portal normal tendrán la puerta normal. Ahorramos todo eso. Y ahora hay una cosa más que debemos tomar en consideración. Y esto es algo en lo que he pensado todo el camino mientras creaba esto. Y eso es que en realidad abrimos la puerta de inmediato. No sé si te has dado cuenta de eso. ¿ Por qué es eso? Bueno, porque si entramos al ¿dónde está? Uno de los componentes aquí dentro, que es la habitación, el encargado de la sala se puede ver aquí. Si hacemos doble clic en el gerente de sala, verás que en la actualización tenemos si el conteo de enemigos es igual a 0, entonces pondremos todas las puertas para actuarlo. Y el problema aquí dentro es que los enemigos siempre faltan 0, por lo que la puerta se abre de inmediato. Entonces lo que voy a hacer aquí es sólo revisar para abrir enemigos Goldman. Son eso no, no eso. Yo sólo voy a quitar esto y en realidad podemos agregar este mecánico y al juego. Y tal vez en el spawner de olas cuando instanciamos a los enemigos. Entonces cuando, cuando engendramos a los enemigos, podemos hacerlos hijos de la habitación. Dónde están los enemigos aquí mismo. Podemos hacerlos hijos de estos enemigos. Entonces podemos terminar con el encargado de la sala. En lugar de solo conseguir a los enemigos, revisando los solapamientos, colisionadores, lo siento, aquí y empezar. Podemos hacer con una actualización cada par de segundos. Entonces asegúrate de que no abramos la puerta o no comprobamos esto hasta que sigamos adelante y matemos a todos los enemigos. Todo esto es posible. Pero por el bien de la simplicidad, por el bien de sólo pasar por esto, sólo voy a entrar al gerente de sala y sólo comentar esto apagado, guardar eso de nuevo en nuestro juego, ejecutar el juego. Y deberíamos ver ahora que las puertas están todas cerradas. El nombre del nivel justo aquí y el nombre del nivel o TI, esto es algo que sí queremos arreglar. No queremos poder ver cuál es el nivel ni tenerlo en pantalla. Se puede ver aquí mismo que se está destruyendo. Voy a disparar al enemigo y ya veremos una vez que lo maten. Entonces cuando muera, ahora cuando llegue, se puede ver que ahora tenemos al jefe de nivel y tenemos la tienda. Puedo abrir esto si me voy. Se puede ver que no cierra por alguna razón. Si voy aquí mismo, abriré esto, entonces me voy. No cierra. Esto es algo que vamos a arreglar, pero de todos modos, este era el nivel de jefe. A ver si vamos al nivel jefe. Ahí vamos. Como pueden ver, claramente vamos con el jefe. Amor. ¿Qué tan guay es eso? Entonces ahora que el jefe es a quien voy, ahí vamos. Entonces muere el jefe. Esperaremos a que esto se abra. Y obviamente necesitamos cambiar un par de cosas aquí. Entonces, en primer lugar, el nombre del nivel, cool back en el año y el nivel de salida en nombre aparecen en el Lienzo inicio, estamos poniendo todo el lienzo en falso. Pero entonces cuando entremos, estamos poniendo el lienzo en verdadero y estaremos arreglando todo eso tal vez en el siguiente video. Pero la mecánica funciona, los niveles funcionan, y te veré en el siguiente. Asegúrate de comprometer todos tus cambios. 102. Patrón de Singleton: Bienvenidos de nuevo, mis compañeros desarrolladores de juegos. En este video, cuando ejecutemos el juego, verás que tenemos muchos errores. Nosotros no los arreglamos todos, pero nosotros los arreglamos a la mayoría. Entonces voy a seguir adelante y recoger la escopeta, recoger algunas monedas, ser golpeado por los picos, pasar por la puerta, pasar por este portal. Y ahí tienes. Se puede ver que estoy del otro lado estaba mi escopeta, era mi pistola con mi salud, pero no es visible porque no hemos removido esas cosas. Pero si vamos a hacer jugadora scroll hacia abajo, notarás que teníamos 500. Lo cortamos por los picos y son 490, pesar de que no hicimos nada. Entonces, no perdamos más tiempo y empecemos. Las cosas que aprendemos en este video son muy importantes, un poco engorrosas, pero muy importantes. Entonces vamos a pisotear. O K. Por lo que actualmente podemos ir de nivel a nivel. Tenemos opciones donde elegimos uno de los niveles aleatorios que tenemos. Obviamente, hay un par de cosas que tendremos que retocar con la apariencia de la puerta y desaparición y así sucesivamente. Siento que todavía queda un poco de retoques, pero hay un problema aún mayor. Y eso es una vez que cogemos las monedas, el arma, y nos golpean estas bicicletas o algo así. Déjame mostrarte. Cuando cogemos la escopeta, cogemos algo de dinero, nos golpeen los picos. Ahí vamos. Para que podamos ver que nuestra vida es para 9500, vamos a un nivel numérico. A lo mejor esto será, y se puede ver en este momento, mientras que el jugador, si miro al jugador D1, está desligado. No está ahí. Para que veas que su vida vuelve a los 50. Si traté de elegir la escopeta, no puedo. Y ahí tienes. Se puede ver que las monedas son 0 y eso es algo que vamos a querer cambiar para asegurarnos de que nuestro jugador realmente guarde todo con él a medida que pasa por el nivel. Entonces sigamos adelante y solo hagamos eso. Entonces voy a abrir mis guiones aquí y voy a ir al controlador del jugador, desplazarme hacia arriba. Y lo que queremos es obviamente que queremos mantener nuestras armas de nivel a nivel y la salud del jugador. Entonces para mantener eso, necesitamos asegurarnos de que no destruyamos al jugador. Podemos guardarlo en algún otro objeto o en algún lugar del proyecto. Pero obviamente lo hay, el problema era cargar una nueva escena que restablece todo. Entonces lo que voy a hacer es aquí dentro voy a crear un controlador público de jugador estático. Y va a ser la instancia. Y en la instancia voy a crear un privado o saber qué, sólo escribamos despierto. Y aquí dentro voy a decir que la instancia es igual a esto. Y entonces aquí dentro no voy a destruir a carga. Y será esto. Entonces si guardo esto y paso sobre no destruir carga, se puede ver eso para no destruir el objeto objetivo al cargar una nueva escena. Y eso es exactamente lo que queremos. Entonces, ¿qué pasará ahora? El objeto o el jugador y nuestro caso, vamos a guardar todo lo que tenía con él de escena en escena. No se destruirá, no se restablecerá. Pero está el problema de que el inicio no se llamará el Gap. Por lo que no estaremos configurando la cámara principal. Nos quedaremos con el animador del jugador, pero la cámara principal cambiará. Y verás que esto producirá muchos errores que arreglaremos a medida que avancemos. Pero por ahora, entiende el no destruir carga y lo que hace. Ahora, voy a volver aquí. Y si miras el, dónde está, la habitación, el portal, he cambiado el portal uno, que es éste, para ir al nivel cuatro. Para que podamos ir al cobarde. Y déjame solo ir a las escenas porque estaba probando algo y apagué el jugador de cúpula aquí dentro. Entonces ahí vamos. Eso lo encendiera. Guardemos eso. Volvamos a esperar a que esto se cargue en cualquier día ahora, guardemos eso de vuelta a donde estamos sirviendo. El cráneo es donde tenemos el de Kelly. Sí, Fuimos un esqueleto. Entonces guarde eso. Y te darás cuenta en la jerarquía ahora mismo, y la unidad, la nueva actualización, lo siento, es terrible. Por lo que en la jerarquía notarás que tenemos el no lo destruya y tiene el juego de perdición o debajo de él. Entonces voy a recoger la escopeta, convertirme en los Bitcoins ser golpeados por los picos, abrir la puerta, trasladarme al nivel 4. Y ahí vamos. Y se puede ver que ahora estoy aquí, pero el problema es, se puede ver a un jugador abajo y yo capa aquí arriba. Por lo que ahora tenemos dos jugadores. Uno de ellos tiene escopeta, el otro no. Y se puede ver que tenemos una tonelada de errores y los contras. Entonces voy a abrir la consola. Voy a pausar el juego. Y en primer lugar, tenemos al jugador de la perdición. Y aquí esta es una depuración que estaba mostrando. Permítanme borrar esto. Ya verás a lo que me refiero en un poco. Voy a borrar esto. Siguiente. Tendremos la, esta flecha aquí mismo, que está bien, así que este es el problema en absoluto. Lo arreglaremos en el video posterior. Entonces finalmente tenemos el objeto de tipo cámara ha sido destruido. Todavía intentas acceder a ella. Entonces voy a hacer doble clic aquí y es la cámara principal, y es exactamente de lo que te dije. Entonces ahora que sabemos que nuestro jugador está en transición, y podemos ver justo aquí en la escena, si hago clic en el doom player, que es el no destruir, tenemos que hacer jugador, así que tendremos que arreglar eso. Pero uno de ellos todavía tiene la escopeta. Entonces técnicamente, podrá moverse con esa escopeta. Y miro al tomador de tumbas, desplácese hacia abajo a su salud y se puede ver que el, su salud actual también tiene transición. Desafortunadamente, sigue existiendo el problema de los bitcoins, pero vamos a arreglar eso paso a paso. Primero que nada empecemos con la gestión de los estándares de doble capa. Entonces esto es algo que tendremos que abordar. ¿ Y cómo vamos a ajustar esto? Bueno, hay un truco muy ingenioso que podemos usar, que se llama patrón singleton. Déjame mostrarte usando código qué es eso y luego te explicaremos. Entonces antes que nada, aquí en despierto, lugar de poner inmediatamente la instancia, voy a decir que si no tenemos una instancia, entonces la instancia es amines son si ya tenemos una instancia, por lo que es diferente a null, y la instancia es diferente a esta. Entonces lo que voy a hacer es destruir este objeto de juego. Entonces, ¿qué estoy haciendo exactamente aquí? Voy a revisar en cuanto esperemos. Es la instancia diferente a nula. Entonces eso significa que si la instancia no es nula, voy a destruir el objeto del juego. Pero hay otra cosa si la instancia es diferente a ésta. Entonces lo que estoy haciendo aquí, ya que estoy empezando el juego, estoy comprobando si o ya tenemos una instancia o la instancia es igual a este objeto del juego, voy a destruir este objeto del juego. Y esto asegurará que nosotros, en primer lugar, no creemos una segunda instancia de este objeto de juego. Y en segundo lugar, no duplicamos el objeto que ya está aquí. Entonces si vamos a una nueva escena y encontramos que tenemos en un objeto de juego, será destruido de inmediato. Pero de lo contrario, en caso de que no tengamos instancia, así que estamos empezando el juego de nuevo, o cuando iniciemos una nueva escena y no haya instancia que sea igual a ésta, entonces voy a decir esa instancia como igual a esto. Esto solo creará una nueva instancia. Y esto asegurará que no tengamos dos instancias o que ya haya una disponible. Entonces voy a guardar eso y voy a demostrar cómo va a funcionar esto y abróchate porque vamos a tener muchos errores. Y yo estaba probando esto para asegurarme de poder manejar correctamente todo. Entonces recojo las monedas, me golpean por 90, abro la puerta, y voy a golpear el portal, alejarme de él. Y ahí vamos. Entonces puedes ver ahora mismo, no tengo jugador de equipo. El segundo jugador ha sido destruido. Eso se debe a que comprobó y está despierto. ¿ Existe una instancia? ¿ Es la instancia diferente a nula? Sí, lo fue. ¿ Y es la instancia igual a esto? Sí, lo fue. Entonces vamos a seguir adelante y destruir. Por lo que de vuelta aquí verás que sólo tenemos 12 patrón el cual tiene escopeta. Él puede disparar. No puede apuntar y no puede cambiar su arma, pero sí tiene la escopeta. Está animando, todo está funcionando y notarás que está en la misma posición que estaba en la escena anterior. Y eso es porque en realidad mantendrá con él a medida que se mueve. Entonces te darás cuenta de que cuando entré al portal, entonces me mudé porque no quería quedarme en ese portal. Entonces con esa información, después de todo el camino, Veamos qué errores tenemos aquí. Entonces voy a hacer una pausa porque hay mucho. Entonces, antes que nada, verás el problema con la cámara, que vamos a arreglar en tan solo un poco. Ya verás que tenemos un problema con los enemigos cobardes. Están tratando de encontrar el objeto que es el jugador, pero simplemente no pueden. No sólo eso, nos está diciendo que la transformación del objeto ha sido destruida, sino que aún intentas acceder a ella. ¿ A qué se refieren con eso? Bueno, en cuanto llegaron a este mundo, vieron al pequeño jugador de la perdición que estaba aquí inicialmente. Y luego cuando comenzó la escena, quedó destruido y aún intentaban acceder. Y si hacemos doble clic aquí, notarás que está justo aquí en la persecución del jugador. Entonces todo el problema es con el jugador Chase. Obviamente estaremos arreglando eso también, se arreglará la cámara. Y por último, este problema también está aquí y el objeto de juego jugador activo y jerarquía. Por lo que todo esto será arreglado y solo un poco. Entonces voy a deshacer esto y vamos manejar los problemas de uno a la vez. Así que para esto, abre esto, empieza el juego. Entonces abre los guiones. ¿ Y qué vamos a hacer? En primer lugar, primero creo que manejemos el problema de la cámara principal. Entonces si vamos al controlador de jugador donde usamos la Cámara Principal. Hagamos doble clic en Cámara Principal y desplázate hacia abajo, veamos dónde lo usamos. Nosotros lo usamos. Ahí vamos, en el apuntando el arma. Entonces aquí estoy simplemente momento de comprobar si la cámara principal es igual a nula. Eso significa que no tenemos cámara. Voy a decir que la cámara principal es igual a la cámara punto principal. Y esto sólo sucederá una vez que comprobemos es la cámara nula. Eso significa que no tenemos referencia. Si lo es, entonces pondremos la cámara principal. Otra vez. De no ser así, sólo seguiremos con regularidad, regularmente con el apuntando un arma como máximo. Por lo que de vuelta en nuestro juego correrá. El juego retomará este, abriendo. ¿Algo más? Pasaremos por esto. Y del otro lado, veremos en la escena. Ahí vamos. Se puede ver que soy capaz de señalar esto, pero obviamente lo hay, la cámara en el mundo del juego no se está enfocando en el jugador. Y esto es algo que obviamente necesitaremos flexionar. Entonces vamos a arreglar. Voy a entrar en mis guiones. Y aquí mientras estamos llamaremos a esto, ¿Dónde deberíamos llamar a esto? A ver, ¿dónde pusimos la cámara de forma? ¿ Podemos saberlo? ¿ No sabemos qué? Vamos a entrar en los guiones y ponerlo dentro de los gerentes. Gerentes, gerentes, gerentes. No hay gestores. Está bien. Entonces gerentes por alguna razón, nuestras cámaras. Ahí vamos. Entonces y las cámaras, voy a crear un control de cámara o controlador de camara camp. Hit Enter, espere a que se compile. Haga doble clic aquí, y voy a hacer un par de cosas. Entonces, ¿qué? Siempre estoy haciendo un par de cosas. Entonces, ¿cuáles son las cosas que vamos a hacer? En primer lugar, lo que queremos hacer aquí es encontrar siempre el objetivo del jugador automáticamente. Entonces anteriormente lo que solíamos hacer es si entrábamos a la cámara justo aquí y al campamento virtual, dijimos el seguidor. Y el problema es que cuando vamos a un mundo nuevo, déjame mostrarte a detalle, debería haberte mostrado antes. Entonces si yo, por ejemplo, aquí tengo al jugador, le doy clic, está en la jerarquía. Abrí la puerta, llamo a otro nivel. Te darás cuenta ahora mismo si vuelvo a abrir las cámaras, que son exactamente la misma cámara virtual, puedes ver que falta el seguimiento, por lo que no hay jugador. ¿ Por qué? Porque hemos puesto antes al jugador, pero ahora fue destruido. Está desaparecido, así que tenemos que volver a encontrarlos todos. Entonces aquí voy a abrir esto y voy a crear una variable que es el jugador a perseguir, que obviamente va a ser, vamos a ver, la transformada o ningún atlas simplemente le hacen la capa de controlador de capas a mirar. Y va a ser igual para encontrar un objeto de tipo. El jugador, oh, no, no, no, aquí no. Costos abajo y inicio. Vamos a decir que la capa a mirar es igual para encontrar objetos de tipo, y va a ser el controlador del jugador. Ahora tenemos una referencia al controlador del jugador que también es crear una cámara virtual. Entonces, así máquina de cine, cámara virtual también heredan necesitamos duplicar y C usando cin, una máquina. Ahí vamos, Guarda eso. Entonces máquina de cine, máquina de cine cámara virtual, gracias. Va a ser el verbo. Cámara virtual. Y lo vamos a poner aquí en cuanto empecemos. Entonces va a ser igual para conseguir componente. ¿ Y dónde estamos el ingeniero? ¿ Dónde vamos a colocar el controlador de la cámara? Podríamos querer adjuntarlo a la conferencia. Nos conectaremos a las cámaras virtuales que podamos acceder de inmediato a la misma máquina cámara virtual aquí dentro. Entonces consigue componente. Y va a ser la cámara virtual de la máquina de cine. Ahí vamos. ¿Y qué vamos a hacer aquí dentro? Bueno, vamos a poner la cámara virtual arriba seguimiento superior para que sea igual a la capa para mirar la transformación de puntos. Por lo que esto será al inicio, pero una actualización, tendremos que crear un bucle while. Por lo que hemos cubierto ya mientras bucles. Y va a estar comprobando que el jugador mire mientras es igual a nulo. Eso significa que aún no hemos encontrado un jugador. Vamos a seguir buscando al jugador a mirar. Sigue encontrando al controlador del jugador hasta que finalmente los encontremos. Una vez que los encontremos, si sí tenemos una cámara virtual. Por lo que este es solo un paso extra para evitar cualquier error. La cámara virtual no sigue. Será igual al jugador. Eso lo salvaremos. Y volvamos a ver una vez lo que hicimos. Entonces, en primer lugar, creamos el controlador del jugador, que lo hará, que es una variable que veremos a los jugadores a mirar, que es una variable del controlador del jugador, una cámara virtual. Estos son todos privados. Podemos nombrar a la privada. Simplemente no tuve tiempo. Ya sabes qué, vamos a asegurarnos que aquí no tengamos confusiones. Tan privados, privados porque no los necesitaremos en el inspector. Podemos fijar M si queremos. No tenemos que hacerlo. Entonces empieza. Vamos a encontrar al controlador jugador. Esto es por si acaso. Empezamos y tenemos al jugador en la escena, después encontramos la cámara, luego ponemos la cámara de seguimiento para que sea el jugador a mirar. Tener un solo jugador en cualquier escena, porque ya nos hemos asegurado de esto aquí mismo. Y el patrón Singleton. Ahí vamos. A esto se le llama el patrón singleton, teniendo en cuenta, cada vez que se lo digas a alguien, pensarán que eres muy inteligente. Confía en mí, aunque sea singleton significa un solo objeto. Entonces por si acaso te preguntan ¿qué es un patrón de singleton? De todos modos, el punto de la cámara virtual sigue, seguimos al único jugador que encontramos y luego una actualización por si esto es para, digamos que el jugador que no se destruye suele cargar antes que todos los demás objetos. Entonces por si acaso empezamos el juego, no encontramos al jugador de inmediato que está desaparecido. No podemos resolverlo de la siguiente manera. Sigue luego una actualización seguiremos buceando hasta que encontremos al jugador verificaría si tenemos una cámara virtual. Esto es sólo un paso extra. No creo que necesitemos esto ni siquiera, ni siquiera una vez porque estaremos adjuntando el guión a la cámara virtual, pero por si acaso no hay una cámara virtual, revisaremos la condición y luego nos establecerá el punto de la cámara virtual seguir, guarde eso de nuevo aquí. Adelante. Y así las cámaras, Vamos a ver, sacudir y sacudir el controlador de cámara a través de la cámara virtual. Y por alguna razón puedo ver que esto no es un prefabricado. Es eso en prefabricado esto. Entonces cuando los prefabs Universidad, mientras que las armas que eres un pobre para nivelar objetos aquí. No. Está bien. Por lo que puedo ver no preferí arriba las cámaras por alguna razón pensé que sí. Pero de todos modos, eso es sólo preferir los campamentos y aquí. Y se puede ver que la cámara virtual tendrá el controlador de campamento. Entonces guarde eso. Déjame ir al otro nivel. No voy a hacer esto a todos los niveles. Yo solo lo voy a hacer con los que estamos probando, arreglamos todo y probablemente sea lo mismo. Entonces cámaras y aquí lo voy a borrar. Y voy a volver a las prefabs y asegurarme de que agrego las cámaras aquí en la jerarquía. Guarda todo eso. Abre esto, vale, parece, todo parece estar bien. De vuelta en las escenas. De vuelta en el cráneo es guardar eso, ejecutar el juego. Ve a la puerta, lo abrí, pasa al siguiente nivel. Y deberíamos ver, ahí vamos. Entonces volvimos a encontrar al jugador y ahora las cámaras están funcionando perfectamente bien. Genial. Entonces ahora con eso fuera del camino, si miramos atrás en la consola, todavía tenemos el problema de el jugador sea perseguido, no ser divertido. Y porque veo que este video ya lleva bastante tiempo, voy a posicionar aquí mismo y luego vamos a seguir en el siguiente video. Por lo que espero que hayas disfrutado. Este es un tema un poco aburrido, lo sé, pero al menos aprendiste lo que es un patrón singleton. Entendiste por qué la cámara no iba. Estoy tratando de explicar lo más posible a pesar de que es muy aburrido. Pero quiero que entiendas cómo se siente todo. Al principio, yo también estaba confundida, pero mientras pasaba por todo, entendí las cosas y quería pasárselas a ti. Entonces con eso fuera del camino, gracias por mirar y nos vemos en el siguiente. 103. Tweaking final: Bienvenido de nuevo Mis desarrolladores de juegos favoritos al último video y este vamos a arreglar todos estos pequeños detalles relacionados con la pantalla de la interfaz de usuario, relacionados con el Bitcoin viniendo de nivel a nivel y todo de las otras cosas divertidas. Entonces, no perdamos más tiempo y empecemos. Ah, está bien, así que ahora tenemos que arreglar el problema de que nuestros enemigos no encuentren al jugador. También queremos asegurarnos de que tengamos al gestor de juegos como patrón singleton porque obviamente queremos mantener nuestros bitcoins yendo de nivel a nivel. Entonces para eso, voy a emitir un reto, y tu reto es encontrar al jugador y encontrarlo en. Por lo que antes que nada, asegúrate de que los enemigos sigan buscando al jugador hasta que los encontremos. Por lo que esto será necesario ser un bucle while dentro de la actualización y el controlador enemigo. Ese es un él pequeño. Queremos mantener nuestros Bitcoins de escena en escena. Así que haz del manager del juego un patrón de singleton igual que hicimos con la capa. Asegúrate de hacer lo mismo para el gestor de juegos. ¿ Aparece en la jerarquía y el residente destruye? Así que recuerda cuando hicimos que la capa de aplicaciones Aidan destruya, apareció en la jerarquía bajo una cierta pestaña, que se hace onDestroy. Aparecerá también el gerente del juego? Entonces pruébalo porque necesitamos asegurarnos de que el manager del juego no sea hijo de los gerentes. Por lo que la única manera de asegurarse de que no sea destruido es asegurarse de que no sea hijo de todo el juego de managers objetos tan bien que la información. Pausa el video ahora mismo y ve a hacerlo solo. Oh, bien, bienvenido de nuevo. Entonces lo primero primero que vamos a entrar al controlador enemigo. Desplazemos hacia arriba para actualizar y una actualización aquí. Voy a comprobar que mientras el jugador a perseguir es igual a nulo, vamos a seguir adelante y conseguir que el jugador persiga o establezca dipolar para perseguir para ser encontrar objetos de tipo. Objeto cinco, perdón. Y va a ser el controlador del jugador. Y va a ser v dot transform porque declarado a perseguir, como recordamos, es un transporte. Por lo que accedemos a la transformación después de refinar el objeto que tiene el controlador del jugador sobre él. Entonces esto debería funcionar, pero mientras estemos aquí, vamos al dónde está el manager del juego? Desplácese hacia arriba por la instancia. Y aquí dentro voy a encontrar al controlador de jugador. Y juega ahora, vale, Así que controlador de jugador, está justo aquí. Voy a copiar exacto mismo código y pegarlo aquí y eliminar esta instancia. Guarde eso. Por lo que ahora tenemos un patrón de singleton. Verificamos si hay una instancia, la destruimos. Si la instancia es diferente a nula, destruimos y establecemos una nueva instancia. Ahorramos todo eso. Volvamos a nuestro juego y veamos qué tenemos que hacer aquí dentro. Entonces lo primero que tenemos que hacer es abrir aquí al gestor de juegos, y tenemos que sacar al gerente de juego de aquí. No, no me va a permitir que veamos en el prefabricado si ya tengo a los gestores de ganancia. Entonces Manager, el gestor de juegos. Entonces voy a abrir los gerentes y voy a quitar al manager del juego. Por lo que esto eliminará al gestor de juegos de todas las demás escenas. Y voy a asegurarme de que sólo tengo al gerente de juego aquí. Entonces ningún otro directivo, uno, lo siento por eso. Necesitamos al gestor de juegos sólo en la escena. Entonces ahora tenemos al gestor de juegos, tenemos 0 pero monedas. Guardemos todo eso. Haz esto solo un poco más grande. Vamos a ejecutarlo de nuevo. Y veamos qué pasa. Entonces recogemos el arma, se convierte en monedas de un poco, nos golpean una vez. Vayamos al siguiente nivel. A ver, vamos al siguiente nivel. Y ahí vamos, Estamos en el nuevo nivel y podemos ver que por alguna razón, ¿tenemos a los enemigos siguiendo? No, no están siguiendo. Algo anda mal. Y como puedes ver, obviamente no se han actualizado los bitcoins y la salud. Y eso es porque si miramos al jugador, si miramos al no destruir al gestor del juego, los Bitcoins tampoco han sido. Entonces si miramos al jugador, notarás que su salud es de 490, pero no se está enviando aquí mismo. ¿ Por qué? Porque sólo actualizamos, déjame ver, y el gestor de salud del jugador, solo actualizamos la salud del jugador una vez que nos golpean y no cuando realmente empezamos. Entonces tendremos que arreglar eso también. Pero antes de que hagamos eso, hay algo que no está del todo bien con el MS hacia. Entonces voy a pausar el juego aquí mismo y veamos cuál es el problema. Para que veas que cada uno de nuestros enemigos no está siendo capaz de encontrarnos. Entonces voy a hacer doble clic. Y el problema es con el jugador Chase justo aquí. Entonces veamos qué vamos a hacer al respecto. Ah, vale, así que pasé por un par de cosas y finalmente encontré la solución. Entonces el problema aquí dentro fue, y es muy simple, solo tenemos que mover esto mientras que bucle aquí arriba sobre todo esto. Y tal vez quisiéramos extraer esto en algún tipo de método. Entonces voy a llamar a este método encontrar jugador o asegurarme de que tengamos al jugador. Entonces, ¿por qué lo movemos aquí arriba? Pues bien, porque si tratamos de llamar al movimiento hacia, guarde eso. Entonces, ¿cuál es todo el problema en todo el problema y todo lo que está causando esto es cuando vamos a un nuevo nivel antes de que la capa, que es la que no se destruye, llegue al siguiente nivel. Los enemigos ya tienen un objetivo, que fue el jugador anterior. Entonces una vez que lo destruimos, ya no podemos encontrarlo. Entonces si intentamos eso, digamos que los queríamos al nuevo nivel, tenemos a todos los jugadores persecución fijados aquí mismo en el inicio y luego lo destruimos. Y luego tratamos de perseguir al jugador o avanzar hacia el jugador, y de ahí venía el error. Entonces aquí mismo estamos tratando de perseguir al jugador. Y una vez que hay un error aquí, nada bajo esto funciona. detiene la actualización, todo se detiene. Entonces por eso necesitamos estar teniendo al jugador hallador. Lo primero que hacemos una actualización antes de seguir adelante, mientras que quizá sólo necesitemos la declaración if aquí, creo, pero vamos a mantenerla también, acaso toma un poco de cinco. Entonces con eso fuera del camino, si ahora corremos el juego, deberíamos ver eso cuando vayamos al siguiente nivel. Ahí vamos, no tenemos errores. Abrimos esto y ahí vamos. Los cobardes enemigos están huyendo y están disparando contra ellos. Entonces lo que eso fuera del camino, lo siguiente que tenemos que hacer es obviamente que necesitamos actualizar la interfaz de usuario del jugador. Entonces voy a entrar en el Administrador de UI. Paramos el juego. Sí, lo hicimos. De vuelta en el Administrador de UI. Aquí voy a crear un método que va a ser la interfaz de usuario de la capa de actualización del vacío público. Y vamos a hacer un par de cosas aquí dentro. Entonces lo primero que vamos a hacer es que vamos a crear un manejador de salud de jugador. Salud de capa profunda coloreada, y va a ser igual a nula. Y verás por qué en tan solo un poco, porque vamos a crear un loop while que comprobará la salud del jugador. Y si bien es nula, vamos a seguir buscando la salud del jugador sea igual para encontrar objetos de tipo. Y va a ser el manejador de la salud de la capa. Y una vez que encontremos eso, podemos salir del bucle while. Y luego aquí dentro vamos a seguir adelante y en primer lugar conseguir el valor máximo del slider de salud dot. Y va a ser igual al punto de salud del jugador obtener valor máximo. Por lo que obviamente necesitamos crear algún tipo de forma de acceder al máximo fuera en el manejador de salud del jugador. ¿ Qué tenemos cualquier año, Ok, entonces son de campo serializado. Vamos a seguir adelante y crear un público y obtener la salud de capa max. Y sólo vamos a devolver V-max. No lo han hecho. Ya tenemos uno de esos. No, no lo hacemos. Sigamos adelante y creemos la buena capa, salud actual también, siempre y cuando estemos aquí. Entonces la salud actual y ¿qué más necesitamos de aquí? Podríamos necesitar el, Nope, creo que eso es todo lo que necesitamos. Por lo que ahora podemos conseguir la máxima salud. Y luego tendremos que establecer el valor de punto del deslizador de salud para que sea igual al punto de salud de la capa obtener la salud actual. Guarde eso. ¿ Qué más necesitamos hacer? También necesitamos encontrar la manera de actualizar nuestro texto. Entonces voy a decir el, ¿cómo se llamaba? El texto de Salud, ¿se llamaba el paso de tecnología de la salud? Ahí vamos, y es público también. Genial. Así que desplázate aquí abajo. Por lo que el texto de punto flexionado de salud, salud será igual al punto de salud del jugador ponerse actual. El estado de salud actual. Y es más la rebanada. Y fue la máxima salud. Así salud del jugador punto GetMax auto. Ahí vamos. Entonces todo está listo, pero voy a hacer algo aquí dentro. Y así es, un registro de puntos de depuración. Y yo sólo quiero hacer un seguimiento de los mismos actos Salud. Y déjame sólo conseguir este. Y esto tendrá sentido en tan solo un poco. Así que molesto a este de aquí. Y ya verás por qué en tan solo un poco. Entonces voy a guardar todo eso. Voy a volver a Unidad. Yo voy a correr el juego. Voy a escoger departamento se convierte en los Bitcoins. Hazte atropellado. Por favor, sácalo. De acuerdo, Así que ahí vamos. Pasa por el mundo, pasa por el portal, pasa al siguiente nivel, y puedes ver que aquí está 100, aunque si presiono sobre la capa, es para 90. Entonces, ¿cuál crees que es el problema? Sólo te voy a dar un par de segundos para pensarlo. El problema fue y te diré cuál es el problema. En primer lugar, necesitamos actualizar la salud de los jugadores. Así que actualiza la salud de la capa o interfaz de usuario del jugador. Ahora sigamos adelante y probémoslo. A lo mejor lo viste en el depurador. Acabo de notar que ni siquiera les llamamos métodos. Entonces ahí lo tienes. Depurar funciona, voy a conseguirlo. Pasa por la larval, pasa por el portal. ¿ Y cuál es la salud? Por lo que la salud máxima es de 50 y la salud actual es de 0. ¿ Cuál crees que es el problema? Bueno, el problema es justo como dijimos en el video anterior, ya teníamos un jugador en la escena y ese jugador fue destruido. Por lo que una vez que queremos poner este listón de casa y el impuesto, se están estableciendo en base al viejo jugador. Entonces para poner al nuevo jugador, ¿qué crees que deberíamos hacer? Si bien hay muchas soluciones a este problema, pero encontré que la mejor es tener sólo una forma sencilla de convertir esto de una voz pública a un arte público y numerador. Y entonces vamos a ceder retorno. Nuevo. Espere cuatro segundos. Y sólo esperemos 0.1 y será el momento mientras el, no lo olvides, tenemos una imagen desmayada que hemos apagado sólo por el bien de acelerar el proceso de pruebas. Entonces ahora lo que sucederá es que esperaremos 0.1 segundos y durante ese tiempo el jugador mayor será destruido, se encontrará al nuevo jugador, e inmediatamente obtendremos nuestra actualización. Entonces aquí, en lugar de actualizar jugador, voy a empezar una co-rutina, que va a ser la actualización de la capa de salud tú. Yo guardo eso de nuevo en nuestro juego. Corrimos el juego. Nosotros lo conseguimos. Salimos, pasamos por éste, y ahí vamos. Podemos ver que nuestra salud se ha actualizado y es muy fluida. Entonces ahí vamos, Podemos ver que todo está funcionando perfectamente bien. Y en primer lugar, también tenemos los Bitcoins, por lo que necesitamos arreglar eso también aquí. Y lo que también queremos hacer es asegurarnos de que engendramos en la posición adecuada. Por lo que actualmente, responde justo al lado del portal, lo cual no es útil. Nuestro objetivo es llegar a ese portal y no sólo engendrar ahí dentro. Entonces voy a, antes que nada aquí dentro, Vamos a ver qué tenemos que hacer. Entonces tenemos que hacer tenemos el texto Bitcoin, los efectos BTC. Ahí vamos. Por lo que BTC texto, el texto es igual a encontrar o no, tenemos al gestor del juego, el on instancia. Get, pero continous. Vamos, creo que éste devuelve los bitcoins todos saben esto como Bitcoin. Entonces si voy al gestor de juegos para tener, conseguir Bitcoin actual, para que pueda conseguir Bitcoin actual, guarde eso. Y esto debería estar funcionando excepto porque no es porque no se puede convertir implícitamente el tipo y dos cadenas. Entonces las dos cuerdas, esto convierte cualquier cosa play string, guarde eso. Vamos a probar esto un poco del juego. Y ahora recogemos una moneda y vamos al siguiente nivel. De acuerdo, entonces ahora deberíamos ver que tenemos aquí diez, allá vamos. Lleva tiempo, pero no se notará, sobre todo una vez que tengamos la imagen del destino, pero ahora necesitamos engendrar al jugador en un momento determinado. Entonces voy a entrar en el nivel manager y voy a hacer esto en el nivel manager. Y me voy a desplazar por aquí. Y voy a crear un nuevo método. Entonces aquí abajo vamos a crear un nuevo método el cual es un vacío público y su capa spot y punto y jugador de entrada en punto, vamos a conseguir la instancia de punto controlador jugador, punto no instanciar, punto bailar, tocar un controlador de bala. De acuerdo, Entonces instancia de controlador de capas. Y vamos a usar la posición de transformación de puntos y va a ser igual a algún tipo de punto de desove, la posición. Y ahora voy a copiar esto y crear un campo serializado aquí arriba. De la transformación y va a ser el punto de desove. Desplácese hacia abajo y vea cómo se ve eso. Sí, ahí vamos. Entonces lo que pasa aquí es que ponemos al jugador en el punto desde el inicio. ¿ Por dónde empieza? Aquí vamos a poner punto de capa. Ahorramos todo eso. Y lo que pasa aquí es en cuanto empieza el manager de nivel, recuerda que no es un destructor de tonelada, no es un solo combate en el jugador controlador punto instancia posición se pone de inmediato en el punto spot. Por lo que de vuelta aquí, ya tenemos estos puntos de palma. Somos puntos de desove 1. Entonces voy a crear una nueva aquí y va a ser capa sobre engendro. Y dónde está y la escena. A ver, y va a ser por aquí. Ahorre que si vamos a otro nivel, en realidad podemos seguir adelante y anular esto. Entonces en el manager anula y puedes elegir ¿qué quieres anular? Ten en cuenta que no queremos sobrescribir los puntos de desove porque para cada nivel habrá un punto de desove diferente. Por lo que voy a aplicar anular el gerente de nivel del encargado prefab, tal vez también aplicar sobreescribir preferir manager. Ahí vamos. Y aquí el jugador engendran puntos. Sigamos adelante y también aplicamos el prefabricado a todo el prefiero. Está bien, genial. Así que asegúrate de no aplicar. Todo, guarde todo eso. Y ahora voy a correr el juego. Voy a entrar a un nuevo nivel. Y deberíamos. No, no lo hicimos. Eso es porque nosotros oh, bien. Está bien. Está bien. Entonces el problema está aquí y 11 manager, ¿cuál es el problema aquí? Si nos desplazamos hasta ellos, generamos punto y el gestor de nivel. ¿ Cuál parece ser el problema? También, ahí vamos, Está aquí. Tenemos que configurarlo. Y ahora tenemos que ir a los directivos de nivel y aplicar los cambios a. Entonces ahora cuando corremos, deberíamos ver si vamos al siguiente nivel. No, sigue sin funcionar. Entonces, ¿cuál es el problema? No se ha asignado la variable. Entonces creo que hay algo que no se establece rápidamente justo aquí. Por lo que aplica al gestor de nivel prefabricado. ¿ Y cuál más es el problema? Entonces creo que en el otro nivel, el punto de desove no se está estableciendo correctamente. Entonces estoy tratando de aplicar los cambios. A lo mejor esta vez va a funcionar. No, todavía no lo hace porque si vamos al manager de nivel del manager, punto de engendro jugador en el manager de nivel, ni siquiera está establecido. Entonces, ¿qué opinas de un problema aquí dentro es, creo que cometimos algún tipo de error porque todo aquí dentro se ha restablecido. Por lo que se puede ver aquí mismo que estos no se están poniendo. Entonces voy a aplicar todo por ahora. Esta no es la mejor idea, pero no nos preocupemos por eso por ahora. Voy a ir al siguiente nivel y asegurarme de que finalmente engendemos en el punto adecuado. Pero ahora mismo tendremos también desove. Y aquí, como pueden ver, pero no queremos eso porque cada nivel tendrá sus propios enemigos, tendrá sus propios niveles, lo siento, olas, etcétera y así sucesivamente. Pero como puedes ver, todo funciona. El único problema aún en nuestro juego es el hecho de que cuando vamos a la puerta, esto aparece esa primera vez y cuando lo abrimos, cuando nos vamos, no va. Es decir, las palabras no vuelven a aparecer y la puerta no se cierra de nuevo. ¿ Por qué? Porque en la habitación que has creado y esto fue un error de mi parte. Apagamos la puerta. Entonces apagamos la puerta, pero la pantalla de texto siempre está en la puerta. Entonces te voy a dejar esto como un reto final. Hacer fuera del ámbito de las anotaciones. Todo lo que necesitas hacer es quitar este texto que se muestra de la puerta y ponerlo en el portal justo aquí, luego moverlo aquí mismo. Por lo que el Lienzo tendrá que ser golpeado en la puerta, tendrá que estar en el portal y tendrás que apagar la puerta en función del texto, habrá un poco de cambios en el código. Pero creo que en este punto, te has convertido en un buen desarrollador de juegos a un, tan alto nivel con todos los videos largos y largos que te he enseñado a través. Espero que hayan disfrutado de este video. Espero que hayan disfrutado todo este curso. Espero que hayas aprendido mucho. Espero que disfruten el viaje y el proceso. Y espero que no estuvieras demasiado enojada cuando cometí errores. Espero que te guste la transparencia que te estoy mostrando. Y si no lo has hecho ya, claro, déjame una reseña, asegúrate de unirte a la discordia y te veré quizá no en el siguiente video porque éste, este es el último. A lo mejor algún día en el futuro, seguiremos en contacto. No se preocupe por eso. Muchísimas gracias por ver. Adiós.