Cómo hacer un juego de Clicker 2D - Unreal Engine 5 Blueprints | Pixel Helmet | Skillshare
Buscar

Velocidad de reproducción


1.0x


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

Cómo hacer un juego de Clicker 2D - Unreal Engine 5 Blueprints

teacher avatar Pixel Helmet, Game Developer & Publisher

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.

      1.01 Introducción

      1:31

    • 2.

      1.02 Descarga de Unreal Engine 5

      1:27

    • 3.

      1.03 Crea un nuevo proyecto

      3:19

    • 4.

      1.04 Descripción de Unreal Engine 5

      21:34

    • 5.

      2.01 Introducción al juego

      3:56

    • 6.

      2.02 Crea un nuevo nivel

      2:02

    • 7.

      2.03 Importación del medio ambiente

      3:30

    • 8.

      2.04 Crea un conjunto de azulejos

      4:01

    • 9.

      2.05 Crea un mapa de mosaico

      5:08

    • 10.

      2.06 Diseña un mapa temporal

      6:07

    • 11.

      2.07 Coloca el mapa en mosaico

      1:36

    • 12.

      2.08 Volumen de posproceso

      11:13

    • 13.

      2.09 Ajusta la configuración del proyecto

      4:32

    • 14.

      3.01 Modo de juego y controlador de jugador

      8:11

    • 15.

      3.02 Añade la cámara del jugador

      8:24

    • 16.

      3.03 Extrae a los Sprites enemigos

      7:35

    • 17.

      3.04 Crea Flipbooks

      6:30

    • 18.

      3.05 Clase de Blueprint para padres contra niños

      7:05

    • 19.

      3.06 Finaliza la configuración de la clase del enemigo

      9:09

    • 20.

      3.07 Aplicar la cámara del jugador por defecto

      3:04

    • 21.

      4.01 Crea el punto de aparición del enemigo

      2:52

    • 22.

      4.02 Aparición de actor de clase

      9:21

    • 23.

      4.03 Comunicación de planos - Casting

      3:25

    • 24.

      4.04 Comunicación con Blueprint: interfaces

      9:47

    • 25.

      4.05 Consigue los valores de los puntos de aparición

      8:49

    • 26.

      4.06 Introducción a las estructuras

      2:59

    • 27.

      4.07 Información de nivel y estructuras de enemigo

      5:28

    • 28.

      4.08 Crea el tipo de enemigo Enum

      3:21

    • 29.

      4.09 Introducción a las tablas de datos

      2:46

    • 30.

      4.10 Tablas de datos de información de nivel y de enemigo

      10:43

    • 31.

      4.11 Introducción a las bibliotecas

      3:02

    • 32.

      4.12 Crea las funciones de la biblioteca

      7:38

    • 33.

      4.13 Añade los nombres de los enemigos

      3:16

    • 34.

      4.14 Descubrimiento del enemigo

      4:35

    • 35.

      5.01 Diseña la interfaz de usuario de nombres enemigos

      7:05

    • 36.

      5.02 Añade una fuente personalizada

      5:04

    • 37.

      5.03 Añade la interfaz de usuario de nombres de enemigo

      2:21

    • 38.

      5.04 Programación de la interfaz de usuario de información para enemigos

      9:43

    • 39.

      5.05 Aplicar daño al enemigo

      7:39

    • 40.

      5.06 Cálculo de la salud

      3:45

    • 41.

      5.07 Diseña la barra de la salud

      5:46

    • 42.

      5.08 Añade la barra saludable

      1:41

    • 43.

      5.09 Actualiza la barra de salud

      8:11

    • 44.

      5.10 Flipbook de Enemy Hit

      4:17

    • 45.

      5.11 Muerte de los enemigos

      4:56

    • 46.

      5.12 Incrementar el nivel

      4:38

    • 47.

      5.13 Arreglo de las animaciones de la muerte del enemigo

      7:43

    • 48.

      5.14 Clic en Hit VFX

      8:46

    • 49.

      5.15 Diseña la interfaz de usuario de texto flotante

      2:46

    • 50.

      5.16 Animación de texto flotante

      3:48

    • 51.

      5.17 Genera el texto flotante

      6:35

    • 52.

      5.18 Actualización de la visualización de texto flotante

      6:08

    • 53.

      5.19 Reproduce la animación de texto flotante

      4:56

    • 54.

      6.01 Diseña la interfaz de usuario del temporizador

      4:37

    • 55.

      6.02 Visualización de la interfaz de usuario principal

      8:27

    • 56.

      6.03 Configuración del temporizador de ronda

      8:01

    • 57.

      6.04 Actualización del temporizador principal de la interfaz de usuario

      3:43

    • 58.

      6.05 Restaura la salud al finalizar el temporizador

      6:16

    • 59.

      6.06 Restablecimiento del temporizador en la muerte de los enemigos

      2:16

    • 60.

      7.01 Diseña la interfaz de usuario de la moneda

      7:27

    • 61.

      7.02 Animación de la interfaz de usuario de moneda

      1:24

    • 62.

      7.03 Cantidad de monedas variable

      4:10

    • 63.

      7.04 Añade monedas a los enemigos

      1:57

    • 64.

      7.05 Actualiza la visualización de las monedas

      4:32

    • 65.

      8.01 Agregar el cuadro de desplazamiento de la tienda

      2:05

    • 66.

      8.02 Diseña la tarjeta de artículo de la tienda

      18:35

    • 67.

      8.03 Información del artículo: estructura y tabla de datos

      13:13

    • 68.

      8.04 Crea tarjetas de artículos de la tienda

      5:32

    • 69.

      8.05 Mostrar las tarjetas de artículos de la tienda

      4:31

    • 70.

      8.06 Dale a cada tarjeta de artículo la información correcta

      2:32

    • 71.

      8.07 Cómo mostrar la información de la tarjeta de artículo correcta

      6:04

    • 72.

      8.08 Cambia el color de un texto

      8:21

    • 73.

      8.09 Comprueba si el jugador tiene suficientes monedas

      4:43

    • 74.

      8.10 Compra el artículo

      3:58

    • 75.

      8.11 Actualización de la cantidad de artículos comprados

      8:15

    • 76.

      8.12 Crea puntos de aparición de objetos

      3:03

    • 77.

      8.13 Genera el artículo comprado

      6:06

    • 78.

      8.14 Lógica de aparición

      12:31

    • 79.

      8.15 Lógica de aparición - Intermedio

      9:07

    • 80.

      8.16 Lógica de aparición - Avanzado

      17:35

    • 81.

      8.17 Estructura de costos del artículo y tabla de datos

      7:37

    • 82.

      8.18 Obtén la función de costo de un artículo

      6:57

    • 83.

      8.19 Aumenta el costo del artículo

      6:25

    • 84.

      8.20 Diseña el widget de la descripción técnica del artículo

      6:16

    • 85.

      8.21 Actualización de la información sobre herramientas

      6:25

    • 86.

      8.22 Visualización del widget de información útil

      8:21

    • 87.

      9.01 Aplicación automática de daños

      8:19

    • 88.

      9.02 Cálculo del DPS total

      5:06

    • 89.

      9.03 Aplicar la cantidad correcta de daño

      4:55

    • 90.

      9.04 Arreglo del efecto de golpe

      5:55

    • 91.

      10.01 Diseña la pantalla de nivel

      3:25

    • 92.

      10.02 Diseña la tarjeta de nivel

      3:19

    • 93.

      10.03 Establece el nivel

      1:36

    • 94.

      10.04 Desbloquea el nuevo nivel

      4:28

    • 95.

      10.05 Establece el nivel actual

      3:51

    • 96.

      10.06 Prevención de la aparición automática de enemigos

      7:31

    • 97.

      10.07 Agrega iconos de calaveras a los jefes

      8:07

    • 98.

      10.08 Añade iconos a las tarjetas de la tienda

      5:11

    • 99.

      11.01 Agrega el Cursor de ratón a la tienda

      7:27

    • 100.

      11.02 Añade el punto de aparición del cursor del ratón

      2:56

    • 101.

      11.03 Visualización correcta del texto de daños

      5:50

    • 102.

      11.04 Mejora el daño del cursor del ratón

      4:42

    • 103.

      11.05 Diseña el widget del cursor del ratón

      7:27

    • 104.

      11.06 Agrega la entrada de clic del ratón

      7:09

    • 105.

      12.01 Diseña el mapa final

      6:02

    • 106.

      12.02 Preparar las señales de sonido

      7:25

    • 107.

      12.03 Agrega SFX a la interfaz de usuario

      7:31

    • 108.

      12.04 Agrega SFX al enemigo

      5:01

    • 109.

      12.05 Añade música

      0:49

    • 110.

      13.01 Diseña la interfaz de usuario de Ascension

      4:10

    • 111.

      13.02 Diseña el Popup de Ascensión

      2:42

    • 112.

      13.03 Abrir el Popup de Ascensión

      4:07

    • 113.

      13.04 Configuración del evento de Restart Game

      7:47

    • 114.

      13.05 Mostrando la ascensión al final de la partida

      14:26

    • 115.

      13.06 Crea la estructura de Ascensión

      4:19

    • 116.

      13.07 Añade el multiplicador de ascensión

      10:00

    • 117.

      13.08 Visualiza el multiplicador de ascensión

      6:46

    • 118.

      14.01 Limpia el proyecto

      7:25

    • 119.

      14.02 Empaquetado del juego

      13:12

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

85

Estudiantes

--

Proyectos

Acerca de esta clase

Cómo hacer un juego clicker: comienza tu viaje en 2D.

Este curso de Unreal Engine te enseñará a crear un juego de Clicker en Unreal Engine 5 (UE5) desde cero, similar a los juegos icónicos Clicker Heroes y Cookie Clicker. Aprenderás los conceptos básicos del desarrollo de juegos 2D en UE5, así como temas más avanzados como la mecánica de juegos y el diseño de la interfaz de usuario.

No necesitas experiencia previa en desarrollo de juegos para tomar este curso; lo analizaremos paso a paso. Tanto si eres un principiante como si eres un desarrollador experimentado de Unreal Engine, este curso tiene algo para todos los que quieran aprender a crear un juego clicker en UE5.

El objetivo principal de este curso es darte confianza para crear juegos de Unreal 2D. Te permitirá ganar dinero y trabajar como desarrollador de juegos independiente desde casa. De hecho, llevo un par de años desarrollando juegos de UE5 a tiempo completo, creando juegos, diseñando cursos y vendiendo componentes de juegos a través del mercado de Unreal Engine.

¡Empieza hoy mismo tu viaje de desarrollo de juegos en 2D para aprender a hacer un juego de Clicker!

Crea juegos sin programar.

El blueprint de Unreal Engine es el poderoso lenguaje de scripting de Unreal Engine que se usa en UE5. Te permite crear tu juego de principio a fin sin escribir una sola línea de código. Eso significa que puedes crear tu juego fácilmente incluso si eres principiante, artista o diseñador sin experiencia en programación.

Este curso no requiere ninguna programación ni experiencia en Unreal Engine. Repasaremos los conceptos básicos del plan de Unreal Engine y avanzaremos lentamente hacia el desarrollo de mecánicas de juego más complejas. Aprenderás a desarrollar juegos de principio a fin.

Puedes comenzar este curso como principiante, ya que aprenderás paso a paso cómo crear un juego de clicker desde cero.

¿Puede Unreal Engine hacer juegos 2D?

UE5 es muy conocido por sus impresionantes gráficos 3D. Sin embargo, puede sorprender a algunos que también sea posible crear juegos 2D en Unreal Engine. Como persona que ha creado numerosos juegos 2D con Unreal Engine, lo disfruto mucho y lo recomiendo ampliamente.

Estos son los beneficios de crear juegos 2D en Unreal Engine 5:

  1. Puedes usar Unreal Engine blueprint para codificar juegos 2D, que también usas para los juegos 3D. Eso significa que no tendrás que aprender un nuevo idioma si cambias de desarrollo de juegos 3D a 2D.
  2. Puedes dar a tu juego 2D un aspecto 3D único al integrar la iluminación 3D y los rayos de Dios.
  3. Puedes hacer un juego 2D en un entorno 3D.
  4. Crear un nivel 2D y agregar assets y personajes es simple y se puede hacer en minutos.
  5. No tienes que aprender nada nuevo cuando cambias de juegos 2D a 3D porque usas las mismas herramientas del motor.

Mientras aprendes a hacer un juego de Clicker, verás lo divertido y fácil que es hacer juegos de Unreal 2D. Supongamos que te interesa más el multijugador de Unreal Engine 5. En ese caso, puedes ver mi curso multijugador sobre cómo hacer un juego de plataformas.

Aprenderás todos los aspectos de 2D en UE5, no solo los juegos de clicker.

Este curso te enseñará a usar Unreal Engine para juegos 2D en general, aunque el objetivo principal es crear un juego para hacer clic. A lo largo del curso, aprenderás a trabajar con varios assets 2D, como sprites, flipbooks (assets animados 2D), personajes y entornos 2D, entre otras cosas.

Cuando se trabaja con UE5, es más crucial centrarse en las herramientas que se usan durante el desarrollo de juegos que en cómo hacer un juego clicker. Al dominar las herramientas que se enseñan en este curso, puedes crear cualquier juego 2D con UE5.

Aprenderás todo lo que necesitas saber sobre los juegos 2D y con clicker.

Mientras aprendes a hacer un juego clicker, el curso cubre ampliamente varios aspectos de los juegos 2D en Unreal Engine 5. En este curso, aprenderás lo siguiente:

  • Cómo hacer un videojuego desde cero con las características de Unreal 2D.
  • Cómo crear conjuntos de mosaicos y mapas de mosaico para diseñar tu nivel 2D.
  • Cómo crear sprites y flipbooks para assets 2D estáticos y animados.
  • Aprenderás a engendrar, dañar y matar a los enemigos con el Cursor de ratón
  • Crearás un mecánico de clic automático para infligir daño automáticamente
  • Aprenderás a crear texto de combate flotante cuando hagas daño
  • Aprenderás a crear una tienda de artículos con artículos que se puedan generar.
  • Aprenderás a agregar capacidad de rejugabilidad (ascensión) al juego
  • Aprenderás a agregar múltiples niveles al juego que puedes cambiar.

También aprenderás otros aspectos del desarrollo de juegos en 2D, como agregar interfaces de usuario en 2D, efectos visuales y efectos de sonido. Al completar este curso, puedes diseñar tu propio videojuego con confianza.

Toma este curso y obtén la certificación.

Al completar el curso sobre cómo hacer un juego clicker, obtendrás una certificación de Unreal Engine. Puedes usarlo para fortalecer tu portafolio como desarrollador de juegos independiente o usarlo cuando solicites trabajos de desarrollo de juegos. La certificación de Unreal Engine se puede descargar y guardar localmente y es válida por tiempo indefinido.

¿Qué me hace estar calificada para enseñarte?

Soy un desarrollador de juegos experimentado con nueve años de experiencia. Para resumir mi trabajo sin aburrirte:

  • He lanzado un juego de Steam que dirigí de principio a fin con un equipo de 8.
  • He creado 11 cursos de desarrollo de juegos con más de 40.000 estudiantes y una calificación media de 4,8 o más de 5 estrellas.
  • Actualmente estoy desarrollando Farmtale 2 en solitario de principio a fin.
  • También trabajo como freelancer en varios proyectos de juegos, especializados en programación, iluminación, optimización de juegos y más.

Me apasiona mucho el desarrollo de juegos y lo he convertido en mi trabajo de tiempo completo. Me encantaría enseñarte todo lo que necesitas sobre Unreal Engine 5 con buenas prácticas de desarrollo de juegos y mantenerte actualizado con la información más reciente.

Si quieres aprender a publicar un juego en Steam, echa un vistazo al curso que he lanzado sobre el tema.

Únete a nuestra comunidad de apoyo.

El desarrollo de juegos en Unreal Engine puede ser una experiencia frustrante a veces. Por ejemplo, es posible que necesites buscar una casilla sin marcar en alguna parte, lo que te hará sentir perdido durante horas. Alternativamente, podrías necesitar apoyo moral e ideas de otros desarrolladores de juegos como tú. Por eso, ofrecemos soporte en vivo las 24 horas del día, los 7 días de la semana, al escribir en la sección de preguntas y respuestas de cualquiera de los cursos. Siempre estamos aquí para ayudarte cuando lo necesites.

Comencemos sin demora con "Cómo hacer un juego de Clicker". Estoy ansioso por verte en la primera lección. Así que, comencemos y ¡brinde un emocionante viaje de aprendizaje!

Conoce a tu profesor(a)

Teacher Profile Image

Pixel Helmet

Game Developer & Publisher

Profesor(a)

Pixel Helmet is a video game developer and publisher based in Denmark. We have recently released our first game Farmtale on the Steam platform.

We decided to get on Skillshare to create high-quality courses and share our knowledge with the game development community. Learning can be tedious at times and we aim to create a fun learning experience.

We offer to create courses within Modeling, Texturing, Unreal Engine, Blueprints, C++, Game Design, and much more. If you need any help during a course, please let us know through Skillshare or connect with us on Discord, Twitter, or LinkedIn.

Ver perfil completo

Level: All Levels

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. 1.01 Introducción: En este curso vamos a aprender a llegar Idle Clicker usando planos en Honorable Engine five recreando un juego similar a héroes Clicker y Cookie Clicker A. Este curso contiene todo lo que necesitas saber para comenzar con desarrollo de dos juegos D inactivo clicker en Honorable engine five, incluyendo cómo crear conjuntos de fichas y mapas de azulejos Cómo agregar dos activos D estáticos así como animados. Cómo generar daño y matar enemigos usando el cursor del ratón Cómo crear una tienda de artículos con artículos que se pueden generar. Cómo crear un mecánico de clic automático para inflige daño automáticamente a medida que compras artículos en la tienda de artículos. Cómo agregar múltiples niveles al juego, entre los que puedes alternar. Cómo mostrar texto de combate flotante, cómo crear dos UI de DUI y generación mundial. Cómo crear consejos sobre herramientas de interfaz de usuario. Y finalmente, cómo agregar la mecánica de ascensión para que la rejugabilidad inflija más daño a medida que asciendes También te proporcionaré el proyecto terminado para que puedas inspeccionarlo como desees mientras sigues el curso. Al final de este curso, podrás crear con confianza tu propio juego de dos D clicker desde cero usando Real Engine Espero que hoy se unan a mí en este curso. Y recuerda que siempre estoy aquí para apoyarte durante todo el curso y espero verte pronto. 2. 1.02 Descarga de Unreal Engine 5: Para instalar Unreal Engine five, primero tienes que ir a epic games.com. Así que ve por ahí, y encontrarás un botón azul de descarga en la parte superior derecha. Adelante y presiona el botón de descarga. Y aquí obtendrás el instalador para el lanzador de Epic Games. Así que adelante y ejecuta el instalador. Y una vez que hayas instalado el slauncher de Epic Games, sigue adelante e inicia sesión Así que solo voy a escribir mi correo electrónico y mi contraseña, e iniciaré sesión en el lanzador. Una vez que hayas iniciado sesión en el lanzador, así es como se verá. Así que adelante y presiona la pestaña del motor Unreal. Y dentro de esta pestaña, probablemente estarás en la nueva sección. Adelante y da clic en Biblioteca. Y dentro de la biblioteca, puedes ver todas las versiones reales del motor que tienes actualmente. Pero si eres nuevo aquí, probablemente no tengas nada aquí, y es posible que veas una caja gris donde puedas descargar motor real. Y si no lo ves, siempre puedes dar click en el más aquí arriba, y te dará esta caja gris y podrás dar click en el número para seleccionar qué versión del motor Unreal quieres instalar Ahora, voy a usar el último Unreal Engine 5.3. Pero si estás viendo este curso en el futuro, si tienes 5.4 o 5.35 o lo que sea, aún puedes seguir este curso No hay un gran cambio. Así que sigamos adelante y saltemos a Unreal Engine 5.3. Voy a seguir adelante y actualizar, y voy a poner en marcha el motor. 3. 1.03 Crea un nuevo proyecto: Cuando inicies Unreal Engine, esta ventana aparecerá por ti para que puedas ver tus proyectos recientes, y también puedes ver algunas otras pestañas Esta pestaña estará vacía si no tienes ningún proyecto previamente, pero puedes abrirlos aquí si estás trabajando en un proyecto Ahora mismo deseamos hacer un juego. Entonces voy a ir a la pestaña de Juegos. Pero como puedes ver en Unreal Engine, no se trata sólo de juegos También se puede, por ejemplo, arquitectura automotriz y así sucesivamente. Pasemos a la pestaña de Juegos por ahora. Y dentro de la pestaña del juego, ves muchas plantillas desde las que puedes comenzar. Por ejemplo, si quieres hacer un shooter en primera persona, puedes elegir la plantilla en primera persona. Si quieres hacer un juego de arriba hacia abajo como Diablo, por ejemplo, puedes comenzar con esta plantilla. No obstante, me gustaría comenzar con un proyecto en blanco. Como sabes, si has tomado mis cursos anteriores, porque quiero enseñarte todo desde cero. Ahora, todas estas plantillas, se pueden crear a partir de un proyecto en blanco. Y no son difíciles crear si sabes lo que estás haciendo. Nos gusta partir de un proyecto en blanco y construir todo nosotros mismos Realmente no me gusta empezar con la plantilla. con un proyecto en blanco, enseñarte todo aquí a la derecha, Selecciona Blueprint como lenguaje de programación para la plataforma objetivo. Es de escritorio. Por ahora, siempre podemos enfocarnos en el móvil en otro momento. Pero este curso es sobre escritorio. Probablemente voy a hacer un curso en el futuro sobre móvil. Pero incluso si seleccionas escritorio, aún puedes hacerlo para móvil, más adelante, puedes hacerlo tanto para PC como para móvil. Seleccionemos el preajuste de calidad como máximo para el contenido de datos. Si tienes esto marcado, solo tienes que seguir adelante y marcarlo para que no tengamos nada De nuevo, me gustaría comenzar con un proyecto en blanco sin nada aquí abajo. Puedes seleccionar dónde quieres guardar el proyecto y luego darle el nombre al proyecto. Ahora voy a llamar a este Gin Clicker. Y siempre puedes llamarlo quieras, realmente no importa. Y siga adelante y haga clic en Crear. Una vez que lanzas en el motor real cinco, así es como se verá. Ahora estoy grabando en resolución de cuatro K y tengo un monitor de cuatro K. La interfaz de usuario puede parecerte un poco pequeña cuando estoy grabando este video para todo este curso. De hecho voy a mejorar mi interfaz de usuario para que puedas ver lo que estoy haciendo Si deseas saber como puedo hacer eso también, puedes dar click en Herramientas e ir a Depurar. Ve a Widget Reflector dentro de aquí. Sólo voy a aumentar la escala de mi UI. A lo mejor no 21.3 tal vez este sea uno. Este 1.3 creo que lo voy a mantener en 1.3 y siempre puedo cambiarlo en las lecciones posteriores si pienso que es demasiado grande o demasiado pequeño. De hecho, vamos a mantenerlo en 1.25 y voy a cerrarlo. Bien, entonces en la siguiente lección, vamos a tomar una visión general rápida de Unreal Engine Five, para que podamos tener confianza con él antes de construir nuestro juego Ahora bien, si ya tomaste mis cursos anteriores y ya conoces Unreal Engine five, puedes saltarte la siguiente lección Pero pasemos a la siguiente lección y empecemos. 4. 1.04 Unreal Engine 5: Bien, así que antes de comenzar nuestro juego, vamos a tomar una visión general rápida de Unreal Engine Five Ahora bien, si ya usaste el motor antes y si has tomado mis cursos anteriores, simplemente sigue adelante y salta esta lección a la siguiente. Ahora aquí en medio del motor está la ventana gráfica. Dentro de la vista está el mundo. Este es tu juego que puedes ver visualmente. Como puedes ver aquí tenemos paisajes y así sucesivamente. Pero si haces clic derecho dentro de la ventana gráfica, podrás ver que puedes controlar tu vista manteniendo pulsado el botón derecho del ratón Ahora si mantienes el clic derecho y haces clic sobre también, puedes ver que puedes moverte manteniendo pulsado el botón derecho del ratón y haciendo clic en W, puedes moverte. Ahora se puede ver que me estoy moviendo muy despacio porque este es un mundo grande. Si quieres moverte más rápido, solo haz clic aquí arriba en la velocidad de la cámara, voy a aumentar la velocidad a algo así como 16. En cambio, si mantengo pulsado el botón derecho sobre mi mouse y hago clic en W. Ahora ya puedes ver que puedo moverme mucho más rápido en mi mundo, como puedes ver aquí. Bien, también puedes hacer click en D para moverte a la derecha, click en A para moverte a la izquierda, y dar click en para retroceder. Pero recuerda que tienes que mantener presionado el botón derecho del ratón y luego hacer clic en W, D y A. Así es en realidad como navego , generalmente motor honual, solo sostengo el botón derecho del ratón y solo sé viajar por el mundo y ver lo que estoy haciendo desarrollando el juego Y por supuesto si quieres acercar y alejar, puedes acercar con la rueda del ratón, así como esto. Y también puedes alejar el zoom con la rueda del mouse. Y puedes simplemente volar por el mundo, tratar de tener confianza con el movimiento. Ahora bien, si estás acostumbrado a jugar tiradores en primera persona y así sucesivamente, esto es natural para ti Si no has jugado eso, solo trata de correr y ver si puedes conseguirlo . Bien, entonces tenemos un par de botones aquí arriba en la ventana gráfica, podemos dar click en este Y aquí puedes, por ejemplo, mostrar tus fotogramas FPS por segundo. Y cuando haces clic en eso, puedes ver que aparece aquí a la derecha. Ahora, realmente no importa, por ahora, se puede cambiar el campo de visión y así sucesivamente. Pero lo bueno Unreal Engine es que no tienes que saber qué hace cada botón No lo sé, quizá la mitad de los botones, porque no hago cinemática Por lo general, no hago cinemáticas de cine. Por ejemplo, automotriz, no diseño autos. Hay un par de botones que en realidad no necesitas cuando estás desarrollando tu juego. Trata de no recordarlo todo, pero trata sólo de recordar lo que es realmente necesario en estos momentos. Lo que es realmente necesario en este momento aquí es la vista del juego. Con la vista del juego, ocultas los íconos dentro del nivel. Entonces, por ejemplo, si hago clic con G, esta es la vista del juego. Ver Oculto esta selección naranja. Ahora si hago clic en, de nuevo, en mi teclado, desactivo la vista del juego. Como puedes ver aquí, El atajo es cuando hago clic en la vista del juego, eliminas todos los iconos. Ahora si solo agrego una luz, por ejemplo, una luz puntual, y aquí tengo un icono de una luz puntual. Ahora no necesitas agregar una luz puntual en este momento. Sólo te estoy mostrando si haces clic en ahora, se esconde el icono de la luz puntual. Y no lo puedo ver. Si vuelvo a hacer clic, se muestra el icono de la luz puntual. La línea de punto es un poco pequeña en este momento. Si hago clic en él aquí puedes ver que en realidad está aquí abajo. Es un mundo grande. Suele desaparecer, pero aquí está. Y si hago clic en una G, y G de nuevo, parece que la vista del juego es realmente, muy buena para visualizar tu juego sin ninguno de esos íconos. Si construyo un mundo, y te imaginas que tienes muchos íconos, si tienes mucha iluminación, tienes muchos objetos dentro de tu nivel. Puedes hacer clic en G para eliminar todos esos íconos, y podrás ver tu mundo sin ninguno de esos íconos. Ahora lo siguiente es el modo inmersivo. Si haces clic en 11, maximizas la ventana gráfica y podrás visualizar tu mundo en máxima vista Esto es muy, muy agradable si quieres ver cómo se ve tu juego. Ahora de nuevo, puedes hacer clic en G para mostrar los iconos, G para ocultar los iconos. Haga clic en 11 para minimizarlo. Nuevamente, dos botones importantes, el modo inmersivo y la vista del juego Ahora por aquí tenemos la vista en perspectiva y también tenemos otras vistas, las vistas ortográficas Ahora la más importante es la vista correcta. Esto es lo que vamos a usar porque vamos a trabajar con dos D. Realmente no vamos a entrar en un mundo de tres D. No necesitamos demasiado la perspectiva. Pero por ahora, vayamos a la vista correcta, y a esto se le llama la vista ortográfica Si alejas el zoom con la rueda del mouse, puedes ver que este es en realidad el mundo, el mundo abierto en la vista correcta. Mirando hacia una vista de dos D, se puede ver desde la parte superior. Lo que parece, obviamente no se puede ver mucho porque no se pueden ver las colinas desde lo alto. Si lo ves desde abajo, así es como se ve, no se ve mucho. Si lo miras desde la izquierda, así es como se ve. Y así sucesivamente. Se pueden ver las diferentes vistas del mundo. Esto es por supuesto, la vista en perspectiva de nuevo. Aquí tenemos diferentes modos de iluminación. Realmente no los necesitamos porque no vamos a trabajar en tres D. Realmente no te concentres en esto ahora mismo en el programa. Se pueden mostrar y ocultar cosas diferentes. Lo estaremos usando más tarde. Por ejemplo, puedes mostrar la colisión, puedes ocultar la niebla y así sucesivamente. No es realmente necesario en este momento, no nos metamos en ello ahora. Muy importantes son esas herramientas. Por aquí tenemos la herramienta de selección y esto básicamente selecciona artículos en tu mundo. Ahora para usarlos, agreguemos realmente algo al mundo. Vamos a este toque rápidamente Agregar al botón Proyecto. Muy importante aquí. Se puede agregar, por ejemplo, una forma básica. Agreguemos un cubo. Aquí está el cubo que hemos agregado. Voy a disminuir la velocidad de la cámara. Nos estamos moviendo muy rápido en el mundo, volviéndolo a uno. Si haces clic en esta, puedes ver que esta es la herramienta Seleccionar. Y recuerda que tienes atajos para estas herramientas, puedes. Esta es, la siguiente es la herramienta de movimiento, haces clic en ella, puedes ver aparecer esos puntos de pivote. Ahora si haces clic en el rojo, puedes moverte a este eje. Da clic en el azul, puedes moverte hacia arriba y hacia abajo. Si haces clic en el eje verde, puedes moverte de esta manera. Ahora los colores para estos son en realidad X, Y y Z. Y puedes verlo aquí en el panel de detalles Puedes ver la ubicación de la misma, la X. Si mantienes el mouse sobre ella, también puedes ver el valor realmente antes de que usualmente te dijera que este es el eje X. Pero ya veo que ya no lo está haciendo. Pero básicamente, el rojo es el eje x, el verde es el eje y, azul es el eje z, el eje x, el eje y y el eje z. ¿Bien? Se puede mover así. También puedes sostenerlo aquí en la plaza en el medio. Se puede mover en dos direcciones a la vez. O puedes sostenerla sobre esta pequeña esfera blanca en el medio y puedes moverla en las tres direcciones a la vez. También puedes aquí en el panel de detalles, tal vez te hayas dado cuenta de que estos son los detalles o lo que sea que selecciones dentro de aquí. Si selecciono esto aquí, esos planos de tierra de este mundo abierto, o si selecciono mi cubo, vea diferentes detalles sobre el artículo que ha seleccionado en su mundo. Por ejemplo, puedo ver la ubicación de mi artículo, puedo ver la rotación del mismo. Puedo ver la malla estática que es básicamente el modelo tres D. Puedo ver el material suministrado. También puedo ver cosas de la física. Y puedo ver, por ejemplo, simular la física no se aplica. Puedo ver que se aplica la gravedad, puedo ver opciones de colisión, opciones iluminación, y así sucesivamente y así sucesivamente. Y puedes ver que tienes muchas cosas que puedes ver. No te preocupes por eso por ahora. Vamos a trabajar mucho en el panel de detalles. Se pondrá cada vez más fácil para ti. Muchas de estas cosas no vamos a usar porque estamos, nuevamente trabajando en dos D, así que no te preocupes por esto, pero básicamente aquí por la ubicación, puedes moverlo así y también puedes hacerlo en tod, o puedes moverlo así si simplemente haces clic aquí y arrastras con el mouse, haz clic y arrastra con tu mouse sobre los números Y puedes moverlo así. O si tienes ubicaciones específicas, puedes escribirla. Si haces clic en él aquí y puedo escribir 1,450 por ejemplo Y puedo dar click en Inter. Puedes ver mi cubo se mueve a la ubicación precisa. Puedes hacerlo así. Puedes moverlo manualmente, moverlo aquí. O puedes volver a escribir el número. Ahora la rotación, que es la siguiente si haces clic en, en tu teclado. Entonces el primero fue, el siguiente fue para la herramienta de movimiento. La herramienta de rotación es E en el teclado con la herramienta de rotación, autoexplicativa, se puede rotar el elemento en diferentes ejes, Nuevamente, en dos D, solo tenemos dos ejes. No te preocupes por el tercero, pero sigue siendo el mismo proceso. Entonces te lo voy a enseñar de esta manera. Nuevamente, para la rotación. También puedes cambiarlo por aquí. Si quieres restablecer la rotación, tal vez no estés satisfecho con ella. Puedes dar click en esta pequeña flecha y se restablecerá todo a los valores predeterminados. Entonces esta es la herramienta de rotación. Lo último es la herramienta de escala. Si hace clic en R en el teclado, hace clic en Q para la herramienta de selección, para la herramienta de movimiento, para la herramienta de rotación y R para la herramienta de escala. Ahora de nuevo, para la herramienta de escala, se puede escalar en diferentes direcciones. O si hago clic en el control Z para volver atrás, también puedes escalarlo uniformemente en las tres direcciones. Si haces clic aquí en el medio, así de nuevo, si no estás satisfecho, siempre puedes dar click sobre esta flecha. También puedes escalarlo de nuevo si simplemente haces clic con el mouse y arrastras. O si quieres escalarlo de manera uniforme, puedes hacer clic en este candado. Siempre que escales, uno de ellos, todos ellos también escalarán. Esto es lo bueno de la cerradura. Si quieres escalar solo uno de ellos, puedes abrir la cerradura y puedes simplemente escalar de un lado a la vez, ¿de acuerdo? Muy importante. Recuerden esos. Los vamos a utilizar a lo largo de todo el curso, los siguientes cursos, y probablemente cada uno de los cursos que hagamos. Solo recuerde la Q para la herramienta de movimiento, para la herramienta de rotación y R para la herramienta de escala. También tenemos algunas opciones de chasquido aquí. Como pueden ver, cuando muevo algo, se ajusta a una grilla No se mueve sin problemas debido a esto. Puede hacer clic aquí y aumentar el número. Esto chasqueará aún más que antes. Esto es agradable si estás tratando construir algo con una estructura. Ahora puedes copiar y pegar esto. Si mantienes Alt en tu teclado y haces clic y arrastras, eso copiará este ítem. Voy a intentar copiarlo de nuevo. Mantenga presionado, haga clic y arrastre. Estás sosteniendo Alt y puedes ver que lo volví a copiar. Ahora el chasquido es muy, muy bueno si estás tratando de construir algo como esto con una estructura Ahora bien, si no quieres el ajuste, siempre puedes hacer click en este botón y esto lo deshabilitará Puedes, puedes moverlo sin problemas. Se puede hacer lo mismo con el escalado, la rotación y el escalado. Se puede aumentar la rotación, ajuste y también el escalado puede desactivar el ajuste de escala o aumentar el ajuste de la misma Voy a ponérmela de nuevo y sólo voy a volver a diez, que es la predeterminada como antes. Puedes bajar y subir para la velocidad de la cámara. Ahora lo bueno de esto es que si te estás enfocando en objetos pequeños, quieres que la velocidad de la cámara tal vez sea menor, para que puedas moverte más lento y enfocarte en lo que estás haciendo. Si te mueves en un mundo realmente grande, puedes ver que puedo moverme mucho más rápido aumentando la velocidad de mi cámara. Así es como lo solemos usar. Yo sólo vuelvo a uno de aquí. Bien. Lo último muy importante aquí arriba son también los ajustes. Se puede ir a la escalabilidad del motor. Y ahora mismo se puede ver que estoy manejando el motor con una calidad épica. También puedes configurarlo en baja calidad. Por ejemplo, si estás rezagado, si tienes una computadora de gama baja, puedes ver ahora mi motor no está realmente usando mucha memoria Si tienes una buena computadora, por ejemplo, siempre puedes aumentar la escalabilidad Normalmente corro cinematográfico si hago algo como arquitectura o si hago una escena de corte en un juego Es muy agradable correr cinematográfico y va a quedar rezagado. Entonces ahora mismo no lo voy a hacer porque también estoy grabando el curso. ahora solo lo estoy ejecutando en Epic. Todo bien. Entonces echemos un vistazo aquí arriba, tienes el archivo Botones básicos. Como sabes por cada software, puedes guardar el juego o guardar el nivel. También puedes crear un nuevo nivel que haremos más adelante. Se puede exportar todo y así sucesivamente. También tienes las preferencias del editor y dentro de las referencias del editor, puedes editar cosas sobre este editor. Por ejemplo, esta selección es naranja. A lo mejor quiero que sea algo así como rojo en su lugar. Yo puedo hacer eso O, puedes editar cosas sobre esto. Ahora sólo voy a hacer click en el control Z porque estoy satisfecho con el color. Pero básicamente puedes cambiar las cosas este editor en la configuración del proyecto, puedes editar cosas sobre este proyecto. Por ejemplo, puedes darle un nombre al proyecto , el nombre de tu empresa. Más tarde, tal vez lances el juego. La gente puede ver tu soporte contactar correo electrónico y pueden contactarte si hay errores. También puedes agregar películas. Por ejemplo, cuando abres un juego, hay una pequeña película sobre el logotipo durante 5 segundos y luego comienza el juego. Puedes agregar películas aquí, poner en marcha películas, puedes empaquetar el juego en diferentes consolas. Tienes muchas cosas que puedes hacer dentro de aquí. Ahora vamos a entrar de aquí porque tienes algunas cosas con las que puedes trabajar aquí y nosotros también lo haremos. Así podemos ver que tienes mucho de eso que puedes hacer en la configuración del proyecto. Nuevamente, igual que te dije antes, no te centres en todas ellas. Vas a usar incluso 20% o vas a usar 20% de ellos, Tal vez 15% 10% No te concentres realmente en esto, va a ser demasiado confuso si empiezas hacer cosas que realmente no vas a usar más tarde. Por ahora, no nos centremos en la configuración del proyecto, vamos a cerrarlo. Vamos a pasar por esto cuando lo necesitemos, pero básicamente la mayoría de estas cosas en realidad no vas a necesitar. Centrémonos en todo esto. Vamos a pasar por este curso y voy a enseñarte cada cosa que necesites saber. Por aquí a la derecha, puedes ver el Outliner Si haces clic en los objetos del mundo, puedes ver que también están en el World Outliner El World Outliner básicamente está mostrando qué artículos tienes dentro del mundo Tienes los tres cubos que acabamos de agregar. Tenemos alguna iluminación que puedes ver aquí. Tenemos un cielo y tenemos la luz, y así sucesivamente. Estos en realidad están aquí y en realidad se pueden ver aquí. Se puede dar click en la luz direccional, por ejemplo, esta es la luz solar. Si haces clic en, en tu teclado, esto te llevará a donde hayas seleccionado. Si hago clic en, te llevará por aquí. Ahora si hago clic en, porque escondí mis íconos, para presionar G. Así puedes ver los íconos y aquí realmente puedes ver todas las luces. Lo están escondiendo por aquí. De nuevo, da clic en si quieres ir allí rápidamente. Entonces, por ejemplo, puedo dar click en el cubo. Si realmente puedo encontrar el cubo, no puedo encontrar el cubo. Lo bueno del outliner es que puedes encontrar el cubo aquí y puedes hacer clic en el cubo De hecho puedes ver los cubos por aquí. También puedes seleccionar artículos aquí. Da click en el teclado para llevarte allí si deseas ir allí rápidamente. En básicamente el World Outliner te está mostrando lo que tienes dentro de este mundo, dentro de tu juego ahora mismo Todas estas son solo las partes del paisaje aquí. Como pueden ver, en realidad no hay mucho en el outliner Puedes crear carpetas si quieres mantenerte organizado. Al hacer clic en este icono de carpeta se creará una nueva carpeta. Simplemente puedes renombrar la carpeta aquí que creamos. Puedes cambiarle el nombre y puedes agregarle cosas. Si haces clic y arrastras el elemento a él, puedes mantenerte organizado de esta manera. Puedes ocultar los elementos haciendo clic en este y puedes volver a hacer clic en él para volver a mostrarlos. Sí, ese es básicamente el outliner del que ya hablamos, el panel de detalles, y por aquí, no hay mucho que hacer Lo más importante por ahora es que puedes agregar cosas al mundo haciendo click aquí arriba, por ejemplo. Se pueden agregar luces. Realmente no necesitamos eso. Vamos a trabajar con dos D. Puedes volver a agregar formas, no necesitamos eso. Vamos a trabajar con dos D. En realidad no vamos a centrarnos demasiado en esto, pero básicamente podemos agregar cosas como volúmenes. Vamos a agregarlo más adelante. Entonces necesitamos algo dentro de aquí botón muy, muy importante. También puedes jugar el juego, y puedes ver cómo es el juego. Ahora bien, en realidad no tenemos mucho en el juego, en realidad no pasa mucho. Voy a dar click en Escape en mi teclado y vamos a salir de aquí. Bien, antes de que terminemos esto, lo último dentro de este motor es el cajón de contenido. Si haces clic en él, aparecerá esta ventana. Lo que es el cajón de contenido, es básicamente donde puedes agregar todos tus archivos de juego. Si tienes las dos D art que has realizado en tu software, por ejemplo, los personajes, el entorno, los conjuntos de azulejos, todos esos archivos estarán dentro de aquí. La música, los efectos de sonido, lo que sea que tengas. Si estás haciendo un juego de tres D, tienes los tres modelos D, texturas y así sucesivamente. Entonces todos los archivos estarán dentro de aquí. Y puedes hacer clic y arrastrar cosas al mundo, y podemos usarlas dentro del cajón de contenido. Realmente no me gusta tener el cajón de contenido así, porque si hago clic en algo en mi mundo, lo minimizará. De nuevo, creo que también te va a resultar confuso. Mientras sigues el curso, lo que puedes hacer es hacer clic en el cajón de contenido. Y voy a dar click en Duck en Layout. Y esto hará que así el cajón de contenido ahora se llame el navegador de contenido. Se quedará aquí en la ventana gráfica o en mi vista, y solo puedo redimensionarlo si quieres Puedes cambiar el tamaño de todos los paneles si quieres. Es mucho mejor cuando sigues este curso que puedas verlo todo el tiempo. Y normalmente lo tengo así también. Fue así en el agujero del motor cuatro. Sí. Entonces básicamente puedes ver tus archivos, puedes hacer nuevas carpetas. Si escribes, da clic en esta carpeta de contenido, por ejemplo, puedes dar click en nueva carpeta. Se le puede llamar, digamos activos o lo que quiera agregar. Posteriormente, incluso puedes hacer clic derecho en esta carpeta y puedes ir a Establecer color. Puedes darle un color a esta carpeta si quieres. Así como así, puedes mantenerte organizado. Sea lo que sea que quieras hacer, siempre puedes volver a hacer clic derecho, borrar el color si no lo quieres. Ahora todos los archivos volverán a estar aquí. También puedes hacer clic en el botón Agregar y puedes agregar una nueva carpeta si quieres. También puedes ver, puedes agregar otras cosas como la clase Blueprint, esta es la programación que estaremos haciendo Puedes agregar un nuevo nivel, puedes agregar un material. Puedes agregar muchas cosas sobre el follaje de animación si estás haciendo pasto y árboles y así sucesivamente. Puedes agregar algo sobre el papel a T, que es el para realmente el pix mucho con el que estaremos trabajando. Estaremos sumando todos esos. Aprenderemos cada cosa aquí. Se puede agregar física y así sucesivamente. También puedes hacerlo, en lugar de hacerlo desde aquí, que nunca uso, puedes dar click en la carpeta y puedes escribir click dentro de aquí. Y puedes agregar las mismas cosas que normalmente solo escribo. Da clic aquí y agrega cosas. Pero también puedes hacerlo aquí arriba, ¿de acuerdo? Esto fue todo. Ahora bien, si quieres minimizar o hacer que estos iconos sean cada vez más pequeños, puedes mantener el control en tu teclado y puedes alejar el zoom. Esto aumentará o disminuirá el tamaño del icono. También puede mantener el control y acercar para aumentar el tamaño de los iconos. Ahora también puedes hacer clic en Configuración, clavé Tamaño. Y esto es básicamente lo mismo que fue para Nal Engine cinco y la visión general. Espero que tengas un poco más de confianza en lo que hay dentro de aquí. De nuevo, vamos a hacer todo un curso dentro de aquí, así que vas a tener confianza con él por ahora. Vamos a saltar a la siguiente lección. 5. 2.01 Introducción al juego: Hola y bienvenidos. Y muchas gracias por acompañarme en este curso aquí. Esto es solo una introducción al juego que estamos creando. Me gustaría mostrarte lo que estamos creando antes de comenzar, para que tengas una idea de lo que estamos haciendo dentro de este curso. Entonces básicamente, estamos creando un juego de dos clicker. Y aquí está, dentro de Unreal Engine Five. Y solo estamos usando planos para crear este proyecto, así que no hay C plus Ahora solo quiero mostrarte cuál es el proyecto. Si solo hago clic en reproducir aquí, se puede ver que la música ya se está reproduciendo. Este es básicamente un juego clicker como Cookie Clicker o Clicker Heroes, si solo deshabilito Entonces puedo hablar libremente si hago clic aquí. Así que el volumen 20 y haga clic en reproducir de nuevo. Básicamente esto es como Clicker Heroes, donde tienes un enemigo en medio Tienes artículos de tienda aquí a un lado, tienes monedas aquí arriba. Acabo de darme muchas monedas para poder comprar todo esto y poder mostrarte el juego. También tengo algunos niveles aquí a un lado. Y tengo un temporizador que tengo para matar al enemigo antes. Porque si no mato al enemigo, el temporizador se restablecerá y el enemigo sanará al máximo. Una vez más, tengo que matar a este enemigo antes de que se acabe este temporizador. Si mato al enemigo, puedes ver que se ha desbloqueado un nuevo nivel y puedo pasar al siguiente nivel para engendrar al siguiente enemigo, y puedo matar a este enemigo Ahora cada vez que mato a un enemigo, gano monedas y puedo ir más allá en los niveles, y los niveles continúan en cuanto tengo dinero, ahora puedo desbloquear artículos que puedo comprar desde aquí. Por ejemplo, puedes ver que mi mouse está haciendo 15 daños por clic. También lo puedo ver aquí, si sostengo el mouse sobre él, dice actualmente haciendo 15 daños por clic. Y puedo pinchar en él y comprar uno. Y ahora hago 40 daños por clic y puedo hacer clic en el enemigo. Y ahora puedo ver que hago más daño. Estos artículos aquí abajo son mecánicos de clicker automático. Básicamente, si compro este, dice que me da cinco daños por segundo. Cinco por uno. Ahora puedes ver que automáticamente inflige daño al enemigo e inflige cinco de daño por segundo. Obviamente, esto no va a matar al enemigo, y el enemigo sigue reiniciando la salud Pero si compro algo más fuerte, puedes ver que aquí puede llegar a la muerte y desbloquearlo. Ahora he hecho esto súper fácil por ahora, porque solo quiero mostrarte cómo es el juego. Pero obviamente la salud necesita ser mucho más y el costo tiene que ser mucho más también. Ahora en los planos, si acabo de quitar mis monedas, si voy al jugador, hago clic en la cantidad de monedas y la pongo a cero Y si hago clic en Play, puedes ver aquí los artículos que aún no puedo comprar. Los botones han sido deshabilitados y el botón cambia de color así en cuanto tengo dinero. Puedes ver ahora puedo comprar este artículo. Y en cuanto compre una, así que ahora tengo 15 monedas, puedo comprar una y me paso las monedas aquí a un lado. Se puede ver cuántos he comprado en cuanto compro. Todo lo que puedes ver, por cierto, cada vez que compras un artículo, pons aquí al mundo Entonces, si compras un artículo, se genera aquí. Y si compro más de ella, puedes ver que sigue desove aquí Así que todos los artículos que compres también aparecerán en el mundo En cuanto haya comprado todos los artículos y una cantidad específica, habrá un botón de ascenso que aparecerá Cuando hago clic en él, puedo ascender a la siguiente etapa. Este es básicamente el juego que estamos creando y aquí también hay mecánicos de autobuses, así que enemigos de autobús que aparecerán más adelante en las etapas. Este es básicamente el juego clicker que estamos creando. Espero que me acompañes en las próximas lecciones. Será muy divertido crear todo esto contigo, y te prometo que será fácil, y te lo pondré fácil también. Vamos a continuar. 6. 2.02 Crea un nuevo nivel: Bien, comencemos con el proyecto. Sigamos adelante y creamos un nuevo mapa dentro de las carpetas en el navegador de contenido. Voy a escribir. Haga clic primero y cree una nueva carpeta y llámela mapas. Simplemente mantente organizado con el proyecto. Ahora dentro de aquí voy a dar click ahora. Se puede crear un nivel con dos métodos. Puedes hacer clic con el botón derecho aquí y crear un nuevo nivel. O puedes ir a Archivo y puedes hacer clic en Nuevo Nivel. Ahora la diferencia es que si haces clic aquí desde aquí y haces clic en Nuevo Nivel aquí, puedes ver que puedes hacer un nivel de mundo abierto. Se puede hacer vacío a nivel de mundo abierto y así sucesivamente. Entonces tienes algunas plantillas aquí abajo. Si haces clic derecho y haces clic en el nivel, no obtienes esas opciones, solo obtienes automáticamente un nivel vacío. Yo sólo quiero hacer un nivel vacío porque de nuevo, vamos a crear todo nosotros mismos. Haga clic derecho aquí, haga un nuevo nivel. Llamemos a esto un mapa. Normalmente lo llamo mapa, llamemos a esta mazmorra No creo que vayamos a tener múltiples mapas, Este es el único que tendremos. Vamos a hacer doble clic en este. Te iba a decir, ¿ quieres guardar este mapa? Esto es en realidad lo que significa cuando tienes estrellas en tus íconos. Si tienes estrellas pequeñas, significa que aún no las has guardado. Vamos a seguir adelante y dar clic en Guardar seleccionados. Y ahora estamos dentro de este mapa. Ahora se puede ver que está muy oscuro, no podemos ver nada. Y también aquí en el Outliner, puedes ver que no puedes ver ningún artículo Esto se debe a que tu nivel está vacío. No tienes nada, no tienes iluminación, nada. Aquí vamos a agregar muchas cosas, pero por ahora solo queríamos crear un nuevo mapa. Sigamos adelante y hagamos clic en Archivo Guardar todo. Muy bonita tecla para presionar a menudo porque a veces el motor se estrella. Pero sigamos adelante y guardemos todo y pasemos a la siguiente lección. 7. 2.03 Importación de elementos ambientales: Ahora sigamos adelante e importemos los activos del medio ambiente. Ahora he incluido esto para ti con el curso. Tenemos algunos materiales del curso que puedes descargar. Ahora, dentro de estos materiales, nuevamente, voy a agregar más artículos a medida que desarrolle este curso. A veces si voy a los efectos de sonido, es posible que veas muchos más efectos de sonido cuando estoy dentro de aquí. Para que veas que los tengo, pero en tu carpeta podrías tener muchos más efectos de sonido. De nuevo, voy a agregar más y más a los materiales de mi curso a medida que desarrolle este curso. No te confundas si no tengo tantos, tantos artículos dentro de aquí. Bien, por el medio ambiente, vamos al medio ambiente aquí, y tomemos esos dos. Entonces tengo los ambientes de prisión de mazmorras. Ahora bien, si puedo hacer doble clic sobre él y acercar, así es como se ve. Lo mismo aquí para los apoyos. Tengo algunos apoyos que puedo usar. Ahora vamos a cerrarlo y vamos a importar esos. Para importarlo, hagamos una nueva carpeta. Voy a hacer click derecho aquí, hacer una nueva carpeta. Voy a llamarlo assets dentro de aquí, voy a hacer click derecho y volver a hacer una nueva carpeta. Y llamémosle a esto un ambiente. Bien, voy a hacer mis íconos un poco más pequeños porque están ocupando mucho espacio. Así que voy a hacer clic en Control y alejar con la rueda del ratón. Bien, ahora voy a entrar a la carpeta de entorno. Y es fuera de aquí. Ahora podemos hacer clic y arrastrar. Déjame abrir la carpeta otra vez. Puedo pinchar y arrastrarlos hasta aquí. Ahí vamos. Ahora recuerda, si no puedes hacer clic y arrastrarlos, obtienes este ícono aquí y te dice que realmente no puedes arrastrarlos hasta aquí. Esto se debe a que tal vez tu carpeta sea una carpeta Ip o una carpeta sin procesar. Recuerda hacer clic derecho en tu carpeta y extraer el contenido. Si es una carpeta Ip, tiene que ser una carpeta normal. Extraer el contenido. Después de extraer, puedes importar cosas dentro de aquí. Ahora cuando importas cosas dentro de aquí, puedes hacer clic en él y en realidad puedes ver que está borrosa En realidad no se escoge mucho y ve que es muy borrosa. Y eso no queremos. Esto se debe a que el motor real es un motor de tres D. Difumina las cosas que se ven bien en tres D, pero no se ve bien en dos D. Una cosa simple de hacer es simplemente seleccionar ambas y simplemente puede hacer clic en Control y dar clic en la siguiente que tanto el clic derecho irá a Acciones de Sprite y haz clic en Aplicar Papel dos D Ajustes de Textura Esto asegurará que los artículos dentro de aquí no estén borrosos Y en realidad es escoger mucho como puedes ver aquí, ahora es escoger mucho, todo se ve bien Sigamos adelante y hagamos clic en Archivo y guardemos todo, las texturas. Ahora en realidad voy a hacer una nueva carpeta llamada Texturas, y vamos a importarla. Dentro de aquí tenemos la carpeta Activos. Dentro de él tenemos el entorno, y dentro de él tenemos la carpeta Texturas. Esto se debe a que cuando creamos un mapa de teselas y un conjunto de mosaicos más adelante, solo los voy a colocar aquí. Estos ya no necesitamos más. Más tarde, sólo voy a tenerlos dentro de la carpeta Texturas. Pero por ahora, esto fue todo. Pasemos a la siguiente lección. 8. 2.04 Crea un conjunto de azulejos: Ahora que hemos importado los activos, ahora podemos crear un mapa de teselas y un conjunto de teselas. Ahora para conocer la diferencia, puedes escribir click aquí y entrar en papel para, puedes ver que hay algo llamado un mapa de teselas. Hay algo llamado juego de azulejos. Ahora la diferencia entre ellos es que el conjunto de mosaicos, ahí están los mosaicos con los que necesitamos pintar nuestro mapa. El mapa de teselas es el mapa en sí. Te lo puedes imaginar si eres pintor. Tienes el pellet, que es el conjunto de mosaicos que son nuestros mosaicos, y el lienzo que es el mapa de azulejos donde pintamos nuestro mapa en sí. Sigamos adelante y creamos un juego de mosaicos. No lo voy a crear desde aquí, pero podemos crearlo haciendo clic derecho sobre el prisma de la mazmorra Se puede ver que este es el ambiente que importamos o básicamente los azulejos. Hagamos clic derecho en éste y vayamos a acciones de sprites y creamos un conjunto de mosaicos A partir de esta textura, se puede ver que está creada. Sólo voy a hacer doble click aquí. Y también puedes, por cierto, dar clic en él y hacer clic en dos en el teclado. Eso es más fácil a veces. Sólo voy a decir S como prefijo para el conjunto de mosaicos. Voy a hacer doble clic en él y abrirlo aquí arriba. Puede mantener presionado el clic derecho y puede escribir alrededor y puede acercar y alejar y ver los mosaicos. Da click sobre ellos para seleccionarlos. Eso es lo que estamos haciendo. Más adelante vamos a seleccionar los mosaicos y luego pintarlos dentro del mapa de teselas. Ahora podemos ver aquí, si selecciono un azulejo, no es realmente apropiado. Es seleccionar demasiado. Y esto es porque aquí en el tamaño de la baldosa, tenemos que definir qué tan grandes son las baldosas. Ahora estos azulejos específicamente los encontré en do ins, creo que se llama Dungeon Pixel tiles o algo así, pero básicamente en ho puedes encontrar tres fichas, dos D art aquí, era 16 por 16, eso es lo que escribió el artista Además, si escribes 16 por 16 píxeles, así que estos son píxeles puedes ver ahora los estás seleccionando correctamente. Ahora si hago clic en los mosaicos, están siendo seleccionados correctamente, Ahora están preparados. Más adelante necesitamos agregar colisión aquí, dentro de aquí. A lo mejor lo necesitamos, a lo mejor no. Porque es un juego clicker y nadie se mueve. En realidad no creo que necesitemos agregar ninguna colisión al juego. Esto fue por ahora. Ahora podemos simplemente seguir adelante y guardar todo y cerrarlo. Ahora bien, si necesitamos los accesorios más adelante, hagámoslo ahora. Podríamos usarlos. Vamos a hacer clic derecho aquí. Ve a Acciones de Sprite, Crea un conjunto de mosaicos a partir de este también Adelante y cámbiale el nombre a S en el conjunto de mosaicos inicial. Vamos a abrirla dentro de aquí. Nuevamente, se puede ver cuando selecciono algo, es seleccionar demasiado. Esto se debe a que el tamaño del mosaico es de 16 píxeles por 16 píxeles. Ahora cuando selecciono los artículos, es más correcto y no es seleccionar el elemento al lado también. Eso fue por ahora. Adelante y guarda éste también. Ahora si decides ir a Cho en el futuro, y puedes simplemente subir aquí en los juegos de cejas y activos, y aquí puedes encontrar activos gratuitos y puedes descargarlos. Pero puedes hacerlo aquí también. Este es básicamente el que descargué, esta especificación aquí. Pero básicamente si quieres más fichas más adelante para tu juego o necesitas más accesorios para tu juego, siempre puedes entrar aquí, descargarlos, y nuevamente importarlos. Recuerda hacer clic derecho, aplicar papel a la configuración de textura de configuración para que no sean borrosas Y luego haz clic derecho, sigue adelante y vuelve a crear un conjunto de mosaicos. Y ahí tienes tus nuevos azulejos. Bien, entonces ahora podemos usarlas para hacer nuestro mapa de teselas. Así que sigamos adelante en la siguiente lección y creemos un mapa de teselas. 9. 2.05 Crea un mapa en mosaico: Ahora que hemos creado el conjunto de mosaicos, solo voy a tomar esos de aquí y moverlos a la carpeta Entorno en su lugar, fuera de la carpeta Texturas. Porque básicamente los que ya no necesitamos, Pero no necesitas eliminarlos porque estos conjuntos de mosaicos aún necesitan esas texturas. Pero realmente no los vamos a usar en el juego, vamos a usar esto aquí. Ahora hagamos un mapa de teselas. Si haces clic derecho en tu conjunto de mosaicos aquí que creamos, el prisma de mazmorra, puedes crear un mapa de teselas aquí arriba Sigue adelante y crea un mapa de mosaico, y voy a llamarlo de nuevo, Dungeon Prison Detengámonos, hagamos clic y lo abramos y veamos qué es. Como te dije antes, un mapa de teselas es el lienzo. Pintas los azulejos en el juego de baldosas, que puedes ver aquí a la izquierda es tu lienzo. Puedes seleccionar mosaicos aquí, puedes acercar y alejar, puedes mantener presionado el clic derecho, y puedes escribir alrededor, por ejemplo. Puede hacer uso de la palabra aquí si da clic aquí. Si mueves el ratón a tu lienzo en el mapa de teselas, y haces clic aquí, ahora puedes ver que has pintado un azulejo. Simplemente puedes hacer clic izquierdo y pintar. Ahora puedes ver que has llenado todo el asunto. Ahora si quieres borrar, puedes dar click en el Borrador aquí arriba, o puedes hacer click en E en el teclado Al hacer clic en, volveremos a seleccionar la maquinilla de afeitar, dar clic en todo. O puedes seguir adelante, y eso llenará todo el asunto. O puedes pincharlo aquí arriba, el cubo de pintura. Y puedes dar click aquí y llenará todo el lienzo con el azulejo que hayas seleccionado. También puedes seleccionar otro azulejo, y haciendo clic en B para la herramienta de pintura, luego puedes pintar aquí también. Ahora puedo ver que podemos pintar dentro de aquí. A la derecha, tenemos capas. Si has trabajado con software como Photoshop, ya sabes qué son las capas. Por ejemplo, digamos que aquí pinté este suelo. Al hacer clic en este azulejo, pinté aquí. Si hago clic aquí arriba, básicamente puedes cambiar conjuntos de mosaicos. Puedo cambiar mi juego de azulejos de prisión de mazmorras a los apoyos que creé Digamos que quiero pintar esto aquí. Usted ve aquí. Si hago clic aquí, no es suficiente porque la caja consiste en ésta y ésta De hecho, puedo simplemente hacer clic y arrastrar y simplemente seleccionar ambos. Ahora si los llevo aquí y pinto, se puede ver que mi suelo se está borrando. Esto es porque tú también estás pintando aquí arriba. Voy a dar click en el control Z. así que en vez de aquí, agreguemos una nueva capa Ahora puedo pintar mi cubo sobre esta nueva capa. Ahora se puede ver que no pasa nada. Esto se debe a que esta capa no está afectando a la capa debajo de ella. Si hago clic en el ojo para mover la visibilidad, ahora pueden ver que golpeo mi caja Y si lo vuelvo a hacer clic, lo muestro. Y puedo hacer lo mismo con otros artículos. Básicamente puedo hacer clic en la segunda capa y agregarla, y va a estar bien. Ahora puedes ver si hago clic en la primera capa y la pinto, borrará el azulejo debajo de ella. Muy, muy agradable tener estas capas. Si necesitas algo encima de la capa debajo de ella, necesito algo encima del suelo y tengo que hacer una nueva capa. Digamos que tuvimos un juego donde teníamos cielo y nubes. Digamos que era una plataforma o juego y teníamos la nube. Permítanme simplemente borrar todos los que están aquí. Digamos que aquí teníamos nubes. Y detrás de esos mosaicos también, podríamos haber creado una capa. Y en realidad podríamos dar click sobre esta flecha para colocar la capa detrás de estos mosaicos aquí. Y podríamos pintar detrás de él sin que se vea afectado. Y se puede ver si los escondo aquí, estos son en realidad detrás de los azulejos del suelo. Bien, así es como funcionan las capas, al igual que en Photoshop, si ya has trabajado con Photoshop antes, simplemente sigamos adelante y eliminemos esta capa aquí. Y esta capa también, solo quédate con esta. Ahora aquí abajo tenemos que definir el ancho y la altura de la baldosa. Ahora bien esto es correcto porque recuerden dentro del conjunto de mosaicos, teníamos los mosaicos para ser de 16 píxeles por 16 píxeles. Y aquí también es de 16 píxeles por 16 píxeles. Entonces esta es correcta. Bien, sigamos adelante y eliminemos esto. Voy a hacer click en E para la maquinilla de afeitar. Solo ve y borra todo. Ahora lo que podemos hacer es que todo está bien. El ancho y la altura del mapa. Vamos a hacer el mapa un poco más grande. Voy a hacer que sea de 15 por 15 azulejos, tamaño 15 azulejos por 15 azulejos. Esto es sólo temporal. Crearás un mapa temporal que cambiaremos más adelante. No te preocupes por eso por ahora. Solo queremos que el juego tenga algo para que podamos codificar el juego. Por ahora, esto está bien. Demos clic en Archivo y guardemos todo. Y pasemos a la siguiente lección. 10. 2.06 Diseñar un mapa temporal en mosaico: Bien, sigamos adelante y diseñemos un mapa temporal. Antes de que podamos codificar nuestro juego, necesitamos tener algo aquí. Básicamente, hagamos clic en el mosaico configurado aquí y seleccionemos el prisma de mazmorra dentro Puedes seleccionar lo que quieras. Incluso puedes tomar este y hacer clic en para la herramienta de relleno. Y puedes dar click aquí y ya terminaste. Pero básicamente solo voy a crear aquí no tiene que ser realmente algo bueno, porque vamos a cambiarlo de todos modos. Voy a dar click y llenarlo aquí con estos mosaicos. Esta capa una, incluso puedes hacer click sobre ella. Da click en dos en el teclado y llámalo capa base. Este es tal vez el suelo. Ahora también necesitamos quizá algunas paredes. Estas son las paredes. Sólo voy a seleccionar esta esquina aquí otra vez. Puede hacer clic y arrastrar, seleccionar los tres. Puedes dar click sobre este plus aquí, hacer una nueva capa. Y sólo voy a llamarlo capa frontal. A lo mejor haga clic en la herramienta de alfiler para pintar, pintarla aquí. Voy a seleccionar muros Ahora, voy a simplemente hacer clic y arrastrar mi mouse para pintarlos todos aquí. Nuevamente, selecciona éste y píntalo aquí. Bien. Ahora a veces cuando tienes fichas nuevas, tienes que averiguar cuál va a dónde, porque son muy específicas. Por ejemplo, aquí abajo está, creo que éste. Puedes seleccionar esto aquí abajo, pintar por aquí. Entonces hay que seleccionar, veamos, creo que es esta. Éste. Pinta aquí abajo también. Tienes que seleccionar uno de ellos aquí. Tenemos que ver, déjame ver aquí. Si podemos encontrar uno que se ajuste, a lo mejor éste. Sí, éste encaja. Puedes pintarlo por aquí. Puedes seleccionar este click aquí, pintarlo hacia arriba. Ahora solo conéctate y conéctalo con este de aquí. Ahora tenemos una pequeña habitación con la que podemos trabajar. Incluso puedes intentar practicar estos mosaicos. Es bueno practicar. Ahora, antes de hacer el mapa final, tal vez agregue algo como esto aquí. Pero como pueden ver, en realidad estamos en los lados aquí. Déjame ver si podemos arreglar esto. A lo mejor puedas pintar con éste. Para el otro lado, necesito seleccionar los, déjame solo para que veas mejor los que hay en ellos de este lado. Y ahora se ve correcto. Bien. También para los azulejos. A ver si tenemos que pintar esos ahora No los necesitamos realmente, creo. Bien, entonces lo que podamos agregar también, puedes intentar agregar este si quieres. Básicamente, podemos hacer clic y secar y seleccionarlos todos así, y ahora podemos agregarlos nuevamente aquí. Puedes intentar agregarlos a la capa base, pero como puedes ver, pintarás encima de aquí. Da click en Control, también podrás ver que está detrás de la pared. Da click en la capa frontal, puedes intentar pintarla aquí. Como puedes ver, de nuevo, está pintando encima de las paredes, porque estamos pintando encima de esas capas o esos azulejos haciendo clic aquí y agregando una nueva capa y tal vez llamarla decoración frontal o lo que sea. En realidad no es demasiado importante, como lo llames. Vamos, vamos a agregarlo aquí, por ejemplo. Ahora se puede ver que hemos agregado esto. Como puedo ver, las fichas que acabo de seleccionar. Los azulejos aquí arriba no son adecuados, así que tenemos que ir a la capa base. Y voy a subir a los azulejos aquí. Y necesito pintar con estos azulejos. Pintar con estos azulejos. Y el azulejo de esquina está aquí, el otro rincón está aquí. Intentemos pintarlo correctamente. Creo que esta está aquí. Pintemos este de aquí. De nuevo, esta esquina así. Y yo sólo voy a pintar alrededor así. ¿Bien? Puedo hacerlo muy rápido. Ahora mismo, en realidad no es demasiado importante. Esto es solo un mapa de prueba que cambiaremos más adelante. Ahora lo malo del motor de honor para picks mucho hasta ahora es que si pintas cosas equivocadas, si haces clic en el control Z, solo va a quitar una baldosa a la vez Si lo haces demasiado, puede ser un dolor. Bien, este azulejo de aquí, tal vez solo necesitamos pintar este en su lugar así. Y se ve mucho mejor aquí también. Ahora se ve bien. Creo que también tenemos algo de destaque para los pilares. Podemos ver que el pilar también tiene algo de destaque. De hecho puedo seleccionar esta, volver a la capa frontal, y puedo pintar esta como pilar. Tenemos algo de luz de esta habitación de aquí, la luz roja, y se ve más realista. Ahora bien, si también quieres agregar algunos accesorios, nuevo, realmente no importa ahora mismo Pero puedes agregar algunos accesorios aquí. Por ejemplo, crear. Se puede ir al frente de decoración. Coloquemos uno aquí. A lo mejor colocar este lado, es así. Y quizá en la esquina, veamos aquí. Podemos colocar este cofre tal vez aquí en la esquina así. De nuevo, realmente no importa por ahora. Dejémoslo así. Si quieres agregar algo de pasto, pude ver que había algo de pasto. Tal vez puedas seleccionar algunos de ellos aquí. Agrega la hierba aquí abajo. Entonces puedes rematarlo, creo insinuando con éste También puedes pintarlo aquí. Voy a dar click en Controles. No es demasiado importante en estos momentos. Vamos a guardar todo. Y este es el mapa que tenemos. Vamos a cerrarlo, y pasemos a la siguiente lección. 11. 2.07 Coloca el mapa en mosaico en el nivel: Ahora que hemos creado el mapa de mosaico, hagamos clic y arrastremos esto al nivel. Muy fácil. Así es como colocas el mapa de mosaico en el nivel. Nuevamente, tal y como te dije antes, puedes mantener presionado el click derecho y dar click en W D S y A para moverte. Básicamente, esto es en realidad lo que parece. Se trata de dos D dentro del motor anual. Ya que es un software de tres D o un motor de tres D, así es como se ve. Estamos trabajando con tres D, pero si vas a la vista ortográfica y la ves desde la vista correcta en lugar del modo wireframe, solo puedes seleccionar el modo no iluminado Puedes acercar aquí y puedes ver que así es como se ve. Y ahora lo estamos viendo en dos D. Sólo voy a volver al modo perspectiva por ahora. Lo que suelo hacer por la ubicación, dije a los 20, escribamos 000. Es aquí en el cero en el mundo. Voy a quitar todas estas líneas aquí porque realmente no las necesito. Si haces clic en el mapa de mosaicos, vas aquí abajo, puedes eliminar este, Mostrar por cuadrícula de mosaico cuando se selecciona. Ahora se retira. Ahora así es como lo colocas. Muy fácil. Podemos seguir adelante y hacer clic en Archivo y guardar todo. Pero como puedes ver, se ve muy mal porque los colores no son correctos, y esto se debe a que la iluminación en Unreal Engine está afectando a este mapa de mosaicos Así que sigamos adelante y lo arreglemos en la siguiente lección. 12. 2.08 Volumen de post proceso: Ahora para ajustar la iluminación, tenemos que usar algo llamado volumen de post proceso. Si haces clic aquí arriba y vas a volúmenes, puedes encontrar algo llamado volumen de post proceso aquí abajo. También lo puedes encontrar dentro de los efectos visuales. Este volumen de post proceso es el mismo. Puedes hacer click en él y vas a crear uno. Qué volumen de post proceso es, si has trabajado con Photoshop antes, básicamente cambia los colores, igual que en Photoshop. Tú cambias la saturación de la imagen, Tú cambias la iluminación y el brillo, y así sucesivamente. Es lo mismo con el volumen de post proceso. Se da click en él. Dentro de un volumen posterior al proceso, puedes cambiar la cantidad de Bloom la exposición si quieres un destello de lente. El efecto de imagen que es la viñeta alrededor de la imagen donde haces la imagen, también conocido como en las esquinas, y hace como un efecto cinematográfico Y se puede cambiar la temperatura de la luz. Puedes cambiar muchas cosas donde cambias el aspecto del juego. El volumen del proceso posterior se utiliza para cambiar el aspecto del juego. Bien, Dentro de aquí, si solo aumentas y disminuyes el valor. Por ejemplo, si voy a Bloom y hago clic en la intensidad y la aumento, la disminuyo , ves que no pasa nada. Esto se debe a que hay que ir dentro de un volumen de post proceso. Y como pueden ver, si estoy dentro de ella, ahora puedo aumentar y disminuir y cambia los valores. Ahora, en lugar de estar dentro de él aquí puedes bajar y luego puedes encontrar este llamado Infinite Extend Unbound Si haces clic en él, esto significa que afectará a todo el nivel. Y no importa si estás dentro de ella o estás fuera de ella, va a afectar a todo el nivel. Ahora se puede ver si aumento y disminuyo, la intensidad va a cambiar. Ahora lo bueno de estar dentro de él es, digamos que tuviste un juego de tres D o incluso un juego de dos D como si quieres hacer un estilo especial. Si entras en una cueva en un juego de tres D, por ejemplo un juego de rol, cambia el aspecto del juego porque ahora estás dentro de la cueva. La cueva tiene un aspecto específico a la misma. Si sales fuera de la cueva, cambia el aspecto. Pero aquí realmente no necesitamos cambiar los efectos dependiendo de dónde nos encontremos. Queremos que todo sea igual. Por lo general, en la mayoría de los juegos solo hacemos clic en extensión infinita unbound y afectamos a todo el juego Bien, ahora para el Bloom, necesito ponerla a cero porque realmente no tenemos Bloom o en dos D otra vez con dos D dentro de un motor de tres D es realmente genial porque puedes usar la iluminación D y agregarla a dos D, lo que luego le da efectos realmente especiales que, que no obtienes de dos motores. Puedes obtener tres luces D, puedes obtener tres efectos D dentro de aquí, que no puedes obtener en dos motores D. Muy genial para experimentar con eso también. Probablemente crearé un curso más tarde si aún no he creado uno, sobre cómo agregar tres efectos especiales D a dos D. Pero por ahora, pongamos el Bloom a cero. Vamos a la exposición y básicamente la exposición mínima y máxima, por lo general la pongo a 1.1 la exposición es simplemente si la desactivo. Se puede ver que la iluminación aumenta con el tiempo. Esto es bueno para entornos cinematográficos de tres D, pero realmente no necesitamos cambiar la iluminación dependiendo de si estamos cerca o si estamos lejos. Así que vamos a ponerla en una constante, aunque estemos cerca o muy lejos, realmente no importa. Pero por ahora, voy a configurarlo dos porque solo voy a darte mis ajustes de volumen de post proceso que creé para dos D dentro de aquí. La iluminación es muy, muy buena porque como puedes ver aquí, tenemos que ajustar la iluminación y queremos que se vea como la apagada Si vas al apagón, así es como se ve sin iluminación Esto es en realidad lo que tengo este pixel o tile set. Así es como se ve de verdad. También se puede ver dentro de la vista derecha, en la vista autográfica Si haces zoom, así es como se verá cuando tengamos la iluminación correcta. Si volvemos al modo perspectiva y vuelvo al modo iluminado, el problema es que cuando haces clic en reproducir aquí, solo lo ves en el modo iluminado. En realidad tenemos que cambiar la iluminación en el modo iluminado para que sea la misma que la del modo no iluminado Esto es lo que estamos tratando de hacer con el volumen de post proceso. Estamos tratando de que el modo encendido se vea igual que el modo apagado. Así. Bien, vamos al modo iluminado aquí. Lo he intentado de tres a 4 horas. Solo estaba jugando con muchos ajustes aquí para que pareciera el modo apagado Descubrí que la exposición mínima y máxima se deben establecer en dos. El efecto de imagen, que es básicamente la viñeta, se puede ver, se agrega como un efecto cinematográfico alrededor de los bordes Simplemente nos sentamos éste a cero, realmente no lo necesitamos. En realidad tenemos aquí arriba, los reflejos y la miscelánea dentro de la gradación de color para el mínimo de reflejos, necesitamos establecer esto en uno. Veamos aquí la cantidad de la curva de tono, tenemos que ponerla a cero. Se puede ver mucha diferencia cuando ponemos éste a cero. Casi se parece al original. Ahora si vas al modo Encendido. Cuando vas al modo Encendido, puedes ver que se ve mucho mejor que antes. No obstante, todavía necesitamos ajustar algunas cosas porque se puede ver que no es lo mismo. También puedes dar click en los atajos, cuatro viejos y los tres viejos. Si hago clic en los tres viejos, voy al modo Encendido. Viejo cuatro, voy al modo Iluminado, ahí, puedo hacer click viejo 3.4 muy rápido, y se puede ver la diferencia entre ellos. Todavía hay alguna diferencia si vuelvo al modo Lit. Y cambiemos algunos ajustes aquí también. Ahora, aquí arriba, en realidad aquí abajo, sigamos. Antes de cambiar los colores aquí abajo, cambiemos la intensidad de oclusión ambiental a cero Además, cambiemos la cantidad de desenfoque de movimiento a cero también. Realmente necesito eso. Demos clic en Archivo y guardemos todo. Ahora si voy aquí arriba, tenemos algo llamado temperatura, sombras globales y tonos medios bajo la gradación de color. Ahora estamos listos para cambiar los colores, tal vez reducir la saturación. Porque como puedes ver aquí, si voy al modo apagado, se ve un poco más insaturado que el modo Lit Ahora, te he dado los ajustes correctos para este. Este tiene que ser 1.0 Todo esto nos hemos puesto a cero porque realmente no los necesitamos. Y la exposición se establece en dos. Pero ahora tienes que ir por tu cuenta, porque tienes que fijarlos dependiendo de cómo se vean tus mosaicos. Recuerden lo global aquí, si acabo de abrir lo global, en realidad no todo esto. Si abro lo global y tú abres la saturación, el contraste, la gamma, y también abriste la ganancia aquí también. Trabajemos con esos y arreglemos cómo se ve aquí. Empecemos por la saturación. Esto se debe a que miro este rojo aquí en el modo Encendido, y hago clic en Unlit Puedo ver que es más fácil en el hielo, que significa que está menos saturado. Si voy al modo Lit y voy a la saturación y lo llevo aquí, ahora puedes aumentar y disminuir la saturación. Y puedes ver que puedes cambiar el look. No obstante, en realidad no necesitamos disminuirlo tanto. Voy a volver a uno como antes. Y lo que hay que hacer es de nuevo mantener pulsada la tecla Alt y clic en 3.4 Puedes cambiar entre la Encendida y la Encendida, y podrás ver cómo se ve si hago clic en Aquí. En el modo Encendido, lo disminuyo un poco así y hago clic en los tres viejos. Ahora puedes ver cómo se ve. Yo sólo estoy mirando a este rojo de aquí. mejor en vez de tenerlo así, sólo voy a tenerlo al 95. Bien. Haga clic en el viejo 3.4 cambiar entre ellos muy rápidamente. Se puede ver eso, cómo se ve. Creo que la saturación está bien ahora, pero puedo ver que es más, aquí es más blanca. Creo que es la gamma y la ganancia. Tratemos de ir a la gamma aquí y vamos a aumentarla ligeramente porque se puede ver la gamma. Si lo aumentas demasiado, vuelvo al modo iluminado y aumento la gamma. Se puede ver que este es el efecto. Lo que puedes hacer es un truco que yo uso a veces. Como hago clic viejo 3.4 simplemente sigo haciendo clic en él mientras en realidad ajusto aquí se puede ver si lo ajusta de una manera incorrecta, demasiado. Se puede ver muy lejos el uno del otro. Si lo aumentas demasiado alto, también está lejos el uno del otro. Lo que suelo hacer es mantener viejo y presionar 3.4 muy rápido. Sólo trato de tenerlos lo más cerca posible el uno del otro. Ahora puedes ver si hago clic en todos los 3.4 para cambiar entre los Lit y Let son casi lo mismo. 1.05 es el valor correcto aquí. Ahora para el contraste, puedo intentar dar click aquí e intentar aumentar ligeramente el contraste. Voy a aumentarlo otra vez. Al tres así. 1.02 Creo que es la correcta. Ahora para la ganancia, creo que podemos darle un poco por la ganancia. Probemos eso también. Algo así aquí para las sombras. Ahora bien, si quieres darle un poco más de contraste a las sombras o eliminar el contraste, en realidad puedes hacerlo si haces clic en las sombras. Si voy al contraste, porque si miro mis sombras, solo estoy mirando mis sombras aquí. Creo que también lo es. Contraste en el modo iluminado, puedes ver que es más ligero en el iluminado. Pero si vas al modo iluminado, es, podemos disminuir un poco el contraste para las sombras. Si de nuevo hago clic en el viejo 3.4 simplemente sigo pinchando en ellos para ver cómo se ve. Esto es demasiado, tal vez algo así. Apenas 0.97 Otra vez, como pueden ver por mis valores, realidad no los estoy cambiando demasiado. Tal vez 0.020 0.05 y así sucesivamente. Entonces no cambiarlo demasiado, solo un poco, así puedo tener esa mirada. Ahora bien, si paso del modo apagado al modo iluminado, se puede ver que está muy cerca Ahora, puedes pasar más tiempo del que tengo aquí. Tal vez puedas pasar 15 minutos o 30 minutos tratando de ajustar de un lado a otro aquí y tener mejores valores. Pero por ahora, todo se ve bien. Sin embargo, todavía necesitamos ajustar algunos ajustes dentro de los ajustes del proyecto. Y hagámoslo en la siguiente lección. 13. 2.09 Ajusta la configuración del proyecto: Lo último que tenemos que hacerle al medio ambiente en este momento es que tenemos que deshabilitar el tasing Ahora como puedes ver aquí, tal vez no sea realmente demasiado visible, pero hay anti eliasing que difumina un poco las cosas y no se ve como Esto se vuelve a hacer porque en tres D T elising es realmente bueno y hace que tu juego se vea mejor, pero en Pixelot realmente no lo necesitamos Vamos a la Edición y vamos a Configuración del Proyecto. Dentro de aquí, tenemos que bajar y encontrar la pestaña Renderizado. Al hacer clic en Renderizado, intentemos cambiar algunas configuraciones aquí para el anti eliacing móvil realmente no importa en este momento No estamos creando un juego para móviles, pero es bueno saber que está ahí. Y siempre puedes hacer clic aquí y configurarlo en ninguno, porque realmente no necesitamos anti elycingw Si voy aquí abajo y echo un vistazo a los ajustes, aquí todo está bien. Realmente no lo necesito ahora para la iluminación. Vamos a configurarlo en ninguno en lugar de lumen. Vamos a ponerla en ninguna. Realmente no necesitamos reflexión también o dos D. Echemos un vistazo aquí abajo. Todo se ve bien. Puedes desactivar Nanite si quieres, que son los tres modelos D, el nuevo sistema en no religión cinco, solo reiniciemos más tarde Por ahora, vamos a echar un vistazo aquí. Todo se ve genial. Ahora lo más importante está aquí en la configuración predeterminada ahora ya estamos deshabilitados o ooclusión ambiental y así sucesivamente Realmente no necesitamos preocuparnos por esos. Eso lo hicimos dentro del volumen post proceso, el desenfoque de movimiento también, pero puedes desactivarlo también aquí si deseas florecer y oclusión ambiental si quieres Pero realmente no importa aquí en el anti eliasing, este es el importante Este que quieres establecer non, puedes ver la diferencia. Si le echo un vistazo aquí arriba, ahora puedo configurarlo en non, se puede ver la diferencia. Se puede ver que da líneas dentadas. Si lo configuro a este por ejemplo, o este super es el predeterminado, puedes ver que así es como se ve. Puedes configurarlo en ninguno o puedes configurarlo en uno de esos, pero ninguno es el mejor. Para pixel, se ve mucho mejor como pixel. Bien, increíble. Ahora se ve bien. Y éste también. Aquí puedes configurarlo a nada. No AA, todo lo demás está bien. Vamos a uno. Y voy a darle a Reiniciar ahora. Una vez que se haya reiniciado, se puede ver que estamos dentro de aquí Ahora abre este nivel de mundo abierto por defecto y puedes cambiarlo si vas a Editar y Configuración del proyecto. Y vas a los mapas y modos aquí. Y puedes cambiar el editor start up map para que sea tu mapa, Dungeon the Editor, juego, mapa predeterminado También puedes cambiar al mapa Dungeon. Ahora puedes cerrarlo y guardarlo todo. La próxima vez que abras el motor, va a abrir automáticamente tu mapa de mazmorras Ahora vamos a darle un click sobre él. Haga doble clic en el mapa para volver a ingresarlo. Ahora todo se ve bien otra vez. Puedes hacer click en, puedes dar click en Vamos aquí en este. Y puedes dar click en la vista correcta. Se puede volver a la perspectiva. Haga clic en el modo Encendido. Modo iluminado. Aquí hay una ligera diferencia en los bordes, pero creo que está bien por ahora. Casi no se ve ninguna diferencia. Se ve bien. Así que ahora podemos hacer click en Play y podemos jugar este juego aquí y tener la iluminación correcta. Bien, Todo se ve bien. Como puedes ver, nuevamente en Picsalot, tienes capas en el motor real porque es un motor de tres D. Si solo reduzco la velocidad de la cámara, se ve así. Se ve raro porque la capa frontal está frente a ésta. Básicamente. Esto es cuando creó las capas dentro del mapa de mosaico, estas capas. Esto es lo que ves aquí. Esta es la capa frontal de decoración. Esta es la capa de decoración, o la capa frontal, y esta es la capa base. Los puedes ver así. Se ve raro. Pero cuando haces clic en play y no así, pero cuando haces clic en play, hacemos una cámara real. Se verá así. Se ve todo dos D porque lo estamos viendo desde el frente, todo se ve bien. Demos clic en Archivo y guardemos todo. Empecemos en la siguiente lección. 14. 3.01 Modo de juego y controlador de jugador: Bien, entonces ahora que hemos terminado de diseñar el entorno, sigamos adelante y programemos el juego. Ahora lo primero aquí es que veo un mensaje diciendo que nanita está habilitada pero no se puede renderizar Y esto se debe a que desactivamos nant aquí en la configuración del proyecto Si buscas nanite, recuerda que lo deshabilitamos aquí, dice que aún está habilitado Aquí abajo en la con, ves aquí en la parte inferior escribes nitro y yo voy a entrar y va a desactivar nanite Y también este mensaje se ha ido. Vamos por aquí en la carpeta de contenido. Hagamos clic derecho y hagamos una nueva carpeta. Llamemos a esto planos dentro de esta carpeta. Ahora vamos a hacer clic derecho, y ahora ya estamos listos para programar el juego. La programación es planos en motores reales. Adelante y da clic en la clase de plano. Hagamos uno. Ahora obtienes estas opciones que puedes hacer. Ahora bien, puede ser un poco confuso al principio si no has usado planos antes, pero solo para recorrerlos muy rápido, la clase de actor que podemos hacer aquí es un objeto que se puede colocar o engendrar en el mundo Básicamente es solo un elemento estático. Por ejemplo, una mesa, una petaca, cualquier cosa que no se mueva en el juego, por ejemplo, esta caja de aquí no es un objeto en movimiento. Se trata de un actor. Un peón y un personaje son dos clases donde puedes crearlos. Si necesitas movimiento, puedes ver que un Paw es un actor que puede ser poseído y recibir entrada de un controlador Digamos por ejemplo en tu juego, este es el jugador. Y el jugador puede moverse con esta caja aquí, puedes rodar con esta caja. Entonces en realidad necesitas crear un peón y actor. Porque si creas un actor, no puedes controlarlo con tu teclado. Si necesitas controlarlo con tu teclado, si es un jugador, necesitas hacer un peón No obstante, si tienes un personaje, algo con dos brazos y dos piernas y necesitas andar por ahí, necesitas crear un personaje y no un peón es por ejemplo, si tu juego es, si eres como una caja rodando por ahí O si eres como una pelota rodando por ahí, entonces no tienes dos brazos, dos piernas. Como personaje, puedes crear un peón. No obstante, si tienes este típico carácter humanoide, es un personaje que necesitas hacer Ahora vamos a crear un controlador de jugador y un modo de juego en esta lección. Y un Controlador de Jugador es un Acta que se encarga de controlar al ser utilizado por el jugador. Ahora puede ser un poco confuso, Este no es tu mando, mando Xbox, o tu mando Playstation. Puedes pensarlo como el cerebro del personaje cuando engendras en el juego Cada personaje que engendras como controlador de jugador, no es solo el personaje cuando entras en el juego Si el jugador se une al juego, el controlador del jugador se crea automáticamente para ti antes de que se cree el personaje . Muy, muy importante saber. Por lo general, lo que hacemos en los controladores de jugador es codificar las interfaces de usuario, la UI. También hacemos el desove. Por ejemplo, si engendro un arma en el juego, si engendro una moneda, engendro cualquier cosa en mi Normalmente lo hago en el Player Controller. Ahora, algunas personas también hacen movimiento en Player controller, sin embargo, sugiero que el movimiento se haga en el personaje, porque en multijugador ahora no estamos codificando multijugador. Pero en el futuro, si quieres codificar multijugador, siempre es agradable acostumbrarte a una cosa. En el modo multijugador, el movimiento tiene que estar en la clase blueprint Si haces código de movimiento dentro del controlador negro, en multijugador, no va a funcionar. Siempre hago movimiento en personaje porque también funciona un multiplicador en el futuro. Si quieres hacer algo con el modo multijugador, este es el controlador negro y el modo de juego se define el juego que se está jugando, sus reglas, puntuación y otras facetas del juego Por ejemplo, digamos que en contraataque tienes un temporizador redondo Y cuántos puntos obtienes cuando matas a un jugador y cosas así. Las reglas sobre el juego generalmente se hacen en el modo de juego. Ahora sigamos adelante y hagamos clic en el modo de juego y hagamos uno. Normalmente les doy BP como prefijo para planos. No obstante, para el modo de juego suelo escribir el modo de juego GM. Y yo lo llamo el nombre del juego, que es Dungeon Clicker Vamos a llamarlo licor de mazmorra. Escribamos click de nuevo, hagamos una nueva clase de blueprint y hagamos un Player Controller, llamémoslo PC para Player Controller Volvamos a llamarlo el nombre del juego, Licor. Ahora puedes tener múltiples modos de juego. No es porque puedas tener un modo de juego, por ejemplo, de nuevo en Counter Strike. En otros juegos como Halo, tienes un modo de juego donde tienes tres para todos, todos pueden matarse entre sí. Tienes un modo de juego donde capturas la bandera, cada equipo captura la bandera a su base. Diferentes modos de juego. Puedes tener múltiples modos de juego. No obstante, estamos haciendo un juego sencillo. Sin embargo, solo necesitamos uno. Por lo general solo lo llamo el nombre del juego aquí. Sigamos adelante y guardemos todo. Ahora que tenemos esto terminado, en realidad no necesitamos hacer nada dentro de ellos. No obstante, necesitamos asignar el modo de juego para ser usado dentro de Unreal Engine, porque ahora mismo está usando el modo de juego predeterminado que crea cuando abro el motor Sigamos adelante y haga clic en Editar y abra la configuración del proyecto. Dentro de aquí, vamos a Mapas y Modos. En Mapas y modos, puedes ver el modo de juego predeterminado que se está utilizando. Es el modo de juego predeterminado dentro de Unreal Engine. Le voy a decir que no, quiero usar el mío propio. Quiero usar este clicker GM. Vamos a minimizar esto por ahora. En lugar de aquí, déjame abrir mi modo de juego. Se abrió aquí en mi segundo monitor en el modo de juego en valores predeterminados de clase, necesitamos cambiar el Player Controller que también hicimos porque ahora está usando el controlador Player predeterminado en Unreal Engine Sin embargo, quiero usar mi personalizado que creé, que es el clicker de PC Dung Sigamos adelante y compilemos. Por cierto, solo significa que estás comprobando si tu código tiene alguna casilla o no. Si haces clic en él, dice que está bien para ir, todo está bien por delante y da clic en Archivo y Guardar todo. Vamos a cerrar esto. Ahora. Permítanme abrir la configuración de mi proyecto nuevamente y asegurarme si hago clic en el modo de juego seleccionado aquí abajo, que mi control de jugador también esté asignado en la configuración de mi proyecto. Y suele ser cuando haces eso en el control del jugador. Bien, vamos a cerrarlo aquí abajo. Lo último que tenemos que hacer es aquí en los Ajustes del Mundo. Por cierto, si no tienes una pestaña World Settings, sigue adelante y da clic en, veamos aquí, la ventana arriba aquí. Y abre la Configuración del mundo Desde aquí, hagamos clic en la Configuración del mundo y también en la Configuración del mundo en el modo de juego Anular, haga clic aquí y asigne su clicker de mazmorra GM, que es el modo de juego personalizado Y también puedes asegurarte cuando hagas clic aquí abajo de que tu controlador de reproductor también esté asignado. Bien, así que sigamos adelante y ahorremos. Y ahora nuestro modo de juego personalizado está asignado al mapa o al juego. Realmente no podemos hacer mucho porque realmente no hemos hecho ninguna codificación. Entonces no podemos ver si realmente funciona o no, pero lo vamos a hacer muy pronto. Ahora hemos terminado de agregar el modo de juego y el controlador del jugador y estamos listos para agregar la cámara del jugador. 15. 3.02 Adición de la cámara del jugador: Para agregar la cámara del reproductor. Volvamos a hacer clic derecho dentro de los planos, y vamos a crear una copa de planos una vez más Ahora para la cámara del jugador, puedes crearla como peón Porque realmente no tenemos un personaje con dos brazos, dos piernas para caminar, técnicamente puedes crearlo como peón No obstante, me gusta crear las cámaras del jugador también para mis otros juegos como personaje jugador porque viene con un componente de movimiento de personaje. Ese, se puede controlar la gravedad de la cámara, la velocidad de movimiento de la cámara, y así sucesivamente. Ya verás a lo que me refiero, pero esta me da más opciones. Normalmente solo creo un personaje. Llamemos a este jugador P. Yo lo llamo cámara, pero sólo voy a llamarlo jugador. Sigamos adelante y lo abramos. Y aquí solemos estar en planos. Cuando lo abres, tienes el mirador aquí donde puedes ver al personaje. Si importas, puedes ver aquí a la derecha en el panel de detalles. Casi parece el panel de detalles de aquí. Es lo mismo donde haces clic en las cosas y luego puedes ver diferentes opciones aquí para la malla. Importa un personaje, podrías verlo aquí en la vista, igual que tienes un mirador por aquí Bien, dentro de este reproductor BP, necesitamos crear una cámara. Por cierto, el componente de movimiento del personaje está aquí. Si haces clic en él, podrás ver que puedes controlar cosas como la aceleración del jugador, que en este caso es la cámara. Se puede controlar la fricción del suelo, la velocidad máxima de movimiento de la cámara, y muchas cosas, el control de aire, etc. Me gusta crear un personaje en lugar de un Paw o la cámara porque tengo este componente de movimiento del personaje y puedo controlar mi cámara mucho más. Necesitamos crear una cámara. Vamos a hacer clic en Agregar aquí y los componentes Primero antes de la cámara. Vamos a crear algo llamado un resorte. Si creas un resorte aquí, este es el soporte para la cámara. Ahora dando clic en el brazo de resorte, voy a dar click en D y buscar cámara y crear una cámara. Tenemos el brazo de resorte, que es el soporte, y luego tenemos la cámara por aquí. Vamos a hacer clic en Compilar, y hagamos clic en Guardar todo. Déjame minimizar esto. Déjame arrastrar a este jugador al mundo así. Aquí está la cámara. Si lo puedes ver de fondo, pero está oscuro así que no podemos ver mucho. Voy a escribir la ubicación para ello como 000. También rotar mi cámara, puede ver que se ve de esta manera. Voy a volver con mi jugador. Voy a pinchar en mi primavera, no a mi cámara sino a mi primavera. Voy a girarlo Cuando haga clic en la herramienta de rotación. Recuerde que las herramientas aquí arriba son para la herramienta de movimiento, para la herramienta de rotación, y R en el teclado para la herramienta de escala. Al hacer clic en para la herramienta de rotación, voy a girarla de esta manera. Ahora voy a compilar de nuevo si lo minimizas. Ahora tu cámara está mirando de la manera correcta. También se puede ver en el espectador. Al hacer clic en la cámara, ahora se esconde aquí porque todo está oscuro. Doy click en Lit, puedes ver que está aquí. Si hago clic en él, también ves al espectador. Para la cámara de aquí abajo, puedes simplemente mover la cámara que desees, puedes ver en el visor aquí. Ahora, antes de que lo alineemos, se puede ver en la cámara, si hago clic derecho en la cámara y hago clic en Piloto, lo que significa entrar en la cámara y ver qué ve. Se puede ver que las baldosas están cortando aquí. No se ve dos D, en realidad está buscando tres D. Hago clic en este botón de aquí arriba para salir de mi cámara. Volví a abrir el jugador. Esto se debe a que cuando haces clic en la cámara, realidad tienes que cambiar el modo de proyección de perspectiva a autográfica perspectiva es el modo tres D, ortográfica es la vista de dos D. Necesitamos las dos vistas D aquí. Vamos a compilar y echemos un vistazo. Una vez más, ya puedes ver que se ve correcto. Si hago clic con el botón derecho en mi cámara y hago clic en apilarla, creo que también puedes hacerlo aquí arriba. puedes hacer clic derecho aquí arriba en el Outliner y hacer clic en pila It. Ahora puedes ver que se ve más correcto. Es dos D también se ve bien. Vamos a salir de aquí. Vamos a abrir el jugador. Lo último que quiero decirte aquí, ya no tenemos mucho que hacer. Pero aquí en la cámara, se puede cambiar el ancho ortográfico Y puedes ver lo que hace si haces clic en tu cámara aquí arriba en el reproductor BP, y aumentas y disminuyes el ancho ortográfico Si aumento, aumento, puedes ver que acercas y alejas. Pixel Ot, se ve más o más pixelado. Cuanto menor sea la madera autográfica, tal vez así es como quieres que sea tu juego Puedes hacerlo de más alta resolución cuando alejas así. Ahora para mi juego, solo intenté jugar con él cuando lo estaba probando y creo que me quedaré con algo así como 640. Si solo hago clic derecho en mi cámara y piloto mi cámara, así es como se verá. Puedo llevar a mi jugador aquí y puedo ajustar la ubicación. Recuerda, podríamos ajustar la ubicación haciendo clic en los números aquí en la ubicación para el jugador. Y podemos hacer clic y arrastrar con el ratón para ver cómo se ve. Puedo hacer algo así. En realidad para la Y, es sólo cero. Para éste es así. Impresionante. Ahora está censurado En este momento no es muy importante. Vamos a arreglar el posicionamiento más tarde. Pero para el jugador, de nuevo, solo para asegurarse de que todo esté funcionando correctamente para la primavera, voy a desactivar las pruebas de colisión. Las pruebas de ucision son simplemente cuando un jugador está detrás de la pared Va a empujar la cámara, así que la cámara no va a entrar en la pared. Realmente no necesitamos esto porque puede hacer frente al juego. Ahora mismo, voy a desactivarlo. Lo segundo es la cápsula. Quiero quitar todas las colisiones, porque no quiero que esta cápsula choque con mis enemigos o personajes dentro de este mundo Realmente no necesitamos este. Voy a bajar aquí y asegurarme de que en la sección de colisión para la cápsula genere eventos de solapamiento off o los presets de colisión aquí En lugar de peón voy a decir que no hay colisión que se arregle Ahora en la malla misma aquí. Solo me estoy asegurando de que también en la colisión sea para que el personaje pueda pisar el no y no colisión también. Adelante y compilar. Ahora para el brazo de resorte, sí retiramos la prueba de colisión. Lo último aquí en el componente de movimiento del personaje del jugador, hagamos la gravedad a cero porque no necesitamos esta cámara para caerse o movernos. La aceleración máxima es cero. Veamos si necesitamos hacer más aquí. No creo que tengamos que hacer más. Todo se ve bien. La velocidad máxima en realidad no importa. No vas a andar por ahí. Pero solo puedes ponerla a cero para que no puedas moverte también si así lo deseas. Vamos a compilar, guardar todo. Y eso fue todo para el jugador. Ahora está configurado. Puedes controlar qué tan lejos está tu cámara a tu gusto. Entonces, si deseas que la cámara esté mucho más cerca, puedes hacerlo. Por ejemplo, puede hacer clic en la cámara y establecer la vista autográfica en 512 Y se puede ver que aquí está mucho más cerca. No es demasiado importante en estos momentos. Siempre podemos probar el juego siempre que tengamos un personaje moviéndose. 16. 3.03 Extracción de los sprites enemigos: Ahora sigamos adelante e importemos estos precios para los enemigos. De nuevo, volvamos a la carpeta de materiales de costo que te he dado. Dentro de aquí, ve a los personajes. Aquí están todos los enemigos que tenemos en el juego. Ahora en el futuro, podemos agregar más enemigos, porque en los juegos clicker tienes toneladas y toneladas de enemigos Pero estos son realmente agradables para empezar. Sigamos adelante y hagamos clic en el primero. Mantenga pulsada Mayús, haga clic en el último para seleccionarlos todos. Vamos a los Activos. Y aquí voy a escribir, Click y hacer una nueva carpeta llamada Characters. Dentro de aquí también, voy a hacer clic derecho a hacer una nueva carpeta una vez más y llamemos a esta Texturas. Vamos dentro de esta carpeta. Y ahora vamos a dar click y arrastrar esto a la carpeta Texturas. Y aquí los hemos importado todos. Todo bien, haciendo clic en el primero de nuevo, mantenga pulsada la tecla Mayús, haga clic en la última, haga clic derecho, vaya a Acciones de Sprite Y recuerda aplicar el papel a la configuración, lo contrario será una textura borrosa para aplicar a la configuración Cuando haces eso, el arte es arreglar mucho, se ve genial. Bien, vamos a cerrar todo aquí abajo. Demos clic en Archivo y guardemos todo. Ahora que hemos importado todo, lo que tienes que hacer, puedes ver aquí están todos en una textura. Si abrí la primera, la Muerte Nocturna, se puede ver que están en una sola textura. Necesitamos tenerlos como sprites separados. Vamos a cerrar esto. Puedo hacer click derecho sobre esta Muerte Nocturna. Aquí puedo ir. Acciones de Sprite, tienes algo llamado ya sea crear sprite o puedes extraer los Crear un sprite es simplemente, por ejemplo, digamos que tenías un personaje aquí y no los tenías todos juntos así Podrías hacer clic con el botón derecho en las acciones de sprite y crear un sprite. Cuando haces eso, crea este sprite aquí. Cuando creas un sprite, realmente puedes usarlo en el juego Puedes hacer clic y arrastrarlo al mundo. Si sólo lo muevo aquí al frente, lo puedo ver así. Ahora mira puedo usarlo en mi juego, por ejemplo, si tuvieras una caja o cosas así. Si tienes un objeto singular, puedes hacer clic derecho y crearlo como un sprite Y luego es básicamente como hacer un objeto de tres D, que puedes usar en el mundo porque esta textura de aquí, no puedes usarla aquí. Se puede ver que reemplaza esto y crea algún material para nosotros y cosas así, todo está desordenado. Voy a dar click en el control Z para revertirlo. Sólo voy a retrasar este que creó. No puedes usar texturas en el juego así. Tienes que hacer click, convertirlos en un sprite, por ejemplo, si tienes una caja o algo estático que quieras en el juego Y puedes arrastrarlo hasta aquí y puedes usarlo como sprite No obstante, permítanme eliminar esta, y permítanme también eliminar esta. Ahora están todos juntos. En lugar de crear un sprite, necesitamos extraerlo. Haga clic derecho, vaya a las acciones de sprites y extraiga los sprites Y puedes verlas aquí arriba así. Lo que tenemos que hacer es aquí arriba en la configuración, tenemos que convertirlo en una grilla. Ahora tenemos que averiguar en el sil, ancho y alto, cuál es el tamaño. Por lo general el artista que hace esto te escribe lo que es. Pero intentemos que sea 32 sobresale como lo es para la altura 32 aquí Ahora puedes ver que no es apropiado porque cada caja necesita estar alrededor de este personaje. En lugar de 32, digamos más 16 píxeles. Lo bueno de Unreal Engine, en realidad puedes escribir más 16 y presionar Enter, y lo va a hacer automáticamente por ti Bien, 16 píxeles funcionaron porque ahora se puede ver que todo se ve correcto. Cada sprite está en su propia caja. Este es el ancho y altura de celda correctos. Y sigamos adelante y pulsemos en Extraer. Ahora se puede ver que extrajo los de aquí, y ahora están en imágenes singulares. Ahora bien, si hago clic y arrastro esto al mundo, es un solo personaje que está aquí en lugar de todo. En realidad tenemos que hacer eso por cada uno de ellos. Por ejemplo, el hit nocturno, puedes hacer clic derecho y puedes ir a acciones de sprites, ir a extraer sprites nuevamente, hacer clic en cuadrícula en su lugar Entonces puedes hacer click aquí. Creo que es lo mismo, tal vez 48 como antes. Pero si escribes 48, puedes ver que en realidad no es correcto. Si vuelvo a 32, como la altura, se puede ver que 32 es la correcta aquí. Y tienes que hacer clic en extraer aquí. Bien, intentemos con el final. Vamos a hacer clic derecho en la noche ociosa para extraer sprites doom Ir a la cuadrícula. Creo que son 32 otra vez, igual que antes. Ahora adelante y da clic en Extraer. Te voy a mostrar éste también. Después de eso, sólo voy a hacer cada una de ellas rápidamente. Se puede ver que lleva tiempo. Tengo que hacerlo por cada uno. Pero vamos a hacer clic derecho en éste. Ir a Spart, acciones extraen sprites. Ahora para esta, vamos a dar click en la cuadrícula. Escribamos 64, igual que la altura ahí. Es un buen punto de partida para simplemente escribir el número de la altura y se puede ver que ya está funcionando correctamente. Y extraer todo bien. Haga clic en Extraer sprites, vaya a la cuadrícula. Se puede ver que va a ser muy bueno en ello porque lo hace 100 veces. A veces aunque tengas sueño, puedes hacerlo sin siquiera pensar en lo que estás haciendo Simplemente hacerlo muchas veces es una buena práctica. Ahora los extraemos. Creo que si solo vuelvo a la carpeta, esta, le pego a esta, inactivo, base inactivo, extraigo los sprites a grid 32, eso funciona, ok. Esto es lo que hay que hacer por cada uno de ellos. Intenta meterlos en la caja y extraerlos todos. Bien, lo voy a hacer en mi tiempo libre y voy a estar de vuelta contigo ahora mismo. Los he extraído todos. Ahora puedes ver que se extraen todos ellos. A veces es un poco complicado conocer los tamaños de ellos cuando los extraes. Pero básicamente, de nuevo, si abres uno de ellos, por ejemplo éste, este era el más complicado si escribes, haces clic y extraes este precio para éste, puedes verlo aquí. Si vuelves a la cuadrícula 64, derecha, 64 es un buen punto de partida. Se puede ver que no es correcto porque esto de aquí está vacío. No necesitamos los vacíos. Si escribes más 16, por lo general son 16 píxeles cada vez que aumentas o disminuyas. Y éste tampoco es apropiado. Más 16. Nuevamente, ahora podemos ver que encaja con todos ellos. Bien, solo sigue adelante y hazlo por todos ellos. Lo he hecho por todos ellos. Ahora vayamos a la siguiente lección y creemos libros volteados. 17. 3.04 Crea Flipbooks: Bien, así que ahora que tenemos listos los sprites, sigamos adelante y creamos libros flip Y los libros flip son simplemente la versión animada de esos. Estamos poniendo todos esos sprites juntos en una pieza animada El personaje se mueve. Este es un libro volteado. Un flip book es simplemente cuando necesitas una animación en dos D. Vamos a probarlo con esta noche Muerte. Primero da click en el primer sprite y podrás ver, por cierto, las texturas, aquí tienen una línea roja Y si me acerco, se puede ver. Tienen una línea roja aquí las texturas, mientras que los sprites tienen una línea azul claro aquí o verde azulado Este es el sprite. Se puede ver la diferencia entre ellos así también. click en el primero, voy a Old Shift y doy click en el último sprite en esta sección, voy a hacer click derecho, ir a Crear flip book Déjame llamar a este B para libro abatible. Vamos a llamarlo, llamémoslo muerte. Tenemos este flip book, la muerte. Y se puede ver que ya está animada. Duplicé doble clic en él. Esta es la animación de la muerte para la noche. Un libro flip es simplemente los sprites reunidos en una animación Ya ves, solo puedo detenerlo aquí abajo. Esta es la animación y estos son todos los sprites que seleccionamos y creamos un flip book para. Bien. También puedes ver si lo vuelvo a jugar, puedes controlar la velocidad de la animación aquí en los fotogramas por segundo, puedo, por ejemplo, ponerla en 50 muy rápido. Si acabo de decir los fotogramas por segundo de vuelta a 15, este es el valor por defecto, así es como se ve. Ahora realmente hay una regla para lo que debería ser esto. A veces el pixilatista te escribe lo que se supone que sea aquí Pero solo a veces solo estoy jugando, viendo lo rápido que se reproduce la animación, y luego hago esto en mi juego para mí. Probé diez en cuadros por segundo, y creo que esto es lo que quiero que sea la velocidad. Ahora, no hay una regla. Puedes ir con 12, puedes ir con 15, lo que creas que es bueno para tu juego. Voy a ir con diez para mí. Voy a cerrarlo aquí abajo. Y ahora tenemos este flip book. Ahora podemos hacer clic y arrastrar esto al personaje, y seleccionar Mover Aquí, y ahora tenemos el libro volteo aquí. La razón, nuevamente, hicimos esta carpeta Texturas es porque todo esto realmente no necesitamos verlo más tarde cuando creamos todos los libros volteados aquí para los personajes. No necesitamos todo esto dentro de la carpeta Texturas. Nuevamente, no se puede eliminar porque esto es usar datos de las texturas. Entonces realmente no puedes eliminarlos. Sólo los estoy poniendo en una carpeta Texturas para no tener que volver a mirarlos. Pero entremos aquí. Hagámoslo por todos ellos. Para el hit, haz clic en el primero, mantén presionado el turno, haz clic en el último, haz clic derecho, voltea el libro. Llámalo otra vez. Ábrelo, pero podrás hacerlo más tarde. Al igual que puedes cambiar los fotogramas por segundo después. No voy a hacer eso por ahora. Adelante en el siguiente, clic derecho, voltear libro. Llámalo inactivo. Vaya al siguiente aquí, haga clic derecho. Llámalo o solo voy a llamarlo o en lugar de base, o ir al siguiente aquí, click derecho, voltear libro. Llámalo B. Sólo voy a hacer algunas de ellas que veas el flujo de trabajo. Y luego lo voy a volver a hacer en mi propio tiempo. Haga clic derecho en este. Voltear libro, llámalo. O inactivo. Bajemos otra vez el siguiente aquí. Sólo voy a hacer esto como el último. Clic derecho, voltear libro. Llámalo B o pícaro. Esto es un pícaro, así. Puedes ver que están todos animados aquí. Bien. Voy a hacerlo en mi propio tiempo. Sólo voy a crear flip books y volveré a estar contigo. Ahora, he creado flip books para todos ellos como puedes ver aquí. Y voy a dar click en Archivo y guardarlos todos. Ahora hagamos clic en el primero, Mantenga Mayús, y haga clic en el último libro volteo dentro de aquí. Y los voy a trasladar a los personajes. Aquí tenemos todos los flip books. Ahora déjame ajustar los fotogramas por segundo. Ahora en lugar de hacerlo uno por uno, lo que lleva mucho tiempo, puedes hacer clic en el primero y puedes mantener presionado Shift. Da clic en el último para seleccionarlos todos. Haga clic con el botón derecho y vaya a Acciones de Activos y seleccione esta. Editar Selección en Matriz de Propiedades, selecciónela. Esto suele ser siempre que quieras editar una configuración para cada uno de ellos. Siempre es agradable escribir, hacer clic y usar la matriz de propiedades para cambiar la misma configuración para todas ellas. Dentro de aquí en el sprite, puedo cambiar los fotogramas por segundo y hacerlo diez Entra y lo hace por todos ellos. Siga adelante y haga clic en Guardar todo, ciérrelo. Y se puede ver ahora que en realidad son los diez en cuadros por segundo. Esto aplica no sólo para voltear libros, sino para todo. Por ejemplo, textura normal donde digamos que quería cambiar el brillo para todas las texturas, podrías seleccionar todas las texturas, por ejemplo ésta. Si tengo el control, selecciono la siguiente textura, esta textura y esta textura puedo escribir. Haga clic en Ir a Acciones de Activos, Editar Selección a través de la matriz de propiedades aquí en la configuración, por ejemplo, los ajustes. Podría editar el brillo para todos ellos a la vez. Siempre es agradable saber que esta opción está ahí. Bien, aquí están todos los flip books que creamos. Todos ellos se ven geniales. Si olvidaste uno de ellos, no hay problema. Siempre podemos volver y crearlo como un flip book más tarde, pero creo que ahora los tengo todos. Todo se ve genial. Adelante, guarda todo, y pasemos a la siguiente lección. 18. 3.05 Clase de padres contra niños: Ahora que hemos creado los flip books, sigamos adelante y creamos las clases de planos Vamos a la carpeta de planos. Vamos a hacer clic derecho aquí. Y hagamos una nueva carpeta llamada enemigos. Primero, vamos a entrar en esta carpeta. Haga clic derecho, y ahora podemos crear una nueva clase de blueprint. Sigamos adelante y creémoslo aquí. Ahora bien, en lugar de crear este personaje para el enemigo, este es un personaje de tres D. Lo que tenemos que hacer es hacer un carácter de dos D es hacer clic en esta pequeña flecha con todas las clases Aquí realmente puedes ver más clases que puedes crear con blueprint up Aquí están las clases normales que casi creas todo el tiempo. Y casi nunca bajas aquí a menos que haya algunas cosas específicas. Por ejemplo, cuando haces un juego de guardar y cargar para tu juego, en realidad también está aquí abajo. Aquí abajo, podemos buscar papel, que son los dos D en el motor Unreal Podemos ver a este llamado personaje de papá. Este es un carácter de tres D, y este, el carácter de papel, es un carácter de dos D. También puedes ver que tenemos otras cosas que podemos crear, como flip books que acabamos de crear. Puedes crear mapas de mosaico, sprites, etc., pero queremos crear un personaje Ahora vamos a hacer clic en él y seguir adelante y dar clic en Seleccionar. Ahora para esta, la voy a llamar base BP Enemy. La razón por la que lo llamo Base enemiga es porque ahora esta es una clase padre. Te voy a explicar aquí en esta lección qué es una clase para padres y qué es una clase infantil. Vamos, por ahora, haz clic derecho aquí y puedes ver aquí arriba, se llama Crear clase de impresión infantil. Sigamos adelante y creemos eso. Por ahora llamémoslo BP caballero. Básicamente solo lo estoy llamando los personajes que tengo. Si voy a mi carpeta de personajes, tenemos la noche. Vamos a crear el siguiente también. O voy a explicar lo que es un niño plano. Haga clic derecho en la base enemiga, Crear niño, clase de plano Llamemos a éste P Orco. Bien, sigamos adelante y guardemos todo. Ahora tengo este de aquí. La base enemiga, si sostienes el mouse durante la noche, puedes ver que la clase padre es la base enemiga BP. Lo mismo con el Or. La clase padre es la base BP enemiga, o base enemiga aquí. Ya podemos abrir la base enemiga. Digamos que dentro de esta clase de blueprint, quiero dar click en el componente de movimiento de mi personaje Entonces tenemos este componente porque es un personaje aquí dentro. Digamos que quería cambiar lo alto que puede saltar mi personaje. Puedes ver en el panel de detalles, tienes cosas que puedes cambiar sobre el movimiento, la gravedad, la velocidad máxima, y así sucesivamente. Digamos la altura del salto, digamos mi personaje, yo quería saltar mucho más alto. Si yo, por ejemplo, da clic aquí y escribo 800 en su lugar. Ahora puedo saltar más alto si hago clic en Compilar. Ahora bien, si minimizo esto y voy a mis hijos clases de planos, estos dos son hijos de la base enemiga, porque hicimos clic derecho y los creamos ¿Qué significa esto? Ahora si voy a la noche ahora y le echo un vistazo aquí y hago clic en el componente de movimiento del personaje. Si bajo a la velocidad de salto que acabo de cambiar en la base enemiga, se puede ver que aquí también es 800. Ahora como predeterminado, si voy al O y hago clic en el componente de movimiento de personajes y voy hacia abajo, puedo ver que también está configurado en 800 en el Awesome. Interesante. Cada vez que cambio una configuración en la base enemiga, que es la clase de plano padre, Esta configuración que cambio aquí se aplica a todos los hijos que creo para ello Y este es un método muy rápido para trabajar y también el mejor para trabajar, porque uso mucho esto. Imagina que tienes Quincena y tienes muchos skins en Quincenas Digamos también aquí en este clicker, tienes 100 enemigos Creas a 100 de estos niños aquí. En lugar de ir en cada uno de estos niños y cambiar, digamos que querías cambiar la escala de gravedad, 1.2 En cambio, en lugar de ir en cada niño y cambiar el valor a 1.2 simplemente puedes cambiar el valor dentro de la clase padre y automáticamente se aplicará a todos los hijos por ello que hagas. Esta es una forma rápida de trabajar si hago clic en mi base enemiga, y simplemente hago clic en esta flecha para restablecerla a la predeterminada a 420, y compilo y guardo todo. Ahora si voy a mi noche, se puede ver que también está configurado en 420, lo mismo con el Orco Esta es una forma óptima de trabajar porque te puedes imaginar si tienes 100 enemigos, es mucho trabajo hacer clic en cada uno de estos cientos y cambio de valor. Simplemente puedes cambiarlo una vez dentro de la base enemiga. Esto es para las clases de padres e hijos. Vamos a crear el resto de ellos. Tenemos el y tenemos la noche. Vamos a crear el Chamán. Haz clic derecho en el enemigo Crear clase de plano infantil. Llamemos a éste BP, Roku. Volvamos a hacer clic derecho en la base enemiga. Crear una clase de plano infantil. Llámalo BP o Chamán. Volvamos otra vez. Tenemos que crearlos todos. Tenemos al Guerrero y tenemos al Guerrero Roque P. Ahora solo los estoy creando mucho más rápido que antes porque es lo mismo. Lo estamos haciendo una y otra vez. La mag Esqueleto y la base del esqueleto, simplemente llamándola BP Skeleton. Así. Esqueleto y el Esqueleto mag. Esqueleto mag. Veamos lo que nos falta. Tenemos al Skeleton Rogue y al Skeleton Warrior. P Esqueleto Rogue, BP Esqueleto Guerrero. Solo asegúrate de que estás haciendo clic derecho en la base enemiga y creándolos. Para asegurarte siempre puedes sostener el mouse sobre él y que la clase sea la base enemiga la correcta. Haga clic derecho aquí, haga el último llamado asistente BP. Sólo para comprobar si me he perdido algo. El mago es el último y eso es todo. Sé que tengo 11 personajes. Simplemente haga clic aquí, mantenga pulsada la Mayús, haga clic en la última. Puedes ver que tienes 11 seleccionados y eso es correcto. Tengo 11 personajes aquí. Bien, hagamos clic en Archivo y Guardar todo. Ahora los hemos creado todos. Y esto se ve bien, así que estamos listos para continuar en la siguiente lección. 19. 3.06 Finalización de la configuración de la clase de enemigo: Acabemos con el enemigo. Ahora vamos a pasar la noche. Tenemos que abrirlos uno por uno. Abramos primero la noche, dentro de aquí. Si eres nuevo en las cláusulas blueprint, básicamente lo que tienes son componentes Tienes diferentes componentes. Por ejemplo, el sprite. Vayamos al mirador por ahora. Aquí en la viewport, igual que la viewport aquí en el juego En la vista de la cláusula blueprint, se pueden ver las cosas visualmente Por ejemplo, el sprite, no hemos aplicado nada. Y esto es lo que vamos a hacer. Ahora, en realidad hagámoslo. Para que puedas ver pinchando en este sprite, puedes ver que necesita un libro volteo Es una animación porque es un personaje que creamos aquí. Se necesita un personaje animado haciendo clic en el libro flip book. Vamos, esta es la noche. Tenemos que seleccionar la noche ociosa. Sigamos adelante y seleccionémoslo. Puedes seleccionarlo así o bien puedes hacer clic en el sprite Puedes hacer clic y arrastrar aquí en los personajes, puedes hacer clic y arrastrar esto y soltarlo encima de aquí. Eso también funciona. Ahora puedes ver visualmente, puedes moverte, igual que en la ventana gráfica normalmente Ya puedes ver que tenemos este personaje. Si haces doble clic sobre él, el framer por segundo No lo cambié por éste. Creo que olvidé cambiarlo. Déjame seleccionarlos todos. Creo que lo cambié antes. De todas formas, selecciónalas todas. Si tienes lo mismo, haz clic derecho, ve a Acciones de activos. Se selección en Matriz de propiedad. Voy a ir a Sprite y cambiar la velocidad de fotogramas por segundo para que sea de diez fotogramas por segundo Salgamos y vamos a cerrarlo. En lugar de ir en cada uno de ellos y cambiar los fotogramas por segundo a diez, solo voy a hacer eso seleccionándolos todos. Haga clic derecho a la matriz de propiedades y hágalo de esta manera aquí. Podrías cambiar los fotogramas brillantes por segundo. Un rápido, no lo sé. Creo que lo hice antes. A lo mejor mi cresta de motor, no estoy seguro. Pero ahora tenemos eso. Volvamos a la copa de planos Vamos a abrirlo otra vez. Voy a planos. Los enemigos se abren la noche en la que estuvimos trabajando. Vamos a las viewports. Aquí, puedes ver mi noche. Todo se ve mucho mejor. ¿Bien? En la vista, se pueden ver las cosas visualmente Y dentro del gráfico de eventos es donde se agrega el código, por ejemplo, en movimiento y así sucesivamente. Por ahora, no nos enfoquemos aquí, vayamos a la viewport dentro de aquí Tenemos que hacerlo por cada uno de ellos. Tenemos que asignar el flip book. Vamos al click arriba aquí. Abrir editor de planos completo. Esta vista aparece porque aún no has trabajado en este plano. Vamos a abrirlo, hacer clic en el sprite, asignar el Or. Si solo buscas Orco, por ejemplo, y puedes seleccionar este o inactivo Si vas a la viewport, puedes ver que se ve correcta Aquí está, Bien, increíble. Tienes que hacerlo por cada uno de ellos. Sólo te voy a enseñar éste y luego lo voy a hacer por mi cuenta. El Pícaro Orco, da clic en Sprite o ve al Pícaro y selecciona el Solo asegúrate de seleccionar el ídolo para cada uno de ellos. Sólo voy a hacerlo por el resto de ellos. Bien. Esta fue la última. En cada una de ellas, le he asignado al personaje así y ya se ve como un juego. Impresionante. A pesar de que aún no hemos hecho mucho, solo voy a hacer click y compilar en cada una de ellas. Es una buena práctica. No cambiaría mucho ahora mismo hacer clic y compilar. Pero siempre es bueno recordar así así. Y por cierto, es bueno saber también, puedes dar click en estos tres puntos y guardar y compilar, y puedes hacer click en éste, Sin éxito Sólo lo que esto hace es que cada vez que hago clic en Compilar, automáticamente se guarda aquí en vez de, digamos que he cambiado un valor aquí así. En lugar de compilar y luego guardar, solo puedes compilar Se puede ver la estrella, significa que no está guardada. Si haces clic en compilar, se guarda automáticamente también. Esto es muy agradable. Normalmente hago esto configurando esto a fracasado solamente. También puedes guardar todo si lo deseas. No es realmente necesario en este momento. Bien, aquí estamos. Hagamos otra cosa ahora. Esta cápsula de aquí es la colisión para este personaje. Realmente no necesitamos colisiones porque los personajes simplemente están parados en el entorno. Lo que podemos hacer es cerrarlo todo. Abramos la base enemiga para esta cápsula. Sólo para que no sea así de grande. En realidad es saber que es así de grande y el personaje es así de pequeño. Por lo general se ajusta al personaje. En lugar de hacer clic en este componente de cápsula y cambiar el valor aquí en la altura de la cápsula y el radio de la cápsula para que se ajuste al personaje así. En lugar de hacer esto por cada personaje, recuerda que solo voy a hacer clic en esta flecha para restablecerla. Por defecto, recuerda que tenemos la base enemiga, que es la clase padre. Ir a la vista. Sólo voy a dar click aquí e intentar configurarlo a 12 por 12 así y compilar. Y ahora puedes ver cómo se ve en la noche porque ahora automáticamente lo cambia por cada uno de ellos. Tienen toda esta configuración aplicada. Déjame echarle un vistazo y así es como se ve. Este que estamos usando para cuando haces clic con el ratón y dañas al enemigo. Voy a hacerlo un poco más grande para que podamos golpear al enemigo mucho más fácil. A lo mejor en vez de 12 por 12, hagámoslo 16 por 16. Vamos a probar esto. Siempre podemos hacerlo más grande si el hit box es demasiado pequeño, 16 por 16. Se ve bien para el componente de la cápsula. Voy a hacer click en él. De hecho voy a bajar aquí en la configuración de Colisión y voy a decir generar eventos de superposición. No, no aquí para la colisión, necesitamos agregar algo de colisión más adelante. Pero por ahora vamos a hacer clic aquí y decir que no hay colisión, y podemos hacerlo personalizado más adelante. Ve a compilar y guardar todo. Ahora cada una de estas clases de planos, tienen la colisión establecida en non también Para el sprite, solo asegúrate de que no tenemos ninguna colisión en la base enemiga De nuevo, recuerda a los sprites de base enemiga en la colisión. Voy a poner n aquí, Sin colisión y todo se ve genial. También en el componente de movimiento del personaje, asegúrate de que la gravedad sea cero para que no nos caigamos. Esa aceleración máxima es cero. Podemos hacer que la velocidad máxima de caminata sea cero. Todo se ve bien. Creo que en realidad no necesitamos cambiar mucho. Vamos a compilar aquí. Vamos a guardar todo. Y esto fue para los enemigos. Siempre puedes arrastrar uno de ellos. Por ejemplo, el esqueleto. Se puede escribir en la Y para ser cero. Lo traemos al frente, y aquí está. Así es como se ve si haces clic en, recuerda es la vista del juego. Así que puedes hacer click en para ocultar los íconos y podrás ver cómo se ve. Puedes hacer clic en el botón derecho del jugador y pilotar la cámara. Puede hacer clic en F 11 aquí para maximizar la vista. Recuerda 11 es si hago clic aquí, es el modo inmersivo 11, maximizaremos la ventana gráfica Si deseas cambiar la posición de la cámara, siempre puedes hacer click aquí y cambiar la ubicación de la cámara para que quede centrada. Puedo ver el punto de pivote aquí para la cámara. Puedes cambiarlo para que esté en el personaje. Por ejemplo, puedes hacer clic en 11 para maximizar. Incluso puedo hacerlo más abajo así. 11 aquí está mi personaje animado y todo se ve genial. Quiero, sin embargo, dar clic en mi personaje o en la cámara de mi jugador. En la cámara, sólo voy a escribir 640 aquí. En cambio, sólo voy a alejar un poco. Creo que está un poco demasiado acercado. Esto fue demasiado ampliado, creo. Déjame en realidad solo tratar de hacer clic derecho y apilarlo. Y da click en 11. Y así es como se ve, se ve mucho mejor que antes. Y estoy contento con los resultados. Déjame dar click en este botón para volver a salir de la cámara. Voy a dar click aquí. Elimine esto por ahora. Sí, todo se ve bien. Ya tenemos a los enemigos establecidos en clases de planos. Ahora sigamos adelante y guardemos todo. Pasemos al siguiente. 20. 3.07 Aplicación de la cámara del jugador por defecto: Lo que tenemos que hacer ahora antes continuar es asegurarnos de que la cámara del jugador esté mirando el juego cuando jugamos el juego. Porque puedes ver cuando hago clic en jugar, mira el juego desde donde estoy ahora mismo en la ventana gráfica Y no es realmente usar nuestra cámara lo que configuramos aquí. Sigamos adelante y hagamos eso. Da click en este reproductor BP y sigue adelante y bórrelo, porque lo que tienes que hacer ahora es dar click arriba aquí. En su lugar, vaya a Básico y seleccione este llamado Componente de Inicio de Jugador . Ahora bien, si lo arrastre aquí abajo al frente, se puede ver que tiene una flecha. Tengo que rotarlo aquí. Pulsar sobre para la herramienta de rotación y girarla para que la flecha apunte al mapa. El inicio de los jugadores va a permitir que el jugador genere aquí donde lo puse. Ahora lo que necesitas hacer es simplemente asegurarte dentro del modo de juego, si vas al modo de juego y guardas todo dentro del modo de juego en los valores predeterminados de clase asegúrate de que la clase P predeterminada, cambias del punto predeterminado porque queremos usar el jugador BP para engendrar con como nuestro La clase de puntos por defecto es BP player y compilar y guardar todo si quieres. También puede asegurarse haciendo clic aquí en Configuración del proyecto, Editar configuración del proyecto, y yendo a los mapas y modos aquí, asegúrese de que la cláusula de puntos predeterminada también sea BP player. Debe ser automáticamente cuando se aplica al modo de juego así como dentro de la configuración del mundo. Nuevamente, si no tienes la configuración del mundo abierta, puedes hacer clic en Ventana arriba aquí, abrir la configuración del mundo, pero dentro de aquí en el modo de juego, puedes dar click aquí abajo en esta flecha y podrás ver que el jugador BP es la cláusula por defecto. Nuevamente, todo esto debería aplicarse automáticamente cuando lo cambies dentro de aquí, no te preocupes demasiado por ello. Pero siempre es agradable saber que aquí tiene que ser correcto y también tiene que ser correcto en la configuración del proyecto. Ahora si hago clic en Play, va a usar al jugador BP como predeterminado en clase para engendrar en el mundo Si hago clic en 11, así es como se ve. Lo que puedes hacer es que siempre puedes hacer clic en los inicios de los jugadores y puedes cambiar la X, Y, y Z. puedo decir que realmente no está cambiando aquí porque creo que es porque estoy jugando ahí Si lo acabo de mover hacia abajo y hago clic en Reproducir, puedes ver que cambia la posición. Siempre se puede tratar de centrarlo aquí, lo que sea. Porque el enemigo va a engendrar quizá de este lado. Y voy a moverlo un poco más hacia un lado. Vamos a hacer clic en Reproducir. En realidad no es demasiado importante. Creo que esto está bien por ahora. También lo vamos a arreglar más tarde, pero esto es bueno para mí. Demos clic en Archivo y guardemos todo. Y ahora cada vez que hacemos clic en Play, estamos usando este spawner para generar la cámara Y jugamos desde este punto de vista. Adelante, guarda todo, y pasemos al siguiente. 21. 4.01 Crea el punto de aparición del enemigo: Lo que podemos hacer ahora es que podemos empezar a sumar el punto de desove para el enemigo porque ahora es el momento de que el enemigo genere en el mundo Para ello, vamos a crear un punto de desove. La forma en que podemos crear un punto de desove. Ahora podrías pensar que podrías agregar otro inicio de jugador e intentar que este jugador comience la ubicación para engendrar al enemigo Pero esto es sólo para el jugador y se va a confundir cuando haga clic en play. Ahora en realidad está usando este, y cuando vuelvo a hacer clic en reproducir está usando este. Sigue cambiando entre esos y se confunde. Eliminemos este segundo ahora para los puntos de generación en su lugar, hagamos clic en los planos Y déjame hacer clic derecho y hacer una nueva carpeta. Vamos, llamémoslo puntos de generación. Vamos a abrirla. Hagamos clic derecho y creemos una nueva clase de blueprint como punto de generación. Simplemente hagamos un muy sencillo en este llamado actor base o simplemente actor y haga clic en él. Llamemos a este punto de spa BP base. Nuevamente, suelo hacer clases de blueprint porque me gusta crear clases de blueprint para niños que podamos usar más adelante Si necesitamos cambiar valor específico para todos ellos, podemos hacerlo dentro de la principal aquí los padres. Pero tal vez no necesitemos crear más de un punto de España, no estoy seguro. Pero siempre es agradable crear una base, haz clic derecho aquí. Este también es el caso cuando desarrollas un juego más grande. No estás seguro de si necesitas más de un punto de España. Pero siempre es agradable crear uno padre porque podrías arrepentirte más tarde si no creas uno y tienes que volverlos a hacer. Hagamos clic derecho aquí y hagamos una clase de plano infantil. Vamos a llamarlo EP Enemy spa Point. Ahora puedo hacer clic y arrastrar esto al mundo. Pongamos la Y a cero. Es aquí en el frente. Puedes engendrar al enemigo donde quieras. Por ejemplo, puedes engendrar al enemigo aquí. Lo que no sea demasiado importante en este momento, si hago clic en Jugar, el enemigo va a engendrar aquí Bien, ahora hemos creado el punto de generación. Vamos a guardar todo por ahora. Vamos a hacer clic en este punto de generación enemigo. Asegúrate de que no necesitamos cambiar ninguna configuración. Realmente no tenemos mucho. ver aquí en los componentes, solo tenemos el ícono que no tenemos que podemos hacer dentro de aquí porque no hemos agregado nada. No necesitamos hacerlo. Sólo estoy usando a este actor. Encuentra la ubicación y rotación en el mundo para que podamos engendrar al enemigo Bien, eso fue todo por el punto de engendro. Y sigamos en la siguiente. 22. 4.02 Haz que aparezca el actor de clase: El punto de todo esto ahora es que necesitamos engendrar al enemigo ¿Y cómo engendramos las cosas en el mundo? En Unreal Engine, hagámoslo dentro del Player Controller Entonces, lo que suelo hacer en el Player Controller es que engendro cosas en el mundo Si es personaje, necesito engendrar si es un arma, necesito desovar si es una moneda de oro, necesito Todo se hace dentro del control del jugador. Vamos a abrirla y vayamos al gráfico de eventos. Porque quiero programar ahora. Por cierto, puedes mantener presionado el clic derecho y navegar por aquí. Permítanme seleccionar a los dos. Pulsa Eliminar en mi teclado. Y empecemos por aquí. Cuando empiezas a hacer programación, básicamente necesitas pensar, ¿qué tengo que hacer? Bien, tengo que descomponerlo. Bien, tengo que engendrar a un enemigo aquí. Esto es lo que quiero. ¿Qué tengo que hacer? Necesito usar la función principal que se usa para generar cosas Hago clic derecho. Si no sabes cómo se llama, siempre puedes por ello, por ejemplo, desovar Puedes intentar echarle un vistazo y ver cuál se ajusta mejor al tuyo. No son todos estos casting, las funciones se detuvieron aquí, puedes ver que se llama, estas son las funciones que puedes usar. Si no sabes cómo se llama, solo busca la palabra. Por ejemplo, necesito engendrar algo. Solo buscando desove En realidad este actor spawn de clase, voy a darle click aquí Esta es la función que va a engendrar cosas para nosotros. Ahora para poder ejecutar código dentro del motor vulnerable, necesitas un evento. Sin un evento, no puedes ejecutar código si escribes click y bajas aquí y buscas eventos. Si lo puedo encontrar aquí. Despachadores de eventos, no está aquí arriba. Si subo puedo en realidad este, es un evento en el evento publicitario. Se puede ver que estos son los íconos de los eventos. Y tienes muchos eventos que puedes usar para iniciar tu código. Por ejemplo, comenzar a jugar es el más sencillo. Si haces clic en él, puedes ver que los eventos están marcados con rojo, las funciones están marcadas con azul. El rojo de aquí, Beginplay simplemente está diciendo que este es un evento simple ¿Qué debería pasar cuando empiece a jugar el juego? Si haces clic aquí y lo conectas. Ahora bien, si haces clic en Reproducir, va a ejecutar esta función aquí. Sin un evento, no se puede ejecutar la codificación en un motor real. Necesitamos usar este actor spawn en lugar de usar un evento normal Hagamos clic derecho y hagamos un evento personalizado. Vamos a hacer un evento personalizado. La diferencia es que con el evento personalizado es que solo puedes darle un nombre personalizado. Yo sólo lo voy a llamar spawn M. Esto es lo que queremos hacer Voy a conectarlo aquí, y aquí vamos. Para esta función spawn, necesitamos definir qué necesitamos desovar Por ejemplo, necesitamos engendrar al pícaro, necesitamos engendrar al guerrero, y así sucesivamente Ahora realmente depende de qué nivel estés, porque en Clicker heroes por ejemplo, realmente depende de mi en qué nivel te encuentres En el nivel uno tal vez quieras engendrar al guerrero y el nivel dos tal vez quieras engendrar al Chamán Ok y así sucesivamente Así que realmente no podemos especificar cuál queremos generar en lugar de simplemente especificar aquí lo que queremos engendrar depende del nivel Voy a dar click y arrastrar este pin a la función aquí y podremos decidir más adelante. En lugar de llamarlo clase, voy a llamarlo enemigo que queremos engendrar aquí Esta es la variable que agregamos. Lo realmente genial, este spawn se transforma también. Podemos arrastrarlo hasta aquí. Pero en lugar de crear una variable, puede hacer clic en el evento aquí y hacer clic en el más y crear la variable. Por ejemplo, puedo dar click aquí sobre el tipo de variable y puedo seleccionar transform, igual que esta. Y puedo conectarlos juntos. Puedo hacerlo así, o si acabo de borrar este de nuevo, puedo simplemente hacer clic y arrastrar como lo hicimos antes, soltarlo en el evento, y lo crea para mí automáticamente. Método muy chulo para hacerlo ya que voy a engendrar al enemigo Ahora para la transformación de desove, realmente depende de dónde esté este punto de desove Sólo voy a ponerlos a ambos en el evento. Cuando utilicemos este evento más adelante, podemos especificar dónde está el punto de desove y también podemos especificar qué enemigo queremos desovar Pero por ahora realmente no podemos decidir aquí. Para el desove, voy a hacer clic aquí y decir intenta ajustar la ubicación, pero siempre desove para asegurarme de que mi enemigo va a desovar aquí por aquí, siempre es bueno tener una variable de qué enemigo has Voy a hacer clic derecho en éste y promoverlo a una variable. Voy a llamar a este spawn. Enemigo. Bien, lo que simplemente estamos haciendo es que estamos generando un enemigo, y luego estamos almacenando esta información en una variable, que podremos usar más adelante Porque este es muy agradable de usar si necesitamos hacer algo con este enemigo engendrado, Tenemos estos datos dentro de una variable Bien. Esta es la función simple, el actor spawn de clase Puedes ver aquí si llamo a este evento más tarde porque no puedes ejecutar este código. Entonces, si hago clic en play, no esperes que se ejecute el código, pues en Unreal Engine, hay que especificar en el motor cuándo quieres ejecutar este evento Por ejemplo, puedo hacer click derecho aquí y puedo buscar a mi enemigo spawn Evento, engendrar enemigo. Y se puede ver aquí y dice función de llamada. Así puedo hacer clic en él y puedo llamar a mi código engendrar enemigo. Puedo llamarlo aquí siempre que lo llame, entonces puedo ejecutar este código. Si solo escribo el comienzo, Juega solo para mostrarte que comienzas, juego es el evento más simple. Puedo conectarlo aquí. Cada vez que empiezo a jugar el juego, va a llamar a este evento, que luego va a ejecutar este código aquí. Así es como sucede. Digamos por ejemplo, quiero engendrar al mago Por ahora, déjame tomar este, en lugar de escribir un valor, déjame tomarlo y decir que voy a hacer una transformación solo de forma manual. No lo vamos a hacer así, pero sólo voy a mostrarte, por ejemplo, vamos a copiar la ubicación de este punto de desove Voy a decir 170 por cero por -120 Aquí en la ubicación 1700 -120 voy a compilar Ahora cuando hago clic en jugar, puedes ver que mi enemigo ha engendrado en esta determinada ubicación Es el mago el que ha generado todas estas funciones o así como llamamos eventos Tienes que tener un evento. Ejecutas este código, le dices al motor, ejecutas mis eventos enemigos engendrados Y va a ejecutar tus eventos con las cosas especificadas que has especificado aquí, quiero engendrar al asistente, por ejemplo, en esta ubicación Va a enchufar esta información aquí, a aquí. Y va a engendrar al enemigo y almacenarlo en una variable Ahora vamos a eliminar esto. No lo necesitamos. Yo sólo iba a mostrártelo. Vamos a compilar y guardar todo. Ahora pasemos al modo juego. Siempre podemos engendrarlo desde aquí, desde el inicio de la obra. Pero solo para hacer un código un poco más limpio, engendremos al enemigo dentro del modo de juego Ahora que tenemos este código donde engendramos al enemigo, vamos a ejecutar el código dentro del modo de juego Debido a que el modo de juego es decidir las reglas del juego, es más limpio hacerlo dentro de aquí. Pero en realidad no importa en un solo jugador. Si engenzas al enemigo desde aquí o engenzas al enemigo desde aquí, realmente no importa Pero solo para hacer un código más limpio, hagámoslo en el modo juego. Lo voy a hacer en el inicio Play. Sólo voy a seleccionar esta y eliminarla dentro de aquí. Arrastremos y busquemos al enemigo engendrado. Aquí puedes ver cuando haces esto, no puedes ver nada. Esto se debe a que ahora este modo de juego no se da cuenta lo que has creado dentro de esta otra clase de planos Recuerda, estas son dos clases de planos diferentes. Ahora en realidad necesitas entrar en algo llamado comunicación de planos Necesita comunicarse con otra clase de blueprint, porque este modo de juego necesita usarlo desde el controlador de juego Necesitamos usar algo llamado casting para comunicarnos con este otro plano Y eso lo vamos a hacer en la siguiente lección. 23. 4.03 Comunicación de planos - Casting: Ahora nos metemos en la comunicación de planos. Y ahora necesitamos comunicarnos con el controlador del jugador dentro del modo de juego para decirle al controlador del jugador, o aquí en el modo de juego, que use y llame a este engendro enemigo Para ello, vamos aquí abajo, haz clic derecho y di ahora lo que necesitas pensar es ¿con qué necesitas comunicarte? Necesito comunicarme con el controlador del reproductor. Busquemos el controlador del reproductor. Necesitamos obtener esta función llamada get player controller. Estamos obteniendo este controlador de capa predeterminado de Unreal Engine Ahora tenemos que decir aquí que necesitamos usar este controlador específico que hicimos. No necesitamos usar este controlador de reproductor predeterminado. Lo que tenemos que hacer es justo a partir de aquí y decir elenco dos. Esto es lo que es el casting. Le estás diciendo al motor que quieres usar este controlador personalizado específicamente tienes que escribir el nombre del mismo como a PC Dungeon Clicker Adelante y conéctalo. Ahora lo que estamos haciendo aquí es que estamos tomando el controlador de reproductor predeterminado, estamos lanzando a este clicker de mazmorras de PC Así que básicamente estamos diciendo que queremos usar cosas dentro de nuestro propio controlador de reproductor personalizado en lugar de este de aquí. Ahora podemos llamar a lo que creamos dentro de aquí, este enemigo engendrado Entonces por ejemplo, ahora puedo arrastrar de aquí y decir engendrar enemigo Ahora puedo usarlo, recuerda que no puedes simplemente escribir click y decir engendrar enemigo porque no va a mostrar Sólo va a mostrar si arrastras desde aquí y dices engendrar enemigo porque está dentro de aquí Y ahora realmente puedes usarlo. Ahora te estás comunicando con este plano. Pero el problema con esto con el casting es que creas referencias duras en Unreal Engine Cuando creas un juego y creas un juego grande, puedes imaginar cuánto estás usando casting porque te estás comunicando con muchos planos a la vez Tienes muchos de estos. Ahora bien, esto es un problema porque crea referencias duras. Y lo que son las referencias duras, es que necesitas cargar esas referencias cada vez que inicies el juego. A veces ves si abres un juego antiguo y se está cargando como 15 segundos antes de que te muestre el menú principal. Esto se debe a que está cargando todas las referencias duras antes de que pueda comenzar. Esto es realmente malo. No estoy diciendo que no debas usar casting en ningún lado, sino úsalo como con facilidad, no lo uses en todas partes. Úsalo donde sea que lo encuentres. Bueno para usarlo va a llegar ahí. Con experiencia, sabrás cuándo quieres usar el casting. Y por qué no tratar de evitar el casting tanto como sea posible. Así que permítanme simplemente eliminar este casting ahora, o en realidad simplemente dejar que esté aquí. Déjame solo Alt y desconectaré esto. Aquí. Déjame moverlo hacia abajo por ahora. Ahora, en lugar de usar casting, usemos algo llamado interfaces de blueprint Pasemos a la siguiente lección y veamos qué son las interfaces de planos 24. 4.04 Comunicación con planos - Interfaces: Bien, entremos en las interfaces de blueprint. Ahora bien, este tema es difícil para muchos principiantes, pero voy a tratar de explicar como de costumbre lo mejor que pueda para explicarte esto. Para evitar altas referencias con la fundición, usemos interfaces de blueprint Primero, vamos a hacer clic derecho aquí, Hacer una nueva carpeta llamada interfaces. Mantengámonos organizados dentro de aquí. Vamos a hacer clic derecho ahora. Dentro del blueprint, se ve algo llamado interfaz de blueprint Sigamos adelante y creémoslo. Normalmente lo llamo como un principio gente lo llama BPI para interfaz blueprint. Hagámoslo en realidad. Vamos a llamarlo BPI, interfaz de blueprint. Llamémosle a éste. El nombre de éste es a lo que intentas hacer referencia, a lo que sea que estés tratando de comunicarte. En este caso, estoy tratando de usar una función del controlador de mi reproductor. Voy a llamar a este controlador PI . Esto es a lo que quiero referirme. Vamos a abrirla. Dentro de una interfaz de blueprint, puedes ver que tienes una ventana gráfica Realmente no se puede hacer nada. Dice solo lectura, aquí no se puede arrastrar ni nada. Lo único que puedes hacer es crear funciones aquí a un lado. Vamos a hacer clic en la primera función aquí. Déjame dar click sobre dos para cambiarle el nombre. Déjame llamar a este, Obtener referencia de control de juego. Obtener referencia de control de jugador. Esto es lo que estoy tratando de hacer. Estoy tratando de obtener la referencia para el controlador del reproductor para que pueda usar lo que sea que haya en él. Al igual que lo que hicimos con el casting, puedo usar esta función dentro de ella aquí. Volvamos a la interfaz. Obtenga la referencia del controlador del reproductor dentro de aquí. Quiero hacer una variable de salida aquí. Ahora el tipo de variable es lo que esté tratando de hacer referencia. Estoy tratando de hacer referencia a mi controlador de reproductor. Necesito buscarlo aquí abajo, Buscar controlador de PC, lo llamamos PC en realidad, net Player controller. Nosotros llamamos PC Dung Clicker. Vamos a darle un click sobre él. Cambiemos el nombre de esto a Play Controller así como así. Vamos a compilar y ya estamos todos hechos dentro de aquí. Lo único que creamos es esta función de referencia del controlador get player. Y agregamos una variable a la salida aquí llamada player controller. Vamos a usar esto para definir este controlador de reproductor aquí. Ahora, ahora que hemos creado la interfaz del blueprint, vamos ahora al controlador Player y dentro de la configuración de clase, necesitamos agregar esta interfaz por aquí Vamos a hacer clic en la configuración de la clase, busquemos el BPI y agreguemos el controlador Player Ahora observe cuando agregue el controlador Player aquí en la interfaz que en realidad obtiene una barra aquí llamada interfaces. Y puedes ver esta función de referencia de get player controller que acabas de crear, la lista, haz doble click sobre ella. Y aquí está aquí, puedes editarlo. Lo que hay que hacer dentro de aquí es simplemente arrastrar y decir auto hazlo aquí. Ahora tenemos una autorreferencia. Lo que significa una autorreferencia, básicamente, es que estamos definiendo esta variable de control del jugador. Porque hago clic en Alt y doy clic aquí para desconectarlo. Si no hicimos esto, conoce qué es esta variable, está vacía, no tiene ninguna información, pero realmente no sabe que es este controlador de reproductor en el que estamos ahora mismo. Esto es lo que significa la autorreferencia. Si enchufamos esto, le hemos dado un valor a esta variable. Básicamente le estamos diciendo a esta variable que el controlador del jugador del que estamos hablando es autosignificado. Sea cual sea el plano en el que nos encontremos ahora mismo, se trata de una autorreferencia Ahora sigamos para que no se vuelva confuso. Y voy a explicar todo el proceso cuando terminemos. Ahora que hemos hecho esto, vamos a cerrarlo. Vamos a abrir o el modo de juego. Ahora, al igual que antes, digamos que obtenga el controlador del reproductor y obtenga el controlador de reproductor predeterminado. Ahora en lugar de fundir, ahora podemos arrastrar y decir referencia del controlador. Ahora puedes ver que esto viene de la interfaz del blueprint. También es una función de interfaz de blueprint. Cuando veas este mensaje al final, hagamos clic en él. Esto también es lo que significa este icono. Significa que proviene de una interfaz de blueprint. Sigamos adelante y conectémoslo. Ahora a partir de aquí, vamos a arrastrar y decir engendrar enemigo, igual que antes Y ahora podemos llamar a lo que sea que esté dentro de él. Ahora ya ves cuando voy al controlador del reproductor ahora. Y si agrego una nueva variable llamada, por ejemplo, enemigo salvamos. Pila. Entonces ahora dentro del modo de juego, puedo dirigir desde aquí y decir matar enemigo. Y ahora se puede ver, puedo ver esta variable que acabo de crear. Sea lo que sea que creo dentro de aquí, puedo comunicarme ahora con el controlador del reproductor y usar todo desde él. Bien, déjame explicarte todo el proceso antes de que termine este video. Si ya lo has entendido, puedes ir a la siguiente lección. Yo sólo voy a borrar esta. Entonces sólo voy a explicar todo el proceso. Entonces es fácil de entender. Para empezar, lo que hicimos es crear esta interfaz de blueprint haciendo clic derecho Y en el blueprint creamos la interfaz de blueprint. Ahora dentro de esta interfaz, acabamos de crear una función llamada get player controller reference. Porque queremos obtener la referencia de los controladores del reproductor. lo que sea que necesites hacer referencia, necesitas crear una variable y establecer el tipo de variable. Aquí está lo que sea a lo que esté tratando de hacer referencia. Estamos tratando de hacer referencia a este controlador de jugador llamado PC dungeon Clicker Es por ello que por aquí en el tipo de variable, configuré en PC dungeon clicker Básicamente solo búscalo aquí, PC dungeon Clicker, y lo encuentras así Bien, sólo dale un nombre. Lo acabo de llamar Player Controller. Y recuerda compilar. Si no compilas, no aparecerá por aquí. Así que recuerda compilar, guardar todo. Ahora necesitas agregar esta interfaz de blueprint en el controlador del reproductor, porque esto es a lo que estás tratando hacer referencia aquí Entramos en la configuración de la nube, agregamos la interfaz de blueprint Al hacer esto, la función aparecerá aquí a la izquierda. Abres esta función dentro de aquí. Básicamente hicimos una autorreferencia porque si desconectas esto y compilas e intentas en el modo juego hacer esto aquí, si haces clic en play, no estoy seguro si me va a dar un error en este momento. Lo hará porque estamos corriendo esto en la jugada de inicio y me va a dar una época. Dirá acceso no. Al intentar leer la propiedad, obtenga la referencia del controlador del jugador dentro del enemigo engendrado Si hago clic en él aquí, da clic en esta. Déjame minimizarlo para mostrarte si me vuelco por aquí y hago clic en este enemigo engendrado La era ya está aquí. Dice Access. Tratando de leer la propiedad, obtener la referencia del controlador del jugador. Dice Access non, es decir, no tengo ninguna información de lo que intentas darme. Estoy tratando de darle este controlador Player como referencia. Pero no dice ninguno. Significa que aquí no hay información alguna. Y no puedo hacer nada con esto es porque en el control del jugador, en las interfaces del blueprint, no conectamos este yo Porque si está vacío, el motor no sabe realmente qué es este mando de reproducción. Tenemos que decírselo. El controlador de jugador del que estoy hablando soy yo aquí. El controlador del reproductor. Esta clase de planos ya estoy en estos momentos Ahora que lo hemos definido en el modo juego, ahora podemos llamar a esta interfaz de blueprint Pero primero tenemos que obtener el controlador de reproductor predeterminado de esto, este get play controller reference. Pero desde la interfaz de blueprint desde aquí ahora podemos acceder a todo desde ella. Porque recuerda en el mando de juego hicimos esta autorreferencia aquí. Sabe de qué es el mando de juego del que estamos hablando. Bien, sé que es un poco confuso para los principiantes, pero confía en mí, concepto muy, muy simple. Si solo practicas con él 23 veces, trata de re, mira el final del video. A lo mejor solo intenta entenderlo. Vamos a hacer esto al menos cinco veces en este curso, por lo que también verás otros ejemplos, no solo el controlador de juego, sino también veremos otros ejemplos. También voy a dejar que lo hagas primero antes de que yo lo haga, así puedes conseguir algo de práctica aquí también. Pero por ahora ya terminamos. Esto lo hemos conectado. Sin embargo, puedes ver aquí necesitamos la ubicación de desove Tenemos que engendrar al enemigo en este lugar de aquí. En lugar de hacer un valor estático, como arrastrar y decir transformar y hacer un valor estático por ejemplo, podemos simplemente escribir un valor aquí Queremos saber dónde está este punto de desove. Tenemos que engendrar a este enemigo. Dependiendo de dónde esté el punto de desove, esto es lo que vamos a hacer en la siguiente lección 25. 4.05 Consigue los valores de punto de aparición: Aquí he vuelto a abrir el proyecto y ahora vuelve a decirme que el nenita está habilitado pero no puede renderizar porque el proyecto tiene a Nani deshabilitado en una I. Y recuerdo que desactivamos Nanite en la configuración del proyecto ahora en lugar de escribir anite aquí en la consola 2047 porque ya Cada vez que vas a cerrar el proyecto y abrirlo de nuevo, va a mostrar este mensaje. En cambio, lo que quiero que hagas es que vayas a tu carpeta de proyectos y puedas encontrar en documentos. Y entrando en los Proyectos Irreales, aquí es donde se guardan tus proyectos de Unreal Engine Entonces entrando en el Dungeon Clicker, quiero que abras la configuración y abras esta llamada Default Engine I. Dentro de aquí, lo que quiero que encuentres es quiero que encuentres uno aquí, Proyecto habilitado es igual a falso aquí abajo. Voy a escribir mi código personalizado aquí en lugar del comando de la consola. Vamos a escribirlo aquí. Nt es igual a cero. Esto es lo que quiero que escribas, R es igual a cero. Vamos a guardarlo. Por cierto, estoy usando el Bloc de notas plus plus Puedes usar tu editor de texto normal. Realmente importa lo que uses solo escribiendo R n es igual a cero. Vamos a cerrarlo. Cerremos también este proyecto. Déjame intentar de nuevo para ejecutar mi proyecto y ver si el mensaje se ha ido. Y debería haberse ido. No debería estar ahí. Ahí vamos. El mensaje ya no va a aparecer. Bien, increíble. En lugar de aquí, lo que queremos hacer ahora es querer obtener el valor del punto de generación Porque recuerden donde lo dejamos en el modo, hicimos la interfaz blueprint Llamamos a esta función enemiga de engendro o evento más bien llamamos este evento está dentro del controlador del jugador Éste. Por cierto, déjame aumentar de nuevo mi escala de UI porque cada vez que cierro el motor, en realidad tengo que aumentarlo aquí a 1.25 para que puedas ver mejor. Espero que no se me olvide. Vamos a abrir de nuevo. Aquí, y aquí se ve al enemigo engendrado Este es el evento que llamamos desde el modo de juego. Ahora lo que tenemos que hacer es decirle dónde queremos engendrar a este enemigo Esta es la transformación de engendro. ¿Cómo hacemos esto? Tenemos que llegar a donde está esto en el mundo. Ahora hay una función que necesitas usar y se llama actor de clase. Actor de clase es una función que consigue algo que ya está engendrado en el mundo Por ejemplo, está este spawpoint enemigo que podemos conseguir. Si abres este get actor de clase, si haces clic aquí y buscas spawn, entonces puedes ver que puedes conseguir BP enemigo spawpoint O puede obtener la base BP spawpoint y así sucesivamente. Para que puedas obtener estos planos Si obtienes un plano que no se genera, por ejemplo, digamos que llamo BP noche, esta la noche que creamos Digamos que yo digo que consiga actor de la noche de clase y yo juego el juego. Te va a dar un error. Esto se debe a que la noche es estanque en el nivel. Estas son todas las cosas que tenemos en nuestro nivel. Los jugadores inician el volumen posterior al proceso, el mapa de mosaicos y el punto espinoso enemigo. Lo que podemos hacer es buscar punto de spa enemigo. Este punto de spa enemigo. Estamos consiguiendo a este actor. ¿Qué podemos hacer con éste? De hecho, vamos a meterlo dentro de la jugada de inicio. Antes de que hagamos todo esto aquí, déjame arrastrar de esta manera y voy a colocar este aquí abajo así y voy a conectarlo. Lo que queremos hacer aquí es que hagamos un clic derecho, promocionemos esto a una variable. Vamos a llamarlo punto de engendro enemigo. Ahora lo tenemos almacenado en una variable, y vamos a conectarlo. Ahora podemos usar esta variable aquí. Tomemos esta variable, arrástrala aquí y hagamos clic en Obtener. O puedes mantener el control y arrastrarlo y soltarlo. Lo conseguirá automáticamente. También puedes mantener pulsada la opción Alt, mantener pulsada la opción alt y arrastrar. Y establecerá esta variable en lugar de simplemente arrastrar y hacer clic en obtener. Y establezca mantener pulsado control y arrastre, o mantenga presionado alt y arrastre. Ahora tenemos este punto de giro enemigo. Y digamos ahora otra vez, si no sabes cómo se llama la función, solo busca la palabra que quiero para obtener la transformación. O obtienes la ubicación de esta variable, de este actor, obtienes ubicación de actor. Puedes usar esto, puedes dirigir desde aquí, puedes ver que realmente no puedes conectarlos. Pero va a convertir esto para ti en motor real va a convertir esto por ti. Ahora no es del todo correcto así. Se puede dirigir desde aquí y decir transformar. Y cuando haces transformación, rompes esta transformación. Porque si no sabes lo que es una transformación, esto es lo que es una transformación. En realidad se puede ver aquí en el panel de detalles. Cuando haces clic en algo, ves la ubicación, rotación y escala de un elemento. Esta es la transformación. La transformación se puede desglosar en la ubicación, rotación y escala. Este color naranja es la transformación. Puedes descomponerlo así. Y puedes conectar la ubicación de Acta aquí. Y va a funcionar bien. Sin embargo, solo para hacerlo más corto, en realidad puedes eliminar esto. Y puedes arrastrar aquí y buscar transformar, y también puedes obtener la transformación de Acta. Ahora a veces hay que tener cuidado porque está obteniendo tanto la ubicación, la rotación, como la escala, y está afectando al enemigo con estos valores. Si haces clic en este objeto, está obteniendo la ubicación que está bien. Yo quiero engendrar aquí También está recibiendo la rotación que es 000, lo cual está bien. Imagínese si este acto tuviera esta rotación, digamos que tuvo esta rotación aleatoria. Esto se va a aplicar a tu personaje. Ten cuidado cuando uses get actor transform. A veces tienes un conjunto de rotación como este para este activo que no quieres que se aplique para tu personaje. En este caso, debe obtener una ubicación por sí mismo. Puedes usar la rotación por sí mismo si no quieres la rotación desde aquí y decir make transform y puedes usar la ubicación en su lugar. Y entonces solo puedes dejar la rotación para que sea 000. Pero en nuestro caso la escala es una que está bien. La escala de personajes también es una. La rotación es de 000, lo cual está bien. Y esta es la ubicación que queremos usar el get act para transformar está perfectamente bien, en este caso aquí. Ahora lo conseguimos. Vamos a compilar y vamos a darle un enemer, por ejemplo, el Orco A ver si el Orco engendra en realidad, eso es por aquí, la jugada del Fc Se puede ver que Orco en realidad está desove. Impresionante. Está funcionando. Ahora podemos desovar aquí. Por ejemplo, escojamos la revista esqueleto. Si hago clic en play, creo que en realidad en vez de hacer clic en Reproducir y siempre minimizando así para ver si funciona, me gusta jugar aquí. Veamos jugando como una nueva ventana de editor, aparece para mí y apareció en mi segundo monitor Pero básicamente esto está aquí, este es el compañero esqueleto, y está funcionando bien. Bien, el desove está funcionando. Ahora bien, qué hay que definir, qué enemigo queremos engendrar Ahora bien, este es un poco más complejo porque como dije antes, cada nivel en el juego clicker tiene su propio nivel uno tiene, por ejemplo, este tipo aquí, el nivel dos tiene a este tipo. Tenemos que definir qué nivel tiene qué enemigo. En realidad no podemos simplemente especificar un enemigo específico aquí. Para ello, tenemos que aprender un par de cosas. Estructuras, datos, tablas, bibliotecas. Pero va a ser muy divertido y también se puede aplicar a tus futuros juegos. Mantente enfocado en el próximo par de lecciones. Cosas muy, muy importantes que vienen. Pasemos al siguiente. 26. 4.06 Introducción a las estructuras: Bien, bienvenido. Y ahora vamos a tener una introducción a las estructuras. Ahora bien, si ya sabes lo que es una estructura, puedes pasar a la siguiente lección. Y si no sabes lo que es una estructura, empecemos aquí. Pasemos a los enemigos. Ahora para los enemigos, vayamos a la base enemiga. Recuerda, en la base enemiga, si creo algo, si creo una variable y digo salud enemiga, por ejemplo, el tipo de variable que establecemos es un flotador. Porque un float es un valor numérico con una posición decimal si compilo, puedes verlo aquí a la derecha. Cuando hago clic en la variable salud enemiga. Y puedo fijarlo a, por ejemplo, 25.6 sea lo que sea esto, la salud del enemigo Ahora también puedo hacer uno nuevo. Por ejemplo llamémoslo tipo enemigo. El tipo de enemigo que tenemos que lidiar con éste. Podemos simplemente ponerle un nombre, lo que sea. Podemos tener muchas variables. Podemos tener la salud del enemigo, el tipo enemigo, el nombre del enemigo, la animación ociosa del enemigo, la animación de muerte del enemigo. Se puede ver que aquí abajo podemos tener muchas variables para el enemigo que define a este enemigo. Sin embargo, para mantenerlo más limpio, utilizamos estructuras. En lugar de llenar todo esto con variables, repasemos y tratemos de usar estructuras. Déjame borrar esta. Y borra esta también. Compila, déjame minimizar esto. Pasemos a la carpeta de planos. Haga clic derecho y haga una nueva carpeta. Llamemos a éste Estructuras. Vamos por aquí, clic derecho, Ir al plano y ya ves éste llamado estructura Adelante y creado, voy a llamarlo ST o estructura. Vamos a llamarlo información enemiga. Esta estructura contiene datos sobre este enemigo. Vamos a abrirlo. Bien, aquí estamos dentro de una estructura. Lo único que hacemos es simplemente crear variables dentro de aquí. Aquí en la información del enemigo, podemos especificar el nombre del enemigo, podemos especificar la salud del enemigo, podemos especificar a qué nivel genera, y así sucesivamente Podemos hacer muchas variables que definen a este enemigo aquí. En lugar de tener todas las variables aquí abajo, en realidad podemos tenerlas aquí en su lugar. Y es mucho mejor usar así, ahora está más organizado. Esto en realidad es justo lo que es una variable o lo que es una estructura y puedes ver los valores predeterminados o las variables que has creado. Los puedes ver por aquí. Muy sencillo. Esta es toda la estructura de datos es mantener algunas variables que se pueden utilizar. En este caso estamos definiendo los datos del enemigo, la información del enemigo. Pasemos a la siguiente lección y llenemos la información del enemigo. 27. 4.07 Información de nivel e información de enemigo: Bien, así que para la información enemiga, definamos algunas variables que usaremos para los enemigos. El primero es el nombre del enemigo. Para éste lo voy a poner en una cuerda. Ahora bien, si no conoces la diferencia entre una cadena y un texto, si seleccionas una cadena y haces clic en Guardar y vas a los valores predeterminados, puedes ver que una cadena es básicamente una línea de texto. Para que podamos escribir el nombre del enemigo. Pero un texto también es una línea de texto donde se puede escribir el nombre del enemigo. Entonces, ¿cuál es la diferencia? La diferencia es que un texto es localizable y también puedes ver que cuando mantienes el mouse sobre él, dice una cadena de texto localizable Localización significa que puedes traducir esto a diferentes idiomas si quieres que tu juego esté en alemán o quieres que tu juego sea en chino, japonés, en ruso, lo que sea. Puedes traducir tu juego si tienes tu diálogo o el nombre de tu personaje hecho con una variable de texto. Ahora bien, si el nombre del personaje está hecho con una variable de cadena, no se puede traducir. A lo mejor dirías, ¿por qué no solo usamos texto como para todo ya que podemos traducirlo y todo va a estar bien Esto se debe a que usa más memoria que una cadena. Usamos cadena si realmente no necesitas localizar lo que sea que estés haciendo No necesito traducir el nombre del personaje. Sólo lo guardaré como una cuerda. Tampoco quiero traducir mi juego. Si quieres traducirlo, por ejemplo, si el nombre de tu personaje es Esqueleto. Skeleton se puede traducir a muchos idiomas. Si quieres traducir eso, tienes que seleccionar texto en su lugar. Solo tenlo en cuenta. Lo que sea que estés haciendo como texto, ¿quieres traducirlo a otro idioma o quieres mantenerlo en el mismo idioma en el que estás codificando este juego? Yo sólo voy a escoger cadena. No quiero traducir nada. Lo que queremos añadir también es la clase. La clase enemiga es la base P M. Así que adelante y busca PPN M base y selecciona la referencia de clase Ahora bien, si realmente no sabes qué es una referencia de clase, es si vas y abres el modo de juego, una vez más, esto es de lo que hemos engendrado es una referencia de clase de actor Puedes ver eso si pasas el mouse sobre él. Entonces esta es la referencia de clase, necesitamos eso para poder definir la referencia de clase enemiga y poder enchufar esta información aquí. Lo siguiente que necesitamos es el tipo enemigo. ¿Con qué tipo de enemigo estamos tratando? ¿Es un enemigo normal? ¿Es un jefe? Podemos agregar un mecánico de autobuses al juego. En lugar de simplemente tener a todos como enemigos normales, también podemos tener un enemigo de autobús. Hagamos un tipo enemigo. Ahora para el tipo enemigo, necesito usar algo llamado enumerador, que no sabemos qué es ahora mismo Dejémoslo así por ahora, y te puedo enseñar en la siguiente lección. Vamos a continuar. Por ahora, hagamos salud al enemigo. Y éste es simplemente un flotador. Y un flotador de nuevo es un número con una posición decimal. Volvamos a hacer clic en el signo más. Y queremos la animación ociosa. Animación ociosa para este personaje. Esto es simplemente un libro plegable. Recuerda, un libro volteo es una versión animada de este personaje aquí, eligiendo el libro de papel. Hagamos uno nuevo. Nuevamente, queremos la animación de éxito. De nuevo es un libro volteado. Agreguemos uno nuevo. También queremos la animación de la muerte. Este es un libro volteado. Bien, estos son todos los datos que necesitamos para el enemigo. Y en realidad estamos terminados aquí. Ahora antes de que terminemos, hagamos también la otra estructura llamada la información de nivel. Si voy a la estructura y voy a hacer clic derecho y hago una nueva estructura en el plano en una nueva estructura Llamemos a esto Información de Nivel. Bien, vamos a abrir esta información de nivel. Ahora lo que tenía que hacer en el nivel info, tenemos que definir básicamente qué enemigo genera en qué nivel Básico aquí necesitamos el nivel que es solo un número. Es un entero, ahora no es un flotador, no es un número con una posición decimal. Debido a que el nivel es el nivel uno, el nivel dos , el nivel tres, en realidad no necesitamos un decimal aquí. En su lugar, puedes usar un número entero que es un número sin un decimal, como puedes ver aquí. Usando un entero como nivel y luego hacer uno nuevo. Y necesitamos el nombre del enemigo. El nombre enemigo vuelve a ser una cadena. A qué nivel o qué enemigo engendra en qué nivel, tenemos que escribir el nivel Por ejemplo, el nivel uno es el nivel dos es el orcam, nivel tres es el guerrero, y así sucesivamente Tenemos que definirlo más adelante. Ahora tenemos la estructura para ello. Tenemos la estructura para el nivel info. Tenemos la estructura para la información enemiga. Ahora en la siguiente lección, aprendamos algo sobre enumeración para que podamos terminar aquí este tipo de enemigo 28. 4.08 Crea el tipo de enemigo Enum: Bien, así que echemos un vistazo a las enumeraciones. Porque aquí en la estructura. Entonces, si vuelvo a las estructuras y abro la información enemiga, hicimos esta llamada del tipo Enemigo. Tenemos que definir qué es y necesitamos crear una enumeración. Ahora podríamos simplemente hacer clic aquí para el tipo enemigo y hacer una cuerda. Ahora dentro de aquí, podemos definir si este enemigo es un enemigo normal o si este enemigo es un enemigo en el juego. Quiero tener enemigos que sean normales y enemigos que sean jefes. ¿Bien? En lugar de hacer una cadena y escribirla aquí, mejor crear una enumeración. Veamos qué es. Vamos a Blueprints. Haga clic derecho, haga una nueva carpeta, llámala Oms. Vamos a abrirla aquí arriba. Hagamos clic derecho para ir a Planos. Y tienes esta llamada enumeración. Adelante y da click en él. Vamos a llamarlo tipo enemigo. Vamos a abrirla. O Enumeración, muy simple, es solo una lista de todo lo que quieras hacer Puede ser una lista de abarrotes, por ejemplo, tomates, por ejemplo, tomates, cola, ketch up, lo Puede ser una lista de cualquier cosa agregando un elemento de lista y puedes escribir lo que sea dentro de aquí. También puede ser una lista de armas que estás haciendo un tirador en primera persona. Puede ser AK 47, puede ser un 41, puede ser un Deagle y lo que quieras hacer una enumeración es simplemente una lista de ítems En este caso, quiero hacer una lista del enemigo o tipo enemigo para nuestros enemigos. Tenemos enemigos normales Si vuelvo a hacer clic aquí y tenemos enemigos jefes, también puedes crear otros tipos si tienes un juego más grande, si ya tienes tu idea para tu juego. Por ejemplo, puedes tener como enemigos legendarios, bucles, legendarios. También puedes tener enemigos épicos y así sucesivamente. que puedas tener más enemigos, pero para mí, solo estoy teniendo enemigos normales y enemigos jefes a los que podemos salvar. Ahora vamos a cerrar esta lista. Ahora aquí puedo buscarlo en el tipo. Si le hago clic para el tipo enemigo, busco el tipo enemigo, esta es mi enumeración y puedo seguir adelante y hacer clic en él y guardar. Ahora tenemos este tipo de enemigo, y si haces clic en los valores predeterminados, puedes ver aquí es mejor que una cadena porque ahora tienes una lista entre la que puedes seleccionar, lo cual es muy genial. Es mucho mejor que escribir la cosa todo el tiempo. Ahora podemos seleccionarlo de la lista si es jefe o si es normal. Bien, realmente no necesitamos definir nada dentro de aquí, porque por cada enemigo, todos tendrán su propio conjunto de información. Para todos estos, no necesitamos enfocarnos en los valores predeterminados por ahora. Adelante y guarda todo. Y eso fue todo para las enumeraciones. Pasemos a la siguiente lección. 29. 4.09 Introducción a las tablas de datos: Bien, entonces antes de continuar, quiero presentarles las tablas de datos. Ahora que hemos creado nuestras estructuras, también necesitamos crear tablas de datos. Si voy a la carpeta de planos, hago clic derecho en hacer una nueva carpeta, y llamo a esta tabla de datos Hago clic aquí, clic derecho. Ahora las tablas de datos no están en los planos. En realidad está aquí abajo en la miscelánea y lo puedes encontrar por aquí, tabla de datos. Das clic en él y seleccionas de qué estructura estás hablando. Yo solo quiero hacer uno para mi información enemiga, también necesitamos hacer uno para la información de nivel. Pero vamos a hacer uno para la información del enemigo. Por ahora, haga clic en. Bien, llamémoslo, por ejemplo, DT mi tabla de datos de información. Mi info. Y vamos a abrirla. Bien, entonces, ¿qué es una tabla de datos? Una tabla de datos es la que realmente define a cada enemigo. Por ejemplo, la animación inactiva, la animación de golpe, así sucesivamente. Entonces creamos una estructura, pero cada enemigo tiene sus propios valores de estas variables en la tabla de datos. Puedo dar click en D aquí en la fila. Se puede ver que esta es la nueva fila aquí. E incluso puedes cambiar el nombre de la fila, por ejemplo, el nombre de la fila, puedes simplemente llamarlo uno o lo que quieras. Por ejemplo, para el primer personaje, si voy a personajes activos, el primero es la noche. Lo que puedo hacer, por ejemplo, es que puedo escribir seleccionar la clase de la noche aquí. Y puedo seleccionar qué tipo de enemigo es la noche. Es un enemigo normal. ¿Cuánto tiene? Digamos que tiene 100 de salud. Ahora tengo que seleccionar la Imación Edlin para ello. Tengo que seleccionar la animación Hid para ello, y también tengo que seleccionar la animación de muerte para ello. Ahora tengo toda esta información y puedo volver a hacer clic en el plus. Para el siguiente quiero, por ejemplo, definir mi Or. Puedo escribir este tipo se llama Orco. Es la clase BP Or. Por ejemplo, un jefe, tiene 500 de salud y estas son todas las animaciones para ello y así sucesivamente. Entonces cada enemigo tiene sus propios valores y puedes usarlos ahora para hacerlo mucho más rápido. En lugar de hacerlo en el motor, podemos hacerlo dentro de Google Sheets. Dentro de una hoja de Google, podemos hacerlo mucho más rápido. Y también las personas que no son desarrolladores de juegos también pueden trabajar allí, por ejemplo, los diseñadores de juegos. Pasemos a la siguiente lección y echemos un vistazo a cómo podemos hacerlo en Google Sheets. 30. 4.10 Tablas de datos de información de nivel e información de enemigo: Bien, sigamos adelante y abramos Google dentro de Google, justo dentro de tu unidad. Y lo puedes encontrar por aquí en drive. Simplemente entra en tu disco, haz clic derecho en cualquier lugar, haz nuevos pliegues o lo que sea. Pero crea aquí un Google Sheets y crea uno. Sólo voy a llamar a esta mesa encendida o lo que sea. Puedes llamarlo como quieras. Bien, aquí me gusta dar click en Control para seleccionar todo. Simplemente arrastra las columnas aquí abajo la forma en que tengo más espacio para trabajar y controlar a. seleccionar todo y convertirlo en otra fuente en la que pueda dar click aquí, línea horizontal, media, esta y esta. Simplemente me gusta comenzar con esto y seleccionar la parte superior y hacer clic en Negrita. Ahora estoy listo para usar mi documento. Ahora todo esto es opcional. Realmente no necesitas hacer todo esto. Lo que tengo que hacer aquí primero es que necesito escribir una identificación. Necesitamos una identificación porque en Unreal engine, hay que tener una identificación Realmente no se puede, este es el ID, el nombre Ron, Realmente no se puede usar esta hoja de Google. Si no tienes una identificación. Esto es necesario. Necesitamos escribir todas las variables para nuestra estructura. Si vuelvo y abro la información de mi enemigo, esto es lo que necesito escribir. Necesito escribir el nombre, tipo enemigo. Volvamos aquí. Tipo enemigo, hay que escribirlo específicamente así. No se puede escribir de otra manera. Hay que escribirlo específicamente como como lo escribió. Dentro de aquí. Inactiva, le pegó. Esto es mal salud ociosa y la última es la muerte. Bien. Ahora tenemos esto. Ahora podemos definir la información aquí abajo. El primero que tengo, solo pensé esto en mi mente. El primero que quiero escribir aquí es el Or. El segundo es el pícaro. Ahora, puedes tener a estos enemigos en cualquier secuencia que desees. No tienes que tener la secuencia como yo, pero yo quiero tenerlos así o Sam, tenemos al Mago. Entonces tenemos el Esqueleto. Entonces tenemos al Esqueleto, Roe, Guerrero Esqueleto así, y Skeleton Mag. Entonces tenemos el Roe y la Noche. Tenemos 11 personajes están todos aquí. No es necesario tenerlo en esta misma secuencia. Pero solo pensé en mi mente que esto sería una secuencia, tal vez para la identificación. Yo solo copio pegar esto aquí así porque no realmente importante. El ID es simplemente que necesita estar ahí para que funcione. Tenemos que simplemente copiar y pegar cualquiera que sea el nombre para la clase. Tenemos que definir cuál es la clase. Ahora, ¿cómo conseguimos esta clase base enemiga? Porque tenemos que hacerlo, haces clic en eso. Nuevamente, tenemos que definir esta clase aquí. Lo que puedes hacer es usar esta tabla de datos de información enemiga dentro de aquí. Simplemente crea una nueva fila aquí. Y lo que puedes hacer es hacer click, el primero es el Orco Para mi puedo seleccionar al Orco, puedo escribir, dar click aquí y escribir copia. O haz clic en Copiar. Ahora puedo abrir mi tabla de datos y hacer clic en el control V en mi teclado para pegar. Y aquí lo tenemos. Sólo voy a hacerlo un poco más grande para que veas así. Entonces ahora lo tenemos dentro de aquí. Ahora lo que puedes hacer es el siguiente es el Or Roe. Puedo seleccionar el Roe de nuevo, clic derecho copiar o lo que puedes hacer es atajo es mantener presionado el turno y click derecho esto lo copiará. Entonces puedo pegarlo aquí, así como así. O lo que puedes hacer es que también puedes simplemente copiar este. Pégalo aquí abajo y cambia esto. O a o Chamán para éste también recuerda cambiar aquí o Chamán, puedes hacerlo de ambas maneras Ahora, es mucho más rápido para mí solo seleccionar Aria, por ejemplo, mantener pulsada la Mayús y hacer clic con el botón derecho para copiar el control V para pegar aquí. Y hazlo también por el mago, así y así sucesivamente. Yo sólo lo voy a hacer por esos. Puedes hacer todo esto tú mismo como práctica. Ahora para el tipo enemigo, o tenemos enemigos normales o de autobús. Este es normal y sólo voy a copiar y pegar esto aquí. Y creo que el mago, podemos hacer un jefe así. Pueden seleccionar cuáles son los enemigos normales y los enemigos jefes les dan la salud. Para la salud, me gustaría simplemente hacer una fórmula escribiendo, por ejemplo, igual. Empecemos con 100 para éste. En realidad, solo escribe 100 para éste. No necesitamos una fórmula para la primera, pero para la segunda equivale a esta, puedes dar click aquí. Multiplicado por 1.2 Se va a calcular esto automáticamente. Y puedo hacer clic en esto y arrastrarlo hacia abajo hasta el final. Puedo seleccionarlo aquí arriba y hacer clic en este botón para eliminar los decimales. Así como esto, también puedes aumentar la salud. Puedes multiplicarlo por 1.5 por ejemplo, puedes arrastrar aquí abajo tenemos mucha más salud, así como esto. Por ejemplo, para la animación igual que antes, para la máquina Adline, puede seleccionar la máquina de contorno aquí O en realidad hagámoslo aquí abajo, para el Adline A ver, el primero fue el, si cierro esto y encuentro el uno, puedes hacer click derecho y copiar la referencia. Esta copia de referencia, vuelvo atrás y hago clic en el control V y lo pego aquí. Para estos, tal vez puedas hacerlos un poco más grandes así. Aquí está. Ahora para la animación de hit otra vez, puedo hacer clic derecho en mi hit y copiar referencia. Puedo pegarlo aquí para la muerte, puedo hacer clic derecho copiar referencia. Entonces puedo pegarlo aquí. Ahora te lo voy a mostrar también aquí. Y voy a hacer todo esto por mi cuenta. Aquí, Rogue, puedo hacer clic en copiar referencias. Haga clic derecho en el, Hit one, péguelo aquí. Y haz clic derecho en el Pícaro. Copia la referencia y pégala en la final. Así es como agregas todo esto y otra vez, o la clase pasa a la tabla de datos y copia la clase. O básicamente puedes simplemente cambiar esta parte aquí por el nombre del personaje y puedes definir si es un enemigo normal o jefe. Bien, así que aquí he terminado mi tabla de datos. Toda la información está aquí, aquí abajo. Sólo me gusta darle un nombre. Vamos a llamarlo DT me info. Hagamos también una nueva tabla de datos. Doy click en el más aquí abajo en las hojas, y hago una nueva tabla de datos. En realidad, vamos a eliminar éste. Déjame simplemente duplicarlo para que no tenga que formatearlo de nuevo con la fuente y así sucesivamente. Haga clic derecho, este duplicado y vamos a una información de nivel DT. Para ello, voy a borrar todo, controlar un hit delete. Para este necesitamos el ID, también necesitamos el nivel. Recuerda, siempre puedes volver a tu estructura y abrir la información de nivel. Necesitamos el nivel y el nombre del enemigo. Lo abrimos aquí arriba, Necesitamos el nivel y el nombre enemigo. Yo sólo voy a hacerlo más pequeño aquí, no necesito todo este espacio. Y haciéndola más pequeña de esta manera también para la identificación. Ahora sólo voy a copiar y pegar los niveles aquí. Nivel 1234, tenemos 11 enemigos. Sólo voy a hacer click y arrastrar esto hacia abajo hasta las 11. Sólo voy a copiar y pegar esto aquí para el nombre del enemigo. Básicamente podemos ir a la información del enemigo, copiar todo esto y podemos pegarlo aquí también. Tenemos que encontrar en el nivel uno el lapso en el nivel dos, el engendro de rollo Cuando la E aparece, tenemos que encontrar la salud de los pícaros, el tipo de enemigo busto, la animación de Ale y toda esta información Aquí estamos usando esto para elegir qué enemigo engendrar en un nivel Cuando el enemigo genera, tenemos la información sobre este enemigo que podemos usar Adelante y solo el autoguardado no puede realmente guardar aquí. Sigamos adelante y haga clic en Descargar. Y ve y descárgalo como archivo CSV, descarga información enemiga y ve a la información de nivel también. Haga clic en el archivo, descárguelo como archivo CSV. Ahora cuando abres tu carpeta de descargas, aquí están. Voy a cambiarles el nombre, solo se llama T Level Info y también renombrar este T Enemy Info Antes de hacer esto, solo asegúrate dentro del motor, si vuelvo y cierro todo esto, asegúrate en las tablas de datos que tengas la información del enemigo y esté vacía. Voy a borrar esta. Haga clic en Guardar. También necesito hacer uno para el nivel info. Haga clic derecho. Vaya a la tabla de datos misceláneos, seleccione la información de nivel, haga clic en OK y llámalo Nivel T Info. Yo los tengo, y lo que tienes que hacer es hacer clic y arrastrar ambos hacia aquí y soltarlos, y debería importarlos con éxito. Ahora bien, si has hecho una época en uno de los nombres, por ejemplo, si has hecho una era en el nombre del enemigo aquí, por ejemplo, digamos que escribiste nombre enemigo sin una E. Te dirá que hay una era en tu tabla de datos. Y no te preocupes, básicamente puedes corregirlo aquí, descargarlo de nuevo, y simplemente hacer clic y arrastrarlo hacia aquí. Ahora, cuando abres la tabla de datos de información del enemigo, tienes toda la información sobre cada personaje, cuánta salud tienen, el tipo de enemigo y todas sus animaciones aquí también. 31. 4.11 Introducción a las bibliotecas: Bien, ahora hemos terminado las tablas de datos. Y sigamos adelante y echemos un vistazo a las bibliotecas. Este es el paso final antes de que terminemos todo y engendremos al enemigo Así que echemos un vistazo ahora y hagamos una nueva carpeta. Llamemos a esto bibliotecas. Si puedo deletrear bibliotecas otra vez así así, vamos a entrar en esta carpeta ahora. Hagamos clic derecho y vayamos a Blueprint. Y ves esta llamada biblioteca de funciones de blueprint y macro biblioteca de blueprint Ahora estamos trabajando con funciones. Vamos a crear una biblioteca de funciones de blueprint. Y lo voy a llamar biblioteca de funciones BP, porque normalmente solo tengo una en mi juego. Así que sólo voy a llamarlo biblioteca de funciones. Ahora, ábrelo dentro de esta biblioteca. Se puede ver que es básicamente, como su nombre lo dice, es una biblioteca de funciones. Así puedes crear muchas funciones dentro de aquí. Lo bueno de una biblioteca de funciones son las funciones que creas aquí. Se puede utilizar globalmente en todos los planos. Vamos a crear uno por diversión. Por ejemplo, vamos a llamar, por ejemplo, obtener la función de prueba de salud. No lo vamos a usar, pero si hago clic en Compilar. Ahora bien, si minimizo esto y abro otro plano, por ejemplo, abramos el modo de juego Dentro de aquí, puedo escribir, dar clic y decir Get Health. Aquí puedes ver que es de mi biblioteca de funciones. No tenemos que hacer interfaces de blueprint y lo que sea. Podemos simplemente escribir, dar clic en Obtener salud, podemos usar esta función. Ahora, podrías estar tentado a crear todas tus funciones dentro de aquí Porque a lo mejor estás pensando, ¿por qué incluso estoy creando interfaces de blueprint y llamándolas ¿Por qué no los creo simplemente dentro de una biblioteca de funciones? Esto se debe a que el juego se volverá más lento. Como he investigado, tu juego se volverá más lento si tu biblioteca de funciones es demasiado grande. Úsalo cuando tenga sentido. No solo agregues funciones aquí, porque si esto es demasiado grande, tu juego también va a ser un poco más lento. Solo úsalo cuando tenga sentido. Lo que suelo hacer, lo uso siempre que hago tablas de datos porque necesito usar esto en, en muchos blueprints A lo mejor puedas pensar en ello así. Cuando tienes una función que necesitas usar en casi todos los planos Por ejemplo, obtener la información de los enemigos aquí. Entonces es mejor crearlo dentro de una biblioteca de funciones para que puedas acceder fácilmente a ella en cada blueprint Normalmente lo uso cada vez que creo estructuras y tablas de datos, y necesito obtener esa información, creo dentro de bibliotecas de funciones. Sigamos adelante y eliminemos esto. Vamos a compilar y guardar todo. Y ahora estamos listos para pasar a la siguiente lección. 32. 4.12 Crea las funciones de la biblioteca: Sigamos adelante y creamos las bibliotecas de funciones. Vamos a hacer clic en Anuncio y crear una función dentro de aquí. El primero que vamos a crear es para el info enemigo. Para este voy a decir en realidad antes de que me olvide de nuevo, permítanme simplemente dar click aquí arriba en las herramientas depurar que es reflector, hazlo Lodgust Podemos ver mejor así así dentro de aquí. Como lo voy a llamar , voy a llamarlo obtener información enemiga. Y voy a hacer una nueva también, nueva función llamada get level info. Necesitamos a estos dos. Empecemos por el primero. Lo que tenemos que hacer es hacer clic derecho y decir obtener una mesa. Ves éste de aquí abajo. Obtener fila de tabla de datos. Esta es la función que estamos tratando de usar. Estamos tratando de obtener una fila de tabla de datos de un nombre aquí para que podamos usar la información. Sigamos adelante y creémoslo y será mucho mejor de entender una vez que terminemos. Ahora veamos tabla de datos, estamos hablando de ésta, en este caso es la info enemiga. Seleccionemos la información de NM para este nombre de fila. Ahora antes de conectarlo a aquí, por lo general me gusta hacer click derecho y decir, en realidad vamos a agregar una cadena primero aquí. Agregar una entrada y una cadena. Adelante, hazlo. Aquí necesitamos una entrada del nombre enemigo. Porque si vuelves a tu tabla de datos, esta, estos son los nombres enemigos. Necesitamos una entrada de un nombre enemigo. De ese nombre, va a extraer esta información, esta fila aquí. Volvamos de aquí. Lo que me gusta hacer antes de enchufarlo es que me gusta usar la función replace . Con una función replace, lo que eso hace es aquí en el from, vas a escribir un espacio así. Aquí tienes un pequeño espacio, como puedes ver en los dos. No haces nada. Tienes un espacio aquí arriba y aquí no tienes nada. Lo que eso hace es toma este nombre aquí si tienes un espacio, porque como puedes ver en el nombre de la fila, no puedes tener un espacio. Nal Engine no aceptará que tengas un espacio en el nombre de la fila. Y esto es lo que es. Este es el nombre de la fila. Tienes que extraer información si le das un nombre de enemigo y el nombre enemigo tiene un espacio después, te voy a mostrar cómo hacerlo más adelante. Si tiene un espacio, no va a leer, va a doler. Lo que me gusta hacer es el nombre del enemigo, me gustaría quitar el espacio antes de hacer nada. Entonces solo puedo arrastrar esto a aquí y convertirá esta cadena en una variable de nombre. Podemos conectar esto, entonces podemos arrastrar aquí y decir return porque necesitamos un nodo de retorno para esta función. Para el nodo de retorno, generará estos datos de información enemiga. Llamemos a esto información enemiga, y vamos a compilar. Y ahora ya terminamos con éste. Así es como se ve. Obtenemos el nombre del enemigo, luego extraemos esta información. Por ejemplo, digamos que el nombre enemigo es Esqueleto Rogue, va a quitar el espacio, así que en realidad se puede leer desde aquí Entonces va a obtener toda esta información para ti y la va a enchufar aquí para que puedas usarla. Hagámoslo también para la información de nivel. Ahora para el nivel info, puedes hacerlo tú mismo si deseas tener alguna práctica más. Hagámoslo juntos si necesitas más práctica. Bien, aquí, vamos a hacer clic derecho, obtener una fila de tabla solo para la información del nivel. Si vuelves a la información de nivel, la información de nivel son números. Necesitamos un número en lugar de una cadena. Por aquí voy a decir más. Y tomemos un entero aquí. Para el entero, digamos un nivel. Sigamos adelante y conectémoslo. Ahora para este, realmente no necesitamos hacer reemplazando todo esto porque es solo un número. Y podemos simplemente arrastrar esto al nombre. Ahora, no lo convierte automáticamente para nosotros, esto es porque solo convierte la cadena. Hagamos dos cuerdas y sigamos adelante y seleccionemos esto. Y luego sigue adelante y arrástralo y lo convertirá para ti, nuevamente, haz un nodo de retorno. Antes de que hagamos algo, se puede ver que es gris. Esto se debe a que aquí no hemos seleccionado nada. Seleccionemos la información de nivel, y vamos a conectarla aquí. Y llamémoslo información de nivel. Vamos a compilar y guardar todo. Ahora bien, si tratamos de utilizarlos en el modo de juego, por ejemplo, eliminemos obtener salud. Esta era una vieja para la información enemiga que podemos escribir obtener información enemiga. Y aquí lo puedes ver. Ahora tenemos esta función que podemos usar y tenemos la información enemiga. Básicamente puedes arrastrar desde aquí y decir break. Estás rompiendo esta estructura en múltiples pines, que puedes ver aquí. Estas son todas las variables que creaste dentro de tu estructura aquí. Estas son todas las variables que creaste ahora, ahora puedes ser utilizada por ti. Se puede tener el nombre del enemigo, la clase, el tipo enemigo, la salud del enemigo, y así sucesivamente. Aquí básicamente estás obteniendo información, no necesitas estos pines de ejecución. Como puede ver, algunas de las funciones son verdes. No son azules. Son verdes. Esto se debe a que básicamente están obteniendo información. Éste está consiguiendo la transformación de los actores. Si solo da clic aquí, podrá ver el Acta más cercana. Realmente no es establecer ninguna información, es solo obtener información para ti. Cuando obtienes información, no necesitas estos pines de ejecución. Volvamos a la biblioteca de funciones. Hagamos clic en la información del enemigo, pongamos ésta en pura. Vamos a hacer clic también en la información del nivel, establecerla en pura. Ahora volvamos, y aquí puedes ver ahora lo convertimos en una función verde. Básicamente solo estamos obteniendo información. Estamos obteniendo la información del enemigo y necesita el nombre del enemigo. Entonces cuando enchufamos el nombre del enemigo, por ejemplo, mago esqueleto, como pueden ver, escribo un espacio aquí. Sólo puedo escribirlo normalmente, Mago Esqueleto dentro de aquí. Se va a quitar el espacio automáticamente ya que hemos agregado un reemplazo. Si solo lo escribes así sin un espacio, realmente no importa. No encuentra ningún espacio. Simplemente va a continuar. Es una preferencia, pero me gustaría escribir los nombres completamente así normalmente. Entonces puedes escribir desde aquí, escribir break, y ahora tienes esta información de enemigos. Así es como lo usas. Lo mismo con el nivel info. Si dices obtener información de nivel, es que conectas un nivel, por ejemplo, nivel tres, rompes esta información. Y ahora sabes desde el nivel tres sabes qué enemigo va a engendrar Porque en tu tabla de datos en el nivel tres, le has dicho que el subastador debe desovar Ahora ya sabes que el subastador debería desovar. Y básicamente puedes conectarlo aquí, ahora puedes ver cómo puedes conectarlos juntos. Pero por ahora, eliminemos esto. Vamos a compilar y continuemos con la siguiente lección. 33. 4.13 Añade los nombres de los enemigos: Bien, ahora necesitamos agregar los nombres enemigos, porque necesitamos esos nombres para extraer información de la tabla de datos de información enemiga dentro de las bibliotecas que acabamos de hacer aquí. Pero tenemos que enchufar los nombres de los enemigos, necesitamos agregar los nombres para cada enemigo. La forma en que hacemos esto es si volvemos a los enemigos y aquí en la base enemiga. Vamos a abrir eso. Abre el editor de planos completo dentro de aquí. Vamos a crear una variable llamada name por ejemplo, o puedes llamarla nombre enemigo. Eso está bien. Voy a hacer que sea una cuerda. Adelante y compila. Y recuerda, cuando creas una variable dentro de la base enemiga, todos estos son hijos de la base enemiga. Cuando creas una variable dentro de aquí, también se crearán para todas ellas. Abramos el primero. Abra el editor de planos completo y dentro de los valores predeterminados de la clase Veamos aquí los valores predeterminados de clase. Si nos desplazamos hacia abajo, puedes ver la variable de nombre que creamos. Ahora puedes darle un nombre a este personaje. Por ejemplo, llamemos a esto una noche. Ahora abramos el siguiente. Es el Orco. En lugar de abrir el editor de planos completo, en realidad también puedes hacerlo aquí abajo mostrándote el panel de detalles Este es el Orco, el siguiente es el Pícaro, el siguiente es el Chamán, y luego tenemos Entonces tenemos el hechizo pícaro. Correcto. Ahora bien, si lo deletreas de manera incorrecta, no va a poder extraer la información de la tabla de datos. A veces cuando algo no está funcionando, no es extraer información. Solo asegúrate de haber escrito este nombre correctamente. Debido a que este nombre tiene que coincidir con lo que escribiste aquí, va a extraer esta información de aquí. Ahora, de nuevo, como te dije antes, podemos hacer un espacio porque tenemos esto reemplazado, no importa si haces un espacio, te va a quitar el espacio. Es por ello que agregué el reemplazo aquí. Se trata de un mago esqueleto. Vuelvo a los enemigos y abro el siguiente , Esqueleto Rogue Entonces tenemos el esqueleto así. Entonces tenemos al mago. Ahora los tenemos todos y salimos y pulsamos en Compilar en cada uno de ellos. Entonces ya terminaste aquí. Ahora todos tienen nombres. Como funciona ahora es que va a tomar el nombre del enemigo. Por ejemplo, a este tipo de aquí se le llama guerrero. Esto un guerrero, va a tomar el nombre aquí, un guerrero. Y va a tomar esta información y después sabe qué información tiene el guerrero. Es por ello que agregamos el nombre. Vamos a usarlo. Cerremos todo y pasemos a la siguiente lección. 34. 4.14 Desove del enemigo: Ahora sigamos adelante y engendremos al enemigo. Volvamos al modo de juego. Aquí es donde lo dejamos la última vez. Recuerden que conseguimos la transformación del actor para el punto de engendro Básicamente sabemos dónde engendrar al enemigo. Ahora sigamos adelante y le digamos qué enemigo engendrar a qué nivel Ahora tenemos esta información porque creamos las bibliotecas de funciones ahora dentro de aquí, hagamos clic derecho y digamos que realmente necesitamos el nivel actual y no tenemos eso como variable. Voy a crearlo en el modo juego porque tiene más sentido. Recuerda, el modo de juego controla las reglas sobre el juego. Sabe cuál es el nivel actual. Hagamos una nueva variable. Es un entero porque es sólo un número. Vamos a llamarlo nivel actual. Vamos a compilar porque necesitamos ver el valor predeterminado. Vamos a compilar para el valor predeterminado. Empezamos en el nivel uno. Voy a cambiar esto al nivel uno. Vamos a meter esto aquí. Bien. Con lo que queremos trabajar es con obtener información enemiga porque aquí necesitamos a la clase enemiga. Y enchufar T y decir romper. Ahora para la clase podemos enchufarlo aquí. Si no quieres ver todos estos otros pines, puedes hacer clic en él y decir ocultar pines desconectados Ahora para el nombre del enemigo, recuerda que tenemos la otra función llamada get level info. A partir de aquí, se puede ver qué enemigo debe desovar a qué nivel A partir de aquí otra vez se puede decir descanso. Ahora puedes usar este nombre enemigo. Tenemos que darle el nivel actual. Ahora todo está bien. Podemos hacer clic aquí, Ocultar pines no conectados, y luego arrastrar esto hacia abajo. Puedes seleccionarlos todos y presionar Q en tu teclado para enderezarlos así Bien, vamos a poner esto aquí abajo. Y pon esto aquí arriba. Ahora va a funcionar. Como puede ver, tenemos el nivel actual, estamos obteniendo la información para el nivel uno. Va a ir dentro de la tabla de datos, nivel info, va a mirar al nivel uno y luego sabe que es el Orco que va a sacar y el nombre del enemigo Y esto va a ser enchufado a la información enemiga que luego extrae información de la información enemiga O ahora tenemos toda la información sobre el Orco incluyendo lo último en desovar Porque recuerden en la hoja de Google le dijimos la clase que necesita para desovar con ella es BP Orc Va a engendrar el plano BP Orc. Y aquí estamos engendrando al enemigo. Ahora bien, si hago doble clic en esto, me va a llevar al Player Controller donde hicimos este evento. Va a desovar al Orco, y también va a desovar el O en el punto de desove que Sigamos adelante y compilemos y guardemos todo. Vamos a hacer clic en Reproducir. Y ahora se puede ver que es el O, podemos probar esto. Si hago clic en el nivel actual, cambié el nivel actual a, por ejemplo, el nivel tres. En el nivel tres, debería engendrar al chamán. Si compila y hago click arriba y juego, ya ves que es el Chamán el que está desove Esto está funcionando correctamente. Ahora para que sea un poco más limpio, lo que podemos hacer es tomar todo esto y puedo clic derecho y colapsar a una función. Yo sólo voy a hacer una función de esto solo para hacerlo más limpio. Llamemos a este enemigo para engendrar o nivel actual. Vamos a convertirlo en una función pura porque recuerda que solo estamos obteniendo información a la función pura. Vamos a renombrar, vamos a hacer doble clic en aquí. Voy a mover esto hacia abajo así. Ahora para el primero es el enemigo. Entonces estamos consiguiendo qué enemigo engendrar. El segundo aquí es la transformación de spawn, así como ésta Vamos a compilar y guardar todo. Ahora aquí afuera, está mucho más limpio y no tenemos esta línea por aquí. Todo se ve bien. Bien, así es como engendras enemigos. Vamos a hacer clic en el nivel actual y configurarlo de nuevo a un valor predeterminado. Entonces ahora está funcionando. Y pasemos a la siguiente lección. 35. 5.01 Diseño de la interfaz de usuario de nombres de enemigo: Ahora que los enemigos están desove correctamente en el mapa, sigamos adelante y trabajemos con la interfaz Aún no tenemos una carpeta. Si voy a la carpeta de contenido y hago clic derecho y hago una nueva carpeta, llamemos a esta interfaz de usuario dentro de esta carpeta. Hagamos clic derecho y vayamos a Interfaz de usuario y creemos un plano Widget Ahora aquí, sólo tienes que seguir adelante y seleccionar usuario Widget aquí arriba. Llamemos a este nombre enemigo. En esta lección, solo vamos a hacer del nombre enemigo una interfaz de usuario muy simple. Aquí está. Dentro de un plano amplio, tienes la ventana gráfica en la que puedes hacer clic, hacer clic derecho sobre el mouse, clic derecho sobre el mouse, simplemente mantén presionado el clic derecho y escribir alrededor, casi igual que Y aquí puedes ver lo que has agregado a tus elementos de UI. Aquí están todos los elementos que puedes agregar. También nuevamente, tienes un panel de detalles al igual que aquí afuera, donde haces clic en las cosas, por ejemplo el texto, y mostrará detalles sobre la cosa dentro de un blueprint de widget Tienes el diseñador donde diseñas la interfaz de usuario. Y tienes la gráfica donde programas las cosas en la interfaz de usuario. Por ejemplo, ¿qué sucede cuando presionas el botón? Si vuelvo ahora al diseñador por ahora, solo diseñemos el texto. Es solo el nombre del enemigo, así que es solo un texto. Pero antes de diseñar, tenemos que agregar un lienzo. Antes de hacer algo en UI, en Unreal Engine, tienes que agregar un panel de canvas Haga clic aquí, trapelo y suéltelo encima de aquí Ahora tienes este lienzo. Ahora podemos agregarle cosas. Por ejemplo, en este caso, sólo vamos a necesitar un texto si solo buscas texto. O también puedes simplemente bajar aquí, lo puedes encontrar aquí. Estos son los elementos más comunes aquí. También puedes simplemente dar click alrededor, ver qué hay. Si quieres, solo para practicar, siempre puedes hacer clic y arrastrar esto aquí. Se puede ver lo que hace. Se puede tratar de jugar con algunos escenarios, no hace daño. Cuando hayas terminado de entrenar, simplemente puedes hacer clic aquí y presionar Eliminar en tu teclado y lo eliminará. Tenemos el panel de lienzo, agreguemos algo de texto encima de él. Puedes agregarlo encima aquí o puedes agregarlo por aquí. Eso es lo mismo. Por lo general prefiero simplemente arrastrarlo y soltarlo aquí abajo en su lugar, pero realmente no importa por ahora. Para este texto, realmente no necesitamos todo este espacio. Lo que voy a hacer es que voy a dar click en Llenar Pantalla. Y entonces deseó que sólo se va a llenar alrededor de este texto. Ahora puedes ver que está descentrado. Se puede ver esto es porque tenemos algo llamado el Punto de Ancla anclado a esta esquina Y lo que eso significa, el Punto de Ancla, lo que es, es digamos que esta es tu ventana de juego, estás jugando al juego. Ahora cuando reescales la ventana del juego, el texto no se va a quedar aquí abajo Era su intención que el texto se quedara aquí abajo. Al cambiar la escala de la ventana, el texto va a moverse hacia este punto de anclaje Si tu intención de que el texto quede aquí abajo en tu pantalla, entonces lo estás haciendo mal porque simplemente se moverá lentamente en esta dirección cuando cambies el tamaño de la pantalla Muy importante establecer los puntos de anclaje correctamente. Ahora para este punto de anclaje, solo quería centrarlo en el texto. Voy a golpear al centro en mi pantalla. Esta es tu pantalla. Voy a centrarlo a mi pantalla y voy a escribir 00 en la posición de la x e y Ahora cuando escribes 00, el punto de anclaje se encaja a la esquina superior izquierda. Ahora cuando escribes 00, el punto de anclaje se encaja a la esquina superior izquierda Para arreglar esto, puedes jugar con la alineación. Aquí puedes ver 0.5 es el medio y uno es el otro lado. Por lo general es 0-1 en la alineación. Lo mismo para el Y. 0.5 está en el medio y uno está en el otro lado, 0.5 y 0.5 Eso lo agregará al sensor. Ahora puedes ver mi texto, y así es como me gusta tenerlo. Bien, haz clic en Compilar y guarda todo. Ahora sigamos adelante y estilizemos esto. Pero antes de que hagamos esto, cuando diseñas UI dentro del motor Neural, tienes que asegurarte de que tu se vea bien en laptops, Se ve bien en monitores Noble, monitores 24 pulgadas, monitores de 27 pulgadas. También necesita, por ejemplo, quedar bien en mi monitor de cuatro K. Si no lo diseñas bien en mi monitor de cuatro K, podría verse así. Y voy a pasar un mal rato jugando a tu juego. ¿Cómo nos aseguramos de que la interfaz de usuario se mantenga buena en todas las pantallas? La forma en que haces esto es haciendo clic aquí arriba en el tamaño de la pantalla. Normalmente diseño mis juegos para un portátil genérico de 14 pulgadas. Adelante y haz clic en esto, y así es como se verá. Ahora solo presta atención al zoom hacia arriba aquí que no estás acercado, más ocho Si me alejo, ahora puedes ver que también es menos diez. Si solo haces zoom hasta que sean 11, entonces así es como se ve realmente en una computadora portátil. ¿Cómo se ve en mi monitor cuatro? Bueno, si haces clic aquí abajo en este botón de configuración, entonces podrás ver cuánto escala. este momento, lo estamos diseñando para una laptop de 14 pulgadas, pero en mi pantalla, en un monitor de cuatro K, escalará la interfaz de usuario 3.8 veces. Se va a escalar 3.8 veces. Ahora es demasiado. Vamos a escalar esto a la baja. Y te puedo mostrar si hago clic aquí arriba en la escala ocho, puedes hacer click en ella y luego puedes reducirla aquí. Normalmente me parece bueno en mi monitor de cuatro K. Si lo configuro a 2.5 escalará muy bien en todas las pantallas. No va a quedar mal en mi pantalla, porque para una laptop o para mi monitor de cuatro K, escalará 1.6 veces y quedará bien en mi pantalla. Esto es lo que encontré quedará bien. Por lo general, tres es demasiado grande. Desde mi monitor de cuatro K, EU es demasiado grande. 2.5 es realmente bueno. Bien, entonces ahora es escalas correctamente en todas las pantallas. Sigamos adelante y compilemos y guardemos. Ahora vamos a hacer clic en el texto aquí. Y vamos a estilizarlo un poco, ¿verdad? La forma en que lo estilizamos es que tenemos que seleccionar un fondo. Ya puedes ver que no tenemos fondos, tenemos el fondo normal y tenemos que descargar un fondo personalizado para estilizar esto Entonces sigamos adelante por ahora en la siguiente lección y estilizemos este texto Podemos descargar un fondo personalizado y agregarlo al motor real. 36. 5.02 Adición de una fuente personalizada: Todo bien. Entonces, si vas a Google y buscas fondos de Google, ves este sitio web llamado Funds.google.com Y dentro de aquí, puedes descargar el fondo que quieras Ahora, también puedes simplemente buscar fondos e incluso puedes descargar fondos gratis. También hay un sitio web llamado El Fondo, El Fondo. Este también es bueno. Tiene muchos fondos de los que puedes descargar. También hay pagos. Ahora me encantan los fondos de Google, tienen muchos estilos geniales. De aquí, encontré uno llamado Playpen. Busca Playpen, y este es el que quiero usar. Ahora puedes elegir el fondo que quieras, no tiene que ser lo mismo que yo. Y siempre puedes probar el fondo. Si escribes algo aquí, por ejemplo, podemos decir, Mago Esqueleto para nuestro juego. Y puedes escalarlo para ver cómo se ve si fuera así y es audaz y así sucesivamente. Entonces me gusta este fondo. Voy a presionar Descargar, y lo voy a abrir aquí, aquí está. Ahora para este fondo, tengo que extraerlo. Sólo voy a tomar esta carpeta estática y extraerla a mi carpeta de descargas. Y voy a ir en mi carpeta Descargas, voy a hacer doble clic sobre ella. Éste, éste que aquí extraí , tengo todos los fondos. Ahora no voy a necesitar el delgado. Por lo general son demasiado delgadas dentro del motor vulnerable para los juegos que me gustan, vamos a tener tal vez el regular también. Medio semi negrita, extra audaz, audaz. Eso es. Si vuelvo a mi motor, minimizo esto aquí, y también minimizo esto. Ahora aquí, vamos a minimizar esto. Vamos a abrir mi carpeta. Ahora, puedo importar todo esto en la carpeta UI. Quiero que hagas una nueva carpeta y voy a llamarla fondos. Si puedo deletrear dentro de esta carpeta de fondos, voy a hacer clic y arrastrar todo esto a aquí. Recuerda, primero tienes que extraer los fondos. Antes de hacer esto como nosotros, ¿ te gustaría crear un nuevo activo de fondo? Sólo voy a decir que se aplican a todos los DS. Y aquí lo tenemos. Muy fácil importar fondos. Adelante y guarda todo. Ahora si vuelves al nombre del enemigo, damos click en él. Ahora podemos elegir este fondo personalizado para ello. Ahora para éste, creo que voy a usar este que se llama Extra Bolt Como este de aquí. Esto me queda bien. Aquí. Para la justificación, voy a centrarlo. También voy a hacer click en realidad este texto aquí. Voy a decir tamaño al contenido. Simplemente va a dimensionar por grande que sea este texto. No tengo que preocuparme por el tamaño en la X e Y. S. Tienes que probarla en tu juego. Pero creo que para mi voy a ir con 28 Y el tamaño frontal, también podemos darle un color. Si haces clic aquí arriba en el color y la opacidad es un color. Sólo voy a darle un color ligeramente rojo, algo así. Y pegando bien, voy a darle un esquema. Si hago clic aquí en el esquema, puedo escribir uno. Por ejemplo, se puede ver que hay un esquema en el texto. Creo que voy a ir con dos porque casi no lo puedes ver cuando te alejan dos También voy a cambiar el color para que solo copie el color del primero. En realidad lo que puedes hacer, también puedes mantener presionado shift y click derecho para copiar shift y click izquierdo para pegarlo aquí. Sólo voy a hacerlo Daca y creo que esto es bueno para mí. Ahora, un efecto muy cool que puedes hacer en motor oral está aquí en el offset de sombra. Si copias el mismo color, entonces yo copio esto, da click hacia abajo en el color de sombra y también puedo pegarlo aquí en el color de sombra, aquí en el offset. Voy a escribir cero en la X. Vamos a escribir algo así como tres en la Y. Puedes ver un efecto muy chulo, tienes el texto y luego tienes como un fondo marrón fresco detrás de él. Siempre podemos probarlo en juego para ver cómo se ve. A veces en realidad espero con diseñarlo hasta que lo tenga en juego para que puedas ver cómo se ve en juego. Pero por ahora, creo que esto es realmente bueno. Sólo para asegurarse de que el texto no está bloqueando nada en el juego. Hay que bajar y en la visibilidad hay que establecer, no golpear comprobable. Lo que esto significa es que si intentas hacer clic con el mouse sobre algo detrás del texto, va a funcionar. Si lo tienes configurado como visible, entonces el texto bloqueará los clics del mouse, y si hay algo detrás del texto, no puedes hacer clic en él. Ahora, evitamos el bloqueo aquí. Sigue adelante y haz clic en Archivo y guarda Todo. Y aquí está el nombre del enemigo. Ahora estamos listos para agregarlo en la siguiente lección. 37. 5.03 Añade la interfaz de usuario de nombres de enemigo: Ahora para agregar el nombre del enemigo. Vamos a los planos. Y abramos a los enemigos. Y tenemos que agregarlo en la base enemiga. Recuerden, la base enemiga es la madre de todos estos planos hijos Vamos a una base enemiga. Y si lo agregamos aquí, se agregará a todos ellos. Va a hacer clic en Agregar en los Componentes. Y si buscas widget, aquí está. Adelante y agrega el widget a este enemigo. Podemos simplemente llamarlo nombre enemigo. A lo mejor en realidad voy a llamarlo widgets de nombre enemigo. Entonces ya sabemos. Y sigamos adelante y guardemos todo. Ahora para este widget enemigo, ve a la ventana gráfica Y ahora también tenemos que simplemente empujarlo un poco hacia abajo para que quede por debajo del enemigo. El nombre está por debajo del enemigo. Ahora para el widget enemigo en el panel de detalles, voy a configurarlo en pantalla. El texto puede ser mundo o pantalla. De hecho voy a mostrarte un ejemplo aquí, Sophie, simplemente haz clic en la clase de widget y selecciona nuestro widget que acabamos de hacer, ese será el nombre del enemigo. Aquí está. Adelante y compila. De hecho voy a mostrarte lo que parece. Sólo para que veas, si saco el Roe, escribo cero en la Y. Aquí está el nombre del enemigo. Se puede ver si estoy mirando al enemigo así, No podemos ver el texto porque se muestra así. Lo que sucede cuando haces clic en la pantalla es que solo tienes que mostrar este texto hacia la pantalla, así como esto. Si hago clic en reproducir ahora se puede ver que se muestra hacia la pantalla. Esto ahora se ve bien. Vamos a abrirla. Volvamos a hacer clic en él. Sólo voy a golpear Dibujar un Tamaño Deseado. Y ahora estamos listos con éste. Vamos a hacer clic en Compilar. Y puedes empujarla hacia abajo aún más así. Siempre puedes simplemente hacer clic en Reproducir y ver qué es. Ahora pienso por el nombre del enemigo, voy a empujarlo a tal vez como -22 Sólo un poco más. Aquí está. ve bien. Déjame borrar éste para que no tengamos dos enemigos desove Ahora bien, este es el nombre enemigo que hemos mostrado, y todo se ve genial. 38. 5.04 Programación de la interfaz de usuario de información del enemigo: Bien, en lugar de solo tener el nombre del enemigo, decidí agregar también el nivel enemigo. Se verá un poco más fresco. Volvamos a abrir al enemigo , dentro de aquí. Vamos a ir a la UI, abrir el nombre del enemigo. Solo voy a cambiarle el nombre a información enemiga. Ahora dentro de aquí, si haces clic en él, realidad no necesitamos hacer nada dentro de aquí porque vamos a programar el texto. Aquí no necesitamos cambiar nada. Pero ahora vayamos a la base enemiga. En lugar de nombre enemigo amplio. Sólo voy a renombrarlo Info Widget. Y esto es porque tenemos el nombre y el nivel visualizados. Decidido. Bien, en realidad no necesitamos hacer mucho aquí. Pero lo que tenemos que hacer ahora para programarlo, es que tenemos que ir a la gráfica. Ahora eliminemos todos estos eventos. Hagamos clic derecho para hacer un evento personalizado. Llamemos a esta actualización de información enemiga I para esta. Ahora cuando haces algo en código, tienes que pensar qué es lo que intentas hacer. Estoy tratando de actualizar este texto. Este texto aquí. Al hacer clic en él, tengo que configurarlo a su variable de lo contrario no puedo verlo como una variable aquí y no puedo hacer nada con ella. Entonces solo voy a llamar a este un texto información enemiga y configurarlo en es variable. Y luego va a graficar. Ahora lo puedo ver, arrástralo. Lo que estamos tratando de hacer es establecer el texto, establecer texto. Y puede seleccionar esta función llamada set text. Así es como estableces un texto aquí. Ahora bien, esto es lo que intentas hacer. Estamos tratando de que este texto sea el nombre del enemigo. Ahora obviamente aquí no tenemos el nombre del enemigo. Recuerden que tenemos el nombre del enemigo. Dentro de la función de biblioteca que creamos, también necesitamos el nivel del enemigo. Ahora en cuanto al nivel, tenemos esto dentro del modo de juego. Si vas a Blueprint para abrir el modo de juego, recuerda aquí también tenemos el nivel actual La mejor práctica para hacer esto es actualizar el nombre del enemigo cada vez que se genera el enemigo. Estoy pensando aquí en la base enemiga, cada vez que el enemigo genere este comienzo el juego va a jugar Es agradable agregar este código dentro de aquí. Tenemos que hacer, en lugar de escribir el texto aquí. Ahora necesitamos dos entradas. En esta función, necesitamos el nombre del enemigo, y esto es una cadena. Hagámoslo un poco más grande para que podamos ver que este es el nombre del enemigo. Llamemos a este nombre enemigo. Entonces necesitamos el nivel del enemigo mirando aquí, seleccionando entero. Y este es el nivel enemigo, igual que el nombre de este enemigo y el nivel del enemigo. Ahora para enchufar esto aquí, como pueden ver, solo tenemos un bloque de texto. Para agregar dos valores dinámicos en un bloque de texto, hay que usar algo llamado texto de formato. Esto te permitirá agregar a múltiples entradas, o múltiples entradas al texto si arrastras aquí y dices formato de texto como este. Ahora como usas esto es comienzas con un corchete cur. Lo primero es que necesitamos el nombre enemigo. Digamos nombre del enemigo. Esto no tiene que ser preciso. Puedes escribir lo que quieras aquí. Cerremos los corchetes. Cuando haces eso y golpeas Enter, puedes ver que tienes un punto de entrada aquí con el que puedes conectarlo así. Ahora también necesitamos el nivel del enemigo, cómo queremos mostrarlo. Por ejemplo, sólo para visualizarlo, digamos por ejemplo, Orco, tenemos una coma y dice nivel uno o nivel 12, algo así Aquí tenemos que formatearlo también. Así aquí tenemos el nombre del enemigo. Entonces tenemos A. Por aquí voy a derecha y a nivel. Entonces tenemos el nivel. Voy a volver a abrir el rizo y decir nivel enemigo. Y ciérrala de nuevo así. Ahora puedo agregar esta entrada ahora se va a mostrar directamente para mí. Bien, esta la podemos agregar ahora a la base enemiga. Si compila y vuelvo a la base enemiga, solo eliminemos todo esto por ahora. Y cómo hacemos esto es tomemos el widget de información del enemigo. Primero hay que escribir widget, seleccionar este llamado get user widget object. Ahora aquí suelo costar, digamos, cuesta dos. Normalmente no uso un blueprint de widget para la interfaz de usuario porque creo que es demasiado crear un blueprint de widget para cada interfaz de usuario, solo necesitas costar a la interfaz de usuario que está dentro de un enemigo Por ejemplo, la interfaz de usuario del menú principal, no vas a costar dos sin embargo. El menú que está sangría dentro de aquí como componente le va a costar para obtener puente de usuario más allá de dos Y lo llamamos Enemigo info. Adelante, selecciónelo aquí, y vamos a seguir adelante y conectarlo. Bien, entonces aquí lo tenemos. Ahora podemos llamar a la actualización enemigo info, actualizar Enemy info Ui. Ahora tenemos que enchufar el nombre del enemigo. Y recuerda que ya tenemos eso aquí. Recuerda que hacemos clic en cada enemigo y establecemos el nombre del enemigo, todos ellos aquí. Y aquí es cuando lo usamos. Ahora vamos a golpear esto, enchufarlo, este es el nombre del enemigo. Ahora para el nivel de enemigos, tenemos este como el nivel actual dentro del modo de juego. No recuerdo en las interfaces hicimos una interfaz para el modo juego, no lo hicimos. Entonces, sigamos adelante y creamos la interfaz del blueprint. Echemos un vistazo aquí, vaya a Blueprint y seleccione la interfaz de Blueprint Llamemos a éste BPI. Ahora, sólo lo voy a llamar modo juego porque solo tenemos uno en el juego. Vamos a abrirla. Ahora, dentro de aquí, vamos a llamarlo obtener referencia del modo de juego porque esto es lo que estamos tratando de hacer. Para las salidas, hay que seleccionar en el tipo de variable, qué estás tratando de hacer referencia. Ahora estoy tratando de hacer referencia a mi modo de juego. Voy a buscar al GM Dungeon Clicker. Así es como lo llamé, este es mi modo de juego. Y voy a seleccionar Referencia de objeto aquí. Sólo voy a llamarlo modo de juego. Adelante y compile, Save All. Y ahora estamos acabados dentro de aquí. Vamos a cerrar esto. Ahora tenemos que agregar esta interfaz de blueprint al modo de juego Si vuelvo a los planos, abre mi modo de juego dentro de aquí Vamos a la configuración de la cláusula en las interfaces implementadas. Agreguemos la interfaz de blueprint, modo de juego. Al hacer esto, aparece esta función. Vamos a hacer doble clic en él, rack desde aquí y decir yo mismo. Ahora estamos definiendo esta variable. Le estamos diciendo que esta variable de modo de juego es self. Es decir, sea cual sea el plano en el que estemos ahora mismo, diciéndole al motor que esta variable de modo de juego es GM, Dung clicker Bien, ahora estamos terminados. Vamos a cerrarlo. Abrimos una vez más al enemigo. Y continuemos con el trabajo. En lugar de hacer esto primero, déjame moverlo todo aquí. Desconectémoslo manteniendo presionado Alt y haciendo clic, hagamos clic derecho y digamos Obtener modo de juego. Ahora para este modo de juego, estamos obteniendo el modo de juego general, el modo de juego predeterminado y Unreal Engine En lugar de decirle costo a GM, en lugar de hacer esto, ahora podemos decirlo, referencia de modo juego. Y podemos usar la función de interfaz blueprint. Y lo sabes porque dice mensaje al final. Sabes que viene de una interfaz de blueprint. Cerremos el sonido. Vamos a salir y conectarlo ahora. Ahora con esto, podemos hacer clic derecho y promoverlo a nuestra variable y llamarlo modo de juego. No tenemos que volver a hacer todo esto . Es mucho más limpio. Ahora, solo podemos usar la variable de modo de juego. Vamos a conectarlo, golpeemos todo juntos. Sigamos adelante y usémoslo. Entonces ahora podemos usar el nivel actual. Si vuelves al modo de juego, si no te acuerdas, tenemos esta variable llamada nivel actual. Esto es lo que estamos tratando de usar el modo break game aquí. Buscar el nivel actual y seguir adelante y obtener el nivel actual. Y ahora puedes conectarlo y todo debería funcionar perfectamente. Lo que está sucediendo en este momento es que estamos recibiendo la actualización de la interfaz de usuario de información enemiga. Estamos enchufando esta información, el nombre del enemigo y el nivel del enemigo Va a llevar esto a la interfaz de usuario aquí. Voy a la gráfica. Al ir a enchufar esto aquí, debería mostrarlo correctamente. Si hago clic en Play, ahora dice Orco nivel uno. Eso es correcto. Ahora si vuelvo al modo de juego y cambié el nivel actual a algo así como cinco, por ejemplo, y hago clic en Jugar, dice Mago nivel cinco. Todo está funcionando perfectamente, bien. Todo está funcionando. Sigamos adelante y ahorremos. Y sigamos adelante. 39. 5.05 Aplicación de daño al enemigo: Ahora sigamos adelante y apliquemos daño al enemigo. Ahora bien, si hacemos clic en Play, lo que quiero hacer es cada vez que hago clic en este Orco, quiero aplicar daño. Y por cierto, recuerda ir en el modo de juego y volver a establecer el nivel actual en uno por defecto, porque lo configuramos en cinco la última vez que lo volvimos a poner en uno. Ahora lo que quiero hacer primero es que veas que nuestro ratón desaparece. Cada vez que hago clic en el juego, mi ratón desaparece. Entonces vayamos al controlador del reproductor. Y dentro de aquí en los valores predeterminados de clase, vamos a hacer clic en mostrar mouse Ursa Vamos a compilar esto. Abramos la base enemiga. Antes de hacer nada, vamos a ir de hecho al reflector de widget de depuración de combustible, hazlo 1.25 Así que puedes ver aquí adentro aquí, lo que quiero que hagas es para el componente cápsula, este es el con el que vamos a interactuar cada vez que hagamos clic en él. Lo que queremos hacer es bajar en el componente cápsula. Y aquí ves algunos eventos que puedes usar. Lo que quiero que uses es este llamado click, porque vamos a hacer click al enemigo desclicado Adelante y selecciona eso. Y aquí lo que quiero que hagas, también arrastras y digas imprimir cadena. La cadena de impresión es muy poderosa. Esto simplemente imprime una cadena en la pantalla, imprime un mensaje en la pantalla. Por ejemplo, se puede decir trabajado. Y para lo que uso esto es para depurar mi código, quiero ver si mi evento realmente está funcionando. Nuevamente, esto es súper poderoso. Así es como depuro mi código. Si tengo un error, por ejemplo, digamos que algo no estaba funcionando aquí en alguna parte, tomaría esto y lo pegaría aquí arriba, por ejemplo. Yo lo pondría aquí al lado de esto, o entre estos dos. Si se imprime, esto significa que esta parte está funcionando, entonces yo imprimiría aquí y vería si esta parte está funcionando y así sucesivamente. Sigue imprimiendo mensajes en la pantalla y así es como depuras de manera efectiva. Aquí abajo en el click, veamos si eso funciona. Si hago clic en reproducir y hago clic en el Orco, nada es realmente imprimir a la pantalla Esto quiere decir que este evento realmente no está funcionando. Algo anda mal. Esto se debe a que en el componente cápsula, verifiquemos los ajustes de colisión aquí abajo. Lo pusimos a ninguna colisión. Por supuesto, no va a funcionar cada vez que haga clic en él porque este tipo no tiene colisión. Cuando la colisión preestablece en lugar de ninguna colisión, hagamos clic en ella y digamos personalizada para la colisión habilitada Voy a configurarlo para consultar sólo ahora física. Siempre que un personaje camina por el suelo y hay física, no cae por el suelo y así sucesivamente. Realmente no necesitamos consulta de física. Por ejemplo, tu mouse está interactuando con la consulta enemiga en. No necesitamos física. En cuanto a los canales de respuesta, ignora todo. No queremos interactuar con otros objetos estáticos del mundo, peones y vehículos y así sucesivamente Lo único con lo que queremos intacto es la visibilidad. La visibilidad es tu mouse, este con el que queremos interactuar. Ahora si haces clic en jugar, nosotros damos click aquí, Ves que no pasa nada. Aún así algo anda mal. Ahora volvamos a abrir el mando de reproducción. Y aquí puedes ver activar eventos click. Tienes que tomar eso también. Compile, haga clic en reproducir, y ahora puede hacer clic en él. Ahora ves que nuestro mensaje está imprimiendo al. Ahora está funcionando de nuevo. Puedes probar la caja de impacto, dependiendo de qué tan grande sea tu esfera de colisión, nuestra cápsula es. Se puede ver cuando haga clic aquí, también está funcionando. Creo que este es un cuadro de aciertos justo, pero si quieres arreglar tu hit box, siempre puedes ir a la base enemiga, hacer clic en el componente cápsula, y puedes aumentar y disminuir la media altura y el radio de la misma, dependiendo de lo grande que quieras que sea el círculo. Lo que queremos hacer es aplicar daños. Vamos aquí y digamos Aplicar Daños. Hay una función para que esto continúe y seleccione Daño Aplicado por el acto dañado. Para dañarnos a nosotros mismos, queremos dañar esta base enemiga, sea cual sea el enemigo que estemos presionando. ¿Cuál queremos que sea el daño? Solo podemos agregar un daño estático que podremos actualizar más adelante en la tienda. Por el daño, en realidad quiero agregarlo al jugador. Eso tiene más sentido. Si voy a planos, voy a jugador aquí Agreguemos una nueva variable llamada daño. Cambiemos esto en una compilación flotante. Vamos a establecerlo en 15 por defecto, podemos cambiarlo más tarde. Compilar. Si vuelvo a la base enemiga, ahora necesitamos una referencia al jugador. Vea aquí, si tenemos una interfaz, no tenemos una interfaz de blueprint Si quieres volver a desafiarte a ti mismo con las interfaces de blueprint, sigue adelante y crea una para el jugador Pero ahora hagámoslo juntos. Hagamos clic derecho, vamos a blueprint, interfaz de blueprint. Llámalo capa PPI. Vamos a abrirla aquí. Digamos obtener referencia de capa. Ahora aquí abajo, a lo que sea a lo que estemos haciendo referencia, estamos tratando de hacer referencia al jugador de BP. Busquemos eso. Adelante y selecciónelo. Vamos a llamarlo Jugador. Ahora vamos a compilar. Recuerda compilar ahora volvamos al reproductor y agreguemos esta interfaz de blueprint dentro de la nube Ajustes aquí abajo, busquemos BPI, Agrega el reproductor, compilar aquí abajo Abrámoslo y hagamos una autorreferencia. Al igual que antes, definimos que este tipo de variable es este reproductor. Ahora lo hemos hecho, volvamos aquí a la base enemiga. Hagámoslo después del modo de juego. Si solo golpeo aquí, déjame hacer clic derecho y decir obtener personaje de jugador. Adelante y selecciona entonces vamos a golpear desde aquí y decir obtener referencia de juego. Seleccione esto, continúe y conéctese. Hagamos clic derecho y promocionemos esto y lo llamemos Jugador. Sólo voy a llamarlo Play Upon. Conectémonos aquí. Solo arrastra esto. Ahora tenemos esta referencia lista y podemos seguir adelante y usar la variable s fuera de ella. Sigamos adelante y usemos el daño del cursor aquí abajo. Vamos a subir la jugada, busquemos el daño del cursor, selecciónelo y sigamos adelante y conéctelo aquí. Así como esto. Ahora, no necesitamos hacer nada con esos para ver si esto está funcionando y lo vamos a estar usando más tarde. Pero lo que puedes hacer es escribir click, y buscar cualquier daño. La vamos a usar más tarde. Puedes imprimir una cadena desde aquí. Simplemente puedes imprimir la cantidad de daño que estamos causando. Vamos, vamos a hacer clic. Y cuando hago clic, se puede ver que estoy aplicando 15 daños y todo está funcionando como se esperaba. Sigamos adelante y solo eliminemos esto por ahora. De hecho, eliminemos esto. Podemos hacerlo en otra lección. Vamos a compilar, guardemos todo y sigamos adelante. 40. 5.06 Cálculo de la salud: Ahora trabajemos con el evento de cualquier daño. Si tienes el botón derecho, haz clic aquí en la base Enemigo, buscas cualquier daño. Vamos a usar esa. Esto se usa para cuando alguna vez aplicas daño, vas aquí y luego calculas el daño, y luego aplicas cualquier daño que hayas hecho. Hagámoslo. Hagamos una nueva variable. Necesitamos uno llamado salud actual. Ahora para este, vamos a cambiarlo en un flotador. Vamos a compilar. Ahora para esta salud actual, necesitamos tener salud. Porque realmente no podemos empezar con cero. El enemigo no tiene cero, así que tenemos que colocarlo en alguna parte. Recuerda antes en las tablas de datos que hicimos en la información del enemigo, agregamos salud a los enemigos. Sigamos adelante y usemos eso y configurarlo por defecto cada vez que engendran La mejor manera de hacerlo es aquí en la jugada Begin cada vez que el enemigo genere. Tomemos esta salud actual y fijémosla. Mantienes pulsada la Alt y arrastras para configurarla. Vamos a establecerlo a lo que fuera en la tabla de datos. Vamos a hacer clic derecho. Recuerda que hicimos una función de biblioteca llamada get Enemy info. Ahora necesita el nombre del enemigo. Y eso lo tenemos. Recuerda que estamos dentro de la base enemiga y aquí tenemos el nombre. Vamos a arrastrarlo y enchufarlo. Golpeemos desde aquí y digamos break. Cuando rompemos, podemos ver todas las variables para esta función de información enemiga. Ahora vamos a ponerla a la salud aquí. Empezamos con lo que sea la salud que hayamos escrito aquí. Volvamos a la base enemiga. Da clic aquí, Oculta los pines desconectados para que se vea más limpio Y vamos a conectarlo. Ahora esto está funcionando aquí abajo. Ahora tenemos la salud actual establecida correctamente. Siempre que hagamos daño, quiero que tomes la salud actual, digamos que la salud actual es de 100. Para el primero aquí, vamos a decir 100 menos. Si solo escribes menos o restas, restando el daño que hemos hecho, diría 100 -15 Eso es igual a lo que sea igual a lo que sea Tenemos que volver a tomar esto y volver a meterlo aquí. Se actualiza ahora decimos 100 -15 es 85. 85 va a estar aquí. Ahora, sólo para asegurarnos de que no vamos por debajo de cero. Porque te puedes imaginar si sigo haciendo daño y llega a cero y vuelvo a hacer daño, va a decir cero, -15 es decir -15 En vez de ir a menos salud, usamos algo llamado pinza. Si arrastras de esto y dices abrazadera, selecciona esta llamada pinza flotante, porque estamos trabajando con flotadores. Flotador de abrazadera. Lo que es la abrazadera, es básicamente sujetar el valor, así que nunca puede ir por debajo de cero y nunca podrá rebasar algún valor que agregue aquí. Sólo voy a agregarle esta salud actual porque en realidad no estamos curando al jugador. Voy a sujetarlo entre lo que sea que sea ahora mismo y no podemos ir bajo cero. Voy a enchufarlo así. Sigamos adelante y conectémoslo aquí. Ahora que en realidad está terminado, ahora puedes hacer doble clic sobre esto, hacer que se vea mejor. Adelante, haz esto. Solo usemos una cadena de impresión de nuevo y veamos si lo estamos haciendo correctamente. Si compilo, da clic en play y hago daño. Entonces ahora son 85, y luego son 70, 505-402-0510, y Y se puede ver cada vez que hago clic, no puede estar por debajo de cero. Entonces ahora lo estamos calculando correctamente. 41. 5.07 Diseña la barra de salud: Para diseñar la barra de salud, pasemos a la carpeta UI. Vamos a escribir. Haga clic ahora, vayamos a la interfaz de usuario y creemos un plano widgit Nuevamente, un usuario widgit. Llamemos a esta barra de salud WB. Vamos dentro de aquí. De nuevo, justo lo que dije antes, tamaño de la pantalla. Vamos a hacer clic aquí. Configúrelo en un portátil genérico que diseñamos para todas las pantallas. Vamos a crear este panel de lienzo. Recuerda, siempre tenemos que añadir un lienzo. Ahora para la barra de salud, incluí algo para ti. Aún no lo importamos. Entonces vamos a los materiales de costo aquí en los materiales de costo, quiero que vuelvas a la interfaz de usuario. Podrías tener mucho más UI de lo que tengo ahora. Esto se debe a que solo sigo sumando a ella cada vez que sigo desarrollando este curso. Tomemos ahora éste y éste. Eso es lo que necesitamos hasta ahora. Aquí, déjame hacer clic derecho, hacer una nueva carpeta, llamarlo imágenes. Vamos a abrirlo. Ahora vamos a abrir los materiales de costo una vez más vamos a arrastrarlos a esta carpeta. Y ahora están subidos. Ahora bien, esto es mucho las selecciones, así que no quiero que esté borrosa Recuerda, solo podrías seleccionar ambos. Haga clic derecho y vaya a Acciones puntuales y aplique papel a la configuración. Ahora ya no está borrosa, se ve bien. Volvamos a la barra de Salud. Y dentro de aquí, busquemos por ahora. Quiero que el texto esté en la parte superior, y luego quiero que la Barra de Salud esté debajo de él. Necesitamos una caja vertical para esto. Tome una caja vertical en él. Dentro de la caja vertical, necesito algo de texto. De hecho voy a copiar el texto que hicimos aquí. Creo que se ve bien. Y sólo podemos cambiar el color. Haga clic en el control de texto C para copiar aquí. Da click en el control de cuadro vertical V. Ahora para la barra de salud, es justo si buscas barra de progreso y esto es lo que es. Arrástralo a la caja vertical. Ahora para la caja vertical, vamos a redimensionarla para que podamos ver realmente qué está pasando Ahora en lugar de que llene toda la pantalla, queremos igual que esta información enemiga, solo queremos que sea de cualquier tamaño que sea. Porque aquí solo lo vamos a usar en el juego. No lo necesitamos para volver a llenar todo el asunto. Haga clic en Pantalla de Relleno. Aquí arriba a lo deseado en pantalla. En lugar de que el punto de anclaje esté aquí arriba, cambiémoslo a la mitad de la pantalla. Cambiemos la alineación de la caja vertical a 0.5 por 0.5 y la posición a cero por cero. Ahora está en el medio aquí. Bien, se ve bien. Ahora para esta barra de progreso, voy a dar click sobre ella. Y para el estilo, cambiemos la imagen de fondo. La imagen de fondo es esta barra de progreso. La imagen de relleno y la imagen de marquesina, ambas son este proyecto de ley que tenemos, éste y éste Y hagamos clic en Compilar. Y podemos ver que no se ve muy bien cuando lo miramos. Y esto es porque aquí, creo que es la marquesina Siempre me olvido aquí en la marquesina tamaño de imagen en la Y. Podemos cambiarlo. Y ahora se puede ver que en realidad está cambiando. Podemos cambiar el tamaño que queramos. Para éste, creo que sólo voy a hacer 45. También puedes escalarlo aquí en la X e y en la X. También puedes escalarlo. Ahora no podemos ver realmente una diferencia porque esta caja vertical la está bloqueando. Porque podemos escalarlo aquí. Pero voy a escalarlo aquí en el tamaño al contenido. Voy a hacer click en esto. Voy a escalar la caja vertical, dependiendo de qué tan grande sea el contenido. Ahora para esta barra, voy a reducir el tamaño a algo así como 250. Siempre podemos hacerlo más grande más adelante, pero ahora se ve bien. Ahora veamos si este relleno está funcionando. Bajemos y veas este porcentaje. Puede hacer clic y arrastrar para rellenarlo en el porcentaje. Pero se puede ver que el color no es correcto. Está aquí abajo en el color de relleno. En lugar de ser azul, sólo voy a fijarlo para que sea blanco. Y siga adelante y haga clic. Bien. Ahora ves que se ve bien. Bien, ahora hemos diseñado esto. Cambiemos el color del nombre aquí arriba o no el nombre, es básicamente la cantidad de salud por la cantidad de salud. Vamos a cambiarlo a tal vez un color más rojo. He elegido este color aquí. Creo que se ve bien. Ahora vamos a copiar esto. Básicamente solo mantén presionado shift, click derecho, shift, click izquierdo en este y este. En lugar de ser de este color, solo hagámoslo Daka Creo que este color se ve bien como el contorno. Déjame copiar esto. Entra aquí y pégalo en el color lineal hexadecimal. Haga clic. Bien, creo que este color es bonito para la salud. Ahora ya terminamos con esto, puedes darle un poco de espacio. Se puede ver que está demasiado cerca, tal vez al bar de salud. Puedes dar click aquí arriba, puedes ir al relleno aquí arriba hasta la parte inferior. Podemos darle un relleno de seis. Está un poco alejada de la barra de salud, ahora se ve bien. De nuevo, voy a dar click en la barra de salud y en el texto, y cambiar la visibilidad a no comprobable. Entonces no podemos interactuar con él, con el ratón. No bloquean al ratón en el juego. Voy a golpear. Bien. Ahora esto está terminado, así que sigamos adelante y pasemos a la siguiente lección. 42. 5.08 Añade la barra saludable: Para agregar la barra de salud. Vamos a Planos y abramos al enemigo. Una vez más, vayamos al mirador. Vamos a hacer clic en, simplemente haga clic aquí arriba. Ir a Componentes. Busca de nuevo Widget, igual que lo que hicimos con el nombre. Es el mismo concepto. Puedes intentar hacerlo tú mismo para practicar. Sigamos adelante y hagamos clic en Widgets. Aquí solo podemos decir barra de salud. Ahora haga clic en, sólo voy a decir widget de salud. Quizás widgets de salud. Porque si sigues codificando el juego y se convierte en un juego muy grande, siempre es agradable tener nombres muy descriptivos así que no es demasiado confuso. Haga clic en el widget de salud por par. Cambiemos el espacio a la pantalla. Siempre muestra la interfaz de usuario a la pantalla. Cambiemos la cláusula a tick de barra de salud. Este llamado Dibujar un Tamaño Deseado. Bien, hagamos clic en Reproducir y veamos cómo se ve. Y aquí está. Vamos a golpearlo bajo el nombre. Da click en él, Wrike. Golpearlo un poco aquí. Haga clic en reproducir. Y vamos a golpearlo aún más abajo. Haga clic en reproducir. Esto tal vez sea demasiado. En lugar de -40 digamos menos 37. Haga clic en reproducir. Creo que se ve bien. Quizás menos 36, ahora es demasiado TOC. Haga clic en reproducir. Esto se ve mucho mejor. A lo mejor esto es a lo que podamos ir. Como puede ver, todavía necesitamos actualizar la barra de salud, tanto el texto como la barra de salud aquí. Hagámoslo en la siguiente lección. 43. 5.09 Actualización de la barra de salud: Bien, para actualizar la barra de salud, primero vayamos a la interfaz de usuario. Y abramos la barra de salud. Dentro de aquí, vamos a hacer clic en el texto primero. Para este, en lugar de enviar mensajes de texto a información enemiga, se llama salud de texto. El segundo aquí, la barra de progreso, voy a llamarla barra de progreso. Vamos a llamarlo también hazlo variable para que podamos. Pasemos ahora a la gráfica. Eliminemos todo esto. Escribamos click y hagamos un nuevo evento personalizado. Llamemos a esta actualización. Ahora para éste, lo que estamos tratando de hacer, de nuevo, siempre que programemos, solo piensa en qué está tratando de hacer ahora mismo? Estoy tratando de actualizar esta barra de salud. Bien. ¿Cómo actualizamos esta barra de salud? La forma en que lo actualizamos es que estás tratando de cambiar este porcentaje, estás tratando de cambiar esto. Siempre hay un buen stock para solo analizar lo que intentas hacer para este porcentaje. Vamos a la gráfica y tomemos esta barra de progreso. Si no sabes cómo se llama, solo trata de buscar por ciento. Ya puedes ver aquí, puedes usar esto en función de porcentaje establecido. Sigamos adelante y conectemos este porcentaje establecido. Tienes que echarle un vistazo aquí. El porcentaje no es 0-100 0-1 En realidad tenemos que hacer alguna división aquí Porque aquí en la salud de actualización, éste va a ser llamado dentro de la base enemiga cuando sea. Recuerda aquí calculamos la salud después de hacer daño que hicimos eso. Desde aquí podemos llamar a esta actualización UI de salud. Aquí podemos tener un enchufe a la salud actual. Voy a dar click aquí, Hacer una nueva variable, solo regular aquí, para que podamos ver, hacerla un flotador, Llámala salud actual. Ahora bien, ¿cómo dividimos esto si no eres demasiado fuerte en matemáticas? Por ejemplo, digamos que la salud es 100 dividida por, así podemos hacer este signo o dividir a la derecha. Vamos a dividir esto por un número que es el máximo de salud. Porque por ejemplo, se puede decir, digamos que le hago daño a este enemigo y el enemigo tiene 100 de salud. El daño en este momento para el cursor es 15, dice 100 -15 es 85. Entonces se puede decir 85/100 y obtendrá el porcentaje. Si no eres demasiado fuerte en matemáticas, siempre puedes llevar aquí tu navegador. Se puede decir, digamos que tenemos 85/100 Enter. Y luego se puede ver que en realidad se muestra correctamente. ¿Bien? Entonces así es como queremos hacerlo porque el máximo es de 100, que es uno. Este porcentaje va 0-1 Digamos que la salud actual dividida por la salud máxima actual dividida por la salud máxima. Este es el porcentaje, Ahora va a ser correcto. Vamos a compilar ahora. Pasemos a la base de NM e intentemos usar esta. Recuerda, tienes que hacer costos ahora porque estás dentro de la barra de salud Este es el mismo concepto que lo que hicimos con el nombre. Hagámoslo. Por supuesto, puedes seguir adelante y crear una interfaz de blueprint para ello. No es mala idea. Puedes hacerlo, está bien. Pero pienso algo que sólo voy a costar a una vez, como si solo voy a usar esta función en todo mi juego, tal vez dos de ellos. No quiero crear una interfaz de blueprint para cada interfaz de usuario que creo Sigamos adelante y eliminemos este nodo de impresión. Lo que podemos hacer ahora, vamos a hacer un nuevo evento personalizado aquí. Hagamos un evento personalizado llamado update health. Y este va a llamar a la actualización de la interfaz de usuario de salud. Arrastremos este widget. Vamos a conseguirnos objeto widget igual que antes. Digamos que costó dos y lo llamamos salud Costo a la salud Conectado. Aquí queremos llamar a la actualización actualización de arrastre de salud. Sigo adelante y conecto todo. Ahora necesitamos enchufes a la salud actual, actual y a la salud, la salud actual que ya tenemos aquí. Sigamos adelante y conectémoslo. Porque lo pusimos aquí para que podamos hacer eso para la salud máxima, necesitamos la salud máxima del enemigo. ¿Cómo hacemos esto? Recuerda, hicimos una información enemiga aquí, es básicamente esta. Básicamente puedes simplemente copiar este control C, ir aquí abajo, controlar V, o puedes reescribirlo si quieres algo de práctica Intenta escribir esto de nuevo y mira cómo lo hiciste. Sigamos adelante y conectémoslo aquí. Ahora estamos actualizando la salud. Recuerda, tenemos que llevar a cabo este evento antes de que funcione. Sólo voy a ejecutar esta actualización de salud cada vez que haga daño. Por aquí podemos llamar a actualización de salud y llamarlo aquí. Ahora lo que estamos haciendo es que estamos haciendo daño con el ratón, estamos aplicando daño. Y el daño que aplicamos, lo estamos calculando y actualizando la salud actual para el enemigo. Entonces estamos actualizando el I aquí. En realidad, aquí, actualizar la salud. A lo mejor podamos tener este aquí abajo solo para que tenga más sentido Programación sabia, voy a sacar esto de aquí. Voy a hacer un insumo aquí abajo, un flotador llamado la salud actual. Voy a enchufarlo así en su lugar. Podemos enchufar por aquí. Creo que tiene más sentido. Podemos hacerlo en ambos sentidos, pero a veces cuando programas, puedes hacer las cosas de varias maneras. Pero algunas formas son mejores prácticas que otras. Creo que este es un poco mejor porque estamos actualizando la salud actual por aquí. Bien, actualizar la salud se está actualizando aquí, y luego estamos actualizando la interfaz de usuario que actualiza la barra de salud. Al principio van a ser 100, pero si hacemos clic en Reproducir, puedes ver que sigue siendo cero en la salud. Esto se debe a que sólo se va a actualizar. Ahora cada vez que haces clic en el enemigo, como ves aquí, si no haces clic en el enemigo, sigue siendo cero. Esto se debe a que tenemos que ejecutar este código cada vez que engendramos al enemigo Aquí arriba, cuando actualizamos la interfaz de usuario enemiga y actualizamos la salud actual, también quiero decir actualizar la salud. Y haz esto en vez de hacerlo aquí, recuerda que ya lo pusimos dentro de este evento. Podemos eliminar esto y podemos simplemente enchufarlo aquí en su lugar y conectarlo. Vamos a compilar y hacer clic en play. Y ahora ves que está configurado a lleno cada vez que el enemigo genere. Siempre que haga clic va a bajar. Ahora está funcionando ahora solo necesitamos lo final, y eso es actualizar el texto. Eso es mucho más fácil de hacer para este texto. Vamos a arrastrarlo y arrastrarlo aquí y decir el texto establecido. Vamos a establecer texto aquí. Ahora para el texto necesitamos fijarlo a cualquiera que sea la salud actual. Arrástralo hasta aquí. Y vuelve a arrastrar esto hacia abajo. Haga doble clic en él, haga que se vea mejor. Compila y haz clic en reproducir. Ahora ve la salud es de 100. Si hacemos clic, va a bajar. Ahora podemos volver a intentarlo en otra cosa. Si vamos a los planos, abre el modo de juego, el nivel actual a algo así como el nivel tres Siempre que haga clic en el enemigo, va a actualizar la salud correctamente. Nuevamente, ahora todo está funcionando, y volvamos a establecer el nivel actual en uno, compilar, guardar todo, y sigamos adelante. 44. 5.10 Flipbook de Hit de enemigos: Ahora que el daño está funcionando, cuando hacemos clic en el enemigo, el enemigo se daña. Para hacerlo un poco mejor, juguemos el efecto de golpe cuando el enemigo haya sido golpeado. Eso se verá mucho mejor. Recuerda dentro de la tabla de datos que ya hicimos en la info enemiga, ya agregamos aquí los libros de flip de animación hit. Vamos a usar esos. Vamos a cerrar esto. Volvamos a los enemigos. Abre la base enemiga. Dentro de la base enemiga. Bajemos aquí y hagamos un nuevo evento personalizado. Llamemos a esto un efecto de golpe. Hagámoslo aquí. Simplemente queremos jugar al flip book. El enemigo volvió a golpear flip book, igual que antes de que podamos tomar el flip book. Básicamente es este sprite de aquí. Toma el sprite arrastrando de los sprites y podrás escribir Puedes intentar leer. Qué puedes hacer con todo esto. El que queremos usar es este libro volteo de un set porque queremos ponerlo en el flip book, ya tenemos el flip book dentro de la info enemiga. En realidad sólo voy a copiar esto aquí arriba. Pégala abajo y aquí vamos a esconder los pines desconectados Hagamos click aquí abajo. Y sólo voy a mostrar la exitosa animación. Y entonces voy a conectarlo aquí. Ahora va a reproducir la animación hit. Ahora el efecto hit. Siempre que hagamos clic ahora tienes que ver ¿dónde tiene sentido llamar a este evento? Tiene más sentido cada vez que el enemigo recibe daño. Después de actualizar la salud, también juegas el evento de efecto hit aquí abajo. Y lo va a jugar. Hago clic en Jugar y dar clic en el enemigo. Se puede ver que lo está jugando. No obstante, ahora mismo está encendido para siempre. Tenemos que arreglarlo. Tenemos que ponerlo de nuevo el libro de flip normal después de que el enemigo haya sido golpeado. Lo que voy a hacer es que sólo voy dejar que este hit flip book, voy a jugar una vez y luego voy a volver a cambiar al normal. La forma en que podemos hacer esto es que podemos tomar este sprite aquí, podemos arrastrar aquí y decir flip book Puedes intentar leer lo que puedes usar aquí, el que vas a usar es este. Obtener la longitud del flipbook. Entonces me voy a retrasar por esta cantidad de tiempo. Voy a retrasarlo por la longitud del flip book. Una vez terminado esto, podemos llevarlo aquí. En lugar de copiar y pegar esto, solo voy a usar la animación inactiva aquí Dejémoslo retroceder así. Sólo tienes que copiar esto, establecer flip book aquí y puedes volver a colocarlo aquí abajo. Voy a hacer clic para hacer un nodo de ruta trasera y algo así. Esto debería funcionar simplemente bien. Podemos intentar jugar ahora si hacemos clic en el enemigo, y aquí está ahora voy a aumentar la cantidad de tiempo que este efecto hit está jugando, porque está jugando demasiado lento y se ve raro. Voy a volver a mis activos y abrir los personajes. Ahora para este hit, tenemos que aumentar los fotogramas por segundo aquí, así que juega mucho más rápido. La forma en que podemos hacer esto es que simplemente haga clic en Control Z aquí. Si solo selecciono todo el hit one, solo mantén el control de todos los libros de hit flip. Lo que puedes hacer es volver a hacer clic derecho, acciones de activos, selección a través de matriz de propiedades. Para que puedas editarlos todos a la vez. Y luego fijemos los fotogramas por segundo. Voy a establecer a 40 cuadros por segundo. Déjame guardar todo el juego y ver cómo se ve. Así es como se ve. Parece mucho mejor que el enemigo está siendo golpeado. Eso fue todo por el efecto hit. Muy, muy fácil. Ahora sigamos adelante y trabajemos con la muerte enemiga. 45. 5.11 Muerte de enemigos: Ahora por la muerte del enemigo, obviamente el enemigo muere cada vez que la salud es cero. Tiene más sentido hacerlo aquí. Siempre que dañamos al enemigo, verificamos si la salud actual aquí, en realidad no estamos comprobando nada. Básicamente estamos calculando la salud actual y estamos actualizando la salud. Antes incluso de actualizar la salud, quiero comprobar si mi enemigo está muerto o no. Sigamos adelante y hagámoslo aquí. Siempre que esté la salud, el enemigo debería morir por aquí. Yo sólo voy a arrastrar y decir si la salud es mayor que cero y hacer una rama seguir adelante y conectar esto. Siempre que la salud sea mayor que cero, solo queremos continuar con lo que hayamos hecho antes. No obstante, si la salud no es mayor que cero, esto significa que la salud es cero porque la sujetamos a cero, por lo que no puede ser negativa. Si es cero, sigamos adelante y hagamos morir al enemigo. Yo sólo voy a hacer una nueva variable, un lingote llamado B está muerto. Normalmente agrego una B delante de mis variables de lingotes. Y puedes ver si lo arrastras aquí, no puedes ver la B. Esto suele hacerse en C plus plus y también es mucho más fácil buscar si tienes un juego más grande. Ahora vamos a agregarlo y establecerlo en true. Siempre que la salud no sea mayor que cero, significa que el enemigo está muerto. Entonces podemos establecer esto para que sea cierto. Además, solo sigue actualizando la salud porque tenemos que actualizar la salud también y hacer el efecto hit. Ahora para este podemos hacer doble clic y hacer una ruta trasera nodos, no se ve mal, así como esto. Ahora, ¿qué podemos hacer con éste? Con éste. Obviamente aquí en el efecto hit, cada vez que golpeamos al enemigo que hicimos antes. No quiero reproducir la animación ociosa cada vez que muera el enemigo. Llevemos aquí a este matón. Después de retrasar esto, la longitud del libro de sprites , hacemos un retraso En lugar de reproducir la animación ociosa al instante, tenemos que comprobar si el enemigo está muerto o no. Ataquemos aquí y hagamos una rama y preguntemos, ¿está muerto el enemigo? Sí, el enemigo está muerto. Bien, entonces queremos jugar un evento de muerte. Realmente no hemos creado uno todavía, así que vamos a ir por aquí, haga clic derecho, Haga un nuevo evento personalizado llamado muerte. Podemos hacer algo con esto más tarde, pero aquí arriba si el enemigo está muerto, quiero jugar el evento de la muerte aquí abajo. Si el enemigo no está muerto, quiero reproducir la animación ociosa como lo hice antes. Simplemente eliminemos este y volvamos a conectarlo aquí. Y haga doble clic una vez más. Bien, por aquí en el evento de la muerte, lo que queremos hacer, simplemente queremos reproducir la animación de la muerte. Entonces volvamos a tomar, igual que antes, todo esto aquí junto con el retraso. Voy a copiarlo. Voy a pegarlo aquí abajo. Y voy a conectarlo así. En lugar de reproducir la animación de éxito, voy a desconectarla, esconderla todo, y solo mostrar la animación de la muerte. Adelante y conecta esa. En cambio, lo vamos a retrasar. Después de que lo retrasemos, quiero destruir a Acta. Quiero quitar este Acta del mapa. Sigamos adelante y hagamos clic en Plano. Ahora, cada vez que hago clic en el enemigo, ahora el enemigo muere. Se puede ver que el enemigo desaparece. Y eso se ve bien. Básicamente se puede ver que la animación de la muerte también es rara, el enemigo cae. Tenemos que arreglarlo. Antes de hacer esto, también tenemos que incrementar el nivel, porque cuando muere el enemigo, queremos que el próximo enemigo esté ahí También puedo ver que acabo de ver un dólar. Si haces clic demasiadas veces, puedes seguir haciendo clic y no quiero hacer eso. También tenemos que hacer un check por aquí en el unclicked. No queremos hacer clic en el enemigo siempre que el enemigo esté muerto. Movamos esto y digamos si el enemigo está muerto. Y voy a escribir no matón en. Esto significa que si el enemigo no está muerto, Si está muerto es falso, esto es lo que significa aquí. Si el enemigo no está muerto, entonces podemos hacer una rama aquí y preguntar si el enemigo no está muerto. Podemos seguir adelante y aplicar daños. Si el enemigo está muerto, no queremos hacer nada. Demos clic en Planear ahora y ver si se corrige este error. Y yo puedo enviar spam, se puede ver caja ahí, así que todo está funcionando de nuevo. La animación de la muerte es rara. Tenemos que arreglarlo. Pero sigamos adelante en la siguiente lección y trabajemos en el incremento del nivel 46. 5.12 Incrementar el nivel: Bien, para incrementar el nivel, creo que lo mejor es que lo hagamos en el modo juego porque aquí es donde se controla el nivel actual Hagámoslo aquí, por aquí. Hagamos un nuevo evento personalizado. Llamemos a éste Nivel de Corriente de Incremento por aquí. Muy sencillo. Solo queremos tomar el nivel actual que queremos arrastrar aquí y decir plus, plus porque plus plus significa que incrementaste en uno y luego lo configuraste Es lo mismo que hacer esto y decir más uno y luego lo pones así. Es el mismo método. Esto es mucho más corto. De nuevo, recuerda, plus plus significa que agregas uno. Si necesitas agregar dos en el futuro, no puedes hacerlo así, tienes que hacerlo así. Pero en realidad no tiene sentido. Nuestro nivel solo está incrementando en uno. Hagámoslo de esta manera. Ahora hemos incrementado el nivel en uno, pero tenemos que asegurarnos de no rebasar el nivel máximo. Voy a hacer una nueva variable llamada max level y voy a hacerla como un entero también. Aquí puedes escribir cuál es el nivel máximo. En lo que va de la tabla de datos, puedo ver que mi nivel máximo es 11 aquí. Voy a escribir 11 como mi nivel máximo aquí. Voy a arrastrar hacia abajo y decir si el nivel actual es menor o igual a mi nivel máximo, entonces podemos seguir adelante y engendrar al enemigo Porque cuando incrementas el nivel, también tienes que engendrar al siguiente enemigo Voy a preguntar aquí, mi nivel actual menor o igual al nivel máximo, no hemos superado el nivel máximo. Si eso es cierto, quiero engendrar al próximo enemigo. Recuerda, para el enemigo engendrado, ya lo hicimos en el mando de juego Si voy al mando de juego, tenemos este enemigo engendrado Sigamos adelante y usemos eso. En realidad, también lo usamos aquí. Para que puedas copiar esto. O si quieres recordar cómo lo hiciste, puedes tomar el controlador del reproductor. Y en realidad veo que no creamos una variable para esta. Vamos justo aquí, promocionemos esto a una variable, llámalo controlador de jugador. Y conectamos y conectamos éste con éste en su lugar. En realidad, vamos a desconectarnos porque ahora ambos están conectados. Mantenga pulsada la tecla Alt y haga clic para desconectar y conectar solo esta. Adelante, póngalos así. Ahora, aquí abajo, tomemos el controlador de juego y digamos engendrar enemigo conectado Recuerden que hicimos esta función aquí llamada conseguir enemigo para engendrar para el nivel actual Básicamente lo que eso fue es que acabamos de obtener el nivel actual, obtuvimos el nombre del enemigo porque es un nuevo enemigo. Porque recuerden que incrementamos el nivel en uno. El nivel actual se incrementa en uno. Se va a llevar al siguiente enemigo en la tabla de datos, si fuera el. Ahora va a incrementar el nivel en uno. Ahora va a tomar el Roe, El pícaro va a ser encerrado en aquí y engendrar Sigamos adelante y aquí. Ahora eso debería funcionar bien. Vamos a incrementar el nivel. Tenemos que ejecutarlo en alguna parte. Y vamos a atropellarlo en el enemigo. Si vuelvo a abrir al enemigo, cada vez que muera el enemigo, justo antes de que destruyamos el Acta. Sigamos adelante e incrementemos el nivel. El nivel de incremento está en el modo de juego. Ya tenemos una referencia. Tomémoslo, digamos incremento. Si puedo deletrear aquí, incrementar el nivel actual, entonces destruimos el acto Vamos a hacer clic en quejarse. ¿Ves qué pasa si hago clic en jugar? Yo mato al enemigo, el enemigo muere. Los siguientes vanos puedo hacer clic de nuevo, el enemigo muere. Se puede ver que las animaciones de la muerte necesitan ser arregladas. Y podemos hacerlo de una manera fácil, pero como puedes ver, todo está funcionando bien. Y ahora parece un juego. Ahora puedes hacer clic en los siguientes engendros enemigos después y así sucesivamente Impresionante, Ahora que es muy buena progresión. Sigamos adelante y guardemos todo, y arreglemos las animaciones de la muerte en la siguiente. 47. 5.13 Arreglo de las animaciones de muerte del enemigo: Para arreglar las animaciones de la muerte. Pasemos a los bienes y caráctanos por aquí. Tenemos que arreglarlos porque hay algo mal con estas animaciones de muerte si hacemos clic en ellas. En lugar de hacerlo aquí, creo que tenemos que hacerlo en el sprite, abrir las texturas y abrimos la noche, por ejemplo, y es la muerte una Muerte Ábrela, puedes ver O punto está aquí, por ejemplo, vamos a revisar la noche, la noche, vamos a que la noche sea el nivel 11 por aquí para la noche. Yo sólo voy a poner la salud a una en realidad, solo voy a dejar que esté aquí. Voy a poner mis daños. Eso es mucho más fácil si abro controlador del reproductor o el reproductor más bien. Y el daño del cursor. Sólo voy a configurarlo en algo súper alto para que podamos hacer el modo de juego instantáneo. Pasemos al modo de juego aquí. Vamos a establecer el nivel actual en 11 jugada. Puedo dar click aquí, el enemigo es empujado a un lado. Esto se debe a que el punto de pivote está en un lugar equivocado en el punto de pivote En lugar del centro central. Hay que cambiar este a costumbre. Ahora hay que jugar con el punto de pivote aquí. Se puede jugar con él y se puede ver qué pasa. Esta es la razón por la que no necesitamos jugar con ella. Uno que queremos tocar es éste. Ahora es a las 24. Si lo acabo de decir a costumbre otra vez, 24, Lo que quiero que hagas es decir algo así como menos ocho suele ser un buen número. Menos ocho. Se puede ver que es el medio. Ahora trata de incrementar en ocho o decir menos ocho. Por lo general para piloto va más ocho. Menos ocho, Menos ocho parece funcionar. Tenemos que hacerlo en todos ellos. Si vuelvo a abrir los activos, personajes, texturas, ahora tengo que hacerlo por todos ellos. En lugar de hacer eso me permite hacer clic derecho, ir a Asset Action It selection en matriz de propiedades para el sprite Vamos a establecer el punto de pivote para que sea personalizado. Ahora no puedo cambiar, por alguna razón el punto de pivote personalizado aquí. Tengo que hacerlo de forma manual. No creo que podamos hacerlo. Tenemos que hacerlo de forma manual. Pero establecemos el punto de pivote a la costumbre. Ahora vamos a hacer clic en el primero. Digamos menos ocho, igual que antes, tenemos que hacer eso con todos ellos. El siguiente menos ocho, el siguiente menos ocho, siguiente menos ocho, y el último menos ocho. Ahora veamos si eso está funcionando. Vamos a hacer clic en play. Ahora bien, si matamos a este enemigo, animación se ve bien. También puedo ver un bicho. Si notas si hago clic en jugar y el enemigo muere, el enemigo vuelve a aparecer, desapareciendo Para que puedas ver al enemigo o un fotograma genera antes de desaparecer Sigamos adelante también y arreglemos eso aquí también, mientras vemos el error. Vamos a Blueprint. Vayamos al enemigo, a la base enemiga. Está pasando aquí en la muerte porque lo retrasamos. Entonces nosotros nivel incremental y luego destruimos al actor. Si quieres, puedes llevarte este sprite aquí, déjame mover todo esto Podemos decir aquí y decir es looping, o establecer el looping Establecer el looping, podemos establecer el looping para que sea falso. Entonces puedes intentar ver aquí cuando mato al enemigo para hacer esto. Pero tal vez ahora también va a establecer que el ciclo sea falso para el siguiente Veamos en realidad lo que hace. Probablemente lo hará si voy al modo de juego. Ahora abre el modo de juego. Establecer el nivel actual en algo así como nueve play. Ahora bien, si mato a este tipo, siguiente, bien, está bien. Ahora todo está funcionando bien. Eso soluciona el problema. Volvamos al nivel 11. Se puede ver que arregla el punto de pivote, arregla la animación de muerte para este tipo. Aquí tienes que probarlos todos para el nivel uno. Déjame mostrarte un par de ellos y tengo que hacerlo en mi tiempo, contrario el video será demasiado largo. Pero déjame mostrarte a dos de ellos. Es el siguiente, este de aquí. Vayamos a Texturas. Encontremos el aquí abajo, la Muerte. Voy a seleccionarlos a todos. Haga clic derecho en él. Selección en Matriz de Propiedades, aquí en el sprite Cambiemos el punto de pivote a personalizado. Vamos, vamos a cerrar esto. Ahora, abre cada uno aquí. Ahora para éste se puede ver que está aquí arriba. A lo mejor tenemos que arreglar la y y la X. Voy a decir menos ocho. No es menos ocho, es más ocho. Más ocho, de nuevo para volver al default. Y más ocho, otra vez, tal vez necesito hacerlo. Más ocho otra vez, así, son 48. Vamos a tratar de hacer esto. Más 16 básicamente en total. Más 16, más 16. Tengo que adivinar y ver que es correcto por aquí. Además 16. 16 para este también. Vamos a hacer clic en Reproducir. Se puede ver que la animación de la muerte es correcta. Por lo ahora la muerte es correcta. Tenemos que volver a hacer esto para todos ellos. Más ocho menos ocho píxeles es siempre la mejor opción para ir con. El siguiente es el Roe. Probemos la E. Puedes probar el resto de ellos tú mismo. Muerte hacemos clic en selección en Matriz de Propiedades. Aquí dentro, vamos a Sprite. Cambie el punto de pivote o el modo de pivote a personalizado. Vamos a abrirlo en la primera otra vez, Digamos más ocho. Creo que es más ocho otra vez. Más 16. Hagámoslo por el resto de ellos. Digamos que más 16 por aquí también. Más 16, creo que es el mismo número. Copiemos este número y básicamente peguemos este número en todos ellos así. Solo ten cuidado, no siempre es el mismo número en la X. Solo presta atención ahora juguemos y veamos Ahora la primera muerte es correcta, la segunda muerte es correcta. Bien, hagámoslo. Ahora lo voy a hacer por mi cuenta. Básicamente solo editarlos en la matriz de propiedades a medida y luego seguir adelante y decir más ocho o menos ocho hasta que se arregle. Bien, ahora estoy acabado. Cuando hago clic ahora, puedes ver cada vez que mato a los enemigos, todos están fijos con respecto a la animación de la muerte. Entonces todo se ve bien. Sólo voy a cerrarlo. Ahora eso fue todo. Recuerda volver al controlador del jugador controla el modo de juego y establece el nivel actual uno si quieres. También configura los controladores del reproductor para que no jueguen. Controla el daño del cursor de los jugadores a tal vez como 15. Nuevamente, compilar y ahora ya terminamos con esto y pasemos al siguiente. 48. 5.14 Haz clic en Hit VFX: Bien, entonces lo que podemos hacer ahora es que podemos hacer un efecto de golpe cada vez que estemos golpeando al enemigo. Entonces podemos tener algún tipo de efecto que aparezca. Así efecto visual cada vez que estamos golpeando. Sigamos adelante y hagamos eso. Ahora, para el efecto hit, te he dado algo dentro del material del curso. Si lo abres por aquí en los materiales del curso, quiero que abras la interfaz de usuario. En la UI, te he dado un efecto hit aquí. Pongámoslo en las imágenes. Así que déjame arrastrarlo hasta aquí. Agrégalo ahora es pixel. Voy a hacer clic con el botón derecho en acciones y aplicar papel a la configuración. Esto es lo que vamos a añadir. Sólo un simple efecto para esto. Nuevamente, se trata de algunos sprites juntos. Vamos a hacer clic derecho como antes y extraer sprites. Adelante y selecciona Cuadrícula por aquí. Para la grilla, tenemos que adivinar de qué se trata. Tal vez 64 por 64. Se puede ver que en realidad es menos que eso. Pero lo que podemos hacer es que se vea que es de dos en dos. Entonces en realidad podemos dividir esto, podemos decir dividido por dos, o puedes escribir 32. Eso también está bien, dividido por dos y será correcto, 32 por 32. Sigamos adelante y extrayamos todo esto. Déjame escribir, haz clic aquí solo para que no esté abarrotado con todo Déjame hacer una nueva carpeta, y voy a llamarla Texturas. Y adelante y selecciona todo esto. Y selecciona esto también. Y agrégalo aquí y aquí. Vamos a hacer un libro volteo con éste. Selecciono todo esto y puedo escribir Click I can do, quit flip book. Vamos a llamarlo flip book. Efecto de golpe. Vamos a abrirla. Y así es como se ve ahora para el efecto hit. Creo que los fotogramas por segundo por 15 está bien para mí. Se ve bien. Siempre podemos ajustarlo en el juego. Vamos a cerrarlo por ahora. Y arrastra esto a la carpeta de imágenes. Está aquí afuera, y ya podemos usarlo. Esto se puede hacer de dos maneras. La primera forma en la que puedes hacerlo es en el plano, igual que antes Al igual que los otros sprites, en realidad puedes agregar el sprite aquí Siempre que hagas clic en el enemigo, puedes jugar al sprite para que haga algún daño. Sin embargo, la desventaja es que solo puedes jugar una instancia del efecto de daño si haces clic dos veces una tras otra. Va a cancelar el último efecto y va a jugar el nuevo . Eso no me gusta. Quiero generar tantos efectos como quiera, dependiendo de lo rápido que sea el jugador Al hacer clic dijo, sigamos adelante y los planos. Y aquí afuera, hagamos clic derecho en hacer una nueva clase de plano y simplemente hagamos un actor simple que contenga este libro flip Actor de Creta. Llamemos a éste BP hit effect. Vamos a abrirla aquí. Agreguemos un libro volteado. Si buscas flip book, puedes seguir adelante y agregarlo. Yo sólo voy a llamarlo Hit Effect. Ahora podemos agregar el libro volteo aquí. Es este libro volteado. Efecto de golpe. Adelante y selecciónelo. Y aquí lo puedes ver. Ahora para este efecto de golpe, solo voy a bajar a la colisión y asegurarme de que no tenga ninguna colisión porque no quiero, para la colisión, voy a quitar esta, generar eventos de superposición. Voy a decir que no aquí por los presets de colisión. Sólo voy a decir que no hay colisión, no tiene ningún tipo de colisión. Yo y compilo y vamos a cerrarlo. Ahora quiero engendrar esto cada vez que haga clic en el enemigo. Y recuerda que el desove siempre se hace en el control del jugador Así que sólo voy a entrar de aquí para esto. Sólo voy a hacer un nuevo evento personalizado. Voy a llamarlo spawn effects igual que antes, arrastra aquí y di spawn Acta de clase Ahora bien, ¿qué cláusula queremos generar? No tenemos que conectarlo a aquí porque es solo un valor estático y es el efecto hit, blueprint que queremos generar Voy a decir siempre engendrar, ignorar colisiones. Ahora para la transformación de spawn, depende de dónde golpeemos con el mouse para encontrar este valor Lo que podemos hacer es hacer clic derecho y usar esta función. Si solo buscas mouse, si no sabes cómo se llaman, así es como hago yo. A veces puedes echar un vistazo a todos esos. Lo que podamos usar para esta instancia, podemos usar esta. Convierta la ubicación del mouse en el espacio mundial. Dondequiera que esté el ratón, vamos a generar el efecto donde el jugador hizo clic Sigamos adelante y hagamos eso. Vamos a conectarlo aquí así. Va a convertirlo en una transformación para nosotros y conectarlo. Vamos a tratar de hacer esto. Por ahora, tenemos que generar el efecto hit en alguna parte. Vamos a engendrarlo dentro del enemigo aquí. Siempre que hacemos clic en el enemigo y el enemigo no está muerto, aplicamos el daño, pero también queremos jugar el efecto de golpe. Golpeemos aquí desde el controlador del jugador. Y realmente no tenemos una referencia al controlador del reproductor. Hagámoslo. Ahora déjame arrastrar este modo de juego por aquí. Déjenme decir controlador. Y selecciónala. Esto ya lo hemos hecho antes. Podemos arrastrar y decir, obtener la referencia del controlador del jugador. Ya tenemos esa interfaz de blueprint. Vamos con razón podemos promover esto a una variable llamada controlador de jugador. Sigamos adelante y conectémoslo aquí. Esto lo tenemos muy rápido. Ahora podemos llevar este controlador de reproductor por aquí y decimos como lo llamemos. Si solo vuelvo, no lo recuerdo, vuelvo aquí. Lo llamamos spawn hit effect, arrastre aquí. Y digamos spawn hit effect, respondiéndolo cada vez que aplicamos daño por delante y compilamos y guardamos Ahora bien, si solo hacemos clic en el enemigo, vemos que en realidad lo engendramos aquí Pero ahora se puede ver que está dando un giro para siempre. Tenemos que arreglarlo también. También viste que el efecto es básicamente dentro del enemigo. No quiero que eso también lo arregle, siendo el efecto dentro del enemigo. Esto se debe a que, recuerden que estamos trabajando con dos D y básicamente estamos controlando este valor verde. El valor verde, recuerda que es la y, mueves las cosas por detrás o por delante, en lugar de que sea cero en la ubicación del mouse. Tomemos esto y digamos más, intentemos decir más uno en la y, sigamos adelante y volvamos a convertirlo aquí. Jugar y ver más va detrás del enemigo. Si en su lugar solo borras esto y dices menos, menos uno, sigue adelante y vuelve a conectarlo. Jugar. Ahora se puede ver que está frente al enemigo. Bien, ahora sigamos adelante y tenemos que destruir. Porque recuerda es muy importante que destruyas acto. Porque si sigues pinchando, recuerda que estamos desove de actos Solo echa un vistazo aquí, cuántos actores estás engendrando. Cada vez que hago clic, estoy engendrando un actor. Imagina que si sigues pinchando 2 horas después, vas a tener tantos actores que vas a chocar tu propio juego. Asegúrate de que cada vez que generes algo, también lo eliminas cuando ya no lo necesites Dentro de este efecto hit en la jugada de inicio, solo voy a tomar este efecto hit. Esto es básicamente este libro flip aquí. Ahora voy a decir looping set es looping para ser falso, no quiero que bucle para siempre Además, al igual que antes de usar esta longitud de libro volteo, obtener la longitud del libro volteo, y luego voy a hacer un nodo de retardo. Después de que el efecto haya jugado una vez, voy a destruir al actor. ¿A qué actor voy a ir? Sólo voy a destruirme a mí mismo, es decir, voy a destruir este plano aquí Y cuando hago clic en play ahora, y también le presto atención a los actores aquí arriba, hago clic aquí, engendro un actor, pero se remonta a 15 y solo juega una vez, como pueden ver aquí A pesar de que aquí hago spam y hago clic, hago algún daño. Se ve bien. Siempre volverá al 15 porque destruye cada efecto que creo que está funcionando perfectamente Ahora pasemos al siguiente. 49. 5.15 Diseño de la interfaz de usuario de texto flotante: ahora y diseñemos la interfaz de usuario de texto flotante, que aparece cada vez que golpeas al enemigo. Y dirá cuánto daño hiciste. Ahora antes de hacer esto, permítanme en realidad solo agregar HP detrás del nombre de salud. Sabemos que es salud. Hagámoslo muy rápido antes de continuar. Si abres tu widget de barra de salud, plano que creamos anteriormente dentro de la gráfica, aquí es donde agregamos la salud Ahora recuerda, si quieres texto estático además de algún texto dinámico, tienes que usar el formato texto muy fácil. Simplemente escriba texto en formato desde aquí. Escribamos corchetes abiertos y solo voy a llamarlo salud y cerrar corchete. Ahora esto aparece, entonces podemos escribir el espacio HP. Tenemos HP detrás de él. Y sólo voy a borrar todo esto. Y en realidad podemos simplemente arrastrar desde aquí y conectarlo, y va a usar esa variable entera. Ahora eso está arreglado y eso es todo lo que teníamos que hacer. Ahora puedes ver si hago clic en Reproducir. Si solo reorganizo esto y hago clic en play. Ahora ya ves también tengo HP al final, y creo que se ve mucho mejor. Bien, vamos a cerrarlo. Ahora haga clic derecho aquí. Vaya a Interfaz de usuario y haga un nuevo widget, blueprint. Haz uno nuevo. Llamemos a este texto flotante. Ahora para esta, vamos a abrirla una vez más. Primero agreguemos un lienzo. Entonces agreguemos algunos para el texto. De hecho, podemos simplemente copiarlo de la información enemiga. Podemos usar el mismo aquí, control para el texto. Ve aquí al panel de lienzo y controla V. Y aquí lo tienes para la pantalla de relleno. Voy a cambiarlo a deseado en pantalla en su lugar. Después el tamaño de la pantalla otra vez, cambiándola a una laptop genérica como antes. También asegurándose de que el texto aquí esté, ya es porque lo copiamos de aquí. Pero solo asegúrate de que la alineación sea 0.50 0.5 y la posición sea 00 Está perfectamente censurado aquí, y también que el tamaño al contenido está marcado. Bien, entonces aquí está el texto que necesitamos tener. Y eso fue en realidad, quiero decir, realidad no hay mucho porque aquí vamos a tener el daño. Pero solo puedes escribir un texto de relleno si quieres, por ejemplo. Puedes escribir, por ejemplo, este es el daño que hizo el jugador. Obviamente, el jugador no va a hacer esto mucho al principio. Pero nuevamente, esto es solo un relleno. Vamos a cerrarlo y continuemos. 50. 5.16 Animación de texto flotante: Ahora es el momento de hacer algo de animación de interfaz de usuario. Si abres tu interfaz de usuario de texto flotante, una vez más tienes la animación aquí abajo. Ahora bien, si no lo tienes abierto, siempre puedes hacer click aquí abajo y en la pestaña Animación. Y luego puedes hacer clic en Duck en Layout. Y se quedará arriba todo el tiempo. Ahora para crear animación de interfaz de usuario, primero primero en realidad vamos a crear la animación. Al hacer clic en el de aquí abajo, sólo voy a llamarlo texto flotante aquí. Primero tienes que hacer clic en lo que quieras para animar este texto Por ejemplo, este texto, en realidad voy a cambiar el nombre del mismo. No es información enemiga, es texto flotante así. Tienes que hacer clic en la pista más cuando haces eso, y tienes seleccionado el texto flotante. Se puede ver que aparece aquí abajo. Al hacer clic en el texto flotante, haga clic aquí de nuevo. Entonces tenemos algo llamado la transformación. Y aquí es donde cambias donde está en la pantalla, así como la rotación del texto. Si solo abres la transformación y la traducción, esto es lo que queremos editar. Lo que quiero hacer aquí, muy, muy sencillo. Solo quiero que este texto flotante vuele hacia arriba cada vez que golpee al enemigo. Entonces empecemos aquí en el cero, Está bien, no va a pasar nada. Es cero. Ahora cuando vaya a, digamos 0.6 segundos, creo que voy a hacer algo así como -100 Y la y, está aquí arriba Ahora puedes ver cuando lo arrastras, el texto vuela hacia arriba. Ahora hay que probarlo en el juego sobre lo rápido que realmente vuela. Pero si solo haces clic en el espacio, si acabo de eliminar estas líneas aquí para el texto de prueba flotante, simplemente puedes hacer clic en el espacio para reproducirlo. Esto te hace ver lo rápido que realmente juega. Creo que está bien. Siempre podemos ajustarlo si no estamos satisfechos. Ahora lo siguiente que quiero hacer es que quiero que desaparezca en esta etapa de la animación. Y luego aparece, y luego desaparece una vez más aquí arriba. Hagamos clic aquí arriba. Encontremos la opacidad aquí abajo, la opacidad de Rendo. Sigamos adelante y hagamos clic en él. Ahora al principio, quiero que sea cero. Comienza sin opacidad y luego va a tal vez algo así como 15 Aquí a los 15, quiero que la opacidad sea una. De nuevo, aparece. Ahora puedes ver aparece, o aparece aquí para nosotros, es invisible al principio. Entonces creo que a 0.45 quiero que sea uno. Nuevamente, simplemente haciendo clic en este pequeño punto aquí para agregar un punto de animación. Entonces al final aquí, quiero que sea cero. Una vez más, se puede ver que aparece así. Y luego vuelve a desaparecer por aquí. Da click en el espacio y ve cómo se ve la animación. Una animación muy sencilla, pero se ve profesional. De alguna manera, muy rápido. Se puede pasar mucho tiempo, a veces paso como media hora, 1 hora , 2 horas para hacer algo muy complejo. Siempre se puede hacer que el texto no sólo vuele hacia arriba, sino que puede volar así en un arco hacia un lado así. Puedes intentar jugar con la animación tanto como quieras. Siempre se ve profesional cuando un juego tiene muy bueno. Por ejemplo, yo animación, animación de texto. Eso era todo lo que teníamos que hacer ahora que tenemos la animación. Sigamos a la siguiente. 51. 5.17 Generación del texto flotante: Bien, para texto flotante, necesitamos generarlo en el nivel Ahora, no podemos agregarlo al enemigo, normalmente entramos en el enemigo y dentro de aquí agregamos un widget como la barra de salud y así sucesivamente. No obstante, para el texto, ya que estamos haciendo spam esto como estamos haciendo spam al enemigo y estamos dando click aquí, va a aparecer mucho texto como texto de combate No podemos agregarlo al enemigo porque si lo agregamos al enemigo, solo aparecerá una instancia de este texto a la vez. Se verá un poco estúpido si solo un texto está volando aquí, al igual que el efecto hit aquí. Cuando hacemos clic en el enemigo, tenemos que generar el texto igual que lo que hicimos aquí Recuerda con el efecto hit, en realidad lo adjuntamos a un actor que genera y luego se borra Tenemos que hacer el mismo método. Vamos a hacer clic derecho aquí, hacer una nueva clase de plano Sólo tienes que seleccionar un actor sencillo, Llamemos a éste BP texto flotante. Ahora dentro de aquí, abramos éste. Para el texto flotante, hagamos clic en un Search for Widget. Sigue adelante y selecciona el widget uno. Sólo llamémoslo texto flotante. Ahora, haciendo clic en él, cambiemos el espacio a pantalla, porque queremos que lo vea hacia la pantalla para la clase widget. Cambiémoslo al texto flotante. Dibuja un tamaño deseado, entonces debería estar bien. Adelante y compilar lo siguiente que queremos hacer. Ahora recuerda que tenemos que generar esto cada vez que hacemos clic en el enemigo Vamos a ver aquí, los enemigos y a la base. Siempre que hagamos clic en el enemigo y apliquemos daño, queremos engendrar a este actor Ahora recuerden desove, lo estamos haciendo en el Player Controller Vamos al controlador del jugador, ábrelo, aquí estamos haciendo el desove dentro de aquí Sigamos adelante y hagamos un nuevo evento para ello. Hagamos clic derecho, hagamos un nuevo evento personalizado para este. Vamos a llamarlo engendrar texto flotante. Nuevamente, vamos a hacer click derecho aquí y usar el que se llama spawn actor de clase Esta, la cosa que queremos engendrar igual que antes. No necesitamos que sea dinámico así en el evento porque es solo una clase estética de clase la que estamos desove Al igual que el efecto hit aquí. Vamos a seleccionar el texto flotante que queremos generar, luego seguir adelante y conectarlo Ahora, ¿dónde queremos engendrarlo? Necesitamos una ubicación de desove, realmente no necesitamos la transformación En cambio, voy a tomar esto y decir make transform. Cuando hacemos eso, estamos rompiendo la transformación. Recuerda una trans, si miras el panel de detalles, si seleccionas algo, consiste en la ubicación, rotación y escala del ítem cuando lo desglosamos. Y se llama a hacer, recuerda que se llama break si va por aquí, pero se llama, va por aquí. Siempre se puede arrastrar de aquí. Digamos vector de ruptura por ejemplo. Pero no puedo decir hacer vector de esta manera. Esto no tiene sentido. Rompiendo de esta manera, haciendo de esta manera. Estamos haciendo la transformación. Así podemos ver la ubicación, rotación y la escala también. Ahora que tenemos la ubicación, solo arrastrémosla hasta aquí y veamos qué pasa. Siempre podemos editarlo más tarde. Para esto, voy a llamarlo lugar de desove. Entonces también necesitamos el texto que necesitamos tener, ¿cuál debería ser el texto? Vamos a editar eso más tarde. No tenemos que hacerlo ahora, pero ahora estamos al menos generando el texto también aquí abajo Asegúrate de seleccionar siempre generar ignorar colisiones y seguir adelante y compilar Asegurémonos de que las colisiones no estén ahí. Si voy al texto flotante y hago clic en el widget, baje en el carácter inferior, paso hacia arriba en no, eliminar, generar eventos de superposición. Y también para los ajustes preestablecidos de colisión, conéctelo a ninguna colisión No queremos ninguna colisión de este actor de aquí. Adelante y guarda todo. Ahora por aquí en la base enemiga, intentemos engendrarlo aquí para el controlador de juego Ya tenemos esto aquí. Golpeemos y digamos engendrar texto flotante. Adelante y seleccionamos ahora tenemos que especificar una ubicación a donde queremos engendrarla. Ahora donde queremos engendrar es justo donde se encuentra actualmente este enemigo Y recuerda que estamos en el enemigo. Yo sólo voy a arrastrar de aquí y decir que consiga una ubicación. O consiguiendo la ubicación del enemigo, sólo voy a engendrarlo por lo tanto Ahora vamos a hacer clic en Jugar y ver qué pasa si hago clic en el acto aquí o en el enemigo. Se puede ver que efectivamente está desovando, pero también tenemos que eliminarlo. No se ve así con buggy, pero sigamos con eso en otra lección. Al menos ahora estamos generando el texto cuando hacemos clic en el enemigo Como puedes ver aquí, básicamente estamos jugando a este texto flotante spawn Lo que quiero hacer también aquí para el efecto de golpe de spawn, esto básicamente se juega cada vez que golpeamos al enemigo Y estamos generando el texto flotante porque estamos golpeando al enemigo Lo que podemos hacer ahora mismo, ya que no veo ningún problema con ello actualmente, siempre podemos generar el efecto hit dentro de aquí Cada vez que hacemos daño, tenemos que jugar esto y esto. Me gusta jugar la menor cantidad de funciones posible para que no te confundas con tu juego. Más adelante voy a controlar X para quitar esto. Entonces voy a conectar este spawn de texto flotante. Sólo entonces voy a entrar de aquí. Aquí podemos generar este efecto de golpe. Ya tenemos este evento dentro de aquí. Solo arrastra y di, engendrar efecto de golpe. Ahora siempre podemos generar el efecto hit cada vez que generemos el texto flotante Si hay una instancia más adelante en el juego donde tenemos que generar el texto flotante sin el efecto hit, siempre podemos volver y agregarlo dentro de aquí Pero por ahora realmente no necesitamos agregar dos eventos todo el tiempo. Siempre podemos tocar esto y todo va a estar bien. Bien, eso fue por ahora. Sigamos con el siguiente. 52. 5.18 Actualización de la visualización de texto flotante: Bien, ahora vamos a actualizar correctamente el texto flotante. Ahora puedes intentar hacerlo tú mismo porque en realidad es una tarea sencilla. Entonces trata de pensar en cómo puedo actualizar correctamente este texto flotante. Cuando hago clic en el enemigo, este texto debería mostrarse correctamente. Siempre es agradable hacerlo tú mismo si aún no estás un poco seguro de cómo hacerlo Tratemos de continuar juntos ahora. A veces me gusta empezar en reversa. En lugar de comenzar desde el controlador del reproductor e intentar actualizar las cosas aquí. Me gustaría comenzar con el último paso, porque al final va a tener más sentido. Vamos a la interfaz de usuario. Vamos a abrir el texto flotante. Básicamente, el objetivo que queremos hacer es actualizar este texto aquí. Lo llamamos texto texto flotante y luego lo hicimos es variable aquí en la gráfica. Simplemente eliminemos todo esto. Lo que queremos hacer es que solo queremos tomar este texto y usar el que se llama set text. Este es básicamente nuestro objetivo. Queremos establecer el texto en algo del valor que sea como el daño que hacemos con el ratón. Lo que podemos hacer es hacer clic derecho y hacer un evento personalizado. Y entonces podemos decir actualizar texto flotante. Solo podemos usar este evento personalizado. Sigamos adelante y conéctelo ahora para el texto con el que queremos actualizarlo, siempre podemos simplemente conectarlo al evento y podremos actualizarlo posteriormente dinámicamente. Vamos a llamarlo texto, o también puedes llamarlo texto flotante. Sólo voy a llamarlo texto. En realidad, no necesitamos llamarlo texto flotante y compilar. Ahora necesitamos usar esta actualización, texto flotante. Voy a actualizarlo a través mi actor porque eso es lo que tiene más sentido para mí. Ir a los planos. Ir al texto flotante. Ábrelo dentro de aquí, queremos usar esta actualización, texto flotante. Yo, voy a usarlo cada vez que engendremos al actor. Cada vez que hago clic y engendramos a este actor, quiero que se actualice instantáneamente Sólo voy a usar el comienzo. Juega aquí en el actor de texto flotante aquí. Usemos este texto flotante. Agregamos el widget, vamos a arrastrarlo hasta aquí. Y digamos obtener datos de widget de usuario. O obtener objeto widget de usuario más bien, no datos. Ahora bien esta vamos a decir, otra vez, costó dos. Vamos a costar al texto flotante de aquí. Adelante y conéctalo. Ahora para este vamos a arrastrar y ahora podemos usar la actualización de texto flotante, UI. Vamos a arrastrar y decir actualizar texto flotante I. Tenemos que tener un valor de este texto porque ahora puedes ver si acabo de escribir hola por ejemplo. Y compilo y hago clic en Reproducir. Y hago clic aquí, ya pueden ver que se está actualizando correctamente. No obstante, ¿cómo consigo el daño aquí? Porque realmente no tenemos una variable de texto y realmente no tengo plug ins para ella como cualquier entrada. Ahora lo que puedes hacer es hacer una nueva variable. Si hago una nueva variable por aquí y solo la llamo texto, voy a cambiar en una cadena. Lo que podemos hacer ahora es que podemos bajar y abrir el Player Controller. Recuerda que este es el siguiente paso si vamos hacia atrás porque en el controlador de reproducción generamos este texto flotante Ya que la convertiste en una instancia editable y exponías en spawn lo que va a pasar ahora si compilas, a veces no aparece, así que tienes que hacer clic en Archivo y actualizar todos los nodos Cuando haces eso, puedes ver que aparece este texto. Esto está sucediendo porque estás configurando esto a una instancia Editable y exponer en spawn, que luego está haciendo esto expuesto aquí Cuando engendramos al Lo que podemos hacer ahora es que podemos tomar este texto y otra vez, enchufarlo aquí. Sólo lo voy a poner por encima esta ubicación de spawn y solo podemos dejar que se llame texto Eso está bien. Ahora bien, si vuelvo al texto flotante, permítanme simplemente tomar este texto aquí y conectarlo a aquí. Va a cambiar automáticamente mi texto en una cadena así como esta. Bien, ahora lo estamos agregando al controlador del jugador aquí, por lo que debería aparecer en la base enemiga. Entonces sigamos adelante y comprobemos en los enemigos abrir la base enemiga. Y ahora podemos ver que tenemos una entrada de texto. Ahora para la entrada de texto, lo que simplemente queremos mostrar es el daño del mouse. Y ya tenemos eso. que en el peón jugador, tenemos el daño del cursor. Siempre puedes controlar C, controlar V. Copiarlo aquí y sólo tienes que seguir adelante y conectarlo. Ahora va a convertir tu float en una variable de texto. Bien, eso realmente debería funcionar perfectamente ahora si solo hacemos clic en Reproducir y probarlo. Si hago clic mi daño es 15 con un mouse, y eso es correcto, todo está funcionando correctamente. Pero como pueden ver, todavía está atascado aquí en el medio porque tenemos que jugar con la animación. Y eso lo haremos en la siguiente lección. Pero solo para pasarlo rápidamente, puede ver cómo trabajamos hacia atrás y a veces en realidad los tiene más sentido. Empezando por, realmente quieres hacer, quiero poner mi texto, y aquí es donde empecé. Entonces voy hacia atrás y trato de hacer eso. Y en realidad tiene más sentido a veces en la base animada estamos enchufando el daño del cursor Se pasa a través de la aparición de texto flotante, que está en el controlador de juego respondiendo el actor Y estamos enchufando esta información de texto aquí que básicamente está apareciendo porque aquí hicimos clic en el texto y lo hicimos expuesto al generar esta Ahora que tenemos, lo estamos enchufando interfaz de usuario de texto flotante de actualización Y va a actualizar la interfaz de usuario así. Bien, eso fue todo por ahora. Sigamos con el siguiente. 53. 5.19 Reproducción de la animación de texto flotante: Bien, sigamos adelante y hagamos la animación. Volvamos a la interfaz de usuario y abramos la interfaz de usuario de texto flotante dentro de aquí. Vamos a la gráfica. En la gráfica, vemos este anim de texto flotante, que hicimos antes como puedes ver aquí Ahora para esta animación, vayamos a la gráfica. Vamos a arrastrarlo. Golpeemos de esta animación y simplemente digamos play animation. Ahora podemos usar esta función, reproducir animación. Adelante y conéctalo Ahora para esta animación de juego, ese tiempo es cero. Eso está bien. La cantidad de veces que va a circular es una que está bien para todo. Aquí está bien. Realmente no necesitamos cambiar nada. Ahora, si hago clic en reproducir y hago clic en él, se puede ver que se está reproduciendo la animación. En realidad, todo está funcionando, y eso debería ser todo. No obstante, recuerden, no estamos destruyendo al actor. Y esto va a ser un gran problema para tu juego si no lo haces. Porque ahora puedes ver cuando hago clic, puedes ver la cantidad de actores que engendro En este momento son 32, sigo pinchando, ahora 42 porque sólo estamos quitando el efecto hit. Recuerda, ahora mismo también generamos este efecto de golpe. Y desove y desove actores del texto flotante y nunca los eliminamos Eso va a ser un problema y va a fallar tu juego si haces clic en él suficientes veces. Abramos el texto flotante. ¿Cómo destruimos este texto flotante? Yo, en realidad podemos volver a hacer eso por dentro. Volver a los planos, abrir el texto flotante Hagámoslo dentro de aquí. Vamos, ahora que tenemos este texto flotante, podemos arrastrar y buscar el texto flotante, anim flotante que creamos antes Ahora lo que podemos hacer aquí es que podemos arrastrar y decir get end time. Podemos usar un retraso igual que antes. Incluso puedes abrir el efecto hit y ver qué hicimos aquí. Básicamente hicimos lo mismo. No obstante, este era un libro volteado. Tenemos la longitud de los libros volteados. Ahora para la animación, estamos consiguiendo la hora final. Sabemos cuando termina. Cuando hagas eso, puedes usar un retraso después de que se haya reproducido la animación. Una vez que puedas seguir adelante y eliminar este actor de texto flotante justo desde aquí. Y decir destruir actor. Y ahora va a ser destruida. Digamos todos. Y da click en play. Y sólo voy a minimizar esto. De nuevo, puedo ver la cantidad de actores que estoy desove. Ahora estoy haciendo clic, dando clic y dando clic, debería volver a los 15 una vez más, porque estoy borrando todo mi texto aquí, mi texto flotante. Voy a ajustar la ubicación del texto porque no quiero que se genere en medio del enemigo Voy a abrir el Player Controller, y aquí es donde tenemos la ubicación de spawn Voy a arrastrarlo hasta aquí. En cambio, voy a tomar esto y decir break vector para poder romperlo en una X, Y y Z. También lo mismo para esta Voy a arrastrar y decir make vector puede ver la x, y, y z también. Ahora cuando haces esto, siempre puedes mirar aquí en la vista y ver el eje, la ubicación del mismo Ahora para la x aquí, realmente no necesitamos modificarla porque ya está centrada al actor para la x, sólo voy a arrastrarla directamente adentro. No quiero ajustar este valor ahora para la y, Y es esta, la verde. Y controla la cantidad de ida y vuelta que es. Yo sólo voy a decir uno para la Y aquí porque uno solo quiere decir que sólo voy a ponerlo un poco frente al enemigo. El texto no genera en el enemigo y obtenemos como un efecto visual de error En vez de diez, aquí puedes ver que son diez. Ahora en vez de solo voy a escribir uno en la Y, me estoy asegurando de que este texto esté frente al enemigo. Para el valor ahora este es el importante, el valor Z es este. Y yo quería engendrar aquí arriba del enemigo. Lo que puedo hacer es que pueda decir tal vez algo como tomar esta Z que ya tenemos y voy a decir más agregarla. Voy a agregarlo 22 y después lo voy a volver a enchufar. Ahora lo que estamos haciendo, básicamente estamos tomando el valor z, estamos agregando 22, y luego lo estamos enchufando Adelante y jugando. Puedo ver donde abarca las patas aquí arriba del personaje. Creo que eso es mucho mejor que antes. Siempre puedes ajustar la ubicación dependiendo de dónde quieras que esté el texto. Bien, eso fue todo por ahora. Sigamos adelante y guardemos todo, y continuemos ahora. 54. 6.01 Diseño de la interfaz de usuario del temporizador: Bien, ahora es el momento de agregar el temporizador. Cuando jugamos el juego y estamos tratando de hacerle daño a este enemigo, quiero tener un temporizador de ronda para que no tengas para siempre para llenar a este enemigo. Si el temporizador de ronda ha terminado, entonces este enemigo será real. Si lo haces demasiado lento, volverá a sanar y tal vez tengas que retroceder un nivel para derrotar al otro enemigo antes de que puedas continuar. Vamos a cerrar esto por ahora. Ahora el temporizador va a estar dentro de la interfaz de usuario principal. En realidad no es una interfaz de usuario por sí misma. Sigamos adelante y creamos la interfaz de usuario principal. Vamos a hacer clic derecho, ir a las interfaces de usuario con él, Blueprint Llamemos a éste B principal. Esta es la interfaz de usuario principal del juego. Vamos a abrirlo y dentro de aquí, una vez más en un panel de lona. Ahora, dentro de este panel de lona, quiero que el temporizador esté horizontalmente aquí. Sólo voy a encontrar una caja horizontal. Voy a agregarlo aquí. Y luego esta caja horizontal, voy a alinearla a la mitad, aquí arriba, a la parte superior media. Al hacer clic en los puntos de anclaje, tener, parte superior media. Si escribes 00 en la x e y, puedes ver que no está centrada como costumbre tengo aquí en la x, tengo que escribir 0.5 así que está en el centro ahora. Bien, para que ya se termine para la imagen, o para el icono, voy a buscar imagen, Adelante y agregarla al cuadro horizontal. Ahora para los iconos, realmente no hemos importado nada todavía, y he incluido esto para ti aquí en la interfaz de usuario. Tengo un reloj aqui, fat click, hacer una nueva carpeta llamada icons. Sigamos adelante y salgamos de aquí, vamos a arrastrar este icono dentro. Solo asegúrate, de nuevo, haz doble clic sobre él, asegúrate de que el grupo de texturas esté configurado en UI y la configuración de compresión esté establecida interfaz de usuario dos D. Adelante y guarda. Volvamos adentro de aquí y busquemos el reloj, o simplemente está aquí frente a nosotros ahora. En lugar de hacer esto estirado aquí para la alineación vertical, voy a dar click en el medio. Entonces agreguemos algo de texto. Ahora para el texto, solo voy a copiarlo de nuestras otras IU. A lo mejor este de aquí. Voy a controlar, vuelve aquí. Control V en la caja horizontal. Centrarlo verticalmente. Aquí lo tenemos. Démosle algo de espacio, busquemos un espaciador. Agrégalo entre esos. El espaciador, a lo mejor le voy a dar algo así como 12 D X. Creo que se ve bien. Ahora, el texto, siempre podemos reducir el tamaño. Ahora para el texto, no sé si deberíamos reducir el tamaño o no porque en realidad es un temporizador importante. Creo que el tamaño está bien. Vamos a aumentar el tamaño de esta imagen aquí abajo. En vez de 32 por 32, voy a escribir 40 por 40, algo así. También puedes darle una almohadilla al fondo aquí. No creo que esté demasiado centrado. A lo mejor si hago clic aquí y le doy un relleno al fondo, algo así como dos. Y eso debería estar bien. Siempre podemos ajustarlo después. No estoy muy preocupado por la interfaz de usuario en este momento. También puedes hacer clic en Tamaño a Contenido aquí en el cuadro horizontal hacia arriba, podemos empujarlo. Entonces veamos aquí qué podemos hacer en la Y. Normalmente escribo 30, 35, Está en los bordes aquí. Ahora bien, así es como se ve. Creo que se ve bien. No obstante, para los juegos clicker, me gusta que el reloj esté aquí arriba Porque es súper importante que veas cuánto tiempo te queda cuando haces clic. Y no tienes que mirar todo el camino hasta aquí en vez de aquí. Ahora, sólo voy a sumarlo aquí arriba. Por ahora, siempre podemos cambiar la interfaz de usuario. No hace falta una vez que hayas programado todo lo que realmente puedas imaginar si tienes un juego grande, en realidad puedes cambiar toda la interfaz de usuario. A lo mejor en un día no va a tardar mucho, y este juego obviamente no tiene demasiada interfaz de usuario. Para que podamos cambiarlo dentro de una hora. Pero por ahora, solo hagamos que el reloj esté aquí arriba. Y vamos a guardar todo. Déjame hacer clic en el texto, asegurarme de que la visibilidad esté establecida para no golpear comprobable. Este también. Podemos simplemente configurarlo para que también golpee comprobable, para que el mouse no interactúe con él. Eso fue todo. Vamos a guardar todo, y pasemos al siguiente. 55. 6.02 Visualización de la interfaz de usuario principal: Ahora sigamos adelante y mostremos la interfaz de usuario principal a la pantalla. Por lo general, cuando trabajamos con UI, lo estamos haciendo dentro del controlador del reproductor. Abramos el controlador del reproductor y hagámoslo dentro de aquí. Ahora, no hemos hecho nada con UI donde lo tenemos en la pantalla. Normalmente, lo que hemos hecho hasta ahora es tenerlo apegado a un actor, pero ahora en realidad tenemos que crear alguna interfaz de usuario y apegada a la pantalla en lugar de al actor. Sigamos adelante y hagamos eso. Sólo voy a empujar todos estos aquí abajo. Empecemos. Ahora lo que suelo hacer es hacer clic derecho aquí y hacer un evento personalizado. Y te voy a mostrar un método inteligente si aún no lo has hecho. En uno de mis otros cursos, por lo general creo un evento llamado show hide o open close widget. Abre cerrar widgets, puedes llamarlo como quieras. Mostrar ocultar widget, abrir cerrar widgit. Esto está aquí. Ahora tenemos que tener una entrada de qué widget estamos hablando? Y no creo que hayamos creado una enumeración para eso todavía. Si lo llamas Ven planos, enumeraciones. Ahora, dentro de aquí, voy a hacer una lista de qué UI voy a tener en mi juego. Voy a llamarlo widgets de juego, porque más adelante también tengo uno puede llamarse widgets del menú principal. Entonces este se llama widgets de juego. Ahora tenemos que especificar aquí una lista de qué widgets tienes en el juego. Por ejemplo, puedo tener una interfaz de usuario principal. Puedo, por ejemplo, una tienda de actualización, y así sucesivamente. Puedes tenerlo después, pero por ahora solo necesito la interfaz de usuario principal. Sólo voy a llamarlo principal. Ahora si vuelves al controlador de juego, ya podemos aquí en la entrada podemos buscar esa enumeración que llamamos widgets del juego Y podemos salir y seleccionarlo. Sólo voy a llamar a éste widgets. Si abrimos y cerramos un widget, tenemos que especificar de qué widget estamos hablando. De hecho, puedo llamar a esta función aquí, o a este evento, para que puedan ver cómo se ve. Así es como se verá cuando llame a esta función más tarde. Ahora podemos seleccionar de qué widgit estamos hablando. Además, quiero otra entrada, un toro. Un lingote es simplemente, de nuevo, solo un sí o un no. Sólo un falso o verdadero. Para éste, voy a decir abierto, sólo voy a llamarlo espectáculo. A mi me gusta usualmente llamarlo show hide. No me confundo con esta. Voy a cambiarle el nombre a Mostrar Ocultar Widgets. Tenemos que especificar de qué widget estamos hablando por ahora. Solo tenemos la interfaz de usuario principal y luego podemos mostrarla u ocultarla. Si tengo eso desmarcado, es esconderse. Y si tengo eso marcado, es show. Así es como suelo hacerlo. Éste, podemos hacer una rama. Ahora si es show, queremos mostrar el widget. Porque esto es cierto. Hagamos dos funciones. Déjame hacer uno llamado show widget y hacer otro widget uno. Normalmente agrego un para mis funciones como prefijo. Es mucho más fácil de buscar porque si haces clic derecho y realmente buscas, entonces puedes tener todas tus funciones en el futuro. Para los widgets del show, voy a dar click, tengo una entrada de widgets de juego y selecciono eso y lo llamo widget. Lo mismo aquí para el hyde Widgit, adelante y da clic en él, agrega esto, y llámalo widget Lo que queremos hacer aquí ahora en el programa Widgit, queremos arrastrar desde aquí y decir encender enumeración Lo que vamos a hacer aquí, básicamente le estamos diciendo si la enumeración, o si este valor es principal, ¿qué queremos hacer? Imagínese si tuviéramos otro, por ejemplo, si tuviéramos un menú de Configuración y salimos a Guardar. Ahora puedes ver aquí, esto se está agregando aquí. Si el valor que viene por aquí, que básicamente se selecciona de aquí arriba, seleccionamos cuál debería ser el valor si entra aquí en el widget show. Y el valor es principal, por ejemplo, va a ignorar el código aquí abajo, y sólo va a ejecutar el código aquí arriba. Esto es lo que encienda la enumeración. ¿Va a funcionar el código de aquí? Y éste no va a correr si el valor es principal por aquí. Permítanme simplemente eliminar esta configuración por ahora. Lo que queremos hacer aquí es básicamente crear el widget y agregarlo a la pantalla. Hagamos clic derecho y digamos crear widgets que seleccionó seleccione qué widget desea crear. Quiero crear la interfaz de usuario principal y hacer clic derecho, promoverla a una variable. Vamos a llamarlo básicamente el widget principal. Entonces lo que queremos hacer es arrastrar desde aquí y decir Agregar a Viewport Así es como agregamos la interfaz de usuario a la pantalla, porque no es suficiente que hayas creado, pero también tienes que agregarla a la ventana gráfica antes de poder verla, bien. Ahora podemos conectarlo así, y todo está bien. Sin embargo, lo que me gusta hacer es solo por el bien de la optimización, podemos tomar esta variable que acabamos de crear, podemos escribir click y convertir a un get validado. Lo que podemos hacer ahora es que desconectemos esto manteniendo pulsada la tecla Alt y dando clic y ya podemos conectar esto. Ahora bien, si esto no es válido, esta variable no es válida. Esto quiere decir que esto aún no se ha creado. Aún no hemos creado la interfaz de usuario. Dirá que no es válido. Cuando no es válido, queremos seguir adelante y crear la interfaz de usuario. Sin embargo, si ya creamos la UI una vez antes de que sea válida, no tenemos que crear esto todo el tiempo y seguir configurando esta variable si ya la hemos hecho una vez antes, será válida si la hemos hecho una vez. Y luego solo voy a seguir adelante y agregarlo al punto de vista en su lugar, no tenemos que crearlo todo el tiempo. Bien, vamos a compilar ahora para el widget Hyde. Volvamos aquí igual. Digamos que encienda la enumeración, encienda los widgets del juego Entonces aquí lo que quiero que hagas, simplemente arrastra esta variable, haz clic derecho de nuevo, convierte a un get validado, igual que antes. Entonces arrastremos y digamos quitar de los padres. Eliminándolo de la pantalla. Esto se quita de los padres, ahora lo estamos quitando de la pantalla. Bien, ¿cómo usamos estas funciones que acabamos de crear? Ahora, si volvemos al gráfico de eventos, podemos arrastrar en las funciones, el widget show and hide. Sigamos adelante y conectémoslos. Si el bullying es cierto, queremos mostrar el widget, seguimos adelante y conectamos este. Si esto es falso, queremos ocultar el widget, conectamos el otro. Ahora bien, para el widget que entra es simplemente lo que hemos seleccionado aquí arriba. Pero podemos simplemente arrastrar esta entrada a esas funciones, y los datos pasarán a estas funciones aquí. Ahora en realidad está terminado. Lo que podemos hacer es que podemos, podemos llamar a este evento aquí siempre que queramos mostrar y ocultar un widget. Entonces puedo decir show, hide widget. Puedo especificar de qué widget estoy hablando. También puedo especificar si queremos mostrar u ocultar ese widget. Función súper inteligente que podemos usar. Esto es básicamente, así que no tenemos que escribir todo este código aquí, es mucho más fácil simplemente usar este. Sigamos adelante y mostremos la interfaz de usuario principal. Hagámoslo aquí en el Player Controller. Escribamos eventos, comencemos a jugar. ¿Qué debería pasar cuando empiece a jugar el juego? Solo quiero mostrar ocultar este widget. Entonces quiero mostrar mi menú principal, o mi interfaz de usuario principal. Básicamente. Esto es aquí. Si compilamos y hago clic en play, puedes ver ya puedo ver mi temporizador aquí arriba. Porque ahora estamos mostrando el widget. Si quieres ocultar el widget, siempre puedes hacer click aquí . Y puedes hacer click en play. Y se puede ver que el widget se ha ido, porque ahora lo estamos ocultando. Mostrando el widget principal, y así es como se hace. Sigamos adelante y cerremos todo, y sigamos. 56. 6.03 Configuración del temporizador de ronda: Ahora es el momento de agregar el temporizador redondo. Ahora, dentro de los juegos para un jugador, realmente no somos responsables realmente no somos responsables de donde queremos agregar el código. Podría agregar el temporizador redondo al jugador, podría agregarlo al controlador del jugador, y podría agregarlo al modo de juego. Básicamente, en el modo multijugador, tendrías un problema, porque tendrías que hacer las cosas correctamente. Pero en un solo jugador, en realidad podemos codificar todo, por ejemplo, dentro del jugador, aunque debería estar en el modo de juego. Y el juego funcionaría muy bien para quedarse y hacer buenas prácticas de programación. Hagamos el temporizador redondo dentro del modo de juego. Recuerda que el modo de juego controla las reglas del juego. Creo que algo así como un temporizador redondo es algo así como una regla en un juego. En lugar de aquí, hagamos el temporizador redondo. Lo que quiero hacer es intentar hacer otro evento personalizado. Hagamos clic derecho y hagamos un evento personalizado. Llamemos a este temporizador de ronda de inicio. Queremos iniciar el temporizador redondo. Quiero usar aquí principalmente algo llamado temporizador por evento. Haga clic en el extremo derecho y busque el temporizador por evento, seleccione ese. Ahora el temporizador por evento es simplemente un temporizador que hace un bucle una y otra vez. En lugar de usar el tick de evento, tal vez sepas lo que ya es un tick de evento. Si no lo haces, esta está funcionando 60 veces por segundo. Si solo puedo arrastrar aquí e imprimir una cuerda y solo decir hola. Puedes ver si hago clic en Reproducir, en realidad va a imprimir 60 veces por segundo. Aquí dice hola. Por lo general, esto es muy malo de usar en un juego. Si algún día miro tu juego, nunca quiero ver un tic de evento en tu juego porque esto es súper malo usar a menos que absolutamente tengas que usarlo realmente. Para Fun Tail, desarrollé desde hace dos años, nunca he usado este. Y tampoco creo que debas usarlo porque está realmente optimizado para ejecutar este código tantas veces. En cambio, hacemos esto configurando un temporizador. Un temporizador, puedes elegir cuántas veces quieres darle un bucle por segundo en lugar de hacerlo en bucle 60 veces por segundo Lo que puedo escribir aquí es, por ejemplo, 0.1 Si no eres realmente bueno en matemáticas, lo que puedes hacer aquí es que básicamente puedes decir, qué es 1/0 0.1 Eso es diez Esto quiere decir que corre diez veces por segundo. Y si lo pongo en 0.03 Entonces lo vas a ejecutar 33 veces por segundo. Ahora a veces tienes que hacerlo muchas veces porque por ejemplo, en un juego de estrategia en tiempo real donde construyes edificios al igual que Los Sims, por ejemplo, en los Sims arrastras un edificio o un objeto, puedes colocarlo alrededor Ahora para actualizar ese fantasma de edificio que estás arrastrando, es muy importante que se vea suave Hay que configurarlo en algo así como 0.03 por ejemplo. Pero se puede ver ejecutarlo 33 veces por segundo es mucho mejor que ejecutarlo 60 1 segundo. Lo estás ejecutando básicamente a la mitad de la velocidad de ésta. Y ya va a estar mucho optimizado solo por que uses un temporizador y hagas esto aquí. Por ejemplo, para el temporizador por evento, realmente no necesitamos actualizar el Tim. Por ejemplo, 33 veces por segundo. Podemos comenzar con algo así como 0.1 Básicamente podemos actualizar el temporizador diez veces por segundo. Vamos a tratar de hacerlo. Eliminemos esto aquí abajo. Vamos a conectar este de aquí arriba. Para el evento aquí, tenemos que tener un evento. Puedo arrastrar hasta aquí, hacer un evento personalizado. Normalmente solo lo llamo loop al final, así que solo voy a llamarlo round timer, loop. Este evento aquí básicamente va a circular. Vamos a fijarlo a es en bucle. Lo que quiero hacer es básicamente quiero configurar un temporizador. Vamos a crear dos variables. Déjame crear uno llamado temporizador redondo inicial. Vamos a configurarlo para flotar, compilar. Ahora este va a ser nuestro temporizador de ronda inicial. Digamos, por ejemplo, que tenemos 5 segundos inicialmente para matar a este enemigo. Hagamos uno nuevo llamado Current Round Tim. Este es el que se va a actualizar. El temporizador de ronda inicial no va a cambiar, pero primero vamos a cambiar nuestro temporizador redondo actual. Antes de comenzar este bucle aquí, asegurémonos de que el temporizador redondo actual sea igual al temporizador de ronda inicial, lo contrario será cero. No quieres iniciarlo en bucle con el tiempo siendo cero Ajustemos el temporizador redondo actual al inicial. Así, ahora tenemos algo de tiempo para empezar. El tiempo es de 5 segundos, porque hemos puesto este en cinco, ahora este es de 5 segundos. Lo que queremos hacer aquí, queremos tomar el temporizador redondo actual. Quiero decir menos. Básicamente queremos restarlo con 0.1 Si esto va a correr diez veces por segundo, lo que esto significa es que va a decir que básicamente va a quitar 1 segundo cada segundo , si eso tiene sentido Porque esto va a correr diez veces en lugar de tener un valor estático. Nuevamente, no me gustan los valores estáticos porque es un dolor cambiar si el juego se aloja. En su lugar, puede hacer clic derecho en este valor y promoverlo a una variable, y puede llamarlo algo así como tiempo de temporizador redondo. Espero que no se vuelva demasiado confuso o me confunda en el futuro, porque este es el temporizador redondo, este es básicamente el tiempo aquí Vamos a arrastrarlo hasta aquí. En lugar de tener este valor estático, este -0.1 vamos a compilar y asegurarnos de que el tiempo del temporizador redondo sea 0.1 También aquí arriba Hagamos clic derecho en este temporizador y promocionemos esto a una variable, porque más adelante tenemos que detener este temporizador si ya no queremos usarlo. Y eso lo hacemos al tener esta variable. Llamemos a éste Tim Handle. Si sostienes el mouse sobre él, es básicamente un asa de temporizador, una manija de temporizador redonda. Ahora lo que podemos hacer es ahora estamos diciendo esta hora actual -0.1 De nuevo, tengo que sujetarlo porque quiero asegurarme de que no va a estar bajo cero Ahora lo que estamos diciendo es el temporizador actual, temporizador redondo -0.1 Si hacemos un bucle eso, esta cantidad también, básicamente va a menos uno cada segundo Voy a volver a configurar el temporizador redondo actual, básicamente estamos diciendo menos uno cada segundo. Ahora vamos a seguir adelante e imprimir una cuerda. En realidad se puede ver lo que está pasando y vamos a arrastrar esto aquí. Vamos a componer la ronda. Tim básicamente puede ponerlo en marcha aquí en el evento comenzar a jugar. Golpeemos desde aquí y digamos que comience la ronda Tim. Vamos a compilar y jugar. Ahora puedes ver que el temporizador está funcionando ahora. Va a ir por debajo del cero porque no lo hemos sujetado. De hecho, sigamos adelante y hagamos eso. Vamos a atacar aquí de nuevo. Arrastra desde aquí y di clamplamp float, El valor mínimo es cero bajo cero El valor máximo es lo que básicamente es el temporizador redondo actual. Ahora sigamos adelante y conectemos esto. Todo debería estar bien si compilo y hago clic en Reproducir. Y echa un vistazo aquí ahora, no debería ir por debajo de cero, y todo está funcionando bien. Ahora solo tenemos que actualizar esta interfaz de usuario aquí arriba para que funcione correctamente. Bien, eso fue todo por ahora. Tenemos un temporizador en funcionamiento, y solo podemos dejar que esto esté aquí, porque tenemos que arrancar el temporizador, todo está funcionando bien. Y tenemos que continuar en la siguiente lección. 57. 6.04 Actualización del temporizador principal de la interfaz de usuario: Bien, aquí es donde lo dejamos. Volvamos y actualicemos el temporizador en la interfaz de usuario principal. Lo que queremos hacer es que queremos volver a la interfaz de usuario principal. Queremos dar click sobre este texto. Vamos a llamarlo algo así como temporizador redondo. Temporizador redondo. Volvamos a la gráfica aquí. Permítanme simplemente borrar todo esto. Ahora para este temporizador, básicamente quiero, de nuevo, poner texto, justo lo que hemos estado haciendo hasta ahora. Hagamos un evento personalizado para este evento personalizado. Llamemos a esto una actualización, Tim. Yo solo dejé que sigamos adelante y lo conectemos. Ahora para esto, sigamos adelante y en lugar de simplemente conectarlo directamente, también quería decir segundos detrás de él. Quiero usar un formato texto, igual que lo que hemos estado haciendo hasta ahora. Para este formato de texto, quiero una variable. Vamos a llamarlo temporizador redondo restante. Cerremos los corchetes. Y si le pegas inter, aparece esta entrada, entonces solo quiero escribir sec detrás de ella. Sabemos que son segundos. Ahora bien, esta variable es un flotador. Yo solo voy a aquí agregar una entrada de float y llamarlo round timer restante. Ahora podemos seguir adelante y enchufar esto aquí y básicamente estamos terminados. Ahora sigamos adelante y actualicemos. Usemos esta interfaz de usuario del temporizador de actualización. Ahora puedes intentar hacerlo tú solo para practicar porque en realidad es simple si solo lo piensas. Pero si aún tienes dificultades con ello, sigamos adelante y hagámoslo juntos. Si volvemos a los planos, abrimos el modo donde hicimos el código Ahora aquí, siempre que esté en un ciclo, también queremos actualizar la interfaz Después de configurar el temporizador redondo, queremos actualizar la interfaz de usuario. Ahora bien, ¿cómo obtenemos la interfaz de usuario? Recuerda, la interfaz de usuario está dentro de la principal aquí, el widget principal. Este es el evento que queremos utilizar. Tenemos que obtener una variable o la interfaz de usuario principal. Recuerda, ya tenemos esto dentro del controlador del reproductor, porque dentro de aquí hicimos esto en una variable. Sigamos adelante y llamé al controlador del reproductor. ¿Tenemos una variable para el controlador de reproducción? Sí lo hacemos. Esto lo hicimos anteriormente. Sigamos adelante y arrastremos en el controlador del reproductor. Arrastremos en WB main y consigamos eso. Entonces vamos a obtener los eventos de la interfaz de usuario del temporizador de actualización. Podemos llamar a esto ahora vamos a conectarlo. Ahora bien, este es el temporizador redondo que queda, que es este. Básicamente, vamos a compilar. Y si hago clic en play, ahora se puede ver que está funcionando bien. Ahora puedes ver que hay un problema porque no quiero eliminar este decimal siempre que sea cero. Así, quería decir 0.0 por ejemplo, o 1.0 no quiero que lo quite. La forma en que haces esto, en lugar de enchufar directamente el flotador, realmente puedes convertirlo primero en una cadena y no eliminará lo que sea que estés escribiendo, solo escribes dos cadenas Siga adelante y seleccione dos flotadores de cuerda. Ahora en lugar de tener un flotador, desconectemos esto. Y vamos a enchufar la cuerda. Vamos a compilar. Vamos a hacer clic en Reproducir. Y ahora se puede ver que dice cero al final, y no lo va a eliminar. Creo que se ve mucho mejor para nosotros, eso fue todo por actualizar la interfaz de usuario. Y pasemos a la siguiente lección. 58. 6.05 Restaura la salud en el temporizador: El objetivo principal aquí es restaurar la salud del enemigo cada vez que se haya agotado el temporizador. Hagámoslo. Esto es muy fácil. Ya tenemos lo que necesitamos aquí en el temporizador de inicio redondo. Siempre que recorremos el tiempo y llega a cero. Tomemos el temporizador redondo aquí y básicamente podemos tomar una nueva variable en lugar de usar esta todo el tiempo. Sólo para hacerlo más limpio, podemos usar este. Y ahora podemos decir si esto es igual a cero, así que básicamente se ha acabado el tiempo, hagamos una rama, sigamos adelante y la conectemos. Siempre que este sea el caso, queremos restaurar la salud, sigamos adelante y hagamos el evento personalizado para la restauración de la salud. Y creo que lo mejor es hacerlo dentro del enemigo. Pasemos al enemigo, abramos la base enemiga dentro de aquí. Vamos a crear uno llamado restaurar la salud. Bajemos aquí, hagamos un nuevo evento personalizado. Llamémosle restaurar la salud así. Ahora para la restauración de la salud, lo que simplemente vamos a hacer, recuerda anteriormente tenemos esta llamada actualización de salud. Básicamente podemos usar esa que arrastre aquí y decir actualizar salud. Actualiza la salud, aquí está. Ahora, ¿cuál es la salud actual? Sólo queremos sanar al máximo al enemigo. Nuevamente, nuevamente tenemos la información del enemigo get y ya tenemos la salud. Voy a controlar C esto y controlar V aquí abajo. Sólo vamos a enchufar esto aquí. Básicamente estamos restaurando la salud. Una vez más, eso debería ser. Si vuelvo al modo de juego, ahora necesitamos una variable al enemigo. No recuerdo si tenemos una variable al enemigo dentro de aquí, no lo tenemos. Tenemos que averiguar ¿cómo obtenemos la variable para el enemigo? Porque necesitamos llamar a esto restaurar la salud. Recuerda, si volvemos a, por ejemplo, el Controlador del Jugador, aquí es donde engendramos al enemigo, engendramos enemigo Y lo convertimos en una variable. En realidad sabemos qué enemigo se genera actualmente. Si vuelvo aquí y tomo el Player Controller y puedo buscar la variable enemiga engendrada, y puedo tomar esta Ahora aquí podemos decir restaurar la salud. Ya veo que no lo encuentro. Entonces, si vuelvo al Controlador del Jugador, esto es porque promoví directamente este a la variable enemigo engendrado Lo cual no está mal. Básicamente puedo ir al modo de juego y le dice a la base enemiga aquí puedo decir restaurar la salud y todo va a estar bien. Pero de nuevo, no me gusta usar el casting. Y esta parte también es innecesaria porque podemos hacerlo dentro del controlador del reproductor aquí antes de promoverla a una variable. Volvamos a las interfaces. Y no hemos hecho uno por el enemigo. Intenta hacerlo tú mismo. Ya lo hicimos un par de veces. Nuevamente, si no te acuerdas del todo, sigamos adelante y hagámoslo juntos. De nuevo, voy a pasar rápido por esto. Haga clic con el botón derecho del ratón en el plano y cree una interfaz de blueprint. Llámalo base enemiga. Adelante, ábrelo. Digamos que consigue referencia enemiga. Entonces aquí en la salida, busquemos la base enemiga BP que estamos tratando de hacer referencia. Llamémoslo compilación enemiga. Ahora volvamos a la base enemiga. Y dentro de aquí en la configuración de clase, queremos agregar esta interfaz que acabamos de crear, llamada enemiga pero compilar. Ahora podemos ver esta función apareciendo doble click sobre ella. Para el enemigo, voy a hacer una autorreferencia porque de nuevo estamos dentro de la base enemiga y estamos definiendo qué es esta variable. Ahora lo que podemos hacer es en el controlador del reproductor, en lugar de promocionar esto directamente a una variable, voy a borrar esto por ahora. Puedo decir conseguir referencia enemiga. Porque recuerda si sostienes el mouse sobre él, esto es solo una referencia de actor. Pero si promuevo esto a una variable, esta es una referencia de base enemiga. Y podemos usar eso sin hacer esto todo el tiempo en todos los demás planos Voy a quitar a este enemigo engendrado. Vamos a asegurarnos que no lo hemos usado antes. Porque si lo borro ahora, voy a eliminar todas las referencias con él. Lo que suelo hacer en mis juegos, hago clic derecho sobre él, encuentro referencias, no hay resultados dentro de este plano Tenemos que buscar globalmente. Puedes hacerlo haciendo clic en el pequeño icono. Va a buscar en todos los planos. Y puedes ver que nunca antes has usado esta variable. Es seguro eliminarlo. Voy a borrarlo, sí. Ahora vamos a promover este a un enemigo engendrado variable. Ahora podemos usar esta . Vamos a compilar. Volvamos al modo de juego. Eliminemos todo esto. Ahora aquí del arrastre enemigo engendrado. Vamos a engendrar enemigo de éste. Ahora podemos arrastrar y decir restaurar la salud. Eso es mucho más fácil de hacer. Ahora arrastremos de aquí. Si el temporizador es igual a cero, queremos restaurar la salud. También queremos reiniciar el temporizador porque tenemos que empezar de nuevo. Voy a tomar el temporizador redondo actual y configurarlo nuevamente en el temporizador de ejecución inicial. Así como esto. Sigamos adelante y juguemos y veamos qué pasa. Da click en Play Now I'll just, para que podamos probar mejor, voy a poner los temporizadores de ronda iniciales a 3 segundos, así que no lleva una eternidad. Cuando se acabe el temporizador, se va a reiniciar, sanar. El jugador ahora hace clic o cura al enemigo. Más bien podemos ver que sí sanó al enemigo cada vez que es cero, si mato al enemigo, va a sanar a ese enemigo también. Entonces lo que básicamente tenemos que decir es si mato al enemigo, tengo que decirle que pare el temporizador porque ahora hemos matado al enemigo. Porque como puedes ver aquí, cada vez que mate a este enemigo, no va a detener o reiniciar el temporizador. Entonces esto es lo siguiente en lo que queremos trabajar. 59. 6.06 Restablecimiento del temporizador en Muerte de enemigos: Ahora lo que queremos hacer es querer reiniciar este temporizador cada vez que muera el enemigo. Sigamos adelante y hagamos eso de nuevo, esto es súper fácil ahora porque ya creamos esta variable llamada asa de temporizador redondo. Si voy a la base enemiga y trato de encontrar dónde murió el enemigo, aquí hicimos este suceso de muerte e hicimos todo esto aquí. Detengamos el temporizador cada vez que el jugador o el enemigo hicieron todo esto. Si solo puedo seleccionarlo todo y podemos arrastrarlo por encima. Ahora tomemos este mango que está dentro del modo de juego. Puedo ver que aquí ya tenemos una variable de modo de juego, así podemos decir que Tim maneja. Podemos seguir adelante y conseguir esa manija del temporizador de ejecución. Podemos decir claro e invalidar temporizador por asa. Este va a detener el temporizador claro e invalidar el temporizador Adelante y conéctalo. Ahora estamos parando el temporizador y luego estamos haciendo todo este evento de muerte o esta lógica de muerte. Entonces después de la lógica de la muerte, estamos incrementando el nivel Y luego estamos destruyendo el Acta. Tenemos que volver a poner en marcha el temporizador, porque ahora cuando matemos al enemigo, el temporizador va a parar. Pero tenemos que volver a iniciarlo. Creo que es la mejor manera de volver a iniciarlo, hagámoslo dentro del nivel actual de incremento Sigamos adelante y hagamos eso dentro del modo de juego porque cada vez que incrementamos un nivel, engendramos a un enemigo Vamos a empezar el temporizador aquí. Tiene más sentido. Lo que podemos hacer es básicamente, al igual que antes, podemos hacer esto, temporizador de inicio, temporizador de ronda de inicio. Sólo tienes que seguir adelante y llamar a este evento que hicimos. Y eso debería arreglarlo todo. Ahora cada vez que no llamo al enemigo, el enemigo va a sanar, como puedes ver aquí. Pero si mato al enemigo, el temporizador se va a detener y luego se va a reiniciar de nuevo una vez que mate al enemigo. Entonces, si mato al enemigo, va a restablecerse a tres y todo va genial. Bien, entonces ahora estamos reiniciando el temporizador cuando muere el enemigo Y también lo estamos parando para que no cuente atrás. Y pasemos al siguiente. 60. 7.01 Diseño de la interfaz de usuario de moneda: Ahora es el momento de diseñar la interfaz de usuario de moneda. Y antes de que hagamos eso, acuda a los materiales de su curso. Y he incluido algunas cosas para ti. Así que vamos a la carpeta UI aquí mismo. Voy a crear una carpeta llamada botones en lugar de esta carpeta. Podemos arrastrar estos botones hacia aquí. Botón pequeño presionado y botón pequeño. Adelante y arrástralos. Justo como antes. Recuerda hacer click derecho sobre ellas acciones de sprite y aplicar papel dos T porque son picks mucho También para las imágenes en la carpeta de imágenes voy a arrastrar a aquí de nuevo así, voy a hacer clic derecho y aplicar papel a la configuración. Ahora para el reloj, quiero actualizarlo también. Probablemente se vea así para ti en este momento. Sólo voy a arrastrar esto hasta aquí. O tal vez haga clic derecho y diga re importar. Ya sabe lo que parece si hago clic en play, ahora se ve así. A ver si necesitamos algo más, esta moneda aquí. También necesitamos en los íconos, arrastrar eso adentro. Haga clic con el botón derecho, aplique papel a configuración y todo debería estar bien. Ahora, antes de seguir solo revisando este reloj, haciendo clic en él, en realidad voy a aumentar el tamaño del mismo a 50, 50. En cambio, el relleno es cero. Voy a ponerla a cero. Compilar, y si hago clic en Reproducir, creo que se ve mucho mejor así en comparación con antes. Bien, ahora para la interfaz de usuario de Curren, vamos a diseñar aquí dentro de la interfaz de usuario principal Y creo que lo voy a diseñar aquí arriba a la cima. Empecemos con eso. Primero, necesitamos una superposición. Vamos a agregar la superposición en el panel de lienzo de aquí arriba, así aparece aquí arriba. Ahora para esta superposición, quiero una imagen, quiero la imagen de fondo para esta interfaz de usuario. Voy a alinearlo horizontal y verticalmente, todo el camino. Ahora tenemos que seleccionar cómo debe ser la imagen para la imagen. Vamos a ir a las imágenes, y voy a seleccionar este marco de un artículo. Adelante y déjalo caer. Y aquí está ahora para volver a hacerlo no borroso, igual que antes, cambiarlo en una caja, cambiar el margen a 0.5, Ahora se ve mucho mejor Ahora cuando cambias el tamaño de la superposición, se ajusta con el tamaño. Ahora aquí abajo, también quiero un menú de actualización. O no un menú de actualización, es más como una tienda. De hecho, hagamos eso también. Aquí con él, necesitamos una caja vertical. Voy a agregar eso en. Voy a agregar overlay. Recuerda que la caja vertical no debe estar dentro de esta caja horizontal, es justo afuera de esta superposición. Voy a arrastrarlo a la caja vertical aquí. Simplemente redimensionarlo. Otra vez, el overlay otra vez, voy a dar click en bill por ahora. No estoy seguro de si voy a llenarlo. En realidad, no creo que lo haga. Pero vamos a configurarlo para que se llene por ahora. Ahora agreguemos el otro. De nuevo, voy a simplemente duplicar esto, Overlay control D. Ahora bien este es el menú de actualización, o la tienda aquí, la tienda. click en la imagen, la voy a cambiar a este marco de papel. Adelante y arrastra eso aquí. Todo debería estar bien. Ahora para esta caja vertical, quería llenar toda la pantalla a un lado. clic en el punto de anclaje, cambiándolo a éste. Cuando hagas eso, el offset bottom, voy a escribir 00. Y el desplazamiento para la parte inferior y superior, hará que todo este lado de la pantalla se llene. Ahora le voy a dar algo de espacio desde los bordes de la pantalla en la posición para la X. Voy a escribir 30 offset, top 30 offset, bottom 30 también. Ahora no está en el borde de la pantalla. Ahora el tamaño de los dos. Voy a hacer clic en la superposición para la moneda y voy a configurarla en auto. En cambio, voy en cambio aquí en las imágenes y aumentando el tamaño en la Y. Ahora para el tamaño en la Y, creo que algo como 105 debería ser suficiente. Algo así, y podemos escribir cuántas monedas tienes. Además, agreguemos una búsqueda de espaciador para un espaciador. Agrégalo entre estas dos superposiciones para el espacio. Creo que voy a escribir algo así como 20 en la Y. Y puedes dar click sobre estas líneas de guiones para eliminar las líneas de guiones. Y ahora así es como se ve. Puedes hacer clic en Play y también verlo. Aquí puedes ver esta es una pantalla para un portátil, pero también encaja muy bien para mi monitor de cuatro K, porque de nuevo, lo hemos diseñado para que esté en múltiples monitores. Ahora para el tamaño aquí, lo decidiremos más adelante dependiendo del contenido dentro de este menú. Pero por ahora, dejemos que sea del tamaño de éste de aquí arriba. Vamos con la moneda. Ahora mismo, podemos trabajar con la tienda. Aquí arriba con la moneda, necesitamos una caja horizontal porque necesitamos una imagen y luego el texto. Vamos a agregarlo a la superposición dentro de esta caja horizontal. Voy a agregar una imagen, después voy a agregar algo de texto. Ahora para el texto, sólo voy a copiar esto aquí arriba. Control C Control dentro de esta caja horizontal. Control V aquí. Ahora para esta caja horizontal, voy a alinearla virtualmente horizontalmente en el medio para esta imagen, vamos a cambiarla en este icono de moneda. Nos arrastramos de nuevo, alineación horizontal y alineación vertical en el medio. Ambos. Ahora para la moneda aquí, hagamos clic en la moneda y hagamos el tamaño 50 por 50 para la imagen. Ahora para este texto, voy a hacerlo un poco más grande porque esto es muy importante. Creo que algo así como 34 y tal vez un poco más bajo, tal vez 30. Siempre podemos decidir eso más adelante. Ahora para el color frontal, también voy a cambiarlo a algo amarillo. Se trata de exhibir monedas, cambiando el color y la opacidad. Voy a tratar de elegir un color amarillo. Creo que voy a ir con algo como esto. Ahora, también necesito cambiar el esquema. Creo que voy a copiar éste de aquí arriba. Pégalo aquí abajo. Sólo voy a cambiarlo a un color más oscuro. Voy a usar esta. Dando click en bien, voy a copiar esto. Pégalo aquí abajo. Si me alejo, así es como se ve. Se ve muy bien. Ahora, te voy a dar un poco de relleno entre la moneda y esto, este texto. Solo asegúrate de que no tienes relleno aquí para esta moneda. Voy a darle un relleno aquí a la derecha de cuatro. Entonces tenemos algo de espaciado con respecto al texto. Si hago clic aquí, y sólo voy a escribir cero para el texto, ahora mismo son 30. Si escribo 28, creo que es demasiado pequeño. Vamos a probar 32. A lo mejor es demasiado grande. De hecho, vamos con 34. Ahora, 30 fue un buen número. Vamos a compilar ahora. Ahora hemos diseñado todo aquí. Ahora para el texto, voy a cambiarlo en montura de texto de monedas. Para este icono, realmente no necesitamos hacer nada aquí. Vamos a compilar y guardar todo. Ahora estamos listos para continuar. 61. 7.02 Animación de interfaz de usuario de moneda: Creo que será genial agregar algo de animación a este texto para que el juego se vea un poco más único y mejor. Y siempre es agradable agregar algunas animaciones a tu juego para que no se vea plano. Siempre son estos pequeños detalles los que hacen que tu juego se vea mucho mejor que los demás. Así que vamos a seguir adelante y dar click en éste. Vamos a crear una nueva animación. Sólo vamos a llamarlo monedas. Haga clic en él, haga clic en Rastrear, agregue el texto cantidad de monedas, y haga clic en este más. Y vamos a seleccionar la transformación. Porque quiero cambiar la escala de este texto. Yendo a la escala de aquí abajo. Lo que quiero hacer aquí es después de 0.2 segundos, quiero escalar esto hasta 1.5 Lo mismo aquí para la Y, 1.5 Ahora es enorme. Después 0.4 voy a ponerla de nuevo a 1.1 en la escala. Ahora puedes ver cuando juego la animación, en realidad no la configuró. Aquí voy, de nuevo set a uno, toco la animación. Ahora puedes ver cómo se ve si solo haces clic en el espacio. Así es como va a quedar cuando agrego monedas a esta variable o a esta interfaz de usuario aquí. Se ve bien que tengas alguna animación de interfaz de usuario. Pero luego compilar, guardar todo, y continuemos. 62. 7.03 Cantidad de monedas variable: Ahora para la cantidad de monedas necesitamos agregarle eso al jugador. Volvamos a los planos. Y ahora vamos a abrir el jugador porque ahora necesitamos almacenar cuántas monedas tiene el jugador en una variable. Simplemente hagamos esta variable aquí abajo y hagamos que sea cantidad de monedas, llamémoslo así. La cantidad de monedas no puede tener decimales, así que sólo vamos a elegir un entero. Ahora bien, si sabes que tu juego va a ser matiz en números aquí, tienes que seleccionar un entero 64. De hecho creo que voy a seleccionar un entero 64 porque un entero o un entero 64 pueden tener un valor mucho, mucho mayor que un entero. Sin embargo, de nuevo, un entero 64 va a ser más pesado para la optimización que usar solo un entero. Pero realmente necesitamos eso porque nuevo estamos creando un juego clicker Y se sabe en un juego clicker que la cantidad de monedas puede entrar en un valor intenso Sigue adelante y selecciona el entero 64 en su lugar. Hagámoslo así. Ahora voy a eliminar todo esto y vamos a hacer una nueva variable personalizada o eventos personalizados. Llamemos a esto una actualización cantidad de monedas. Vamos a actualizar cuántas monedas tenemos aquí. Voy a arrastrarlo en el Set it here, la actualización cantidad de monedas. Podemos darle dos variables. Podemos darle la cantidad de monedas que queremos actualizarlo con cantidad de monedas. Este puede ser un entero porque este es solo un número que necesitamos para más o menos con nuestra variable. No es tan enorme. La otra cosa es que agreguemos otra variable y un lingote, llamémoslo a yo usualmente otra vez, escribo B en el frente Lo que queremos hacer aquí es ¿queremos sumar monedas o queremos restar monedas? De esto se trata este evento. Golpeemos a éste y hagamos una rama. Entonces vamos, ¿quieres agregar monedas o quieres eliminar monedas? Entonces estas son las caídas. Cuando quieras eliminar monedas, vamos a establecer esta variable. Si queremos agregar monedas, podemos tomar esto. Podemos decir pérdida esta cantidad, pérdida este entero, puedo arrastrar eso ahora, podemos tomar esto y ponerlo aquí. La cantidad que entra aquí pierde la cantidad que ya tenemos en la variable. Agregamos estos dos juntos y los establecemos dentro de esta variable. Ahora si es menos, otra vez toma esto y di menos, resta, vamos a restarlo de aquí. Justo como antes. Vamos a establecer esta variable. Ahora puedes hacer que este código sea un poco más limpio eliminando realmente esto. Y puedes hacerlo de otra manera. Ahora voy a mostrarte sólo otra manera. Recuerda que hemos trabajado con Select antes, así que realmente podemos hacer Select. Ahora, cada vez que ves un copy paste de código como este, siempre intentas pensar, ¿puedo usar un nodo select aquí para limpiar mi código? En realidad puedes hacer eso aquí si arrastro aquí y digo Select y puedo seleccionar este, este nodo dependiendo de si este bulling es verdadero o falso Y solo puedo quitar esto por ahora. Si es cierto, significa que quiero agregar monedas. Puedes ver aquí, si esto es cierto, aquí significa que quiero sumar la cantidad de monedas. Entonces este es cierto, quiero agregar monedas. Podemos enchufar esto aquí. Éste, si es falso, quiero restar monedas Y luego entra aquí. Podemos eliminar esto. Ahora se puede ver lo mucho mejor que consiguió. Ahora sabe del lingote si queremos restar o sumar monedas a nuestra variable Muy bien, vamos a compilar y guardar todo. Y eso fue todo. Ahora tenemos esta sencilla función donde podemos actualizar la cantidad de monedas. Y sigamos. 63. 7.04 Añade monedas a los enemigos: Ahora obviamente lo que estamos tratando de hacer es cuando hago clic en este enemigo y el enemigo muere, necesito conseguir monedas para la matanza que he matado aquí. Lo que tenemos que hacer es agregar cuántas monedas debería caer este enemigo cuando maté al enemigo. La forma en que hacemos esto, recuerden que tenemos una estructura aquí en las estructuras de planos Ya hicimos esta llamada información enemiga. Vamos a agregarle algo, a éste. Voy a hacer una nueva variable y llamarla una de monedas para caer. Muy, muy autoexplicativo y es solo un entero. Y arrástralo, así que sólo voy a arrastrarlo por debajo de la salud. Adelante y ahorra, guarda todo. Ahora lo que quiero que hagan es volver a la ficha de datos en Google que hicimos antes dentro de aquí. Ahora después de la salud, voy a escribir Click Hacer una nueva columna a la derecha aquí. Nuevamente, hay que llamarlo con el mismo nombre que llama a la cantidad variable de monedas a caer. Podemos arrastrar esto un poco así. Tenemos que especificar cuántas monedas debe caer el enemigo. Por ejemplo, sólo puedo escribir números aleatorios. Por ahora, honestamente no nos importa en este momento. Podemos dar click sobre esto para hacer fórmulas. Siempre se puede escribir igual. Da click en esto y tiempos 1.5 Entonces puedo dar click aquí y arrastrarlo hacia abajo y debería llenarlo automáticamente. Esto debería estar bien para mí ahora mismo. Voy a hacer clic en Descarga de archivos y descargar CSV. Ahora con este archivo CSV descargado, voy a renombrarlo una vez más a DT enemigo info aquí. Dentro de este proyecto, solo voy a minimizarlo un poco para poder verlos a ambos. Voy a ir a las tablas de datos. De nuevo, información enemiga, simplemente haz clic y arrástrala aquí. Y debería actualizar automáticamente toda esta información por ti. Ahora hemos añadido cuántas monedas debería caer cada enemigo cuando los matemos. 64. 7.05 Actualiza la visualización de monedas: Ahora estamos listos para terminar esta exhibición de monedas. Volvamos a los enemigos. Ahora bien, lo que quiero hacer aquí en los enemigos, recuerda que queremos agregarlo a cuando muera el enemigo. Si voy a este código aquí, cada vez que agregues entradas adicionales a tu estructura, aparecerán. Entonces solo voy a dar click aquí y esconder pines desconectados Una vez más, cuando mate al enemigo. Quiero recordar en el jugador, si voy al jugador, hicimos esta actualización cantidad de monedas dentro de aquí cuando mato al enemigo. Antes de hacer este retraso, sólo voy a mover este retraso. Quiero llamar a esto una actualización cantidad de monedas del jugador. Y ya tengo la variable player. Voy a arrastrar y decir actualizar cantidad de monedas. Adelante y conéctalo aquí y aquí. Ahora la cantidad de monedas con las que quieres actualizarlo está dentro de la información aún enemiga. Porque lo hicimos dentro de la biblioteca. Ahora tenemos que especificar la información del enemigo o el nombre del enemigo. Ya tenemos eso de esta variable. Así que adelante y conéctalo. Toma esta ruptura en las variables para que podamos verlas. Ahora desde aquí voy a arrastrar la cantidad de monedas hacia aquí. Adelante y esconde esto, y ahora está terminado. Recuerda hacer clic en Anuncio. Porque queremos agregar monedas y no eliminarlas. Todo debería estar bien. Adelante y compila. Ve al jugador ahora mismo. Ahora esta información va a entrar aquí y va a establecer esto correctamente. Lo que nos falta ahora mismo es que puedes ver si mato al enemigo, no pasa nada. Porque recuerden, no actualizamos la interfaz de usuario, así que tenemos que hacerlo. Volvamos a la interfaz de usuario, abra la interfaz de usuario principal. Adelante y da click en este texto. Para este texto, solo queremos establecerlo. Voy a la gráfica aquí. Hagamos un nuevo evento. Hagamos un nuevo evento personalizado. Y llamémoslo actualizaciones cantidad I. Ahora para este evento, vamos a darle click. Y hagamos una nueva variable para ésta, nuevamente, integer 64, porque aquí vamos a enchufar esta información para que podamos actualizar la interfaz de usuario. Y llamémoslo cantidad de puntos uno. Ahora el objetivo aquí es establecer este texto, la cantidad de monedas arrastran de esto y dicen texto conjunto. Esto es básicamente lo que estamos tratando de hacer. Estamos tratando de actualizar el texto y hacer clic y arrastrar esto aquí. Y debería convertir automáticamente tu entero en texto y compilar esto o enchufar esto. Ahora recuerda que también tenemos una animación. Vamos a arrastrar esta animación de monedas. Y digamos jugar animación. Adelante y enchufa eso también. Todo debería estar bien. Ahora volvamos al jugador o usemos éste. Actualizar cantidad de monedas. Sigo adelante aquí y solo necesitamos editar Aquí está dentro del WB principal, que está dentro del controlador del reproductor. Y como puedo ver aquí, no tenemos una variable para el controlador del reproductor. Vamos aquí mismo en el comienzo. Juega una vez más. Obtenga el controlador del reproductor y obtenga este. Entonces podemos arrastrar desde aquí y decir get player controller reference que hicimos desde la interfaz del blueprint Y haz clic derecho en promover esta variable y llamarla controlador de jugador. Ahora tenemos esto. Tomemos esta variable. Solo necesitamos llamar a WB main porque el evento está dentro de él. Cuanto menos arrastre y busque WB main, ya tenemos ese valor. Recuerda entonces podemos arrastrar aquí, decir cantidad de puntos de actualización. Sigo adelante y selecciono esto y bloqueo esta información aquí. Y todo debería funcionar bien. Ahora solo voy a aumentar aquí en el modo de juego, solo voy a aumentar el temporizador de ronda inicial, porque a veces es difícil matar al enemigo en 3 segundos. Sólo voy a aumentarlo a 5 segundos, en realidad. Sí, 5 segundos. Bien, Correcto, Y juega. Ahora puedes matar a este enemigo. Como puedes ver la placa de animación. Y nos dio 15 monedas. Déjame intentarlo de nuevo. Aquí, voy a matar a este enemigo. Nos dio las monedas. Se jugó la animación, y todo está funcionando correctamente. 65. 8.01 Añade la caja de desplazamiento de la tienda: Ahora es el momento de trabajar con la tienda de artículos. Si haces clic en Play, recuerdas aquí en la Ui, después de que hicimos la moneda o antes, en realidad creamos este papel aquí abajo, esta será nuestra tienda de artículos. Solo estoy tratando de mezclar los héroes Cookie Clicker y Clicker. Como puedes ver aquí, por ejemplo, solo una imagen de lo que estamos haciendo es que solo estamos agregando esta parte aquí, esta tienda donde puedes comprar algunas cosas y ellas engendran en el mapa y así sucesivamente Entonces esto es lo que estamos tratando de hacer aquí. Vamos a cerrarlo por ahora. Vamos a la interfaz de usuario y abramos el Maui. Y dentro de aquí, aquí es donde queremos que se muestren los artículos. Ahora para hacerlos exhibir, necesitamos una caja de desplazamiento. Busquemos un cuadro de desplazamiento aquí arriba. Haga clic y arrástralo a la superposición en la que está dentro de aquí. También asegúrate de que esté alineado horizontal y verticalmente dentro de la caja de desplazamiento. Antes de agregar los artículos, los necesitamos dentro de una caja vertical. Porque van a bajar así. Sólo voy a tomar una caja vertical, agregarla a la caja de desplazamiento. Para este cuadro vertical, continúe y haga clic en Rellenar. De lo contrario va a ser aquí arriba. Pero queremos llenarlo todo el camino aquí. Ahora este ya está listo. Ahora puedes ver aquí, cada vez que agrego un artículo, ahora va a ser un, el top aquí. Y tenemos que darle un poco de espaciado a los bordes. Ahora realmente no podemos hacer eso porque solo puedo entrar aquí y escribir 100 y puedo darle algo de espaciado desde los bordes, pero realmente no puedo visualizarlo sin que mis cortes de artículo. Voy a hacer esto más tarde. Por ahora sólo voy a escribir cero. Esto fue por ahora. Ahora esta caja vertical de aquí, sólo voy a cambiarle el nombre porque la vamos a usar más tarde. Voy a llamar al VB para cuadro vertical y llamémoslo algo así como lista de artículos. Vamos a configurarlo como variable porque necesitamos agregar algo o necesitamos agregar los ítems más adelante a esta lista de ítems. Eso fue todo. Cerremos esto y sigamos con el siguiente. 66. 8.02 Diseño de la tarjeta de artículo de la tienda: Bien, así que ahora es el momento de diseñar las tarjetas de artículos. Ahora, no vamos a agregar las tarjetas de artículos a esta interfaz de usuario principal, porque los artículos que puedas imaginar, cada tarjeta de artículo tiene información única. Entonces no voy a entrar de aquí y agregar un texto y luego agregar el texto a aquí y así sucesivamente, porque esto va a ser mucho trabajo de copiar y pegar y no tiene sentido Nosotros, básicamente, lo que hacemos para las tiendas en la programación es que tomas la tarjeta del artículo, diseñas una instancia de la misma, luego cambias dinámicamente toda la información y el código del artículo con el código, y simplemente duplicas este artículo Cod y cambias la información ahí. Intentemos hacerlo para que podamos entender mejor. Cerremos esto aquí abajo. Volvamos a hacer clic derecho, Hacer un nuevo blueprints de Git Llamemos a este código comprarlo aquí. Vamos a abrirla. Ahora, aquí de nuevo, agreguemos un lienzo. Por cierto, lo que estamos diseñando es algo así. Pero básicamente esto es lo que estamos tratando de diseñar. Siempre es agradable verlo antes de empezar, esto es lo que estamos tratando de diseñar. Puedes intentar hacerlo tú mismo si así lo deseas. Estamos haciendo lo deseado en pantalla. Intenta hacerlo tú mismo si lo deseas. O podemos hacerlo juntos aquí, agregando primero un lienzo, luego adelante y agregando una superposición, porque necesitamos un fondo agregando la superposición. Al hacer clic aquí, agreguemos una imagen también. Este será nuestro trasfondo. Ahora para esta imagen estoy, veamos aquí. Vamos a las imágenes. Voy a usar esta. Arrástralo nuevo igual que antes. Cambiarlo para dibujar cuadro justo en el margen 0.5 Ahora esta superposición aquí, voy a alinearla en el medio, el punto de anclaje. Y escribiendo 0.5 en la alineación igual que antes. Porque queremos centrarlo, recuerda que queremos escribir 00 en la x e y, sólo voy a dar click aquí. O tamaño al contenido aquí, así que está en el medio aquí, precisamente. Ahora para el tamaño de pantalla, vamos de nuevo a seleccionar deseado En pantalla, se queda con la pantalla que hemos seleccionado. La diferencia es si seleccionas deseado, puedes ver aquí, sin embargo, si voy al tamaño de pantalla igual antes para escalarlo a mi laptop, dando click aquí, puedes ver que cambia automáticamente a deseado en pantalla. Aquí está. Es súper, súper pequeña. Necesitamos aumentar el tamaño de esta imagen. Ahora bien, podría no cambiar la imagen en sí porque está dimensionando al contenido aquí. Sólo voy a agregarle algo de contenido y ver si quedará bien. Para empezar, necesitamos una caja horizontal. Arrastremos eso al Overallay. Entonces en el cuadro horizontal, necesitamos algo de texto. Ahora para el texto, solo voy a copiar y pegar algo que ya hicimos para que no tengamos que rehacerlo Yo sólo voy a entrar en el texto flotante y voy a copiar este texto entrando aquí. Voy a pegarlo en la caja horizontal. Para esta imagen, puedo ver que no está escalando correctamente en la alineación horizontal y la alineación vertical. Adelante y llénalo. Ahora para el tamaño de este texto. Voy a ir con un poco más pequeño, tal vez 26 en su lugar. Y también voy a cambiar el color del contorno a algo marrón oscuro, algo con este color aquí. Al hacer clic en Bien. También voy a copiar este color de contorno a los colores de sombra. Aquí le damos este efecto. Entonces le voy a dar una búsqueda de espaciador para espaciador agregado en la caja horizontal. Para este espaciador, voy a escribir 15 en la X. Entonces agreguemos una caja vertical, porque ahora necesitamos agregar la caja vertical en la caja horizontal aquí. Entonces agreguemos ahora el nombre. Simplemente copia pega este texto de nuevo, pega en el cuadro vertical para este, este es el nombre, por ejemplo, podemos decir, tenemos algunos elementos más adelante, pero escribamos algo como Torre Whizz Sólo algo al azar. No importa ahora mismo para este texto. Esta es la cantidad de artículos que hemos comprado hasta ahora de este artículo. Yo sólo voy a escribir 999. Esta es quizás la cantidad máxima de artículos que puedes comprar en el juego. Ahora debajo del nombre de este artículo, necesitamos el precio. Voy a hacer una caja horizontal, porque necesitamos el icono en la moneda y el precio. Añadiendo el cuadro horizontal en el cuadro vertical dentro de aquí necesitamos una imagen y luego necesitamos algo de texto. Ahora para el texto, sólo voy a copiar pegar esto aquí en el cuadro horizontal. Por el precio, podemos escribir algo así como 9457 o algo así al azar Incluso puede agregar un número más. Me gustaría agregar un número alto porque solo quiero asegurarme de que mi tarjeta de artículo no va a ser abarrotada cada vez que tengamos como números grandes para el juego Incluso puedes escribir un número más si deseas que te guste esto. Para asegurarme de que la tarjeta se vea bien para este icono, voy a ir a mi carpeta de iconos y agregar esta moneda aquí. Arrástralo ahora para la imagen. No lo voy a dibujar como una caja, porque la caja es justo cuando queremos que la interfaz de usuario se escale cada vez que la arrastramos. Pero para la imagen, solo voy a aquí, alinearla horizontalmente y alinearla verticalmente en el medio porque tal vez veas aquí, si lo haces así, puedes ver que se estira ligeramente. Esto también se nota. Siempre que tengas una interfaz de usuario que se estire más, la imagen no escalará correctamente. Simplemente alinéelo en el medio aquí. Voy a darle padding a la derecha, así que hay algo de espacio entre el texto y el relleno de iconos a la derecha. Dale algo así como tres. Tenemos algo de espaciado. Ahora, también necesitamos darle algo de espaciado a la caja horizontal aquí, porque está en los bordes. Sólo voy a dar click aquí para el relleno. Ahora por la izquierda, voy a tratar de darle algo así como 25. Y a la derecha, vamos a darle 25 también, algo así. Ahora para la cima, probemos algo así como 15 por 15. Podemos darle un poco más. Creo que si vuelvo a hacer clic en el cuadro horizontal, vamos a darle unos 16. Creo que le voy a dar más en la parte inferior de 16, 20. Eso se ve bien. Ahora para esta textura también, alinéala verticalmente a la mitad. Esto se ve genial. Bien, sigamos. Ahora para la sombra, en realidad creo que voy a escribir en su lugar, porque la sombra es demasiado fuerte, escribiendo dos en lugar de tres para esta. Como última cosa, agreguemos el botón Por. Busquemos botón. En realidad, primero necesitamos una superposición porque necesitamos agregar algo de texto encima de ella. Si agrego el botón, veamos dónde lo agregamos. Aquí, hicimos esta caja horizontal. Aquí es donde queremos agregarlo. Arrastrándolo hacia aquí, y luego buscando botón. Adelante y agrégalo. Ahora para este botón, solo voy a alinearlo vertical y horizontalmente, así para el estilo. Vamos a los botones y arrastremos en éste. Arrástralo aquí. Ahora para el tinte voy a hacer ancho para que no afecte a nuestro botón para los sorteos, lo voy a dibujar como una caja igual que antes. Margen 0.5 Ahora para este botón, sigamos adelante y dale un tamaño aquí en la x. Sigamos adelante y le demos algo de espaciado. Puedes elegir qué tan grande quieres que sea tu botón , pero por ahora solo hagámoslo así porque primero agreguemos algo de texto. Si solo copio esto, cópielo y pégalo en la superposición para este texto, alinémoslo en el centro del botón. Escribamos algo como y. Esto es lo que va a decir. Ahora le voy a dar un poco de relleno al fondo porque creo que está demasiado cerca del fondo. El acolchado inferior es algo así como cuatro. Ahora tenemos, se ve muy bien. Lo que quiero que hagas aquí, quiero que cambies el color de las monedas. Podemos simplemente usar el mismo que hicimos antes. Si volvemos al menú principal o a la interfaz de usuario principal y podemos tomar este color aquí, podemos copiarlo y pegarlo en la tarjeta del artículo de la tienda aquí que es de un color diferente. También para el botón Por, quiero que lo cambies a otro color, tal vez algo así como el verde. Puedes intentar elegir el color verde que quieras. Yo sólo voy a ir con este color verde. Adelante y pega bien. Ahora bien, así es como se ve. Lo que tienes que hacer ahora es simplemente tratar estilizarlo tanto como puedas, diseñarlo Aquí puedes aumentar la Y para el botón si así lo deseas. Se puede ver que éste no se alinea en el medio. Voy a dar click en este cuadro vertical y alinearlo al medio. En cambio, se ve más correcto. Ahora para este botón, no voy a exagerar. Sólo dándole algo de espacio. Entonces se ve bien. Creo que algo como tal vez 150 por 75, y así es como se ve. Ahora, puedes darle un poco más espaciado si lo deseas aquí, pero creo que ahora todo se ve bien. Esta es nuestra tarjeta y siempre podemos ajustarla. No es como si lo diseñáramos ahora. Y luego podremos tocarlo más tarde. Siempre ajustamos yo después porque el juego cambia cada hora que lo desarrollamos, tal vez en dos días. Creo que esto no se ve bien. Puedo seguir adelante y cambiarlo si así lo deseo. Incluso puedo cambiar el color de esto y así sucesivamente. Sólo tienes que diseñarlo lo mejor que puedas por ahora. Ahora para este texto, solo quiero probar algo. Puedes ver aquí, si escribo aquí, va a escalar toda esta interfaz de usuario. Y en realidad no quiero hacer eso. La forma en que evitas esto es básicamente dándole un ancho mínimo. Si lo puedo encontrar aquí abajo, ancho mínimo deseado, puedes seguir adelante y aumentar esto. Como puedes ver, aquí aumenta este ancho. Para este texto, lo voy a alinear aquí a la izquierda y también aquí abajo a la izquierda. En la justificación, se queda a la izquierda por este ancho mínimo deseado, creo que voy a escribir algo así como 50. Siempre que cambiemos el número aquí en el código, puedes ver si escribo cero. Escribo, por ejemplo, 51. No va a cambiar todo este diseño. Creo que esto se ve mucho mejor. Tal vez incluso pueda disminuir el tamaño de éste, escribiendo 20 en lugar de esto. Si vuelvo a escribir 999, puedo disminuir el ancho mínimo deseado a 45. Así como esto. Lo mismo con el nombre del ítem. Entonces escribo algo así como torre o lo hago. Esto de aquí, puedes ver que cambia el diseño y realmente no quiero volver a hacerlo. Aquí le voy a dar un mínimo de ancho de diseño. Tan solo aumentarlo hasta que estés feliz. Ahora para este texto, voy a alinearlo de nuevo horizontalmente a la izquierda y justificación a la izquierda también. Para el ancho mínimo de diseño, voy a hacer algo así como 150. En realidad, le vamos a dar un nombre mucho más largo, podemos probarlo. Por ejemplo, si tenemos un ítem que tenga un nombre largo, por ejemplo Wizard Tower Defender o lo que queramos escribir aquí, podemos darle un ancho mínimo diseñado, 200.235 sería el máximo Simplemente podemos quitar esto con una torre. Nuevamente, para este texto aquí, realidad no va a afectar porque no va a conseguir tanto tiempo que afecta por aquí. Sólo voy a dejar que este sea por ahora. Pero nuevamente, solo puedes darle un diseño mínimo si así lo deseas. Pero por ahora simplemente no lo haré porque no creo que vaya a llegar tanto tiempo aquí. El precio, todo se ve bien ahora. Bien, así que esto fue para la tarjeta del artículo de la tienda. Y sigamos adelante y cambiemos los nombres porque necesitamos ajustar el slater Ahora para este texto, voy a decir el nombre del elemento texto. Este de aquí abajo se va a llamar texto Precio del artículo por botón aquí. También lo vamos a cambiar después porque quiero cambiar el color y hacerlo rojo si no podemos comprar el artículo. Este por el que voy a decir texto. Éste es texto. Cantidad de puntos de artículos, realmente no necesitamos hacer más aquí. Si compilas y echas un vistazo a la gráfica, estas son las variables que tenemos ahora mismo para el texto para esta interfaz de usuario aquí, creo que todo se ve bien. Siempre podemos ajustar las cosas después si queremos cambiar algo. Por ahora, guardemos todo ahora para esto por botón, voy a asegurarme de que la visibilidad esté establecida para golpear comprobable, así no bloquea el botón para este botón también Voy a copiar y pegar al Hoverdm presionado para el estado presionado Creo que tenemos un estado pulsado en los botones. Este voy a hacer clic y arrastrarlo aquí. Para el estado Hoverd, no tenemos un botón. Sólo voy a cambiar el matiz de que sea ligeramente diferente cada vez que sobre el botón y haga clic, bien, adelante y compilar y guardar todo. Ahora bien, si quieres probar esto, siempre puedes volver al meany y está fuera de aquí Puedes buscar la tarjeta de artículo de tienda WB que creamos. Y puedes arrastrar esto a la lista de ítems que hicimos, puedes ver cómo se ve si solo controlo D y lo duplico un par de veces. Esto es lo que parece si acabo de quitar estos aquí. Ahora lo que puedes hacer es darle algo de espacio. Ahora en el cuadro de desplazamiento, adelante y dale algo de espacio para el relleno. Puedo escribir 25, puedo escribir algo como 50. Creo que tal vez 50 es un buen número. Ahora se puede ver que está cortando a un lado. Lo que puedes hacer es aumentar el tamaño de éste. Recuerda, esta es toda la caja vertical aquí. Se puede seguir adelante y aumentar el tamaño ligeramente. Se puede ver de todo. Lo que también puedes hacer es hacer clic en el cuadro de desplazamiento. Solo voy a dar click aquí en Mostrar siempre la barra de desplazamiento. Es así. También consume rueda del ratón. Voy a cambiar a siempre para que podamos desplazarnos siempre aquí abajo. Ahora diseñemos también este asa para la barra de desplazamiento. Quiero que vuelvas a tus materiales del curso aquí. Y te he dado este asa deslizable. Importemos esto. Si solo lo consigo hasta aquí, arrastre este control deslizante a las imágenes. Yo sólo voy a hacerlo dentro de aquí. Arrástralo aquí, asegúrate de agregar la configuración de píxeles. Vamos a hacer clic con el botón derecho en acciones, aplicar papel a la configuración. Ahora volvamos a la interfaz de usuario, abramos la interfaz de usuario principal, y dentro de aquí, haciendo clic en el cuadro de desplazamiento. Y baja y puedes encontrar este llamado estilo bar. Al hacer clic en él, teníamos aquí esta imagen entumecida normal. Puedes cambiarlo al asa del deslizador. Ahora puedes ver que cambia. Ahora otra vez para el margen de la caja, voy a escribir 0.5 en su lugar para el grosor de la barra de desplazamiento. Se puede lo ancho que debe ser. Creo que le voy a dar algo así como 18. También puedes darle un poco de relleno, algún espaciado entre esos elementos. Y este mango, sólo voy a escribir cero en todos ellos por ahora. A la izquierda, voy a dar algo así como diez, así que tiene algunos a la cima. A ver si creo que debería permanecer igual. En realidad, cero en la parte superior, la derecha es cero. El fondo es cero también. Vamos a probarlo así. Sólo voy a duplicar esto un par de veces También puedo ver la sombra aquí abajo, cómo se ve. Bien, todo se ve genial. Ahora vamos a hacer clic en este cuadro vertical Y aumentar el tamaño de la misma. Entonces no lo es, creo que se ve genial hasta ahora. Así es como se ve. Siempre puedes reducir el tamaño de este artículo si lo deseas, si el nombre es demasiado largo. O puedes hacer, hacer el nombre más pequeño para que tengas espacio motor. Pero de nuevo, podemos ajustarlo más tarde si así lo deseamos. Pero por ahora, volvamos al artículo de la tienda, Cod. Lo que quiero hacer dentro de aquí es que quiero darle un poco de espaciado porque se puede ver que no hay espaciamiento entre estos elementos dentro de los cods de artículos de la tienda Voy a dar click sobre la imagen aquí. Sólo voy a darle un poco de relleno la parte superior e inferior. A la cima, tal vez seis y a los seis inferiores también. Tratemos de ver cómo se ve eso. Eso se ve mucho mejor. De hecho, vamos a darle cinco en lugar de 65 por cinco. Nuevamente, si lo deseas, siempre puedes aumentar el tamaño del botón. No es esto para la X, Para la Y, en realidad, volveré a aumentar, un poco, algo así como 80 en su lugar. Solo recuerda copiar este tamaño de imagen al hoverd y a la prensa también Comp, compilar, guardar todo. Aquí está lo que parece. Se ve muy bien. No creo que vayamos a cambiar más cosas si solo lo maximizo. Así es como se ve. Para mí. Podría hacer el texto un poco más grande. En realidad, déjeme hacer eso. Es un poco demasiado pequeña. En mi pantalla, puedo hacerlo como 20 para el texto aquí arriba, el precio también, y 22 o 24 para los artículos aquí compilar. Espero que no necesitemos ajustar el ancho mínimo deseado, pero podemos hacerlo más tarde si es necesario. Creo que esto se ve mucho mejor. Bien, estos son los artículos que tenemos. Todo se ve bien. También para el botón de compra, voy a cambiarlo a 20 también. Ahora ya hemos terminado. Vamos a guardar todo, y cerremos todo. Y ahora estamos listos para continuar. 67. 8.03 Estructura y tabla de datos: Antes de que podamos continuar con esto, obviamente necesitamos algunos elementos con los que trabajar. Quiero que vuelvas a entrar en tus materiales de costo, y quiero que entres en la carpeta de objetos. Dentro de aquí, te he dado algunos íconos y puedes usarlos como elementos en el juego. Así que adelante y vamos a importarlos. Vamos a los activos dentro de aquí, voy a hacer click derecho y hacer una nueva carpeta, llamémosla objetos. Adelante, importa todos estos aquí. De nuevo, voy a dar click en todas ellas. Haga clic derecho y aplique papel a la configuración una vez más. Ahora los tenemos. Ahora para poder utilizarlos intuitivos, recuerda que tenemos que cambiarlos en sprites. No podemos simplemente arrastrar texturas como esta, así que seleccionémoslas todas. Haga clic derecho y continúe y diga Crear Sprite. Ahora no necesitamos extraer porque recordar extraer es sólo cuando tenemos múltiples sprites en una imagen Ahora mismo es sólo un sprite en una imagen. Así que solo podemos seguir adelante y hacer clic en Crear Sprite. Aquí tenemos los sprites. Voy a hacer click derecho y hacer una nueva carpeta llamada Texturas, porque básicamente ya no necesitamos todas esas. Voy a hacer click en todas estas texturas y voy a arrastrarlas a esta carpeta. Ahora sólo podemos ver los sprites. Adelante y guarda todo. A continuación, bajemos a los planos. Y sigamos adelante y hagamos nuestra estructura. Vamos a abrir la carpeta de estructuras. Hacer una nueva estructura de plano, información del artículo, información del artículo ST Adelante, ábrelo. Ahora podemos agregar variables a lo que queramos para esta información del ítem. Ahora para la información del artículo, obviamente necesito el nombre del artículo. Sólo tienes que ir a la derecha nombre, seguir adelante y seleccionar cadena Guardar. Hagamos una nueva variable. Llamemos a esto una clase. Y esta va a ser la clase base de ítem. Puedo ver aquí que aún no hemos creado una base de artículos. Sigamos adelante y hagamos eso en los planos Aquí no tenemos una carpeta para esto Voy a escribir click hacer una nueva carpeta llamada Items. Dentro de esta carpeta de artículos. Escribamos hacer una nueva clase de plano para esta Ahora para los artículos, solo quiero que sean sprites normales que quiero engendrar en el mundo En realidad voy a buscar sprite y seleccionar el actor sprite de papel Adelante y selecciona éste. Voy a llamarlo BP item base. Ahora te puedes imaginar cuando ya estás creando un juego. Ahora tienes que decidir qué va a contener tu artículo. Porque puedes ver aquí si más tarde decido que mis artículos son libros animados de papel flip books. Y tengo que seguir adelante y crear un plano aquí, buscando flip book en su lugar, e ir a seleccionar este en su lugar Crea tu base de artículos en un plano incorrecto. Esto va a ser un dolor para ti porque tienes que recrear todo una vez más justo cuando ya estás creando un juego a partir de Ahora, ¿decide que tus artículos están animados? Si lo son, hay que seleccionar un flipbook de papel, obviamente, porque los libros flip son animados Sin embargo, si no tienes animaciones para los elementos, sabes que puedes seleccionar un sprite en su lugar Solo asegúrate de saber todo esto antes de crear el plano Sé que mis artículos aquí, no están animados, son solo imágenes aquí. Sprites, creo sprites de papel en su lugar. Ahora tenemos esta base de artículos. Ahora realmente no necesitamos hacer nada con ello. Así que volvamos a la información del artículo. Yo solo quería crearlo aquí en mi clase. Puedo buscar base de artículos, puedo seguir adelante y seleccionarlo como referencia de clase. La razón por la que seleccioné como referencia de clase es que esto suele ser lo que haces cuando quieres generar artículos Recuerda dentro del plano, abro el controlador del jugador, usamos esta clase, esta es una clase de actor de referencia de clase Y usamos esto para engendrar cosas. Quiero generar el artículo más adelante, así que voy a agregarle esto. Entonces queremos escribir sprites porque quiero saber qué sprite tiene. Voy a buscar sprites y seleccionar la referencia del objeto Papa Sprites Lo último que quiero agregar es ¿cuánto cuesta este artículo? Costo de las monedas. Adelante y busca, solo vamos a seleccionar un entero. Sólo un entero. Ahora tenemos esto terminado, la info del artículo. Ahora sigamos adelante y agreguemos una tabla de datos para ello. Abra la tabla de datos. Clic derecho Mesa Micellaneouselta. Tengo que seleccionar la estructura item info, la Coca Cola. Llámalo T item info. Ahora lo estoy pasando un poco más rápido que antes porque ya lo hemos hecho dos veces antes. Ahora este ítem info, necesitamos una tabla de datos para ello dentro de Google Sheets. Quiero abrir Google Sheets una vez más aquí. Déjame duplicar esto, información de nivel TT, ¿verdad? Duplicarlo. Llamemos a este de aquí abajo. Cambiemos el nombre a la base del artículo DT. Ahora, dentro de aquí, voy a borrar todo esto. Elimine todo esto nuevamente. Ahora para los artículos, tengo que escribir el nombre de cada artículo individual. Por ejemplo, puedo tomar el primero y siempre puedes copiar y pegar el método. De nuevo, hay que escribir los mismos nombres de variables que lo que hiciste dentro de la estructura aquí arriba para escribir nombre. Y luego tenemos que escribir sprites, y luego tenemos el costo de las monedas, que escribirlas exactamente como las escribimos aquí, lo contrario no va a funcionar Entonces lo segundo es que hay que anotar la información. Ahora si vuelvo a mi mesa ahora para el ID, tienes que escribir el nombre del elemento. Si vuelvo a los objetos, encuentro uno de los artículos. Por ejemplo, digamos que el primer elemento es esta pluma. Puedo llamarlo como quiera. Por ejemplo, quiero llamarlo padre ligero. Puedo copiarlo y pegarlo en el nombre de la clase. Aún no lo hemos creado. Voy a los artículos la clase. Tengo que hacer clic derecho aquí. Crear una clase de plano infantil. Ahora tengo que crear todos los artículos. El primero se llama BP Light. Puedes intentar ajustarlos en cualquier secuencia que desees. Por ejemplo, la pluma ligera es el peor elemento del juego. Por ejemplo, esta llamada o este arcoíris podría ser el mejor elemento del juego. Simplemente puedes ajustarlos en cualquier secuencia que desees, pero solo tienes que crearlos todos. Por ejemplo, puedo crearlos en una secuencia aleatoria. Por ahora, por ejemplo, esta corona del mal. Ahora puedo ir a los artículos, hacer clic derecho en la base de elementos, crear blueprint hijo Llámalo BP marrón del mal. Volver a los objetos, voy a copiar el sombrero del Gran Mago. Y solo haz lo mismo para todos los artículos. Y volveré contigo una vez que los haya creado todos. Bien, ahora estoy de vuelta. He creado todos los artículos aquí de niños. Así que básicamente hago clic derecho y creo vidrio plano infantil Simplemente dándole el nombre de los artículos que tengo aquí, los que importamos por aquí. Ahora las tengo todas. Sigamos adelante y guardemos todo. Ahora lo que puedes hacer es volver a la tabla de datos para obtener esta información aquí. Para obtener la información de clase, normalmente solo voy a la tabla de datos A y agrego una fila y solo la selecciono aquí, por ejemplo. Puedo seleccionar el Lucky o pluma ligera por ejemplo. Y luego puedo sostener Mayús, hacer clic derecho para copiar, y luego puedo abrir mi tabla de datos, controlar V para pegarla. Básicamente así es como lo haces. Ahora puedes ver que tienes esta pluma ligera pegada. Ahora de nuevo, hay que escribir todos los artículos aquí. Ahora bien, muy importante, esta va a ser la secuencia de tus artículos, qué buenos son. Solo asegúrate de escribir primero los peores artículos y luego se pone mejor y mejor escríbelos en cualquier secuencia que desees. Yo sólo voy a hacer eso aquí también. Ahora bien, los he escrito todos en secuencia que desee. Acabo de escribir una secuencia aleatoria aquí para todos los artículos. Ahora para cada una de estas clases, nuevamente, hay que entrar aquí, abrir la tabla de datos para la información del ítem, seleccionar, por ejemplo, la siguiente que es, vamos a seleccionar justo en secuencia. Por ejemplo, Corona del Mal. Vuelve a la tabla de datos, pégalo aquí para la Corona del Mal. Ahora vuelve otra vez, selecciona las cabezas de los grandes hechiceros. Pégalo en las cabezas de mago aquí en adelante. Solo hazlo por todos ellos. Ahora para el sprite, es mucho más fácil porque solo puedes minimizar esto Ve a tu sprite aquí en los objetos. Para cada sprite, haz clic derecho en referencia, luego puedes volver aquí, pegarlo para la Corona del mal Ahora por ejemplo, el siguiente, cabeza del asistente clic derecho haga clic en referencia. Volver a la tabla de datos, pegarlo aquí, y así sucesivamente. Hazlo también por el sprite. Ahora por el costo de las monedas, puedes hacerlo al azar. Ahora puedes escribir algo así como que el primer artículo está costando 15 monedas Yo sólo voy a escribir igual pinchando sobre este número, nosotros veces 1.5 Entonces sólo voy a dar click y arrastrar esto a todo este campo. Por lo que automáticamente agrega el número para mí. Realmente no importa cuál sea el precio por ahora. Siempre se puede ajustar más tarde. Por ahora sólo vamos a programar. Sólo voy a llenar todo esto ahora mismo. Bien, ahora he llenado toda la información. Sigue adelante y haz clic en Archivo y descarga. Descárgalo como archivo CSV. Ahora adelante y cámbiale este nombre a DT base. Volvamos a la tabla de datos. En realidad, DT base lo llamó info. Ese es mi error. Información del artículo. hay que corregir eso dentro de la tabla de datos aquí. Llámalo info en su lugar, esto. Ahora podemos arrastrar esto aquí y debemos importar automáticamente toda la información para nosotros. Entonces ahora tenemos todo lo que necesitamos. Ahora el paso final que tenemos que hacer, justo antes de terminar esto, siempre podemos ir a las bibliotecas. Ahora, dentro de las bibliotecas anteriores, agreguemos una nueva función llamada get item info porque la necesitamos más tarde. Vamos a agregar aquí entrada, llamarlo nombre T, eso es una cadena. Ahora para el itam, volvamos a arrastrar. Al igual que antes, podemos entrar aquí. Y básicamente es todo esto. Incluso puedes copiar y pegar todo esto aquí. Estamos reemplazando todos los espacios como puedes ver aquí. Queremos aquí la información del ítem DT y podemos hacer un nodo de retorno, return, devuelve la información para este ítem aquí, solo puedo escribir información del ítem, compilar, asegurarme para este item info que haya seleccionado puro. Porque solo queremos obtener la información, guardar todo. Eso fue. Ahora tenemos todo lo que necesitamos para la información del artículo. Si solo quieres probarlo, siempre puedes entrar en el jugador por ejemplo, legítimamente puedes decir obtener información del artículo Aquí ves que tienes el nombre del artículo que puedes enchufar y vamos a agregar el nombre del artículo antes de que terminemos esto, solo un poco de contenido extra aquí, podemos terminarlo base de artículo. Vamos a abrirlo aquí para las variables que quiero agregar. Incluso podemos llamarlo nombre o nombre. Vamos a llamarlo nombre del elemento. Vamos a darle una variable de cadena. Compila ahora, ya que lo agregué al padre, todos los hijos del blueprint heredarán esta variable si abro la corona del mal por ejemplo, puedes ver aquí tiene nombre de ítem y tienes que escribir este nombre de ítem correctamente Ahora porque este es el nombre del elemento que va a extraer la información de esta tabla de datos. Si llamas a éste, por ejemplo, Corona del mal, aquí va a encontrar Corona del mal. Más adelante va a tomar toda esta información. Sabe qué clase tiene, qué sprite, lo que cuesta, y así sucesivamente Entonces hay que escribir esto correctamente y podemos usarlo más tarde. Nuevamente, da clic en todas ellas. Escribe el nombre de ellos para Gran Mago. Agregar para esta base de un artículo comp, no tenemos nada. Corona del Rey, ¿verdad? Reyes redondos. Yo sólo voy a hacer eso por todos ellos. Bien, esta es la última que es la antorcha. Sigamos adelante y compilemos y guardemos todo. Ahora tenemos todo lo que necesitamos. Adelante, guarda todo, y pasemos a la siguiente lección. 68. 8.04 Crea tarjetas de artículos en la tienda: Muy bien, ahora sigamos adelante y creamos el artículo de la tienda. Od, vamos ahora a los planos. Abre la ley de control de jugadores, porque recuerda aquí es donde hacemos la interfaz de usuario. Cualquiera que sea la interfaz de usuario que tengas que hacer. Normalmente hago eso en el control del jugador. En lugar de aquí, voy a hacer un nuevo evento nuevo, evento personalizado. Llamemos a este crear artículos de tienda. Porque ahora necesitamos crearlos dinámicamente a través del código. Recuerde que para la tarjeta de artículo de la tienda, básicamente diseñamos una tarjeta aquí como una tarjeta estática con toda la información siendo estática. Pero ahora necesitamos cambiar todo este texto aquí para que sea dinámico a través del código. Es por esto que primero tenemos que crear la carta y luego tenemos que mostrarla en parte superior del menú donde tenemos este cuadro de desplazamiento aquí en el control de juego. Hagamos esto. Crear tarjetas de artículos de tienda. Lo que queremos hacer básicamente, es usar este llamado create widget aquí. Crear widgets. Y queremos crear la tarjeta de artículo de tienda. Este es nuestro principal objetivo. Ahora tenemos que crear esto para cuántos artículos tenemos. Recuerda, esta información está disponible dentro de la tabla de datos que creamos aquí. Ya sabemos cuántos elementos tenemos de aquí, en realidad sabemos cuántos de estos widgets necesitamos crear. Básicamente, puede hacer esto haciendo clic derecho y diciendo, obtener nombres de fila de tabla de datos. Recuerda esta que usamos dentro de la biblioteca de funciones, pero ahora necesitamos usar esta. Obtener nombres de fila de tabla de datos. Así que estamos obteniendo todos los nombres dentro de esta tabla de datos. Ahora tenemos todos los nombres de los artículos aquí. Vamos a conectarlo. Lo que podemos hacer ahora es ahora, en lugar de conectarlo aquí, porque necesitamos crear un widget para cada uno de esos elementos, lo que podemos hacer es que podamos arrastrar aquí y decir cuatro cada bucle. Ahora vamos a hacer un bucle. Ahora para cada uno de esos elementos, adelante y crea un widget. Entonces cuando creas el widget, quiero agregarlo a una matriz. Si hago una nueva variable aquí abajo, y la llamo, puedo cambiar el tipo a este widget que creamos. Tarjeta de artículo de tienda. Si solo busco un artículo de tienda y este de aquí, continúe y selecciónelo. Quiero cambiar esta a una matriz. Puedes hacer clic aquí, o en realidad aquí arriba. Y puedes seleccionar array, o simplemente puedes hacer click derecho sobre este icono y éste lo cambia en una matriz. Ahora para esta tarjeta de artículo de tienda, qué es una matriz, si no sabes ya tienes las variables individuales aquí y tienes una matriz, Una sola variable es donde básicamente igual que antes la usábamos, almacenaremos una sola pieza de información en esta variable para que podamos usarla más tarde. Ahora, para una matriz, esto está almacenando información múltiple. Podemos almacenar todos los widgets que creamos. Podemos almacenarlos aquí para obtener esta información. Puedes arrastrar y obtener, y obtienes el índice de información en el que se Si hago clic en esta matriz aquí, en realidad se puede ver clic en el más. Y puedo seleccionar un artículo y puedo hacer clic en el más nuevamente, seleccionar otro artículo y puedes continuar. Se puede ver que guarda múltiples datos. Sin embargo, para una sola, puedes ver que solo puedes guardar una sola pieza de información. Pero para una matriz, puede guardar múltiples. Sólo vamos a eliminarlos a todos. Puedes ver aquí cuando tengas todos los widgets, también puedes escribir para cada bucle. Ahora puedes hacer algo con cada uno de esos artículos que has guardado dentro de aquí. Vamos a guardar este widget aquí. Para cada uno de los ítems creamos un widget. Cada uno de esos widgets, voy a drake aquí y digo Add, vamos a agregar esto a la tienda. Tarjetas de artículo como esta. La razón por la que necesitábamos cambiarlo a la tienda Se widget aquí, escriba. Porque recuerda si sostienes el mouse sobre esto, esta también es una referencia de objeto shop it. Ahora bien, si intentas hacer otra cosa, por ejemplo, si solo busco base de jugadores para jugador y selecciono este jugador PP y lo convito en una matriz, trato de agregar esto aquí. Se va a decir que la referencia de objeto de artículo de tienda no es compatible con la referencia de objeto del reproductor porque no son del mismo tipo de variable. No se puede hacer esto, tienen que ser del mismo tipo de variable. Antes de poder agregarlos dentro de aquí, permítanme simplemente eliminar este. Ahora creamos un widget para cada uno de esos elementos y lo almacenamos en esta variable de matriz. Ahora también quiero asegurarme de que esta matriz aquí no tenga nada dentro de ella. Antes de hacer esto aquí, antes de hacer nada, permítanme copiar esto, pegarlo y decir claro. Porque quiero borrar esta matriz antes de comenzar a agregar elementos a ella. Ahora básicamente terminamos de crearlos. Esto fue por ahora. Sigamos adelante y compilemos y pasemos al siguiente. 69. 8.05 Visualización de tarjetas de artículos de la tienda: Bien, así que ahora estamos listos para mostrar las tarjetas de artículos. Ahora antes de hacer esto, voy a eliminar todos esos. Así que selecciona estas tarjetas de ítem que agregamos previamente a la lista y sigue adelante y borra compilar. Ahora lo que podemos hacer dentro del controlador del reproductor, nuevamente, hagamos con razón un nuevo evento personalizado. Vamos a llamarlo tienda de exhibición It tarjetas. Ahora vamos a exhibir esas tarjetas que creamos antes. Antes de hacer esto, de nuevo, tengo que aclarar lo que tengo dentro de esta caja de pergamino. Recuerda que tenemos esta lista de artículos VB. Volvamos al controlador del reproductor. Tome este WB principal, porque esta o esta lista de elementos de la lista VB está dentro de la principal de WB. Puedo arrastrar desde aquí y decir VB item list, digamos claro niños. Porque quiero borrar todos los artículos que están dentro de él antes de agregar mi tarjeta. No muestra cosas aleatorias. Además, si creas las tarjetas de artículos de tienda más adelante por alguna razón para tu juego, asegúrate de eliminar las antiguas antes de agregar las nuevas. Ahora tomemos las tarjetas de artículos de tienda que tenemos. Ahora podemos decir para cada bucle conectado. Ahora para cada una de esas tarjetas de artículos, queremos agregarla a esta lista. Puedo copiar esto, pegarlo y decir agregar dos. Agrega child a la caja vertical, selecciona esta, y ahora agrega esta dentro de aquí. Para cada una de las tarjetas de artículos de tienda que obtengo aquí, continúe y agréguelo a la lista. Eso es básicamente todo si compilo ahora. Porque aquí si hago clic en Reproducir, realmente no pasa nada. Porque recuerden que nunca hemos llamado a estos eventos. Hagámoslo en el inicio de los jugadores o el inicio de juego aquí. Porque normalmente solo tienes que pensar en tu juego, ¿ cuándo o dónde quieres llamarlos a estos? Quieres llamarlos desde el jugador, desde el controlador del jugador. Ahora se muestran dentro de mi Ui principal, así que en realidad puedo hacerlo dentro de Begin Play. No obstante, si esto estaba mostrando dentro de mi, por ejemplo, un botón aquí que tuve que presionar un botón para abrir la tienda, entonces no lo mostraría dentro del Begin Play. Yo lo crearía. Si puedo subir aquí en el Begin Play y decir Create, shop It cards y llamar a este evento que creamos. Ahora estamos convocando a este evento aquí abajo. Eso es correcto. Ahora bien, si estuviera dentro de un botón, si tuviera que presionar un botón para abrirlo, no escribiría esta pantalla en la reproducción de inicio. Lo escribiría cada vez que hago clic en el botón. Entonces quieres mostrar las tarjetas de artículos de la tienda. Pero ahora mismo tenemos esto en la principal, realidad queremos mostrarlo enseguida. De hecho, puedo escribirlo aquí cada vez que creo las tarjetas de artículos de tienda y todo se agrega y todo está completo. Aquí en el terminado, quiero decir mostrar tarjetas de artículos de tienda. Entonces lo está haciendo correctamente. Vamos a compilar y hagamos clic en quejarnos ahora. Y puedo ver que no pasa nada. Y esto se debe a que en realidad olvidé seleccionar aquí la información del artículo DT. Si compilo quejarme ahora, ahora puedes ver todos mis artículos. No es con información correcta porque recuerden aún no le hemos dicho dónde debe estar el título, cuál debe ser el precio. Tenemos que actualizar esto, pero puedes contar aquí tienes 1-234-567-8910 Eso es correcto porque dentro de la tabla de datos, también tenemos diez ítems. Ahora en realidad está mostrando la cantidad correcta de artículos en nuestra lista. Esto es lo que queremos. Puedo ver hay un error con esta barra de desplazamiento. De hecho voy a corregirlo enseguida Si acabo de hacer clic en este cuadro de desplazamiento, el pulgar normal, solo voy a pegarlo. Para los florecidos, para el Dr. Y rondados, incluso se puede cambiar ligeramente el tinte Tiene algún efecto para el arrastre también. Voy a cambiarlo un poco. Bien, haz clic en jugar ahora. Todo debería estar bien. Bien, ahora todo se muestra correctamente. Sigamos con el siguiente. 70. 8.06 Dale a cada tarjeta de artículo la información correcta: Ahora tenemos que pensar en cómo le damos a cada tarjeta de artículo la información correcta. Entonces podemos cambiar el nombre de la misma, podemos cambiar el precio, y así sucesivamente. Entonces vamos al interior de la gráfica. Dentro de aquí, quiero hacer una nueva variable. Llamemos a esto información de un artículo. Cambiemos el tipo de la misma a información del artículo también. Y podemos seleccionar la estructura que hicimos. Bien, adelante y compila. Y puedo ver por la estructura ahora tienes toda esta información, pero ahora mismo está vacía. Entonces, ¿cómo obtenemos la información correcta del artículo? Toda esta información aquí. ¿Cómo obtenemos esto dentro de la tarjeta del artículo de la tienda? que podamos establecer el texto para el título, establecer el texto para el precio, y así sucesivamente correctamente. La forma en que hacemos esto es si vas al gráfico de la tarjeta del artículo de la tienda, clic en esta información del artículo y la configuras instancia editable y expones en spawn Compilas y vuelves al controlador del reproductor ahora y haces clic en Archivo, Refresca todas las notas. Puedes ver aquí, te das cuenta que apareció esta información del artículo. Y nuevamente, esto se debe a que presionamos la instancia Editable y exponemos en spawn Va a ser expuesto cada vez que creamos el widget. Ajá. Ahora podemos tomar esto y decir obtener información. Y en realidad no podemos hacerlo directamente porque es una cadena. Tally puede decir obtener información del artículo. Recuerda, esta es la función que creamos en la biblioteca de funciones. Ahora podemos arrastrar esto aquí, y va a convertir tu cadena de nombre o tu variable de nombre en una variable de cadena. Ahora podemos registrar la información de este artículo aquí. Ahora para cada uno de esos elementos, básicamente lo que está haciendo es obtener estos elementos para cada uno del nombre del elemento o cada uno de los nombres del elemento. Si voy a la información del artículo, recuerda que tenemos un nombre. Va a usar esa información para obtener información aquí. Entonces básicamente va a leer, por ejemplo, con una pluma ligera, va a obtener esta información para la antorcha, va a obtener esta información y así sucesivamente para cada una de ellas. Se va a enchufar a la tarjeta respectiva que creamos. Entonces ahora tenemos esta información realmente almacenada aquí. Ahora podemos continuar con las siguientes lecciones donde realmente podemos agregar o actualizar la información para esta tarjeta. 71. 8.07 Cómo mostrar la información de la tarjeta de artículo correcta: Ahora que tenemos la información correcta del ítem dentro de esta variable, sigamos adelante y actualicemos la información. Sólo voy a borrar todo esto por ahora. Empecemos con la construcción del evento. La construcción del evento se jugará cada vez que cree el widget aquí. Recuerda que hicimos las tarjetas de creación de artículos de tienda. Cada vez que creas el widgit, este comenzar a jugar o incluso construir se va a jugar Vamos a actualizar la información dentro de aquí. Simplemente lo que queremos hacer es comenzar con el nombre de este ítem, haciendo clic en él. Recuerda que ya le cambiamos el nombre y lo configuramos en una variable. Y eso lo hicimos por todos esos. Al dar clic en el primero, nombre del elemento, arrastrarlo hasta aquí, arrastrar y decir texto conjunto Esto es básicamente lo que queremos hacer. Queremos establecer el texto correctamente. Queremos tomar esta información del ítem ahora arrastrarla y decir break. Así podemos ver todas las variables. Simplemente podemos arrastrar el nombre de los elementos dentro de aquí y se actualizará. Adelante y conéctelo. Y ya puedes ver esto funcionando si haces clic en Reproducir ahora. Y ahora ves que tienes el nombre correcto para todos ellos. El Casco de Noche Protector, Corona del Rey, y así sucesivamente. Se está actualizando correctamente. De esta manera sabes que se está mostrando la información correcta . Bien, ese era el nombre del artículo. Lo segundo que quiero actualizar es el precio. Da click en éste. Arrastrémoslo y digamos Set Text. Ahora por el precio, vamos a hacer clic en éste. Voy a mostrar el costo de las monedas. Voy a conectarlo aquí. Descomponerlo. Ahora si haces clic en Reproducir, puedes ver que esto también se muestra correctamente. Ahora por la cantidad de artículos que hemos comprado, cada vez que haces clic y compras y compras un artículo, tienes que almacenarlo en una variable, porque más adelante necesitas saber cuántos de esos artículos has comprado. Ahora por la cantidad de artículos que compramos, creo que voy a almacenar esta información dentro del jugador. Si abro el jugador y aquí dentro, hagamos una nueva variable. Llamemos a esto ollas de un artículo. Ahora vamos a cambiarlo en una cadena porque necesitamos saber de qué ítem estamos hablando. Ahora voy a cambiarlo en un mapa. Necesito explicarte lo que es un mapa. Si solo arrastras esto aquí, podemos ver que un mapa es una conexión entre dos variables, en lugar de ser una variable. Ahora tenemos dos variables en una aquí me compilo aquí abajo, hago clic en más, se puede ver que hay un campo en el que puedo escribir. Esta es básicamente la variable de cadena de aquí. Puedo establecer un número aquí, y esta es la variable entera. ver que tenemos una cadena y un entero, y básicamente puedes tener tantos como queramos. Para lo que quiero usar esto es que queremos tener el artículo, por ejemplo, Corona del Rey. Y entonces, ¿cuántos de la Corona del Rey hemos comprado hasta ahora? Así es como vamos a utilizar esta variable. Pero un mapa, básicamente puedes cambiarlo en cualquier cosa. Por ejemplo, puedes cambiarlo a un entero aquí. También puedes cambiarlo a una transformación. Por ejemplo, por aquí, ahora puedes ver que puedes usarlo así, donde tienes un número que es básicamente el entero. Entonces tienes la transformación. Si haces clic aquí, podrás ver la transformación. Básicamente, puedes almacenar tal vez la cantidad de transformaciones que tengas en el mapa o lo que sea, algo aleatorio. Pero como puedes ver, un mapa es una conexión entre dos variables. Pero permítanme simplemente cambiarlo en una cadena por ahora y cambiar el segundo en un entero porque básicamente quiero tener de qué artículo estamos hablando y cuántos de este artículo hemos comprado realmente. Esto es para lo que estás usando un mapa. No compilé ahora para estos artículos comprados. Permítanme ahora volver a la tarjeta del artículo de la tienda. Y necesito una referencia a mi jugador porque necesito usar esta variable en el constructo del evento. Déjame usar mi interfaz de blueprint. Consigue el personaje de juego primero, consigue jugar. Entonces desde aquí podemos arrastrar y decir get play nuestra referencia. Recuerda que esta es la interfaz de blueprint que creamos. Clic derecho, Promociona esto a nuestra variable y llámalo peón jugador por ejemplo Y adelante y conéctelo. Ahora que tenemos la variable, ahora podemos tomar este peón de juego y podemos usarlo diciéndolo spots y podemos obtener nuestra variable Lo que queremos hacer, básicamente si vuelvo, este es el punto de ítem, si lo acabo de arrastrar adentro, simplemente queremos establecer el texto igual antes de escribir set text, seguir adelante y conectarlo. Esto es básicamente lo que queremos hacer. Necesitamos saber cuántos de este artículo hemos comprado y de qué artículo estamos hablando. Podemos arrastrar aquí y decir por ejemplo, si no sabes lo que puedes hacer con un mapa, siempre puedes buscar mapa. Y ahora puedes ver todas las funciones que puedes usar para un mapa. Por ejemplo, puedes buscar, encontrar porque queremos encontrar el artículo aquí cuando encontremos el artículo específico, por ejemplo, Corona del Rey. De aquí, si puedo deletrearlo, Corona del Rey, entonces desde aquí sabemos cuántos de este artículo hemos comprado y de hecho podemos exhibirlo. En lugar de escribir aquí, lo que puedes hacer es que ya sabemos qué artículo es porque tenemos la información del artículo. Para que podamos arrastrar esto y romper aquí. Y luego tenemos el nombre del ítem al cual podemos conectar una variable. Ahora va a tomar este nombre de artículos en el que estamos y va a enchufarlo. Y a partir de ahí va a encontrar el artículo y luego va a encontrar ¿cuántos de estos artículos has comprado realmente? Pero ahora mismo no hemos guardado realmente nada dentro de estos artículos comprados. Entonces está vacío en este momento, pero tendrá algo de información más adelante cuando realmente compremos artículos. Yo sólo voy a enchufarlo aquí y va a mostrarlo para mí, una compilación en juego. Y ahora se puede ver que está mostrando cero porque hasta el momento no tenemos información dentro de él. 72. 8.08 Cambio del color de compra de texto: Lo que quiero hacer ahora es que quiero actualizar esto por color de botón, porque si tenemos cero monedas, quiero mostrar este o el color del texto como rojo en lugar de verde. Y se vuelve verde cada vez que tenemos suficientes monedas para comprar este artículo. Sigamos adelante y hagamos esto. Déjame cerrar esto. Nuevamente, trabajando con UI, quiero hacer esto dentro del control del jugador. Dentro de aquí, voy a hacer una nueva función. Llamemos a éste. Vamos a llamarlo actualizaciones, almacenar, o actualizar, comprarlo. Y es un por botón o por color de texto, algo así. Muy explicativo actualizar la tarjeta del artículo de la tienda por color de texto. Ahora necesitamos una referencia a todas estas tarjetas de artículos de tienda que tenemos dentro de aquí. Recuerda, ya tenemos eso dentro de la matriz de artículos de tienda que creamos. Diré para cada bucle, y vamos a recorrer todos ellos. Para cada uno de ellos, quiero tomar este texto. Entonces si vuelvo atrás y recuerdo lo que llamamos, es texto por y lo hicimos es variable. Volvamos al mando de reproducción. Vamos a arrastrarlo y decir que podemos tomar este texto por. Lo que simplemente queremos hacer es si solo arrastras y dices color, si no sabes cómo se llama, puedes ver que hay algo que se llama establecer color y opacidad Escojamos éste. Vamos a arrastrarlo aquí. Ahora puedes arrastrar de esto y decir hacer color pizarra porque queremos ver qué podemos hacer con él. Ahora podemos establecer un color específico dentro de aquí. Ahora quiero establecer el color dependiendo de si en realidad tenemos monedas o no. Ahora tenemos que trabajar con las monedas. Recuerda que esto es por dentro. Dentro del jugador, tenemos algo llamado cantidad de monedas que usamos antes. También tenemos el costo del artículo que está dentro de la tarjeta del artículo de la tienda porque tenemos esta información del artículo para que sepamos el costo del artículo. Usemos los que están dentro del controlador del reproductor. Puedes intentar hacerlo tú mismo si deseas practicar de lo contrario déjanos hacerlo juntos. Ahora para este ítem, voy a decir info del artículo. Entonces voy a conseguir esa variable y la voy a romper. Para que pueda ver el costo del artículo, voy a arrastrar esto aquí. Ahora puedo ver el costo del artículo aquí. Solo voy a ocultar pines desconectados y solo mostrar el costo del artículo Ahora también quiero que los jugadores cantidad de monedas. Necesito una variable para el jugador. Ya veo que no tengo esto. Si solo vuelvo al controlador del jugador y yo otra vez, en realidad solo podemos volver al artículo de la tienda. Podemos simplemente copiar y pegar todo esto que acabamos de crear en la lección anterior. Y solo voy a crear legítimamente una variable para el juego sobre, y esto es mucho más rápido Ahora volvamos. Ahora tenemos el juego sobre, vamos a arrastrarlo. Digamos, cantidad de monedas. Obtener la cantidad de monedas. Ahora lo que vamos a preguntar es, ¿cuesta la moneda? ¿Es más grande? ¿Es mayor que la cantidad de monedas que tenemos? Entonces puedes arrastrar desde aquí y decir seleccionar, seleccionar color. Ahora la diferencia entre un color selecto y selecto. Ahora bien, si solo las arrastras para que podamos verlas, seleccione el color está aquí, y seleccione está aquí. La diferencia no es realmente demasiado grande. La diferencia es que si haces el color de selección, puedes verlo automáticamente elige que este es un lingote que tienes que enchufar en él Para los selectos, puedes elegir lo que quieras. Puedes enchufar una enumeración como lo hicimos antes, pero también puedes enchufar esta y dirá verdadero o falso Y entonces puedes hacer lo que quieras con él. Básicamente, puedes usar ambos. Por ahora solo voy a usar Seleccionar color. Seleccione color. Adelante y enchufa esto. Lo que va a hacer es que va a decir es el costo de la moneda para este artículo, es más grande que cuántas monedas tienes? Si lo es, dice pick a. si esta variable de lingotes es verdadera, va a escoger a, significa monedas Si la cantidad de monedas que costó este artículo aquí, si no tienes suficiente para comprarlo, en realidad va a seleccionar A. Necesitamos un color rojo para la A y necesitamos un color verde para la carne porque aquí es donde puedes comprarlo. Ahora para el color verde, sólo voy a copiarlo del diseñador por botón porque ya lo hice. Voy a copiar el color lineal hexadecimal. Voy a volver al mando de reproducción. Pégalo para el, Pégalo aquí, da click para éste. Sólo voy a seleccionar un color rojo aquí primero para poder ver cómo se ve. Algo así. Y puedo copiar el color lineal. Simplemente haz clic en cancelar porque no quiero cambiarlo aquí. De vuelta a la, el color rojo. Y ahora lo tenemos. Se va a decir ¿ los artículos cuestan más grandes que lo que tienes en monedas? Si eso es cierto, elige una, escogiendo el color rojo, si tienes suficientes monedas, va a escoger el color verde. Lo va a enchufar aquí y va a establecer el color del texto y compilar. Ahora tenemos que llamar a esta función, porque aún no lo hemos hecho, y queremos llamarla cada vez que haga clic en reproducir, ya quiero que todo esto se actualice. La mejor manera de hacerlo es que hemos creado las tarjetas de artículos aquí. Creamos todos ellos. Antes de mostrarlos, quiero actualizar los colores. Voy a agregarlos aquí así. Actualizar compilar. Si haces clic en play, ahora puedes ver que todas son rojas porque no tengo suficientes monedas. No obstante, si cambio aquí en el jugador cantidad de monedas, digamos ahora tengo 60 monedas y hago clic en Compilar Play. Ahora puedo ver que para las 60 monedas, en realidad tengo suficientes monedas para todas ellas, así que serán verdes. Puedo ver que este texto no se muestra correctamente. Esto se debe a que tenemos que matar a un enemigo antes de que realmente se muestre. De hecho, arreglemos esto. A lo mejor quieres una cantidad inicial de monedas. La razón es que solo estamos ejecutando este código cada vez que realmente matamos al enemigo. Si abro la base enemiga, tenemos esta cantidad de monedas. Si acabo de copiar esto, en realidad puedes copiar esto cada vez que abras el juego. Y esto viene del jugador. Si abres al jugador y vez de aquí en la base de jugadores, puedes ver que hicimos esta actualización cantidad de monedas. Solo necesitamos ejecutar este, actualizar la interfaz de usuario porque la cantidad de monedas es correcta. Y también puedes ver esto si tomas la cantidad de monedas e imprimes cadena y acabas de imprimir la pantalla y haces clic en Reproducir. Se puede ver que aquí dice 60. Si lo viste. En la parte superior izquierda, dice 60. En realidad se muestra correctamente, o el número es correcto, pero no se muestra correctamente. Copiemos esta interfaz de usuario. Solo necesitamos actualizar la interfaz de usuario, y arrastramos la cantidad de monedas conectadas así. Ahora cada vez que hacemos clic en Play, también va a actualizar la cantidad de monedas. Si hago clic en Reproducir, se va a mostrar correctamente. Ahora todo es correcto y tenemos esto mostrado correctamente cuando matamos al enemigo. También va a agregar la cantidad correcta de monedas cada vez que consigamos más y más monedas. Ahora podemos ver que no está mostrando esto correctamente porque necesitamos actualizarlo cuando matemos al enemigo. Vamos a arreglar eso también. Si la cierro, me acerco a los enemigos, abro la base enemiga. Y hay que agregarlo aquí cada vez que muera el enemigo. Y actualizamos la cantidad de monedas. Vamos a hacerlo. Después de actualizar la cantidad de monedas, usemos el controlador de juego. Y ya tenemos el mando de reproducción aquí abajo. Arrástralo y di actualizar la tarjeta del artículo de la tienda por color de texto. Adelante y conéctelo conectado aquí. Y ahora debería funcionar. Ahora si haces clic en play y yo mato, ya puedes ver si consigo 76 o más, realidad va a hacer que este sea verde. Si mato a este enemigo, ya podemos ver que se vuelve verde. Si solo sigo matando, puede ver ahora esto se vuelve verde porque ahora tengo suficientes monedas, esto está funcionando correctamente, y ahora podemos seguir adelante. 73. 8.09 Comprobando si el jugador tiene suficientes monedas: Ahora antes de que el jugador pueda presionar el botón Por, también necesitamos verificar si el jugador tiene suficientes monedas, contrario realmente pueden presionar el botón By y pueden comprar artículos sin que tenga suficientes monedas. Tratemos de trabajar con éste. Si abro el controlador del reproductor, una vez más para el controlador del reproductor, hagamos algo también aquí en el color de actualización. Lo que podamos hacer dentro de aquí, podemos arrastrar esto. Ahora tomemos el botón. Voy a la interfaz de usuario y abro el artículo de la tienda y hago clic en este botón. Y sólo voy a llamarlo botón y convertirlo en una compilación variable. Ahora si vuelvo al mando de reproducción, arrastre desde aquí y digo botón. Y tomo este botón, lo que puedes hacer es que puedes arrastrar aquí y decir habilitar. Ahora puedes ver que tienes algo llamado Set está habilitado. Adelante y selecciónelo, conectado aquí. Ahora puedes elegir cuando un botón debe estar habilitado o no. decir, que si el jugador puede presionarlo o no, siempre que este sea rojo, es decir, este es cierto, Esto significa que el jugador no puede comprar este artículo, significa que no tienen suficientes monedas. De hecho podemos arrastrar esto y enchufarlo aquí. En realidad, no podemos, porque esto va a ser cierto y éste va a ser cierto, lo que significa que está habilitado, y en realidad queremos lo contrario. Voy a volver a arrastrar y decir seleccionar para invertirlo. Sigue adelante y selecciona este nodo Select y conéctalo aquí abajo. Ahora puede ser un poco confuso ahora, no tenemos suficientes monedas siempre que el costo del artículo sea mayor que la cantidad de monedas que tenemos. Esto quiere decir que esto va a ser cierto siempre que sea cierto. Quiero configurar esto para que se desactive porque no queremos comprar si no tenemos suficientes monedas. No obstante, siempre que esto sea falso, es decir, tenemos suficientes monedas aquí, quiero configurarlo para que esté habilitado. Quiero tomar esto y decir que el botón está habilitado. Puedes seguir adelante y comprar. Así es como lo invertimos, así que adelante y compile y haga clic en play. Ahora podemos ver que el botón está deshabilitado. Se puede ver que está un poco descolorido. Además, ahora vamos a comprobar si el jugador tiene suficiente cantidad de monedas. Vamos a cerrarlo. Vamos a abrir la tarjeta del artículo. Vamos a darle click, aquí abajo en la parte inferior. Vamos a hacer clic en el desclicked. Ahora cada vez que hacemos clic en este botón o compramos el artículo, queremos verificar si el jugador tiene suficientes monedas. Hagámoslo dentro del jugador porque ya hicimos la cantidad de monedas y el cálculo de monedas así dentro del jugador. Déjame simplemente hacer una función simple, llamemos a ésta. ¿El jugador tiene suficientes monedas? Lo sencillo que queremos hacer dentro de aquí es que queremos comprobar si el jugador tiene suficientes monedas. Arrastrando esta cantidad de monedas, déjame solo aquí también para la entrada, déjame agregar un entero y déjame llamarlo costo del artículo es la cantidad de monedas que tiene el jugador es mayor o igual Tenemos que tener igual porque puede ser igual al costo del artículo, lo que significa que tienes suficientes monedas. ¿Es mayor o igual al costo del artículo? Entonces podemos simplemente hacer una nota de retorno aquí, si solo escribo devolver el nodo de retorno y luego enchufar esto aquí, crea una variable para nosotros. Este es básicamente tiene suficientes puntos cuando va a verificar esto, vamos a enchufar el post del ítem y haciendo clic en esta función. Voy a ponerla pura. Porque recuerda, siempre que tengas una función que solo obtenga información, no está configurando nada, entonces puedes configurarla en pura. Entonces se vuelve como esta función verde aquí, porque solo está obteniendo información. Ahora lo que podemos hacer es que podamos tomar a este jugador y decir que tiene suficiente, o lo llamamos , ¿el jugador tiene suficientes monedas? Para que pueda arrastrarlo y decir que sí tiene suficientes monedas. Y se puede ver que es una función verde porque la configuramos en pura. Ahora podemos sumar en el costo y luego podemos salir de aquí y ver si en realidad tenemos suficientes monedas o no. Hagámoslo. Tomemos la información del artículo, podemos romperla. Podemos tomar el costo del artículo y enchufarlo dentro de aquí. Ocultar los pines no conectados. Ahora podemos arrastrar desde aquí y hacer una rama y conectar esta rama. Ahora en realidad hacemos esto, ahora estamos comprobando si el jugador tiene suficientes monedas antes de que el jugador pueda comprar el artículo. 74. 8.10 Compra del artículo: Ahora que hemos comprobado que el jugador tiene suficientes monedas, repasemos y solo compremos el artículo ahora. Ahora por comprar los artículos, creo que quiero hacerlo dentro del jugador. Siempre que compres aquí y tengas suficientes monedas, sigues adelante y compras los artículos. Hagamos un nuevo evento en el jugador. Hagamos un nuevo evento personalizado llamado artículo de compra como este. Ahora para este artículo de compra, obviamente necesitamos primero el artículo. Si no quieres hacerlo ahora mismo, solo volvamos atrás y dentro de aquí, tomemos al jugador, ya tenemos la variable player. Vamos a atacar desde aquí y decir comprar artículo y llamar a este evento que acabamos de hacer. Si es cierto que tenemos suficientes monedas, sigamos adelante y compremos el artículo. Obviamente, necesitamos saber de qué ítem estamos hablando porque necesitamos alguna información aquí. Solo voy a crear una entrada y llamémoslo, o llamémoslo la estructura de información del ítem. Tenemos ese artículo, solo lo voy a llamar artículo compilar Ahora podemos volver a la tarjeta de artículo de la tienda. El artículo es obviamente este artículo en el que estamos ahora mismo y ya tenemos la estructura. Sólo voy a tomarlo y enchufarlo aquí. Esta información del ítem va a ir a través del jugador. A partir de aquí ahora podemos hacer las cosas con él. Lo que queremos hacer es obviamente que necesitamos restar la cantidad de monedas tiene el jugador. Tratemos de hacer eso. Ahora puedes hacerlo tú mismo para practicar, porque creo que puedes hacerlo tú mismo. Ahora bien, si no recuerdas cómo hacerlo, hagámoslo juntos. Entonces puedes tomar la cantidad de monedas que tienes ahora mismo y luego decir menos para restar Entonces tenemos el costo del artículo aquí si arrastras desde aquí y dices break item info. Ahora tenemos el costo del artículo. Podemos decir la cantidad de puntos que tienes menos el costo por esto. Podemos tomar esta cantidad de monedas y ponerla de nuevo a este nuevo precio o esta nueva cantidad de monedas que tenemos. Sólo vamos a dar click aquí. Ocultar pines no conectados. Sólo tienes que seguir adelante y hacerlo más estructurado así. También puedes imprimir una cuerda. En realidad no vamos a imprimir una cadena. Simplemente podemos actualizar la interfaz de usuario al instante. Hagámoslo así aquí arriba. Yo sólo voy a copiar esto. Actualizar monedas, cantidad I. voy a iniciar sesión así. Vamos a compilar. Veamos qué pasa si hago clic en play. Tengo 60. Si compro algo por 23, me quedan 37. Vuelvo a comprar por 34, me quedan tres. Y si hago clic aquí, pueden ver que no puedo seguir comprando. Porque recuerden, ya comprobamos aquí si el jugador tiene suficientes monedas o no. No podemos comprar el artículo si no tenemos suficientes monedas. Eso está funcionando muy bien. Ahora, el problema ahora mismo es cuando compro, se puede ver que los botones no se leen. Parece que todavía tengo suficientes monedas para esta, cosa que no tengo. También actualicemos los botones. Si voy al controlador del reproductor. Vamos a abrir el controlador del reproductor. Y recuerda dentro de aquí hicimos esta función llamada actualizar artículo de tienda por color de texto. Llamémosle a éste. Volvamos al jugador. Tomemos controlador Plegado aquí Llamemos a las actualizaciones tarjeta de artículo de trabajo por color de texto. Déjanos enchufarlo aquí. Debe actualizarlo cada vez que compramos. Ahora si hago clic en Play y compro algo, puedes ver que se vuelven rojos. Y realmente no puedo comprarlos. Y están discapacitados. Si compro este, todos se vuelven rojos porque no tengo suficientes puntos ahora que la lógica está funcionando muy bien. 75. 8.11 Actualización de la cantidad de artículos comprados: Ahora es el momento de actualizar cuántos artículos hemos comprado. Porque recuerden, hicimos este llamado Artículos Comprados. Y necesitamos almacenar cuántos artículos has comprado durante el juego. También aquí cuando hacemos clic en play y compramos algo, realmente no te muestra que has comprado algo porque todavía es cero por aquí. Necesitamos actualizar esta información para hacer. No recuerdo dónde usamos este. Si solo quieres intentar recordar dónde usaste algo, siempre puedes escribir, dar clic y encontrar referencias. Y podemos ver que dice que no se han encontrado resultados. Y esto se debe a que sólo está buscando dentro de este plano Pero si haces clic en este pequeño icono , buscará en todos los planos Haga doble clic en éste. Puedes ver que lo hemos usado aquí dentro de la tarjeta de artículo de la tienda para actualizar el texto aquí de cuántos artículos hemos comprado. Lo hemos usado por aquí para actualizar cuántos artículos hemos comprado. Solo volvamos al jugador y aquí cada vez que compremos y actualicemos el botón. Antes de actualizar el botón, en realidad voy a editar el mapa. Toma este mapa aquí, arrástralo y di Agregar. Ahora queremos agregar un artículo más al mapa, porque ahora hemos comprado un artículo. Lo que puedes hacer es volver a tomar esto, pegarlo, porque realmente no puedes agregar información en este momento. Lo que hay que hacer es que encontremos y tengamos esta función. Lo que intentas hacer es que estás tratando encontrar el artículo que ya está dentro de él. Si solo escribes un número aquí, si escribes, por ejemplo, uno, va a sobrescribir la información que ya tienes dentro de aquí Digamos que era la corona dorada que estaba dentro de aquí. Si solo escribes uno, será uno para siempre porque cada vez que el jugador compre será uno. Se anulará este artículo aquí. Tenemos que seguir actualizándolo con una mayor información. Ahora necesitamos encontrar el elemento primero dentro de la matriz o dentro del mapa para encontrar el elemento. Recuerda, ya tenemos el nombre. Si solo lo tomo aquí ahora puedo usar este nombre del ítem y podemos encontrar este ítem dentro de este mapa. Una vez que encontremos el artículo, ahora sabemos cuántos de este artículo tenemos hasta el momento. Esta cantidad aquí, lo que quiero hacer es que quiero tomar este número más él con uno más uno. Ahora estamos agregando uno a los artículos que ya compramos. Entonces puedes enchufarlo dentro de aquí. Además, recuerda que también necesitas enchufar el nombre aquí. Sólo vamos a arrastrarlo desde aquí. Conéctalo, y otra vez, solo haz algunas notas espejadas Se ve bien. Y yo sólo voy a enchufar este de aquí así y este de aquí abajo. ¿Bien? Lo que básicamente estamos haciendo es que primero estamos encontrando el elemento dentro de este mapa, y luego sabemos cuántos ya hemos comprado y estamos agregando uno encima de él y luego lo estamos volviendo a poner en el mapa. No perdemos esa información. Das click en play y pulsas en por algo y ves que sigue diciendo cero. Esto se debe a que no hemos actualizado la interfaz de usuario. La interfaz de usuario está dentro del artículo de la tienda, Cod, y es este texto aquí que necesitas actualizar una vez más, porque esta parte de aquí solo se actualiza cada vez que creamos el Cod y ya no se actualiza. Podemos hacer un evento personalizado aquí abajo y voy a hacer un evento personalizado, actualizar los artículos comprados UI. Lo que podemos hacer aquí, básicamente queremos establecer el texto, este texto aquí. Yo sólo voy a controlar C, controlar V aquí abajo. Vamos a enchufarlo. Básicamente, solo queremos hacer lo mismo que nosotros hicimos por aquí. Solo controlemos x para sujetarlo y controlar V para pegarlo aquí abajo. Yo sólo voy a conectarlo aquí. En lugar de tener este código aquí arriba, básicamente podemos simplemente eliminar este y agregar este. Actualizar elementos, en cambio solo lo agrego aquí, actualizo elementos I. Básicamente, la razón por que lo escribimos aquí en la construcción de inicio, juego o evento es porque nos estamos asegurando de que tenemos esta información correcta. Siempre que abrimos el juego y echamos un vistazo a esto, esta es la razón por la que lo sumamos ahí arriba. Porque si por ejemplo, digamos que tienes un sistema de carga y guardado en el futuro y cierras el juego cada vez que lo abres, esto volverá a correr y actualizará tu información con lo que hayas guardado. Eso es muy importante tenerlo. Bien, entonces tenemos estos elementos de actualización, pero UI, necesitamos ejecutarlo desde el jugador si regresas y necesitamos ejecutarlo después de que agreguemos el ítem a este mapa. Ahora lo que necesitamos es que necesitamos una referencia a los widgets de esta tarjeta de artículo de tienda porque ahora necesitamos usar este. Actualizar elementos, poner la interfaz de usuario. Pero como pueden ver, en realidad no tenemos una referencia a ello. Tenemos esta llamada tarjetas de artículos de tienda y básicamente podemos usarla para encontrar un artículo. Pero de nuevo, en realidad no tenemos esta información fuera de aquí. Necesitamos una forma de hacer referencia a esta tarjeta. Ahora puedes hacer esto de dos maneras. Puedes o bien aquí en el controlador Player, básicamente puedes hacer un evento personalizado llamado, por ejemplo, sets, tarjeta de artículo de tienda interactuada o como quieras llamarlo Básicamente solo agrega el artículo artículo de la tienda, Cod. De nuevo, básicamente puedes simplemente llamarlo desde aquí, usa el controlador del reproductor, Necesitamos tener una referencia a ello aquí arriba. Básicamente puedes configurarlo a través del controlador del reproductor. Y desde el jugador, podemos usar esta variable aquí para actualizar realmente esta carta en lugar de hacerlo de esta manera. Por ahora, quiero probar el otro método. El otro método básicamente, es que solo puedes volver al O al jugador aquí para el artículo de compra. Solo agreguemos una nueva variable. Vamos a llamarlo comprarlo Cod. Siempre podemos cambiar de esta manera si en el futuro nos enteramos de que podríamos convertirlo en algo mejor. Pero por ahora, busquemos el ítem Cod. Sigue adelante y selecciónalo, vuelve a compilar en el artículo de la tienda. Veamos por aquí en el artículo de compra. Siempre que compramos algo, quiero establecer la referencia a uno mismo y decir yo. Básicamente estamos definiendo este cordón de artículo de tienda para que sea esta tarjeta en la que estamos ahora mismo. Esto es lo que quiere decir yo. Ahora esta información, la tenemos cada vez que compramos un artículo, cada vez que agregamos el artículo a los artículos pero mapa ahora podemos llamar elementos de actualización pero la interfaz de usuario arrastra desde aquí y decir elementos de actualización. Pero sigo adelante y conecto, es así otra vez. Puede hacer doble clic para hacer un nodo de ruta posterior. Siempre que se haga eso, esto ahora debería actualizar la interfaz de usuario. Y luego sigue adelante y enchufa esta actualización artículo de la tienda Cod por color de texto de nuevo, guarda todo. Y ahora vamos a jugar y a ver qué pasa si compro una de las antorchas. Mira, tengo uno. Si vuelvo a comprar uno, tengo dos. Ahora está calculando correctamente. Ahora si me doy mucho más dinero, así que si vuelvo al jugador y dentro de aquí la cantidad de monedas, solo la pongo a algo como mil o 10,000 100,000 o lo que sea. Aquí está. Ahora puedes ver si solo sigo comprando, solo quiero ver si funciona y está funcionando correctamente. Puedes seguir comprando. Y se puede ver que la interfaz de usuario se queda igual. La interfaz de usuario no está cambiando la posición del texto y así sucesivamente. Todo está funcionando muy bien y también el dinero calculando correctamente. Entonces ahora eso está funcionando a pleno. 76. 8.12 Crea puntos de aparición de objetos: Ahora sigamos adelante y sumemos los puntos de generación de artículos. Lo que quiero hacer es que cada vez que compre algo, quiero generar estos artículos en el mundo Y esta es básicamente la misma idea que el licor de galletas. Es la misma idea donde compras algo y se genera aquí en la pantalla, creo que es un poco más interesante. Así que sigamos adelante y hagamos, o hagamos algunos puntos de pintura dentro de aquí. Recuerden que ya hicimos un punto para el enemigo que está por aquí. Solo usemos el mismo método. Entonces tenemos al enemigo y tenemos la base del punto de desove. Esta es la clase padre, así que solo voy a hacer clic derecho y crear una clase Looprint hijo Podemos llamar a éste BP it, Spawn Point. Ahora bien, este es el punto puntual. ¿Qué artículo vamos a engendrar? Básicamente podemos colocarlo en el mundo y podemos simplemente establecer Y20, está en el frente y solo voy a ponerlo en uno para que esté frente a las fichas. Podemos ponerle algo aquí, guardar todo. Y sólo voy a sostener Alt y arrastrar para copiarlo. Ahora puedes ver que tenemos dos puntos de engendro, pero ¿cómo podemos elegir si es la corona de sujeción la que debería desovar aquí o si es otro elemento que debería desovar Podemos hacer eso exponiéndoles una variable. Lo que podemos hacer es volver a la base del punto de desove dentro de aquí Lo que podemos hacer es crear una nueva variable. Podemos llamarlo nombre o también podemos simplemente llamarlo en realidad nombre de punto de desove Creo que eso es un poco más descriptivo a este punto. Podemos cambiarlo en una cadena, guardar. Recuerda si haces clic en Instancia Editable y Exponer en Spawn Ya usamos esto cuando agregamos la información a las tarjetas de artículos. Cuando haces esto y compilas, puedes ver aquí dentro del mundo, tienes este pin por aquí, el nombre del punto de desove Esta es la misma variable que esta porque la hiciste a instancia editable y exponer en spawn . Aparece aquí arriba. Lo que podemos hacer con éste es que podemos dar click en el primero, por ejemplo, podemos llamarlo, veamos qué elementos tenemos. Tenemos la P. sólo voy a usar la pluma ligera. El primero debería ser la luz. Escribe el nombre con precisión. Recuerde que este nombre debe ser el mismo que el de la tabla de datos. Sea cual sea el nombre que tengas aquí, tiene que ser el mismo que aquí afuera. El segundo es la antorcha. Ahora tenemos ambos puntos de desove. Ahora sabemos qué artículos deben desovar dónde. Ahora solo nos falta la lógica, y vamos a estar haciendo eso en el próximo par de lecciones. Pero ahora al menos tenemos los puntos de engendro con los que trabajar. Vamos a saltar a la siguiente lección. 77. 8.13 Generación del artículo comprado: Bien, ahora sigamos adelante y engendremos el artículo. Tratemos de trabajar al revés a partir de ésta. Ahora, cada vez que engendro artículos, me gustaría trabajar hacia atrás porque tiene más sentido cuándo o dónde necesitamos agregar nuestros eventos y funciones para el desove Recuerda, uso el Player Controller para generar cosas en el mundo Entonces si entro de aquí, ya hicimos este actor spawn aquí Actor de engendro. Mantengámonos consistentes y hagámoslo dentro de aquí. Solo voy a hacer directamente un nuevo evento personalizado. Llamemos a esto un elemento de generación. Bien, para este, de nuevo, necesitamos usar un actor spawn de clase y seleccionado para el ítem que queremos engendrar Realmente depende de cuál sea. Ahora bien, esto está recibiendo un error. Necesito desactivar esto. Dependiendo del artículo que compremos, este es el artículo que queremos generar Realmente no podemos establecer un valor estático, solo necesitamos arrastrarlo hasta aquí. Arrastra esto de nuevo, voy a llamar a este único ítem. En cuanto a la ubicación del artículo, realmente no necesito usar una transformación. Entonces lo que voy a hacer es voy a decir hacer. Siempre que digas make transform, esto es básicamente porque quiero ver los valores de ubicación, rotación y escala. Es por ello que utilizamos make. Ahora puedes arrastrar esta ubicación al evento. Por lo que crea una nota alfiler para ello. Y sólo voy a llamarlo lugar de desove porque no me interesa realmente la rotación y la escala, va a quedar igual Solo me interesa la ubicación en la que quiero generar el artículo Ahora bien, este objeto de spawn, ¿ dónde tiene más sentido jugar a este evento o llamar a este evento El lugar sería cada vez que compramos un artículo, calculamos el precio sobre en el jugador. Siempre que compramos el artículo, lo agregamos a la variable o al mapa aquí y actualizamos los botones. Después de eso puedo engendrarlo en el mundo. Básicamente el desove está en el controlador Player, así que necesito el Player Controller nuevamente. O puedes arrastrar desde aquí si lo deseas. Y se puede decir spawn item, provide and selective. Ahora hay que especificar de qué ítem estás hablando. Ahora ya tenemos esta clase de aquí. Sólo voy a romper esta una vez más. Toma la clase, conéctala aquí y oculta los pines no conectados Yo sólo voy a acercarlo aquí, haga doble clic para hacer un nodo. Ahora para la ubicación de desove, necesitamos ser más específicos aquí Porque necesitamos haber visto o la ubicación de este actor aquí, los artículos engendran punto Siempre puedes volver al modo de juego y echar un vistazo a cómo lo hacíamos antes. Si volvemos a la jugada de inicio, usamos esta. Consigue actor de clase. Y recuerda esta función, consigue actor de clase, consigue cualquier cosa que ya esté engendrada en el mundo cuando haces clic en play Porque si dices que consigas actor de clase y tienes esto dentro del nivel ahora mismo, te va a dar una época. Recuerden, esta función sólo consigue al actor que ya está engendrado en el mundo Ya los hemos engendrado. Así que en realidad podemos usarlo, conseguir actor de clase. Vamos a hacerlo dentro de aquí porque en realidad este no es el método que necesitamos usar get actor de clase. Podemos tomar este básicamente decimos punto de generación y podemos seleccionar el punto de generación del elemento que podamos arrastrar desde aquí y decir obtener ubicación del actor Ahora estamos obteniendo la ubicación del actor, que es esta ubicación aquí. Y podemos enchufarlo Ahora vamos a ver qué pasa. Sólo podemos hacer click en play y básicamente trato de comprar algo. Nada está desove y en realidad es el correcto. Sólo me pregunto por qué no es desove. Veamos si en realidad agregamos los artículos. Este podría ser el problema en estos momentos. Si lo abrimos, vaya a la ventana, puedo ver que no tenemos ningún artículo En realidad voy a hacer eso ahora. Para todos los artículos que creamos anteriormente. Por ejemplo la Corona del Mal, necesitamos seleccionar el sprite fuente Adelante y selecciónala aquí, así aparece aquí, compile. Vaya al siguiente , Gran mago, sombreros, haga clic en los componentes de render seleccionados aquí, compile a continuación. Esta es la base de artículos, por lo que realmente no necesitamos agregar nada aquí. Yendo a la Corona del Rey. Y en realidad podemos hacerlo desde aquí en vez de hacer clic aquí arriba. El siguiente es la Corona del Rey. Bien, este fue el último. Ahora los he sumado todos. Y sólo voy a seguir adelante y dar clic en Compilar para todos ellos para asegurarme de que todo esté funcionando como se esperaba. Bien, cierra todo, guarda todo. Y hagamos clic en Jugar de nuevo por la Pluma Ligera. Ahora se puede ver que la pluma ligera está desove. Y si compro la antorcha, la antorcha también está desove. Ambos están respondiendo. Están desove en el mismo lugar. Pero sabemos que este punto de dolor está funcionando. Ahora en las siguientes tres lecciones, voy a mostrarles tres métodos sobre cómo podemos engendrarlos de manera eficiente Lo que quiero hacer, básicamente, es a partir de este punto, queremos generar todos los artículos, pero por ahora, todo está bien Ahora bien, si quieres reducir el tamaño del ítem que está generando, ahora aquí en la base de ítems básicamente puedes hacer es en esta escala, para este ítem, puedes hacer click en el candado Cambia los tres valores a la vez. Y si escribo 0.5 hago clic en play y compro algo. Se puede ver que el artículo es más pequeño ahora. Ahora para el Em, creo que voy a ir con la escala de 0.25 porque los iconos son muy grandes. Si hago clic en jugar ahora y engendro algo, puedes ver que este es el tamaño que me gusta, el tamaño de este Siempre puedes tener un Bitloga, pero vamos a tener muchos artículos Creo que este es un buen tamaño para ello. Bien, vamos a guardar todo, y pasemos al siguiente. 78. 8.14 Lógica de desove: Cómo en las siguientes tres lecciones voy a mostrarte cómo podemos hacer estos métodos de desove Ahora el primero va a ser fácil y luego vamos a algo intermedio, y luego algo avanzado. Espero que te quedes conmigo por todos ellos. Empecemos con este, que es el método fácil. Ahora para el desove, voy a hacer eso dentro del modo de juego porque aquí es básicamente donde estamos llamando a los puntos de desove, donde los definimos Déjame abrir el modo de juego. Ya definimos el punto de pintura del enemigo. Ahora es el momento de éste ahora. En lugar de hacerlo aquí, vamos a crear una función para ello. Porque va a ser un poco más grande que solo hacer esto aquí. Déjame simplemente hacer una función fuera de aquí. Déjame llamarlo set items, points. Normalmente tengo una delante de ellos para función, y solo voy a hacerlo aquí para mantenerme consistente para esta también. Compilar y guardar ahora para éste. Lo que puedes hacer ahora antes de que empecemos , solo para que no nos olvidemos, quiero llamar aquí a los Spawtpoints, arrastrar la función hacia aquí, seguir adelante y Y entonces ahora funciona, ¿de acuerdo? Entonces ahora tenemos que hacer algo dentro de esta función. Lo que quiero hacer primero es que quiero conseguir todos los puntos de St. Entonces para hacer eso, digamos conseguir a todos los actores de clase. Recuerda esta función, solo puedes usarla para cosas que ya están engendradas dentro, fuera de aquí Y ya tenemos puntos de St. dentro de aquí. Ahora de manera realista tendremos un punto de St. por cada ítem. Entonces tendremos mucho más. Vaya, aquí vamos a tener muchos más puntos de España como este Pero por ahora, solo eliminemos todos esos. Y sólo me voy a quedar con dos. Siempre que este método funcione, sólo voy a copiar todo esto. Y serán como 5 segundos de trabajo por ahora. Solo tomemos estos dos y trabajemos con esos. Digamos que consigamos a todos los actores de clase, y busquemos el punto de spa de artículo, este. Y debería obtener ambos de estos. Si quieres ver lo que realmente obtiene, siempre puedes imprimir cadena que puedes arrastrar desde aquí y decir longitud, para que puedas ver. ¿Cuántos puntos de desove obtuvimos? Debería decir dos. Si haces clic en play, dice dos aquí arriba. Si lo puedes ver, sabemos ahora que obtiene ambos puntos S. Impresionante. Lo que podemos hacer ahora es que podemos arrastrar de aquí y decir cuatro cada uno. Ahora podemos hacer algo con cada uno de esos puntos de spa. Lo que queremos hacer es que básicamente queremos definir la ubicación. Porque necesitamos la ubicación dentro del jugador. Cada vez que generamos un objeto, necesitamos la ubicación del punto de generación para el siguiente elemento que queremos generar Lo que quiero hacer es que no quiero generar todos los artículos aquí uno encima del otro Lo que quiero hacer aquí es que quiero generar artículos en una línea. Quiero generar el primer ítem aquí Quiero engendrar el segundo ítem aquí. Tercer punto aquí, cuarto, quinto, seis, y así sucesivamente. Ahora, puedes hacerlo así, no es un problema. Pero imagina si tienes 200 artículos para el primer artículo, tienes 200 para el segundo. Todo tu nivel va a ser spam con actores. No creo que sea un buen método, así que sólo voy a eliminar todos esos. Pero básicamente esto es lo que estamos tratando de hacer. Estamos tratando de generar todos los artículos en una línea aquí. Intentemos hacerlo. Volvamos ahora al modo de juego, lo que podamos hacer dentro de aquí, realmente depende de qué elemento necesitamos generar Recuerde, para cada punto de desove hicimos la variable de nombre de punto España que expusimos y escribimos pluma ligera Arrastremos de este y busquemos el nombre del punto de generación. Adelante, consigue esa variable. Ahora arrastra desde aquí y di switch on string. Ahora bien, esto es igual que antes donde usamos el switch on enumeration, switch on string, puedes hacerlo también Haga clic en el signo más para agregar pines. El primero, el primer elemento que tenemos es la antorcha, o en realidad la pluma ligera. Entonces tenemos la antorcha, tenemos estos dos compilados. Ahora lo que podemos hacer aquí, si es la pluma ligera, queremos usar este punto. Es una antorcha, queremos usar este punto punto. Empecemos con una pluma ligera. Lo que queremos hacer es primero vamos a crear una matriz. Porque realmente no podemos hacer esto sin una matriz para almacenar las ubicaciones que encontramos. Déjame cambiar esto en un vector. Déjenme llamar a esto puntos de desove de padre ligero. Vamos a sacar esa de aquí. Ahora necesitamos cambiarlo en una matriz porque serán múltiples ubicaciones que necesitamos almacenar, que es esta fila aquí de artículos que necesitamos generar En lugar de un vector, puedes hacer clic derecho en él. Lo cambias a un vector, o de nuevo, siempre puedes hacer clic en él y cambiarlo aquí arriba si así lo deseas. Ahora tenemos esta matriz. Y lo que necesitamos usar con él es la función add. Entonces necesitamos agregar una ubicación y necesitamos agregarla dentro de aquí. Bien, Ahora, depende de qué ubicaciones necesitamos agregar. ¿Cómo hacemos esto? ¿Cómo obtengo diferentes ubicaciones simplemente desde un punto de falla Porque no voy a sumar más puntos de spawn. Este es el único punto de desove que voy a agregar para la pluma ligera, pero quiero muchos artículos aquí que necesito desovar Lo que podemos hacer es dejarme hacerlo y en realidad puedes ver lo fácil que es. En primer lugar, obviamente necesitamos la ubicación de este punto de España. Primero, voy a arrastrar esto y decirlo en el lugar. Ahora tengo la ubicación de este punto de desove. Lo que podemos hacer con este es que puedo hacer un bucle de cuatro bucles. Podemos seleccionar este bucle de cuatro aquí. Ahora depende de cuántos artículos quieras generar primero Empecemos con cinco artículos. Aquí vamos a escribir cuatro. El motivo es que el primer índice en un bucle es 00, viene como 101234 Es decir, cinco ítems, 0-4 Lo que tenemos que hacer es que necesitamos obtener esta ubicación de Hechos Ahora tienes que pensar que vas a generar los artículos de esta manera Hay que prestar atención a en qué eje se encuentra. Este es el eje x, la flecha roja es el eje X. Si haces clic en él y arrastras el ítem, básicamente puedes ver aquí abajo en la ubicación, en el panel de detalles que vas en la dirección más del eje x. Esto es básicamente lo que estamos tratando de hacer. No quiero afectar a la Z y tampoco quiero afectar a la Y. Yo solo quiero afectar a la X. Es por eso que podemos tomar esto y podemos decir break vector porque solo queremos afectar al eje x. También para éste. Como no puedo iniciar sesión esto aquí, voy a arrastrar de esto y decir make vector. Ahora también puedo ver los x, y, y z y básicamente podemos arrastrar en esta información aquí. Ahora para la Y, para la z, no quiero cambiar nada. No quiero afectarlos, solo quiero afectar a la X. Ahora lo que puedo hacer es que pueda decir la pérdida X tal vez como diez unidades. Entonces básicamente lo que estamos haciendo es que estamos tomando esta ubicación y luego estamos agregando diez unidades. El siguiente ítem estará aquí en su lugar. Volvamos. Estamos diciendo diez, y luego lo estamos volviendo a enchufar Estamos tomando esta ubicación, ya lo es. En este punto, estamos agregando diez a la x y luego la volvemos a enchufar y esta es nuestra nueva ubicación Obviamente, no podemos simplemente enchufar diez y simplemente mantener diez dentro de aquí, porque esto va a ser lo mismo, básicamente va a agregar artículos a aquí en su lugar, todos ellos. Lo que tenemos que hacer, necesitamos volver a usar este índice. El índice va a ser cero primero, luego 123. Lo que podemos hacer es que básicamente podemos multiplicar este número aquí. En lugar de sólo escribir diez, podemos arrastrarlo, multiplicarlo, seleccionarlo. Lo que podemos decir aquí es que podemos decir diez multiplicado por índice aquí. Y eso debería funcionar bien. Lo que estamos diciendo es diez multiplicado por cero primero, que será solo este punto de engendro Estamos diciendo diez multiplicado por uno, estamos diciendo x más diez. Entonces el siguiente ítem estaría aquí. Ahora otra vez, va a ir al índice de dos. Va a decir diez veces dos. Eso son 20. Va a decir x más 20. El siguiente ítem estará aquí, y así sucesivamente. Simplemente recorrerá y agregará ubicaciones como esta aquí. Vamos a eliminar todo esto. Y ahora podemos conectarlo. De hecho podemos probarlo y ver si eso funciona. Si sólo guardo aquí. Y podemos intentar engendrarlo en el jugador, en el objeto spawn Obviamente necesitamos eliminar esto ahora que creamos antes y necesitamos agregar las ubicaciones desde el modo de juego. Realmente no tengo el modo de juego aquí, vamos a crear una referencia rápida al mismo. Si digo obtener modo de juego, recuerda que esto está en el Begin Play. Vamos a conseguir el modo de juego. Obtener referencia del modo de juego porque recuerda que ya hicimos el plano insterface Podemos hacer clic derecho, promover esto a una variable llamada modo de juego como esta. Yo no lo conecté. Déjame reorganizar esto ahora. Podemos tomar el modo de juego. Sólo voy a acercar esto. Podemos tomar los puntos de desove de vuelo, podemos conseguirlos aquí. También podemos decir get porque necesitamos conseguir el punto España. Obtener una copia. Ahora, realmente depende del punto de generación que necesites obtener, porque depende de los artículos que hayas comprado En realidad, lo que tengo que hacer aquí es que solo tengo que decir encontrar. Porque va a encontrar el artículo que has comprado. Corresponde al ítem, el punto de giro aquí. Ahora encuentra el artículo que has comprado. Y realmente depende de cuántos artículos hayas comprado. Ahora ya que el artículo comprado siempre será uno arriba, porque estamos plusing o estamos agregando uno aquí Tenemos que tomar esto y decir menos uno, porque recuerden que empezamos en el índice cero. No empezamos en el índice uno. Cuando hayas comprado un artículo, necesitamos menos esto por uno y luego enchufarlo, porque el primer artículo se generará en el índice cero, siempre necesitamos decir menos uno compilar y luego simplemente enchufar esto Da clic en Play, intenta comprar plumas ligeras. Ahora puedes ver que está funcionando. En realidad estamos desove en una línea y ya no va a desovar Porque se puede ver que aparece aquí arriba. Eso es porque solo lo definimos para que sea 0-4 Ahora siempre puedes escribir 99 y esto generará 100 artículos Ahora irá a la derecha 100 veces antes de que se detenga. Ahora se puede ver que esto está funcionando muy bien. Ahora bien, si quieres hacerlo por todos los demás artículos, obviamente tienes que llevarte todo esto. Tienes que copiar y pegar. Y hay que hacer esto aquí así antes. Siempre que se complete el primero aquí, también hay que hacerlo para la antorcha. En realidad, también necesitamos copiar esta. Y tenemos que hacer esto también. Se puede ver aquí, esto es mucho copiado de pasta. Esto se puede hacer mucho mejor. Porque recuerda que tenemos, digamos que tenemos 50 artículos en el juego. Tienes que copiar esto 50 veces para todos los artículos. Se puede ver que esto no es realmente una buena práctica de programación. Nunca haría esto en mi juego. Yo sólo voy a borrar esto. Esta fue la primera. Este es el método más fácil en el que podemos hacerlo. Tengo un método que es un poco más caliente. Sigamos en la siguiente lección. 79. 8.15 Lógica de desove - Intermedio: Bien, así que ahora estamos de vuelta. Y lo que quiero hacer ahora, antes de cambiar todo este método, quiero mejorarlo un poco. Porque vamos a utilizar este método mejorado. No vamos a eliminar todas las cosas que estamos haciendo ahora mismo. Simplemente continuemos con lo que tenemos actualmente. Ahora, necesito cambiar esto más tarde, pero por ahora solo quedémoslo y quedemos con todo esto. Pero lo que quiero hacer ahora mismo es si hago clic en Jugar y comprar artículos. Yo también, siempre que llegue a cierta cantidad de punto, quiero hacerlo por en la siguiente fila. No compra en una sola fila, sino que también compra en la segunda fila Ahora puedo ver este errores porque solo lo hemos establecido en cuatro en el índice. Pero como pueden ver, si solo sigo comprando en esta fila, puede llegar demasiado tiempo. Lo que quiero hacer también es que automáticamente va a la siguiente fila y compra o genera artículos ahí Primero le agreguemos algo de lógica, solo escribamos cinco o cuatro aquí. Al igual que antes, necesito saber cuándo está terminado este bucle. Vamos a hacer clic derecho sobre este. Podemos promoverlo a una variable local. La diferencia entre una variable y una variable local es una variable local que está dentro de esta función en la que se encuentra ahora mismo. Estamos dentro de esta función set item spawn points. Si creo un punto España local y vuelvo al gráfico de eventos, no podré ver la variable aquí porque solo existe dentro de esta función. Básicamente necesitábamos hacer algo de lógica dentro de aquí, pero realmente no necesitamos que esté aquí afuera. Solo estamos usando esto para cuando el bucle esté terminado o no, podemos hacer clic derecho aquí, promocionado a una variable local. Normalmente los llamo locales para empezar, llamemos a esto un bucle, último índice. Debido a que este es el último índice del bucle, también necesitamos hacer otra variable local. Voy a cambiarlo a un entero. Nuevamente, no es una normal errante. El segundo, solo quiero llamarlo local cantidad de filas. Necesito saber en cuántas filas necesito que estén los artículos. ¿Lo necesito en una fila o lo necesito en dos filas, tres filas, y así sucesivamente Por ahora, vamos a sumar tres filas. Si compilo, haga clic en la variable y por aquí en el valor predeterminado, justo a la derecha tres. Ahora queremos tres filas. Lo que quiero hacer aquí es que quiero tomar el bucle local. Último índice quiero decir, es esto igual al índice ahora mismo de aquí? Porque este índice aquí está contando hacia arriba. Y puedes ver que si imprimes una cadena, siempre puedes imprimir una cuerda si hay algo que no entiendes o hay algo que quieres. Claridad cuatro, solo puedes arrastrarlo hasta aquí y hacer clic en reproducir. Ahora puedes ver que imprime el número. Y si solo lo hago más largo aquí para que podamos ver lo que está pasando y hacer que se lea. Haga clic en Reproducir. Se puede ver en el número 01234 Cuenta hacia arriba si esto es igual a este índice perdido de bucle local, que es este. Si acabamos de compilar, se puede ver que está establecido cuatro ahora mismo si esto es igual a esto, sabemos que este es el último bucle por el que ha pasado. Sólo tienes que conectar esta otra vez. Si eso es cierto, queremos tomar esta cantidad de filas con las que queremos compararla. ¿Cuántas veces se ejecutó este bucle? Digamos que aquí necesitas tres filas. Hay que ejecutar el bucle tres veces, porque la primera vez que hace bucles y bucles a esta fila, entonces necesita hacer un bucle aquí y bucles aquí. Si hemos escrito la cantidad de rosa para que sea tres, necesita hacer un bucle tres veces. Voy a hacer otra vez una nueva variable. Llamemos a este contador de bucle local. Tomemos este contador de bucle local y digamos loss plus, porque necesitamos incrementarlo uno cada vez que termine el loop Este bucle aquí ahora está terminado. Si eso es cierto, necesitamos agregar uno al contador de bucle local. Tenemos que preguntar, ¿es este contador de bucle local, es menor que la cantidad de rosa? Si es menor, ahora mismo es menor porque la cantidad de rosa es tres y esta es sólo una. Volver atrás y bucle de nuevo. Si este contador de bucle es ahora tres, no volverá a hacer bucle porque este también es tres. Y vamos a detener el código. Solo sal y conecta esto aquí. Ahora bien, si es menor que la cantidad de filas, necesitamos volver a ejecutar el bucle. Tomemos esto cierto aquí y dejémoslo correr de nuevo al bucle. Tomemos aquí este pin de ejecución. Voy a hacer doble clic para hacer una nota de ruta trasera. Así que en realidad puedo verlo así. Ahora vamos atrás y volvemos a hacer un bucle de esto. Ahora si haces clic en jugar y compras. Se ve que no pasa nada. ¿Por qué no pasa nada aquí? Pero en realidad se puede ver que algo está pasando. Porque si compro cinco como aquí, y recuerdo establecer el último índice en cuatro, lo que significa que puedo generar cinco artículos para el sexto No va a faltar cinco por diez. No está molestando si F por 15, pero si compro 16, se puede ver que se sale bichos. Lo que está pasando ahora mismo es que estás generando los 15 artículos uno encima del otro, no vas a tomar la siguiente fila La razón es, recuerda que necesitas afectar el valor z porque la fila es básicamente el valor Z aquí, no hemos afectado al valor Z. Necesitas hacer algo con este valor z. Lo que tenemos que hacer es ver en qué dirección queremos ir. Ahora bien, si hago clic y arrastro esto hacia abajo, solo presta atención al valor z aquí en el panel de detalles. Si empujo esto hacia abajo, va en el menos de la z aquí. Lo que puedo hacer es tomar el valor z. Puedo decir menos. Sólo tenemos que hacerlo igual que antes. En realidad, si puedo tomar esto aquí y decir multiplicado igual que antes, voy a mover esto, en realidad voy a eliminarlo, porque realmente no necesitamos este. Siempre podemos copiar y pegar este aquí arriba si es necesario. Nuevamente, necesitamos multiplicarlo igual que antes. Digamos por diez. Y no es realmente el índice porque realmente no queremos multiplicarlo en el mismo bucle. Debido a que el primer bucle, el valor z es el mismo todo el camino. En el segundo bucle, el valor z es el mismo hasta el final. Aquí no va a cambiar todos los índices. En lugar de hacer esto, necesitamos hacer otra variable local. Llamemos a este multiplicador local del eje z. Ahora para el valor por defecto, se va a quedar cero porque no queremos multiplicarlo con nada. El primer bucle, entonces el primer bucle, todo esto es correcto. Vamos a conectarlo aquí. Todo está conectado. Ahora, dice que algo anda mal. El valor actual de un número válido, válido. No sé por qué está diciendo esto. Si haces clic en Archivo y refrescas todas las notas, no sé por qué está molestando así Simplemente arrastra y di multiplicar de nuevo. Voy a arrastrarlo aquí abajo en vez diciendo diez Dios, Y conectarlo una vez más y compilarlo. Y ahora está funcionando. No lo sé, solo fue un error aleatorio. Ahora tenemos esto conectado. Básicamente lo que tenemos que hacer es que necesitamos aumentar este multiplicador local del eje z. Porque para el primer bucle queremos que la z sea la misma hasta el final. Para el segundo bucle queremos que la z sea la misma en todo momento, y así sucesivamente. Cada bucle cambia la z. Podemos hacerlo por aquí. Tomemos el multiplicador z local cuando sepamos que vamos a repetir el bucle. Cuando esto es cierto, solo aumentemos esto uno más más conectado en uno más más conectado y volvamos al bucle así. Ahora debería funcionar si compilo y si hago clic en play. Y si compro la pluma ligera cinco veces seis veces, debería estar aquí abajo, lo cual es correcto. Y se puede ver que todo está funcionando correctamente. Ahora puedes ver lo genial que es que generemos todos estos artículos desde un solo punto de España Ahora no tienes que hacer spam tu mapa con muchos puntos de España. Esto está muy optimizado porque esto solo se ejecuta cada vez que comienzas tu juego. Porque va a almacenar todos estos puntos de España en una matriz que puedes usar más adelante para generar realmente los artículos. Vamos a guardar todo. Eso fue por ahora y vamos a ir en la siguiente y hacerla un poco más avanzada. Espero que sigas conmigo, pero lo que simplemente vamos a hacer es que nos vamos a deshacer de esta parte de aquí. Y te voy a mostrar cómo podemos hacer esto un poco más avanzado. Hagamos clic en Archivo, Guardar todo y pasemos al siguiente. 80. 8.16 Lógica de aparición - Avanzado: Ahora mismo, vamos a mejorar el código que hemos escrito aquí. Entonces esta es la última parte lo que podemos hacer. En lugar de hacer todo esto, permítanme simplemente borrar esta parte por ahora y también esta. Para este punto de ítems que obtenemos, vamos a hacer clic derecho aquí y promocionarlo a una variable local. Llamemos a este único elemento local, puntos de desove Ahora tenemos esos puntos de desove también. Antes de hacer todo esto, asegurémonos de que no sea cero. Solo nos estamos asegurando de que realmente tengamos algunos puntos de engendro y que el mapa realmente contenga puntos de desove Entonces arrastra desde aquí y decimos longitud, nos aseguramos de que esta longitud sea mayor que cero y luego podamos hacer una rama. Guau, nos estamos asegurando de que en realidad tengamos algunos puntos de generación Antes de hacer toda esta lógica, lo contrario no tendrá ningún sentido. Vamos a apartar esto de esto por ahora y seguir adelante y conectarlo Ahora, cuando le eches un vistazo a este, tienes que pensar en cómo puedes hacer que esto sea más pequeño que antes? En lugar de tomar esta copia de código y luego pegar aquí abajo, y luego conectarse y luego continuar Cómo puedes acortar este método aquí para que no tengas que copiar pegar lo que es diferente de este código a este código que necesitas cambiar Ahora lo primero que me viene a la mente es que le echo un vistazo a esta matriz porque primero hay que agregar las ubicaciones para los puntos de desove de plumas grandes Entonces hagamos uno nuevo. Simplemente haga clic en este control D para duplicar. El segundo son los puntos de desove de antorcha, creo que el segundo es la antorcha Sí, lo es. El segundo es la antorcha. En realidad necesitamos la antorcha aquí abajo donde hay que agregar los puntos de desove y no la pluma ligera Esta es la única diferencia. Ahora bien, para acortar esto nuevamente, recuerda usar el nodo select, Un nodo muy importante y potente que puedes arrastrar desde este y luego decir select Ahora puedes seleccionar la pluma o puedes seleccionar la antorcha, dependiendo a lo que conectes aquí. Ahora, ¿cómo sabemos cuál seleccionar dónde está eso? Nuevamente, donde se puede utilizar la enumeración. Si vuelvo en los elementos que puedo escribir, haga clic en Hacer una nueva enumeración de planos Y llamémosle a éste artículos. Vamos a abrir esta. Solo agreguemos algunos artículos. Ahora sólo voy a probar algo en. El primer artículo es pluma ligera. El segundo es Antorcha. Siempre podemos tratar de ver si eso funciona. Si no funciona, realmente no importa, entonces hemos aprendido algo de ello. Si vuelvo ahora, tengo esta enumeración. De hecho voy a añadir esta enumeración a este punto de España porque nosotros, nuevo, al igual que el nombre, necesitamos establecer la enumeración correctamente Vamos a abrir el punto de dolor de ítems, porque anteriormente agregamos esta variable item, o esta variable de nombre de punto spain a esta base de punto. aquí. Pero realmente no tiene sentido agregar una enumeración de elementos a la base de puntos de punto porque el enemigo realmente no la necesita ¿Por qué lo agregarías dentro de la base de punto punto? Porque recuerden el punto punto es el hijo de éste. No quiero agregar variables innecesarias donde realmente no las necesites en todos los demás actores. Sólo los necesitamos dentro de aquí. Vamos a agregarlo dentro de aquí. En su lugar, agreguemos una variable, llámala ítem. Déjame solo buscar artículos. Artículos. Así es como lo llamamos. Vaya y selecciónelo. Compilar. Volvamos a guardar todo. Exponer, Instancia, Editable. Exponer en spawn, compilar. Ahora si hago clic en él, puedo cambiar el artículo a pluma ligera. Y al siguiente puedo cambiarlo a Antorcha. Ahora tenemos esta información. Ahora si vuelvo a mis planos, abre mi modo de juego Qué podemos hacer dentro de aquí para obtener esta información. Recuerda, ya tenemos esta información aquí. Para que pueda tomar mi ítem local, puntos de generación, puedo decir que consigue Y sólo voy a conseguir el primero, luego voy a decir ítem y luego voy a encontrar mi enumeración Ahora adelante y enchufa esto aquí. Ahora los puedes volver a enchufar. Ahora se puede ver dependiendo de cuál sea este valor, va a seleccionar esos arrays. Si es la pluma ligera que has seleccionado aquí en la exposición de un engendro, va a seleccionar la matriz de plumas ligeras y así sucesivamente Puedo ver que va a funcionar bien. También aquí abajo para la ubicación del actor get, necesita un actor seguir adelante y copiar pegar esto y pegarlo por aquí. Así que eso funcionará igual bien después de que haya agregado los puntos de desove para el primero aquí, para el primero necesita El segundo cuando llegue al segundo por aquí. Ahora recuerda que preguntamos, ¿el contador de bucle local mayor que la cantidad de filas que deseas tener? Más pequeño, más grande si es más pequeño. Si eso es cierto, simplemente seguimos adelante y volvemos a dar vueltas. No obstante, si no es menor, significa que necesitamos detener el bucle porque hemos alcanzado la cantidad máxima de filas para esta, tenemos que ir a la siguiente. Lo que podemos hacer es que podemos tomar esto y podemos decir índice. Porque sabemos que necesitamos eliminar índice cero porque básicamente estamos usando el primer índice para que básicamente engendremos los elementos dentro de aquí, Eliminar el primer índice que es el índice cero Antes de que volvamos al siguiente punto de engendro, necesitamos asegurarnos de que esto no esté vacío Porque ¿qué pasa si llegas al último punto de desove? No queremos seguir dando un giro. Tenemos que arrastrar aquí y decir que no está vacío. Porque queremos hacer un bucle siempre que esto no esté vacío, hagamos una rama, adelante y la conectemos. Si no está vacío, queremos volver a hacer un bucle. Ahora recuerda, necesitamos restablecer el valor Z, porque de nuevo estamos en una nueva fila. Necesitamos restablecer todos los ajustes para el valor Z. Voy a ponerla a cero. Y luego para el contador de bucle local también, porque ahora estamos iniciando un nuevo contador de bucle, voy a ponerle 20 también. Déjame ver si hay algo más que necesitamos cambiar. Ahora para el índice de bucle local, en realidad, esto se queda igual porque tenemos la misma cantidad de elementos por fila. Realmente no necesitamos cambiar nada. Vamos a compilar y guardar todo. Ahora para este, básicamente vamos a enchufarlo de nuevo al bucle así. Nuevamente, haz doble clic sobre él para que podamos ver lo que estamos haciendo ahora. Veamos si realmente está funcionando. Ahora, antes de hacer clic en play y tratamos de hacer esto, puedes ver que está desove uno encima del otro No creo que sea un error aquí, porque recuerda en el jugador también eliges cómo realmente llamas a esto. Solo teníamos el punto de desove de plumas ligeras del que obtuvimos. Tú. En realidad también hay que hacer esto un poco más dinámico. Ahora otra vez, recuerda que tienes que obtener la ubicación aquí, la matriz, dependiendo de cuál sea el ítem para hacer este acto. Porque aquí tienes una cadena y lo que estás usando dentro del modo de juego es una enumeración Realmente no se pueden usar esos juntos. Tampoco se puede conectar una cadena a una enumeración. Si lo sacamos aquí, tenemos que convertirlo de alguna manera. Hagamos una nueva función aquí arriba. Llamemos a éste, consígalo puntos de desove. Esto sólo es obtener información. Recuerda configurarlo en puro, así se vuelve como una función verde. Aquí sólo estamos obteniendo información. Ahora para éste, lo que podríamos hacer, por ejemplo, podríamos buscar artículos. Podríamos usar esta enumeración como antes, y podemos decir encender la enumeración Y básicamente podemos asignar los puntos de spawn dependiendo de lo que estemos hablando, qué ítem hemos seleccionado El problema con esto es si necesitamos usar este, Consígalo hijo puntos. Si compila y vuelvo al jugador y tomo el modo de juego y digo que lo llamamos consigue puntos spa. Consigue puntos de spa. Traté de usar este. Si trato de enchufar esto aquí, puedes ver que dice que la cadena no es compatible con la enumeración de elementos Ahora podríamos agregar la enumeración de ítems dentro de la estructura Realmente no quiero hacer eso, pero puedes hacerlo si quieres. Ese también es un método que puede funcionar. Pero lo que quiero hacer, en lugar de convertir esto en una enumeración, vamos a convertirlo en una cadena Seleccione una cadena en su lugar, y llamémosla nombre del elemento. Eliminemos esta. Entonces podemos decir que encienda String. Vamos a agregarlos. Haciendo clic manualmente en el más. El primer elemento es la pluma ligera. El segundo ítem es el marrón dorado. Lo que podemos hacer es si es la pluma ligera, podemos hacer un nodo de retorno escribiendo retorno aquí, seleccionarlo y simplemente arrastrarlo hacia aquí. Sólo voy a llamar a esto puntos de engendro. Lo que podemos hacer es que básicamente podemos copiar y pegar esto aquí abajo, conectados y así. Bien, ahora tenemos que hacerlo por todos los puntos de spawn, pero por ahora solo veamos si funciona Y siempre podemos continuar. Si vuelvo al jugador, ahora tomo la variable de modo de juego y digo puntos items, y digo obtener items spon points Ahora puedo obtener los puntos de España, dependiendo del nombre del artículo. Sólo voy a arrastrar esto hasta aquí. Entonces estoy tomando los puntos de engendro y luego arrastrándolo hasta aquí arriba. Ahora podemos eliminar esta parte porque ahora se agrega dinámicamente. Y si hago clic en Play y compro plumas ligeras, si compro antorchas, sigue en el mismo lugar Veamos qué está pasando mal dentro de aquí. Entonces puedo ver que he escrito Corona de Oro por error y es Antorcha. Entonces este es probablemente el problema. Si hago clic aquí arriba, derecha, Antorcha otra vez. Si lo conecto de nuevo en cuando cambié el nombre y vuelvo a hacer clic en jugar y compro las plumas ligeras y compro la antorcha. Ya puedes ver que está funcionando perfectamente. Ahora puedo ver que también está desove en las tres filas que he elegido Ahora probemos y veamos si eso está funcionando. Si cambiamos la configuración, si voy al modo de juego, establecemos puntos de desove de elementos Si solo hago clic en la cantidad local de filas y cambio eso en dos filas, también para el contador de bucle. El último índice aquí, digamos que quería diez artículos en una fila. Aquí escribo nueve, porque recuerden que el índice de inicio es cero, Fycliconplay, compro las plumas ligeras, Puedes comprar diez Y se va a quedar aquí, pero el número 11 va en la siguiente fila. Ahora se puede ver que está funcionando perfectamente y puedo hacer lo mismo con la antorcha. Lo bueno es que siempre puedes eliminar uno y puedes colocarlo donde quieras. Puede hacer clic en Control Alt para duplicar. Puede volver a cambiarlo a antorcha así salvo. No creo que necesitemos más este nombre de punto para este. Probablemente lo vaya a quitar, pero volvamos a hacer clic en reproducir. Ahora puedes ver que están trabajando porque el primero fue Antorcha. Ahora solo comprobamos que el primero es Antorcha, el segundo es Pluma, y así sucesivamente. Todos ellos están funcionando correctamente. Ahora volvamos a la base de puntos de España o ésta. Eliminemos la instancia Editable y expongamos en spawn porque ya no la necesitamos. Volvamos al mando de reproducción. Voy a borrar todo esto y movamos todo esto juntos. Solo voy a crear algunas notas de ruta traseras para arreglar esto mucho mejor. Bien, así que ahora lo he reorganizado todo y acabo de hacer notas de reencaminamiento. Se ve mejor. Entonces lo que necesitamos ahora es que todos los demás puntos respondan. Sólo terminemos esta parte. Déjame borrar el primero de aquí abajo. Empecemos desde el principio. Lo que puedes hacer es simplemente arrastrar aquí y tienes que hacer, obviamente a la cantidad de artículos que tengas. Ahora mismo tenemos diez. Yo sólo voy a bajar, esto es 234. Básicamente tenemos que hacer un mapa más grande o tal vez necesitamos hacer más espacio. Sólo tienes que seguir adelante y copiar ocho de ellos. Bien, ahora tengo diez de ellos. Haga clic en el primero, asegúrese de que sea el primer elemento. Siempre puedes repasar y ver aquí cuáles tienes en qué orden. El primero es la pluma ligera. Entonces Antorcha seleccionando el primero como pluma ligera, nuevamente, necesitamos tener la enumeración de los artículos, Necesitamos agregarles los artículos La pluma ligera es la primera, Antorcha, y luego necesitamos la ruina del tiempo. El protector. Sólo voy a agregarlos todos aquí. El último para mí es la corona del mal. Ahora que los tengo de nuevo a todos, guárdalo todo. Ciérralo hacia abajo. Vayamos por aquí. Y entonces tenemos que cambiarlos todos aquí también. El primero es Antorcha. Se puede abrir esto. Voy a agregarlo a mi segundo monitor. Y ésta es la ruina del tiempo. En realidad, es justo en orden aquí. Básicamente podemos simplemente agregarlo en orden. El protector, así en el último, para mí aquí está la corona del mal. Todo debería funcionar bien. Ahora bien, si vuelvo al modo de juego, abre el modo de juego. Vamos a abrirla aquí arriba. Ahora tengo todas estas entradas que puedo enchufar valores en ellas. Duplicemos esta otra vez. Hay que hacer uno para cada uno de ellos, por ejemplo. El siguiente es la ruina de los puntos de desove del tiempo. Sólo tienes que seguir adelante y hacerlos todos y conectarlos aquí también. Este es el último para mí. El último es la corona de los malos puntos de desove. Voy a seguir adelante y agregar eso también. Nuevamente, solo asegurándome de que todo genial, reorganícelos así, eso debería estar bien Bien, ahora que tenemos esto agregado, vayamos al jugador y además asegurémonos de que no necesitamos hacer nada dentro de aquí. En el jugador aquí realmente obtener artículos, puntos de engendro, tenemos que hacerlo aquí también Sigue adelante y haz clic en el más un par de veces. Una vez más, eche un vistazo a sus matrices aquí y simplemente cámbielas en consecuencia. El tercero es Ruina del Tiempo. Asegúrate de haber escrito todo correctamente porque esto también se va a tomar de la tabla de datos Nombre ruina del tiempo. El otro es el protector. Sólo voy a agregarlos todos de nuevo. Nuevamente, esta es la última para mí, la corona del mal, y espero no haber escrito mal ninguna de ellas otra vez, solo para copiar esto un par de veces Esto es 678910. Entonces ahora los tenemos a todos. Sólo tienes que seguir adelante y enchufarlos a todos aquí una vez más. Y éste es el último para mí. Entonces adelante y conecta a todos ellos. Este es el último. Solo asegúrate de verificar dos veces. Si tienes un error aquí, solo tienes que verificar aquí que has hecho todo correctamente. Comprueba que estás enchufando todo esto correctamente, así juntos Y también asegúrate de tener, en el conjunto de puntos de engendro en los que has enchufado todo esto correctamente, has escrito los nombres correctamente dentro de la enumeración en los ítems aquí, son correspondientes a los nombres que tienes dentro de la tabla de datos Solo asegúrate de que todo esto sea correcto porque eso es muy, muy importante. Todo debería estar bien. Ahora si vuelvo al jugador, todo debería funcionar. Si hago clic en play, ahora compro algo. Vamos a probarlos a todos. Si son engendrados, significa que están trabajando Ahora necesito hacer el mapa un poco más grande, pero podemos hacerlo después. Pero ahora puedes ver puedo desovar la rosa que tengo sólo para 20 artículos Para que lo veas caja si tengo arriba de 20. Pero voy a aumentar el número a mucho más adelante. Pero como pueden ver, puedo comprar 20 de cada artículo. Se ve muy bien. Ahora ahora tenemos artículos desove a la cantidad de artículos que estamos comprando Todo está calculando correctamente, todo es perfecto. Ahora vamos a cerrarlo. Voy a reorganizar esto también, y podemos pasar a la siguiente lección 81. 8.17 Estructura de costos del artículo y tabla de datos: Bien, entonces ahora lo que vamos a hacer, vamos a aumentar los precios cada vez que compres algo aquí en la tienda. Se puede ver cada vez que compro algo en la tienda, el precio se mantiene igual. Y este no suele ser el caso en un juego ocioso o clicker, porque tiene que ser cada vez más difícil contrario este será un diseño de juego realmente malo y será un juego plano, así que necesitamos aumentar el precio Esto en realidad también es lo que sucede en Cookie Clicker, por ejemplo, si no lo has probado antes Entonces, por ejemplo, si compras más cursores, puedes ver los aumentos de precio y se pone más difícil Así que tenemos que hacer eso también para nuestra tienda. Tenemos que cambiar el precio estático. Vamos a cerrar esto. Ahora para esto, quiero hacer una nueva estructura que contenga todos los precios. Si vuelves a los planos, abre las estructuras. Hagamos una nueva estructura de planos para ésta. Voy a llamarlo costo del artículo. Ahora vamos a abrir éste. Lo que básicamente tenemos que hacer, necesitamos especificar el costo del artículo para cada artículo. Voy a cambiar esto a un entero. Al primero que podemos llamar costo de plumas ligeras. Solo tienes que enumerar todos los artículos que tienes. Ahora puedes ir a esta enumeración. Si no recuerdas los artículos, siempre puedes simplemente tenerlos aquí a un lado. Y puedes seguir adelante y escribir todos los nombres dentro de la estructura. Agrega una nueva variable copia esta pasada en. Agrega una nueva variable, copia esta, pegarla. Voy a hacerlo por todos ellos. Bien, este es el último para mí, y voy a agregar el último, y ahora los tenemos todos. Déjame cerrar este y guardar todo. Ahora lo que tenemos que hacer, vamos crear una tabla de datos a partir de esta. Siempre es bueno tener uno. Hagamos clic derecho, vayamos a Blueprints, hagamos una tabla de datos miscelánea en realidad y seleccionemos el costo del artículo Haga clic en Ok. Llame a un costo de artículo DT. Vamos a guardar todo ahora. Tenemos que ir a Google Sheets. Por aquí en Google Sheets, teníamos esto antes. Vamos a crear uno nuevo. Déjame duplicar éste. Duplicar esto. Déjame llamarlo aquí abajo, DT costo del artículo. Ahora lo que necesitamos es, simplemente eliminemos todo esto por ahora. Lo que necesitamos aquí en esta tabla de datos es el costo de cada artículo. El primero es el costo de las plumas ligeras. Por ejemplo, el artículo número uno costará algo así como diez. El artículo número dos costará algo así como 15. El artículo número tres podría costar algo así como 25 y así sucesivamente. Y vamos a escribir todos los nombres para los artículos aquí. Ahora los he escrito todos, todos los artículos. Ahora hay que especificar un precio para todos ellos. Por ejemplo, éste. El primer artículo podría costar diez para la antorcha, podría costar 15. Quizás 2030, 40.60 digamos 7510125, y tal vez como 150 Nuevamente, lleva tiempo hacer todo esto. Yo solo voy a seleccionar igual, tomar la primera una vez 1.2 tal vez solo siga adelante y arrastre un par de ellas. Ahora puedes ver lo poderoso es esto porque puedes crear fórmulas en, en hojas de Google y en realidad puedes importar estos números que básicamente se hacen por fórmula para tu juego, y puedes usar eso. Esto también es lo que usé en Farm Tail cuando la desarrollé. Redujamos la cantidad de decimales porque de decimales porque realmente no necesitamos decimales. Vamos a eliminarlos todos. Sí, podemos hacer esto. Haga clic en arrastrar también para los números, la cantidad de puntos de artículo, realmente depende de cuántos artículos pueda comprar. Pero para este juego, digamos que puedes comprar 50 artículos. El ítem 50 cuesta esto, solo podemos arrastrarlo al ítem 50, algo así. Tienes que hacerlo para el resto de ellos. Creo que puedo hacerlo así. Sí, de hecho puedo seleccionarlos todos aquí y puedo arrastrarlos aquí así, y todo va a estar bien así. Bien, ahora tengo todos estos números. Se puede ver lo rápido que es al usar una hoja de datos. Así que ahora puedo hacer clic en Archivo, hacer clic en descargar, descargar archivo CSV. Ahora para esto, podemos seguir adelante otra vez y cambiarle el nombre así. Ahora puedo volver al motor. Dentro del motor, vayamos a la carpeta de tablas de datos. Hagamos clic y arrastremos esto aquí. Se actualizará toda la información como podemos ver aquí. Ahora estamos listos para usar esto. Vamos a guardarlo todo. Antes de terminar esto, vamos a crear también la función de biblioteca. Voy a abrirla solo para mantenerme consistente. De hecho voy a cambiarles a F al principio porque suelo hacer eso para mis funciones así. Bien, hagamos una nueva función ahora. Llamemos a éste, Obtener costo del artículo. Ahora el costo del artículo depende de cuántos artículos hayamos comprado. Porque como puedes ver aquí, si volvemos, realmente depende de cuántos artículos hayamos comprado. Porque si hemos comprado un artículo, necesitamos obtener el artículo dos costo. Aquí. Si ya hemos comprado ocho artículos, necesitamos obtener el costo del siguiente artículo, que es el artículo número nueve, en lugar de tenerlo como cadena, como solíamos hacer para todos ellos aquí. En realidad usamos un entero aquí. Vamos a usar un entero aquí también. Déjame agregar un entero de entrada. Déjame llamar a esto una cantidad de artículos comprados. Cantidad de artículos comprados. Ya tenemos esa información dentro del mapa del jugador. Lo que podemos hacer es que realmente no necesitamos tener este número, pero hay que agregarle uno. Debido a la cantidad de artículos que has comprado, digamos que has comprado tres artículos. De manera realista, queremos obtener el precio del artículo número cuatro No usarías este número, pero necesitas agregarle uno porque necesitas tener el siguiente, el precio de este más uno. Y entonces podemos decir obtener fila de tabla de datos como lo hemos hecho todo el camino para obtener una fila de tabla, necesitamos usar la tabla de datos de costo de elemento. Ahora podemos enchufar esto aquí, pero ahora puedes ver que no son compatibles, pero necesitas transferirlo a una cadena, dos cadenas, y luego de una cadena puedes convertirla en una variable de nombre. Así que adelante y conéctalo. Ahora podemos hacer un nodo de retorno, agregar una devolución, agregar esto aquí y llamar a este artículo info de costo. Recuerda hacer clic en él y convertirlo en una función pura, porque de nuevo, solo estamos obteniendo información de ella. Ahora, vamos a probarlo antes de terminar esta lección. Sólo para que sepamos que en realidad está funcionando. Si voy al modo de juego blueprints, por ejemplo, aquí en la gráfica puedo decir obtener información de costo de artículo Y aquí está. Y podemos usarlo como queramos. Bien, hagamos esto, compilemos, guardemos y pasemos a la siguiente lección. 82. 8.18 Función de costo de artículo: Ahora lo que podemos hacer es hacer una nueva función llamada get item cost. Intentemos hacer eso dentro del jugador porque tendría más sentido. Porque aquí tienes la cantidad de monedas y estamos trabajando con monedas dentro de aquí. En realidad voy a hacer una nueva función. Voy a llamar a este Obtener costo del artículo. Tratemos de ver qué tenemos que hacer aquí. De nuevo, voy a cambiarlo a un puro porque solo estamos obteniendo alguna información para el costo del artículo get. Acabamos de hacer esta tabla de datos y biblioteca de funciones diciendo obtener costo del artículo y podemos usar esta. Necesitamos la información de cuántos artículos hemos comprado hasta el momento. Recuerda, ya tenemos este mapa. Entonces podemos hacerlo fácilmente diciendo encontrar. Al igual que antes necesitamos encontrar el artículo correspondiente, en realidad necesitamos el nombre del artículo. Necesitamos una variable dentro de aquí. Ahora, en lugar de tener solo el nombre del elemento, vamos a hacer clic aquí arriba. Porque sé más adelante aquí si rompemos esto, también necesitamos seleccionar el precio del artículo Si acabo de hacer una devolución, para que realmente puedas ver lo que está pasando, hago un nodo de retorno aquí. Tenemos que devolver el costo del artículo, porque este es todo el objetivo de esta función. Necesitamos saber el costo del artículo. Ahora necesitamos esto dependiendo de, hagamos un nodo selecto aquí. Depende de qué artículo estemos hablando y podemos enchufarlos. Pero el problema es que no podemos enchufar una cuerda dentro de aquí. Porque si hago una cuerda, ahora hago una cuerda y trato de enchufarla, no es compatible. Creo que en realidad necesitamos agregar la enumeración que creamos a nuestra estructura de ítem o a la estructura de la información del ítem Ahora, dije antes, podríamos estar necesitándolo dentro de la información del artículo y creo que realmente lo hacemos. De hecho, hagamos eso ahora. Esto es muy fácil porque ya tenemos todo lo que necesitamos. Si sólo recuerdo en la enumeración, ya tiene esta enumeración de ítems Vamos a las estructuras, abrimos la información del ítem. Y la razón por la que necesitamos agregarla dentro de aquí es por aquí. Solo puedo decir artículo aquí, información del artículo. Y solo puedo agregar el ítem así, porque ahora tenemos el nombre del ítem y también tenemos la enumeración Vamos a agregar la enumeración a esta estructura. Vayamos por aquí. Agregar una nueva variable llamada item. Cambiemos esto a la estructura del ítem que creé anteriormente. Compila o simplemente guarda, déjame moverlo aquí arriba debajo del nombre. Guarde todo de nuevo. Ahora lo que tienes que hacer es tener que volver a la tabla de datos. Tienes que abrir la información del artículo. Ahora obviamente hay que agregar aquí una nueva columna a la derecha y llamar a este ítem. Sólo tienes que copiar y pegar todo esto por aquí, y ahora ya terminaste. Sólo tienes que seguir adelante y descargar el archivo CSV y cambiar el nombre de éste. Ahora ya tengo esta, así que voy a eliminar esta. Voy a cambiarle el nombre a item info y luego voy a volver al motor dentro de aquí. Vamos a las tablas de datos, y vamos a arrastrar esta a aquí. Y ahora tenemos toda la información que necesitamos. Bien, vamos a guardarlo todo. Ahora volvamos al jugador. Y lo que podemos hacer es que podemos descomponer esto. Ahora podemos agregar el nombre M. Tenemos eso, déjame simplemente moverlo todo hasta aquí. Ahora podemos agregar el nombre del artículo. Eso está hecho. Ahora podemos enchufar esto aquí. Entonces esta es la cantidad de artículos que compramos. Por lo que va a encontrar automáticamente el precio del siguiente artículo. Porque dentro de esta función, recuerda que le agregamos una. Por lo que automáticamente va al siguiente ítem para echar un vistazo a cuánto cuesta. Entonces ahora tenemos esto. Vamos a seleccionar el precio del artículo, dependiendo de qué artículo estamos hablando. Ahora que tenemos esta enumeración, sólo podemos darle click y arrastrarla aquí y agregarla. Ahora ya sabemos de qué ítem estamos hablando porque ahora lo hemos definido dentro de nuestra tabla de datos. En la tabla de datos sabemos de qué ítem estamos hablando. Se va a seleccionar automáticamente el valor correcto dependiendo de cuál sea la enumeración Sólo tienes que seguir adelante y conectar todos esos juntos. Y automáticamente va a seleccionar un valor dependiendo de cuál sea el valor de este de aquí abajo. Bien, ya terminamos con esta función. Ahora, antes de que terminemos esto, repasemos y en realidad hagamos algo un poco mejor. Si vuelvo a la modalidad de juego. Recuerda que hicimos todo esto dentro del conjunto que genera puntos En realidad, ya usamos la enumeración de elementos, pero en los puntos de generación get it usamos este switch on string De hecho, podemos hacerlo un poco mejor ahora que tenemos la enumeración. Permítanme simplemente borrar esto y decir que en realidad cambien éste a ítems. Adelante y selecciónelo, Este es el nombre del artículo, Eso está bien. Podemos decir switch on, tenemos switch on enumeration lugar de switch on string Es mucho más fácil porque automáticamente te da todos los valores que has escrito dentro de la enumeración De nuevo, sólo tienes que seguir adelante y agregarlo. Ahora puedes ver durante el desarrollo del juego, hay algunas cosas que podrías necesitar en el futuro. Por ejemplo, antes no quería agregar esta enumeración, pero ahora mismo, mucho más sentido tenerla en el juego Siempre es agradable volver a tus mecánicas anteriores que has hecho y agregar cosas que son mejores si empiezas a necesitarlas durante el desarrollo. Ahora que tenemos conseguir artículos, un punto. Recuerda que también tenemos que ir al jugador. Entonces si abro el jugador incluso grafico porque ahora tienes una era. Porque recuerden, este es el problema anterior que teníamos antes. No podemos agregar una cadena a una enumeración, pero ahora tenemos la enumeración dentro de la estructura Podemos simplemente arrastrarlo hasta aquí. Deja este pin y sigue adelante y compila. Sólo tienes que seguir adelante y hacerlo más estructurado así. Ahora bien, si solo hacemos clic en el plato para probar el juego para ver si todo está funcionando como puedo ver, todo está funcionando bien como antes. Bien, ahora esto es mucho mejor. Hemos hecho que nuestra nueva función obtenga el costo del artículo, y podemos usarla para cambiar el costo del artículo. Pasemos al siguiente. 83. 8.19 Aumento del costo del artículo: Bien, bienvenido de nuevo. Entonces ahora estamos listos para actualizar el costo del artículo. El costo del artículo se muestra dentro de la interfaz de usuario. Vamos a abrir la tarjeta del artículo de la tienda aquí por el precio. Vamos a la gráfica. Hasta ahora lo que estamos haciendo es que solo estamos fijando el precio para que sea estático aquí en la construcción del evento donde establecemos el precio. Hagámoslo de nuevo dentro de un evento personalizado, igual que lo que hemos estado haciendo por la cantidad de artículos. Permítanme hacer clic aquí, hacer un nuevo evento personalizado personalizado. Llamemos a esta actualización Costo del artículo. Ahora el costo del artículo, el objetivo aquí es básicamente solo establecer el texto. Así que solo voy a tomar el texto del conjunto de precios del artículo igual que antes. Esto es en última instancia lo que tenemos que hacer ahora para el texto del ítem. Nuevamente, depende de qué ítem estemos hablando. Déjame hacer clic aquí. artículo costó porque ahora hemos creado esta biblioteca de funciones. Podemos tomar esto y descomponerlo. Pero ahora se puede ver el problema ahora es que no sabemos cuál usar. Recuerda, en lugar de usar este, acabamos de hacer uno dentro del jugador. Usemos éste en su lugar. Si tomo el peón jugador y tomo esto aquí y digo obtener costo del artículo, tenemos esta función del jugador Ahora simplemente solo necesitamos enchufar el ítem, porque hemos hecho todo esto dentro de la lección anterior donde seleccionamos este, dependiendo del ítem que le demos. Volvamos al artículo Cod. Permítanme borrar éste de aquí arriba. El info del artículo, ya tenemos eso, así que sólo voy a enchufar eso. Ahora. Tenemos el costo del artículo. Ahora puedes ver lo súper fácil que es obtener el costo del artículo así. También se ve mucho más limpio cuando conviertes las cosas en funciones. Déjame reorganizar todo esto aquí. Ahora tenemos el costo del artículo. Ahora en vez de tenerlo establecido como un valor estático aquí arriba, solo voy a eliminarlo. Da clic en este y oculta los pines no conectados aquí arriba. Lo que podemos decir es actualizar el costo del artículo. Y básicamente solo llama a la función que somos, el evento que creamos aquí abajo. Así que actualice ese también. Bien, entonces eso está funcionando ahora. El problema es que también necesitamos actualizarlo como el precio también, para todos los demás artículos u otros lugares hemos utilizado el costo del artículo antiguo. Porque si solo destaco esto, si solo hago clic derecho en esta información del artículo, recuerda que tenemos este costo de artículo o costo de monedas dentro de aquí. Y realmente ya no lo necesitamos porque lo estamos obteniendo de esta. Lo que podemos hacer es que podemos hacer clic derecho en este, Buscar referencias. Y voy a dar click en el pequeño icono de aquí abajo, porque necesito encontrar las referencias en todos los planos. Al hacer clic en el primero, lo que estoy haciendo ahora mismo es simplemente echarle un vistazo y ver dónde estoy usando este costo de monedas porque necesito cambiarlo por esta. Nuevamente, tomemos al jugador, digamos obtener el costo del artículo. Enchufe el artículo que es este. Conéctalo aquí. En lugar de usar este costo de artículo, podemos usar este en su lugar. Borremos esto. Tienes que cambiarlo porque este es el costo correcto del artículo que estás usando en este momento. Volvamos a nuestras referencias y hagamos clic en la siguiente. No muestra nada porque este es solo el nombre del artículo. Haga clic en el siguiente. Nuevamente, este es el costo del artículo nuevamente. En realidad, veamos si podemos copiar esto. Déjame copiar esto para no tener que escribirlo otra vez sobre el artículo. Ya tenemos esa información aquí. Conéctalo, conéctalo, elimina esto. Pongámoslo por aquí, compila. Vamos a abrir las referencias. Una vez más, da clic en el siguiente, nada aquí. Haga clic en el siguiente. Ahora estamos dentro del jugador, así que solo podemos tomarlo de aquí. Consígalo. Costo. Y el artículo está aquí. Y el costo, podemos simplemente enchufarlo de nuevo aquí. Nosotros no usamos este . Haga clic en él. Ocultar pines desconectados como este. Compilar. Volver a las referencias otra vez. Da click en el siguiente, Nada aquí. Vuelva a hacer clic en el siguiente. Y aquí tampoco usamos el costo del artículo. Ahora podemos dar click en Placa para ver qué pasa. Ahora si hago clic en Por, puedes ver que el costo del artículo no se actualiza. Eso es porque por supuesto, necesitamos llamar a este evento actualizar el costo del artículo. Esto tiene sentido cada vez que compramos un artículo. Si voy al jugador y vamos a ir a este artículo de compra, llamémoslo aquí. Llamémoslo siempre que hayamos agregado a este mapa y actualizamos la cantidad del artículo que hemos comprado antes de actualizar el color del botón de compra o por color de texto. De hecho, vamos a agregarlo aquí. Si solo arrastro de aquí y digo actualizar el costo del artículo, conectémoslo así. Eso debería funcionar bien. Recuerda que este pin es del artículo de la tienda porque teníamos una referencia del mismo. Y permítanme simplemente dar click en éste. Ocultar pines no conectados, compilar, hacer clic en reproducir. Ahora cuando compro, puedes ver que el precio del artículo va en aumento. Está aumentando dependiendo de lo que haya escrito dentro de la tabla de datos. Ahora, solo para asegurarme, déjame abrir la tabla de datos y ver si he hecho las cosas correctamente. Ahora, el artículo número 15 debería costar 128. El artículo número 15 cuesta 128 y eso es correcto. Ahora se puede ver, y eso debería funcionar para todos ellos. Por lo que este último, artículo número 11, debería costar 929 artículo número 11 es éste, para el último cuesta 929, así que eso es correcto Ahora sabemos que esto es correcto y también está calculando correctamente. Porque ahora puedes ver si haces clic en el último, debería restarle 929 Y si presionamos aquí, ese también es el caso, todo está funcionando bien. Guardemos todo, y pasemos al siguiente. 84. 8.20 Diseño del widget de información sobre herramientas: Lo que quiero hacer a continuación es cuando hagamos clic en Jugar y coloquemos el mouse sobre estas cartas Quiero tener algunos, una punta de herramienta que te muestre cuánto DPS obtendrás o daños por segundo obtendrás cuando compres este artículo Sigamos adelante y creamos una punta de herramienta. Hagamos clic derecho aquí en la interfaz de usuario y creemos un nuevo widget, blueprint Llamemos a esta punta de herramienta WB. Punta de herramienta, así. Y vamos a abrirla ahora. Nuevamente, necesitamos agregar un lienzo como de costumbre, antes de comenzar a diseñar. Entonces creo que sólo voy a entrar aquí. Voy a copiar esta, esta superposición y esta imagen. Voy a controlar C y controlar V dentro de aquí. Voy a dar click aquí arriba en la pantalla de llenado. Y de nuevo seleccione deseado en pantalla en su lugar. Para el sensor de punto de anclaje, justo 0.5 en la alineación para la x e y , luego haga clic en Tamaño para contenido también. Y las posiciones x e Y deben ser cero. Y cero, ahora está en el medio. Bien, ahora empecemos a diseñarlo. Yo sólo voy adelante y borrando esta imagen así como esta caja horizontal. Sólo voy a arrastrar el texto aquí arriba. Eliminar la caja horizontal. Ahora para éste, voy a reducir el tamaño de este texto. Creo que es demasiado grande, quizá. Intentemos 18 en su lugar. Para el desplazamiento de sombra. Déjame escribir dos en su lugar aquí. Bien, ahora para esta imagen, en vez de que la imagen sea de cierto tamaño, solo voy a escribir 32 que es el valor predeterminado. Y podemos simplemente dimensionarlo al contenido revés de éste. Empecemos con el texto. Para el texto, lo que tenemos que decir es, por ejemplo, cada antorcha da cinco DPS Eso es lo que quería decir. Ahora en lugar de solo tenerlo como texto, en realidad quiero agregar un cuadro vertical porque necesito algún otro texto debajo de él. Agreguemos una caja vertical. Agrega el texto a éste. Y solo sigue adelante y controla D para duplicarlo aquí abajo. Quiero decir al parecer haciendo, por ejemplo cero DPS aquí arriba, te va a decir cuanto DPS, este ítem te da Y DPS, por cierto, si no lo sabes, es daño por segundo Entonces, ¿cuánto daño por segundo va a hacer este artículo cuando lo compres? ¿Cuánto estás haciendo actualmente? Esto es cuando, por ejemplo, 15 de esos, debería decir 15 por cinco. Y te dirá cuánto DPS estás haciendo por el color del mismo. Yo sólo voy a copiar este color que tenemos aquí. Pégalo a éste. Y pegarlo a éste también. Ahora creo que le voy a dar algo de espacio también. Por ejemplo, aquí podemos darle un espaciador entre los dos textos. Vamos a darle un espacio de diez y la Y. Y también vamos a darle algo de espaciado a la caja vertical. Vamos a escribir 30 y el relleno, así que tenemos algo de espaciado ahora para el DPS También quiero cambiar el color del texto porque creo que se ve mejor si cambiamos la cantidad de DP como el color del texto aquí, porque se vuelve más fácil de leer Ahora bien, realmente no podemos hacerlo con un solo texto porque de lo contrario cambiará el color de todo el texto. En cambio, lo que tenemos que hacer es duplicar este haciendo clic control D. Vamos a agregarlo a una caja horizontal, porque necesitamos que esté uno al lado del otro. Añadiendo esos dos al cuadro horizontal, voy a eliminar los cinco DPS de este, del otro Voy a borrar todo el otro texto excepto los cinco DPS así Recuerda agregar un espacio aquí. Entonces hago clic en este espacio publicitario. Ahora bien, así es como se ve. Ahora puedes ver que el espacio es un poco demasiado grande. De hecho voy a borrar el espacio, y voy a añadir un espaciador en su lugar, porque ahora podemos controlar cuánto espacio hay entre los personajes. Y voy a escribir cuatro en la X. Creo que eso se ve mucho mejor. Hagamos lo mismo aquí abajo. Voy a duplicar ésta. En realidad, borra el de aquí abajo. Tira hacia abajo debajo del espaciador así. Entonces podemos escribir, por ejemplo, cero DPS aquí, aquí abajo. Podemos escribir actualmente haciendo cero DPS. Por ejemplo, quiero asegurarme de que el, esta caja horizontal esté alineada al medio así como esta otra caja horizontal alineada al medio también. Ahora cambiemos el color de los cinco DPS o el texto DPS aquí arriba. Voy a cambiarlo a algo morado como esto. Puedes intentar encontrar el color que más te guste, tal vez algo así. En cuanto a la saturación, no quiero que esté demasiado saturada lo contrario es un poco difícil de leer. Voy a ponerla en algo así como 0.42 Eso es para el volumen, uno está bien Haga clic en Bien, Este es un texto diferente. Ahora puedes darle un poco más de saturación. Por ejemplo, 0.445 También puedes copiar esto en el otro. Ahora lo que también quiero hacer es cambiar el color de sombra debajo ella porque ya no cabe. Yo sólo voy a copiar esto aquí arriba basado en esos dos. Cámbialo para que sea algo muy oscuro como esto. Tal vez 0.4, algo así como 0.4 la coca. Entonces sigue adelante y copia esto más allá del color de la sombra y échale un vistazo, y creo que se ve mucho mejor. Ahora, permítanme cambiar este de aquí arriba a 0.4 en su lugar. En la saturación, sólo voy a copiar este color aquí abajo. Y voy a copiar el color del contorno aquí abajo también. Ahora puedes ver que es de un color diferente y es mucho más fácil de leer. Creo que hemos terminado de diseñar este. Pasemos al siguiente. 85. 8.21 Actualización de la información sobre herramientas: Ahora sigamos adelante y actualicemos la interfaz de usuario de Tooltip por aquí. Vamos a la gráfica y actualicemos de hecho la información. Voy a borrar todo esto. Y hagamos clic derecho una vez más y hagamos un nuevo evento personalizado llamado actualizar la interfaz de usuario de información sobre herramientas Ahora para éste, lo que básicamente queremos hacer es que queremos cambiar el texto de esos. El primero, ver aquí, dice el nombre del ítem. Aquí necesitamos un valor dinámico, necesitamos el nombre de cada ítem. Da click en este, solo voy a llamarlo da PS. Este texto aquí arriba. Lo que solo voy a llamarlo es ¿cuánto DPS te va a dar este artículo ¿Cómo va a hacer DPS este artículo? O cuánto vas a hacer aquí arriba. Yo sólo voy a llamarlo da PS. A éste sólo lo voy a llamar igual, da cantidad de DPS Esta es la cantidad aquí abajo. Sólo voy a llamarlo haciendo PS. Esta es cantidad de PS. Bien, vamos a compilar y digamos, volvamos ahora a la gráfica. Empecemos con el da P, el primer texto. Sólo queremos poner el texto como de costumbre así. Ahora recuerda lo que dije antes. Anteriormente dije que si tienes un texto dinámico como este, necesitas usar un formato de texto. Escribamos desde aquí y digamos formato de texto. Sólo escribamos la misma frase. Dice cada uno para dar. Lo que necesitamos escribir aquí es cada uno. Y luego necesitamos abrir el corchete porque la antorcha es un valor dinámico, solo vamos a decir nombre del elemento y cerrarlo con los corchetes enter, puedes ver que aparece una entrada cada uno y el nombre del ítem da así. Y ahora podemos enchufar el nombre del artículo, en realidad necesitamos la información del artículo. Ahora para hacer esto, vamos a agregar un pin aquí, cambiarlo a la estructura de información del artículo, llamarlo ítem. Ahora podemos tomar esto, podemos romperlo, y podemos tomar el nombre del artículo y enchufarlo aquí. Y se va a actualizar correctamente. Bien, eso está terminado. Veamos lo siguiente es esta cantidad de DPS. Tomemos, da cantidad de PS y pongamos texto una vez más. Ahora de nuevo básicamente necesitamos un formato de texto igual que antes. Así que adelante y toma esto. Ahora en vez de decir esto, podemos decir cantidad EPS y podemos decir DPS, el número aquí, y luego el texto DPS Ahora necesitamos enchufar la cantidad de DPS. Ahora no tenemos eso. En realidad necesitamos agregarlo y debemos agregarlo al artículo, porque cada artículo que compremos debe tener su propia cantidad de DPS Vamos a las estructuras de planos y abramos la información de TM Agreguemos una nueva variable llamada DPS, o daño por segundo Eso depende de usted. Cambiarlo en un flotador , Guardar, guardar todo. Ahora recuerda que también tienes que agregarlo a la tabla de datos a través de Google Sheets. Pero por ahora solo voy a abrir la M info. Aquí puedes simplemente escribir lo que quieras. Sólo voy a escribir 10.20 y 30 o tal vez como 50. Sólo voy a escribirlo para los tres primeros solo para probar. Realmente lo necesito ahora mismo. Solo necesitábamos el valor aquí en la información del artículo. Ahora tienes este DPS, adelante y conéctalo aquí Y eso debería funcionar bien. Ahora para el resto, tomemos el DPS haciendo. Ahora. Es el texto aquí abajo. Se va a decir actualmente haciendo. Ahora puedes ver aquí que no tenemos ningún valor dinámico y realmente no necesitamos cambiar este texto. En realidad no necesitamos manipular este texto. Sólo tenemos que cambiar esta. Volvamos y llevemos el que se llama regalos, cantidad de PS. En su lugar, establezca el texto. Tenemos que fijarlo a la cantidad. Yo sólo voy a copiar esta. Y éste va a mostrar la cantidad total de DPS para este artículo que puedes hacer Solo voy a escribir aquí cantidad total de DPS y luego solo DPS Yo no lo conecté. Ahora, la cantidad total de DPS depende de cuántos artículos hayas comprado Y recuerden, ya tenemos eso dentro del jugador. Necesitamos una referencia al jugador. Hagámoslo. Aquí, personaje jugador, por cierto, intenta hacerlo tú mismo si puedes. Porque creo que puedes hacerlo. Ya tenemos la variable, la variable de mapa dentro del reproductor que necesitas usar, digamos que es referencia del jugador desde la interfaz del blueprint Adelante y conectado. Ahora se llamaba Item Spot. Adelante y consigue este mapa aquí. Ahora a partir de este mapa, necesitamos encontrar el artículo con el que estamos trabajando. Voy a arrastrar aquí y decir encontrar. Y tenemos que encontrar el artículo. Y cuando encontremos el artículo, nos va a decir cuántos de este artículo hemos comprado. Vamos a arrastrar este todo el camino hasta aquí. Ahora tenemos la cantidad de artículos que hemos comprado. Para calcular el DPS total, tienes que multiplicar la cantidad de artículos que has comprado con cuántos DP o cuánto DPS está haciendo cada artículo Tomemos este y lo multipliquemos por la cantidad de PS que hace cada ítem. Y luego con eso tenemos la cantidad total de DPS que podemos enchufar aquí Adelante y enchufa esto también aquí. Ahora estamos realmente terminados, así que adelante y haz clic en este ocultar pines desconectados Sigue adelante y haz doble clic en estos para hacer notas re art y organizar tu código. Bien, ahora que está organizado y con eso terminado adelante y compila, guarda todo. Y ahora ya terminamos de actualizar el doble tip I. 86. 8.22 Visualización del widget de información útil: Ahora es el momento de mostrar este widget de punta de herramienta que hemos creado. Para ello, tenemos que hacerlo dentro del artículo de la tienda, Cod. Porque recuerda cuando hacemos clic en play, queremos que aparezca esta punta de herramienta. Cada vez que pasamos el cursor sobre estas tarjetas, en realidad está dentro del artículo de la tienda. Nosotros hacemos eso. Vamos a entrar aquí. Quiero mostrar este widget. Siempre que pase el cursor sobre cualquier cosa sobre esta tarjeta, solo voy a hacer clic en esta superposición y hacerlo aquí Esto significa que dondequiera que flotemos sobre esta tarjeta, aparecerá Haga clic en esta superposición. Voy a bajar aquí en el Comportamiento y dar clic en Avanzado. Aquí abajo se ve este llamado Widgets de Sugerencia de Herramientas. Sigue adelante y haz clic en Enlazar y crea una encuadernación. Entonces adelante y amplía esto. Ahora necesitamos obtener el widget que creamos, el widget información sobre herramientas de la tienda No hemos creado una referencia a ella, porque normalmente creamos referencias a la interfaz de usuario dentro del control de reproducción. Sin embargo, para este widget realmente no hemos creado nada. No quiero crearlo dentro de aquí como lo hemos estado haciendo. Porque el, no es algo que puedas abrir y cerrar. Es simplemente algo que aparece cada vez que pasas el mouse sobre las tarjetas En lugar de hacerlo por aquí. Lo que voy a hacer es que suelo hacer mis eventos que dentro de mis juegos se llaman capa de inicialización Dentro de este evento, agrego todo lo que necesito que debería suceder cada vez que abro el juego. Por ejemplo, este widget de sugerencia de herramienta necesita ser creado, Digamos crear widgets. Y sigue adelante y selecciona el widget de información sobre herramientas, este Comprar información sobre herramientas Y adelante y promociona esto a una variable llamada tooltip de tienda Por ejemplo, herramienta de tienda, Bien. Ahora que se crea, y también recuerda sumarlo aquí arriba. Voy a hacer eso antes de crear las tarjetas. Ahora realmente no importa. Pero solo para estar limpio aquí. Jugador inicializado. Ahora estamos llamando a este evento aquí abajo, poner en conectado, lo que sea que tenga que pasar. Cuando abra el juego, voy a agregarlo al evento inicial del jugador. Ahora tenemos una referencia a este widget Tooltip. Entonces, lo que podemos hacer ahora dentro de la tarjeta, podemos obtener el controlador del jugador, obtener el controlador del jugador. Entonces podemos dirigir desde aquí y decir obtener referencia del controlador del reproductor desde el plano del widget Ahora podemos tomar este y decir consejo de herramienta, y podemos obtener este widget que acabamos de crear. Ahora para este widget, lo que necesitamos llamar es, si vuelvo a la tienda de widgets, punta de herramienta dentro de aquí, recuerda que hicimos la actualización de la interfaz de usuario de tooltip Llamemos a esta punta de herramienta de actualización que conecté. Ahora necesita un ítem porque lo usamos para actualizar básicamente toda la información que tenemos. Eso porque estamos dentro del artículo de la tienda Cod, y hemos creado esta información del artículo anteriormente, que también usamos dentro de aquí para actualizar la información del artículo. Tomemos este y lo conectemos aquí. Y luego conecta esto. Además, recuerde conectar esta herramienta de widget a Putt al nodo final aquí De nuevo, puedes hacer doble clic aquí. Se organizaron así. Bien, eso debería funcionar. Si compilamos y guardamos todo. Y si hago clic en Reproducir, ahora puedes verlo en realidad se muestra con el nombre correcto para el ítem. Se puede ver que dice cada tirada de artículo o cada serie de tiempo, y el protector protege los cascos de cada rey, la corona de cada rey y así sucesivamente. Ahora también muestra la punta de la herramienta con la información correcta. Ahora hay un problema. Ahora si vuelvo a hacer clic en reproducir y compro algo, se puede ver que dice cero DPS y nada se está mostrando realmente. Ahora para esta, intentemos cerrarla y vamos a revisar la tabla de datos si hemos escrito las cosas correctamente. Si abro la información del artículo, el primer DPS, la pluma ligera debería ser 1020, luego 50 Y si hago clic en play, y compruebo el primero debería ser 1,020.50 Y no puedo ver nada se muestra Pero puedes ver aquí, cada vez que compro algo, en realidad se muestra correctamente. Si muevo el mouse y vuelvo a pasar el cursor sobre él, y dice 20 DPS Echemos un vistazo a dónde sale mal. Si abro el widget de herramientas de tienda, la información aquí me da, primero se llamó da DPS Este da cantidad de DPS. Eso es correcto. Echemos un vistazo a la cantidad da DPS, cómo se está configurando Comprobemos también la otra parte del código, y aquí es realmente donde sale mal. Porque uso la cantidad da DPS, en lugar de hacer cantidad de DPS, eso es lo incorrecto Aquí, permítanme simplemente borrar éste y compilar. Haz clic en Reproducir y si pongo el cursor sobre él, ahora se muestra correctamente Esto fue porque aquí dije mal el texto. Texto haciendo EPS es el correcto y da DPS fue correcto también Bien, ahora si compro algo, se puede ver que sigue mostrando cero en el actualmente haciendo. Pero si me alejo de él y me muevo a él de nuevo, se puede ver que se muestra correctamente. Si me alejo, muevo a él, se muestra correctamente. En los 30 DPS que están haciendo actualmente, necesitamos actualizar realmente los DPS que están haciendo actualmente como otro lugar también, porque no se está actualizando instantáneamente Lo que podemos hacer es que puedo llamar a esta actualización ToolPi cada vez que compre un artículo Si cierro todo su, vuelvo a los planos Abre el jugador aquí. Hicimos este artículo de compra. Lo que podemos hacer aquí con el artículo de compra es que solo puedo actualizarlo aquí. Al final, necesitamos el controlador del reproductor. Voy a tomar el controlador del reproductor y estoy recibiendo el widget de punta de herramienta que creamos. Luego ejecutemos la interfaz de usuario de información sobre herramientas de actualización cada vez que compremos un artículo ¿Y cuál es el artículo? Es esta la que tenemos entrada aquí. Tomemos esto y lo conectemos de nuevo. Simplemente organízalo así. Y vamos a compilar y dar clic en Reproducir y ver qué pasa. Ahora si compro, puedes ver que actualiza la cantidad de daños por segundo instantáneamente y también se está actualizando correctamente dependiendo del GPS que estemos creando. Ahora para terminar esto, abre tu Google Drive dentro de aquí, encontremos la información del nivel, la información del artículo aquí, la información del artículo y después del costo de las monedas. Agreguemos DPS. Para el TPS, solo voy a escribir para el primer ítem, va a hacer cinco DPS y luego solo digamos iguales Yo solo voy a hacer que los números aleatorios se multipliquen por 1.5 solo voy a llevarlo hasta aquí abajo. Sólo voy a quitar todos los decimales porque no los necesito. Y podemos hacerlo algo así. También se puede decir multiplicado por 1.8 En realidad hacemos más daño así. ahora y descarguemos este archivo CSV, y recuerde cambiar el nombre de éste, cambiando el nombre de T item info Adelante y abre el proyecto. Vaya a las tablas de datos, luego continúe y luego continúe e importe la información del artículo a aquí. Verifiquemos la información del artículo para asegurarnos de que TPS esté ahí. Y lo es. Y así ahora puedes ver cada ítem tiene la cantidad correcta de DPS visualizados Y si compras algo, va a mostrar correctamente el DPS que está haciendo actualmente Obviamente, en realidad no estamos haciendo ningún DPS en estos momentos porque no tenemos daños automáticos. Pero al menos nuestro sistema ahora está funcionando para que podamos continuar el rumbo. 87. 9.01 Aplicación automática de daños: Ahora es el momento aplicar daño automáticamente al enemigo. Y esto suele ser lo que se hace en juegos clicker cuando compras esto Y hace daño por segundo. Debería hacerlo automáticamente en lugar de que sigas haciendo clic en el enemigo. Sigamos adelante y hagamos eso. Hagámoslo en el jugador. Volvamos y entremos en el jugador. Ahora ya hicimos algo con los daños dentro de aquí. Dentro del jugador, o en realidad fue dentro del enemigo donde aplicamos algo de daño aquí. Ahora vamos a aplicar algún daño dentro del jugador. Este es ahora el jugador que hace daño. Vamos a hacer clic derecho y hacer un nuevo evento personalizado. Llamemos a este Daños Auto. Va a hacer daño automáticamente por éste. Ahora para hacer el daño automático, necesitamos algo en bucle Necesitamos un código de bucle que siga funcionando y nunca se detenga y le esté haciendo daño Tienes algo llamado temporizador. Tenemos algo que se llama evento. Configura el temporizador por evento. También tienes algo llamado set tim por nombre de función. Ahora son similares. Estas dos funciones, son similares. Por lo general los usamos cuando necesitamos algo en bucle. Usamos el nodo delay siempre que necesitemos retrasar algún código y luego hacer algo después. Recuerda para el nodo de retardo, usamos eso dentro de la base enemiga. Si entro de aquí, usamos eso para retrasar realmente este código porque esperábamos a que se acabara la voltereta. Retrasamos el código por la longitud del libro volteo, y luego verificamos si el jugador o el enemigo estaban muertos o no. Aquí usamos el retraso. Si necesitas algo que esté en bucle, el código necesita estar en bucle Es mejor usar un temporizador. Tenemos un temporizador por nombre de función y temporizador por evento. Ahora bien, en realidad no importa cuál uses porque son casi idénticos. En realidad, utilizo ambos, así que en realidad no tengo preferencia. Te puedo mostrar cómo usarlos para la T. Primero usemos el temporizador por evento. Déjame poner esto por aquí, retrasar este. Conectemos este primer temporizador por evento. Tienes que decírselo al cronómetro. ¿Qué tan rápido quieres hacer loop? Por ejemplo, quiero hacer un bucle cada 0.1 segundo. Esto significa que el código se va a ejecutar cada 0.1 segundos. El código aquí va a correr diez veces por segundo. Voy a ponerla en bucle. Ahora necesitamos un evento. Voy a arrastrar esto aquí abajo, justo en un evento personalizado. Llamemos a este bucle de daño automático. Cualquiera que sea el código que escribas, está fuera de aquí ahora va a bucle. Por ejemplo, si arrastre desde aquí y escribo una cadena de impresión y debería decir hola y compilo. Ahora bien este auto daño, obviamente tienes que correr a alguna parte y yo sólo voy a ejecutarlo al principio. Juega aquí arriba. Y escribamos hacer daño. Ahora estamos llevando a cabo este evento aquí. Y va a ejecutar este temporizador que enlaza el código. Compilar Clic Play. En realidad ejecuta este código y sigue funcionando. Como puedes ver aquí, corre, o dice hola diez veces cada segundo. Si escribo 0.04 por ejemplo, haz clic en Reproducir, puedes ver que es mucho más rápido Ahora bien, si no eres fuerte en matemáticas, siempre puedes calcularlo diciendo, por ejemplo, 1/0 0.04 Significa que el código se está ejecutando 25 veces Ahora una garrapata, quizá conozcas esta que siempre te digo que no uses evento. Este muy malo en realidad se está ejecutando en, si tienes razón, 1/0 0.02 esto es en realidad 50 veces este tick de evento corre 60 veces Éste en realidad ni siquiera es suficiente. Está funcionando tal vez 0.18 o incluso más bajo. Como puedes ver, el tick de evento es súper, súper rápido. En realidad se está ejecutando así. El com play, este es el evento. Se puede ver que el temporizador es mucho, está mucho más optimizado. Puedes ejecutar el código no tan rápido, pero aún puedes obtener los mismos resultados si lo ejecuto por 0.05 Esto significa que estoy ejecutando el código 20 veces por segundo. Esto a veces es necesario porque si ejecutas el código demasiado lento, va a sentir que la barra de salud está rezagada porque está restando salud Esto es si ejecutas el temporizador demasiado lento. Y en realidad podemos ver eso cada vez que hacemos todo esto. Ahora el temporizador establecido por nombre de función. La diferencia entre esos dos es que esto va a hacer un bucle de una función, una función que creamos aquí fuera. De hecho voy a usar este porque mayormente quiero usar este porque mantiene el código limpio. No tengo que escribir o enviar spam a mi gráfico de eventos con eventos aleatorios. De hecho, puedo simplemente hacer una función y se esconde fuera de ahí, y es mucho más limpio para esta función Llamémoslo daño auto. Hagamos también esta función aquí. Hace un bucle de esto sea cual sea el nombre que escribiste por aquí. Va a hacer un bucle de esta función. Ahora recuerda que tienes que escribirlo precisamente como lo has escrito aquí. Para que funcione, voy a subir 0.05 o vamos subir 0.14 Ahora vamos a intentar eso. Permítanme borrar esto. Permítame borrar esto también. Déjame conectarlo, vamos a escribir esto, Promocionarlo a una variable, que podamos detener el temporizador si lo necesitamos. Yo solo lo voy a llamar manija de daño automático, porque si sostienes el mouse sobre ella, dice que esta es una manija de temporizador o mango de daño. Podemos usarlo para detener el código o detener el temporizador. Ahora básicamente este daño, quiero jugarlo aquí arriba en el evento o comenzar a jugar para el jugador. Siempre que empezamos el juego, empezamos a hacer el Orodamage. Obviamente no hacemos daño si aún no hemos comprado ningún artículo. Vayamos a la función O daño aquí. Al igual que antes, quiero aplicar daño y ahora el actor dañado es el enemigo. Y recuerda que tenemos una referencia al enemigo dentro del mando de juego. Tomo el controlador del jugador y busco enemigo engendrado porque lo hemos convertido en una variable y seguimos adelante y lo conectamos Ahora en cuanto al daño base, vamos a trabajar con él en la siguiente lección. Por ahora, sólo voy a escribir cinco y eso debería funcionar bien. Ahora Flic juega. Ya puedes ver que el enemigo está siendo dañado automáticamente. Y se ve bien. Pero obviamente tenemos que arreglar algunas de las animaciones aquí. Ahora quiero mostrarte que se siente rezagado, si lo dijiste esta vez O juego demasiado lento, se ve rezagado, se ve de baja calidad Sin embargo, si lo configuras en algo así como 0.04 que en realidad quiero configurarlo en 0.04 se ve mucho más Cuanto más bajo lo pongas, más se va a quedar limpio, así. Se puede ver aquí va mucho más suave. No obstante, recuerda, cuanto más bajo lo pongas, más vas a hacer loop este temporizador, y cuantos más recursos vas a utilizar en tu juego, y menos optimizado estará. Quiero decirte aquí que cuatro temporizadores, tratan de ponerla lo más alta posible sin sacrificar el aspecto del juego Si pienso 0.05 a Leggy, lo pondré en 0.04 y estaré satisfecho con ese número De nuevo, puedes entrar aquí y decir lo que es 1/0 0.04 Eso significa que mi código está funcionando 25 veces. Eso es bueno. Eso está bien. Mucho mejor que el tic del evento, que es 60 veces por segundo. Bien, ahora hemos terminado con todo esto y pasemos a la siguiente lección. 88. 9.02 Cálculo del DPS total: Para aplicar la cantidad correcta de daño, tenemos que calcular cuánto daño por segundo tiene el jugador. Debido a que el jugador puede comprar todos estos artículos, necesitamos armar todo y luego aplicarlo como daño automático al enemigo. Hagámoslo creando una nueva función. Y a éste se le va a llamar actualización total EPS. Primero, necesitamos todos los artículos que el jugador ha comprado. Tomemos este mapa. Para ello, tenemos dos funciones. Tenemos dos nodos. Podemos usar una llamada claves. Qué son las claves, son la primera columna aquí, la cadena, Esto se llama claves. abajo y digo valores, entonces puedes obtener los valores de esas claves. Tenemos claves por aquí que son las cadenas, y luego tenemos los valores. Ahora necesitamos todos los artículos que el jugador ha comprado, así que necesitamos usar las llaves. Voy a tomar estas llaves aquí. Ahora tenemos todos los elementos en una matriz. Voy a recorrer todas ellas. Por cada bucle, para cada uno de esos ítems, queremos saber cuánto DPS están haciendo Para el DPS, recuerda que tenemos el get item info, obtenemos info que hicimos de la biblioteca de funciones Sigamos adelante y consigamos eso para el nombre del artículo. Vamos a enchufarlo aquí. Y ahora podemos romper esta estructura. Y ahora tenemos la cantidad de DPS. Ahora de nuevo, la cantidad de DPS, también depende de cuántos artículos hayamos comprado de este artículo seleccionado que tengamos ahora mismo También necesitamos usar los valores. Voy a copiar esto aquí y decir valores porque necesitamos saber cuánto compramos realmente de esos artículos. Para los valores, voy a dirigir desde aquí y decir get porque ya estamos haciendo bucle aquí, así que no necesito hacer bucle Entonces sólo voy a decir que consiga una copia. ¿Qué índice quieres obtener? Sólo voy a seguir los índices o índices para éste, así obtenemos la cantidad correcta de ítems para el ítem correspondiente. Ahora lo que podemos hacer con esto, podemos decir que esta es la cantidad de artículos multiplicados por DPS Por ejemplo, si tenemos cinco del ítem, va a decir cinco veces. Por ejemplo, diez DPS son diez. Entonces necesitamos una nueva variable para almacenar el DPS total. Voy a hacer una nueva variable llamada DPS total. No lo cambio en una carroza. Ahora lo que podemos hacer es la antigua cantidad de DPS, los, el DPS que tenemos ahora mismo que hemos calculado, podemos fijarlo al nuevo DPS Si no hacemos esto, si solo muevo todo esto, si solo hacemos esto y hacemos esto aquí y lo conectamos, esto significa que cada vez que calcule, en realidad va a poner este EPS a este número. Y no queremos eso porque estamos recorriendo todos los elementos y básicamente estamos apilando todos los números Y seguir multiplicando y multiplicando y sumando En lugar de establecerlo en un valor estático, necesitamos sumar la antigua cantidad del DPS total a este Y aquí obtenemos la nueva cantidad, y básicamente podemos establecer el DPS total aquí Ahora tenemos el DPS total. Y también tal vez podríamos obtener un número o no realmente un dólar, pero mostrar un dólar donde sigue calculando y tal vez el número se esté mostrando mal en cierto punto. Lo que quiero hacer, en lugar de usar el DPS total, en realidad voy a hacer una nueva variable, una local llamada DPS total local Esta es una variable local que solo existe dentro de esta función en la que estamos ahora mismo. En realidad voy a usar la variable local aquí para establecer la cantidad de DPS Ahora recuerda que las variables locales, no pueden salir fuera de las funciones. La próxima vez que intentes calcular el DPS, éste va a ser cero Estas variables locales, se eliminarán cada vez que intentes ejecutar esta función. Es por ello que no puedes usar esto fuera de esta función. Básicamente lo que tenemos que hacer es cuando completemos el bucle y tengamos esta cantidad total de DPS establecida, podemos tomar esta cantidad local de DPS y podemos establecer el DPS total aquí abajo Puedes hacerlo de esa manera, o básicamente puedes hacerlo directamente aquí arriba. Realmente no importa, pero me imagino que en el futuro hay una caja expositora. Si no está todo bien, solo puede enchufar el DPS total aquí en lugar del local Yo sólo lo voy a hacer de esa manera. Y ahora tenemos el conjunto total de DPS y podemos guardarlo todo. Podemos dar click aquí, Ocultar pines desconectados si así lo deseas, Y nuevamente, reorganizar todo Ahora que tenemos el número correcto de TPS que estamos haciendo, pasemos a la siguiente lección y terminemos el daño oral 89. 9.03 Aplicación de la cantidad correcta de daño: Ahora que tenemos la cantidad correcta de daño calculada o el DPS total, volvamos a la función de daño automático una vez más, y hagamos la cantidad correcta de daño Ahora en vez de escribir aquí o en lugar de simplemente arrastrar el DPS total y aplicarlo aquí, esto está mal, porque haces clic en jugar ahora y compras Y puedes ver aquí, no está haciendo daño en este momento porque en realidad necesitamos ejecutar esta actualización, DPS total De hecho hagamos eso dentro del jugador cuando compremos un artículo, porque tenemos que actualizar el DPS Para el DPS, en realidad voy a hacer eso después o antes de generar el artículo. Y vamos a arrastrarlo. Vamos a arrastrar el DPS total de actualización para asegurarnos de que se actualiza cada vez que compramos algo Y si hago clic en Reproducir ahora y compro algo, puedes ver que hace el daño por segundo. Lo que quiero hacer ahora es que se pueda ver aquí, aunque el daño por segundo, así que para el primero debería ser cinco si compro uno solo. Pero como se puede ver, no está haciendo cinco daños por segundo. Cada segundo está haciendo mucho más. La razón es que estamos ejecutando nuestro temporizador. Si vuelvo al gráfico de eventos, estamos ejecutando nuestro temporizador a 0.04 No lo estamos ejecutando una vez por segundo Entonces como puedes ver aquí, cinco por la pluma ligera. Ahora vamos a hacer cinco daños por segundo, lo cual es correcto, pero lo estamos ejecutando a 0.04 Realmente necesitamos hacer alguna división para obtener el número correcto por segundo Hagámoslo dentro del daño auto aquí. Lo que tenemos que hacer es básicamente decir hizo igual que lo que hicimos antes donde dijimos aquí, recuerden 1/0 0.04 y eso nos da Básicamente, este código se ejecuta 25 veces por segundo. Necesitamos dividir el DPS total con 25 para obtener el número correcto. Hagámoslo. Digamos 1/0 0.04 Aquí, voy a tomar, solo haz clic derecho aquí, divide y elige esa Vamos a decir 1/0 0.04 Básicamente 0.04 tenemos eso en De hecho, promovamos esto en una variable. Vamos a promoverlo a una variable llamada Auto Damage Tim Time. Ahora podemos usar este dentro del auto daños y seguir adelante y enchufarlo aquí. Y dividir por 11 dividido por el tiempo del temporizador de daños auto, que es 0.04 Eso nos da 25. Como vimos aquí, eso nos da 25. Lo que tenemos que hacer es el DPS total dividido por 25, eso nos da la cantidad correcta de daño por segundo Ahora va a hacer cinco daños por segundo correctamente. Si compilo ahora y hago clic en Reproducir, y ahora hago clic en Por para la pluma ligera, en realidad va a hacer cinco daños por segundo correctamente. Sólo di 75 cuando esté terminado. Y en realidad decía 75 aquí. Porque recorremos 5 segundos y cinco por cinco es 25. Eso es correcto. Pero puedo ver que el número aquí se muestra con decimales, y eso no me gusta mucho. Vamos a arreglarlo. Vamos a cerrarlo. Volvamos a la interfaz de usuario. Vamos a abrir la barra de salud. Y aquí dentro de la gráfica para la barra de salud, solo enchufamos el flotador. Por eso es jugar aquí con decimales cuando golpeas al enemigo. En lugar de hacer eso, lo que puedes hacer es arrastrar desde aquí. Si no conoces las funciones, básicamente puedes escribir flotadores Puedes intentar mirar a través de todos estos. Pero básicamente lo que quiero usar es el piso o el sello. Básicamente qué es piso y sello, puedes sostener el mouse sobre él y puedes ver lo que dice. Dice que redondea hacia abajo, se puede ver. -1.6 se convierte en -2.1 0.6 se convierte en uno. O eso o puedes usar sello. Creo que voy a usar sello. Por lo tanto, este básicamente 1.6 se convierte en dos en lugar de uno. Voy a usar Seal, y puedes ver que lo cambia en un entero. Y recuerda que un entero no tiene decimales. Voy a sostener al Alt. Haga clic aquí para desconectar esto y luego conectar éste en su lugar. Entonces ahora tenemos un entero. Y si hago clic en Play y compro la pluma ligera, ahora puedes ver que hace cinco daños por segundo. No está mostrando lugares anti decimales, todo está funcionando correctamente. Pero como puedes ver aquí, todos los efectos, no quiero que este efecto suceda. Saltemos en la siguiente lección y arreglemos todos esos. 90. 9.04 Arreglo del efecto de golpe: Bien, ahora terminamos con el daño auto. No obstante, puedes ver aquí que tenemos este efecto. No quiero que este efecto esté aquí. Así que tenemos que eliminar algo del código. Como puedes ver, tampoco es reproducir la animación de la muerte lo que está mal también. Sigamos adelante y arreglemos todo esto. Abramos al enemigo porque el daño está dentro de aquí. Ahora se está reproduciendo el efecto de golpe, porque cada vez que le hacemos daño al enemigo, va a jugar el efecto de golpe. Sigamos adelante y desconectemos esto y veamos qué pasa. Hago clic en play y compro algunos daños. Aquí puedes ver que está funcionando correctamente. No obstante, la animación de la muerte es por alguna razón que no se reproduce. Yo creo que eso es porque estamos looping el código muchas veces y se mantiene Ahora bien, si acabo de copiar este evento de muerte y trato de enchufarlo aquí, ahora realmente no tiene sentido porque vamos a matar al enemigo instantáneamente cada vez que hacemos clic. Y como puedes ver aquí, ese no es el enfoque correcto. Lo que podemos hacer aquí es preguntarnos, está muerto el enemigo? Probemos aquí. ¿Está muerto el enemigo? Porque en realidad no queremos que pase por el efecto hit. Si acabo de conectar esto e intento hacer click en Play, y compro un par de tomos, ahora se ve correcto Y si el enemigo muere, se puede ver que el enemigo está muriendo correctamente. Bien, entonces todo está funcionando. Hemos desactivado el efecto hit y todo está funcionando. Ahora si hago clic yo mismo, puedes ver que no tengo ningún efecto de golpe. Entonces necesito arreglarlo también para el efecto hit. Ahora cuando hago clic en él, así que este es el clic del mouse, podemos agregar el efecto hit aquí arriba en su lugar. Y si hago clic en jugar, ahora golpeo con el ratón, se puede ver al jugador, el enemigo golpea, pero también se puede ver que la animación está reservada. Se puede ver aquí cuando hago clic, a veces el enemigo se detiene. E intenté hacerlo otra vez. Pero este creo que el segundo reservado eso es porque si hago clic demasiado rápido, puedes ver este. La animación de la muerte tenía un libro. Esto se debe a que aquí en el está muerto en realidad está reproduciendo esta animación de muerte también para el clicker automático así como para ti Al hacer clic en la animación de la muerte básicamente se reproduce dos veces. Y esto va a reservar la animación porque sigues enviando spam a este temporizador aquí y nunca se reproduce correctamente Lo que podemos hacer, esta solución muy sencilla, es el daño que aplicamos. Porque tenemos algo llamado un tipo de daño, básicamente podemos especificar, es el auto daño el que está haciendo daño, o es el clic o el mouse el que está haciendo daño? Para ello, muy sencillo, vayamos a los planos Y aquí déjame solo escribir Click Ir a clase de planos, podemos buscar tipo de daño Si solo buscas daños, puedes verlo aquí abajo, tipo de daño. Adelante y selecciona esto, solo llámalo daño automático. Ahora bien, en realidad no vamos a entrar en cosas de daño dentro de aquí. Básicamente solo necesitamos esta clase de planos. puede pensar en ello como trabajar con enumeraciones donde tenemos una lista básicamente usando esta clase y un tipo de enumeración Regresemos y vayamos al jugador. Como puedes ver aquí en el jugador, cuando hicimos el daño aplicado, podrías establecer una clase de daño, ahora podemos configurarlo al auto daño que acabamos de crear compilar. Lo que quiero hacer aquí es que quiero jugar esto siempre que sea, el auto daño que está haciendo el daño. Ahora lo que podemos hacer dentro de aquí por el daño o el enemigo, es que podemos tomar este tipo de daño y básicamente podemos buscar un nombre y podemos obtener la visualización. Ahora puedes seguir adelante e imprimir una cuerda y ver qué hace si simplemente desconecto esto, guardarlo, y puedes escribir una cadena de impresión. Adelante y conéctalo. Y conecta éste también. Sólo mira lo que aporta a la pantalla. Si hago clic en play y compro algo para hacer Daños auto, se puede ver que básicamente muestra el nombre del plano y dice Auto Damage Así es como lo llamamos. Puedo usar esto a mi favor tomando esto y buscando contiene. Sólo voy a ver si esta cadena contiene algo que estoy buscando. Y si solo busco daños en auto porque es parte del nombre del plano Si este tipo de daño que hice sí contiene auto daños en el nombre, puedo hacer una sucursal aquí. Puedo salir y conectar esto también o básicamente lo que puedes hacer. También puedes seguir adelante y decir si no quieres las dos ramas aquí, puedes tomar esto y decir lingotes Básicamente puedes tomar esto aquí en su lugar y conectar este. Se puede eliminar el otro lingote. Si el nombre contiene daño y el enemigo está muerto, puedes seguir adelante y jugar este. Vamos a seguir adelante y compilar y Guardar. Ahora puedes ver si hago clic en play y compro algo aquí, Daños. Se puede ver que todo está funcionando correctamente. Nada se está empantanando. Además, si hago clic en play y trato de matar al enemigo, todo está funcionando perfectamente como antes. Y si compro o daño así como hago clic en el enemigo, dos estamos haciendo algo. Se puede ver que sólo se está jugando una vez. Y tampoco hay dólar en el código. Ahora sabemos que el código está funcionando a la perfección. Adelante y reorganice todo esto, y pasemos a la siguiente lección 91. 10.01 Diseño de la pantalla de nivel: Lo que tenemos que hacer ahora es igual que en Clicker heroes, donde podrás ver el nivel que has alcanzado aquí arriba Tenemos que hacer lo mismo para este clicker también. Volvamos a la interfaz de usuario y vamos a agregarla aquí en la u principal, sobre el lado dentro de los widgets principales. Yo sólo voy a copiar esta parte aquí. Yo sólo voy a dar click sobre esta superposición y copiar y básicamente todo el asunto aquí, controlar C. Y luego dar click en el panel de lienzo control V. Tan solo pegarlo aquí arriba. Ahora para ésta la vamos a colocar a un lado. Voy a dar click en el punto de anclaje y colocarlo a la derecha para el desplazamiento. Yo sólo voy a escribir cero en la X. El malestar inferior también es cero. Ahora puedes ver que está fuera de la pantalla, en realidad está en el costado aquí. Lo que tenemos que hacer es básicamente la alineación aquí para la x, necesitamos empujarla hacia adentro Es sólo escribir uno aquí en la alineación, Ahora está en la pantalla. Lo que tenemos que hacer ahora es para la posición x, solo necesitamos alejarla del borde de la pantalla otra vez, igual que antes, puedes pincharla en esta. Si no recuerdas lo que has hecho, lo alejaste a 30 píxeles. Hagamos lo mismo aquí para mantenernos consistentes. Al hacer clic en la superposición, voy a empujarlo 30 en el desplazamiento x , en realidad, -30 de lo contrario irá por el otro lado Y 30 compensados desde la parte superior. Y otra vez 30 desde abajo también. También necesito algo de texto aquí arriba donde dice nivel. Vamos a copiar este texto aquí arriba, Control C y luego controlar V. Aquí abajo en la superposición. Lo voy a poner encima de la caja de desplazamiento. En realidad, necesitamos agregar una caja vertical, lo contrario estará en el medio. Busquemos una caja vertical. Adelante y agrégalo. Después agrega el texto y el cuadro de desplazamiento en el cuadro vertical. Al hacer clic en el cuadro vertical, continúe y continúe y llénelo aquí horizontal y verticalmente. Y también el cuadro de desplazamiento que necesitas llenar para dar click en Rellenar aquí. Ahora tenemos que darle un poco de relleno también, porque como puedes ver, el texto también está en la parte superior de los bordes. Y también para el tamaño frontal, creo que voy a reducir un poco más el frontal, así que tal vez escribiendo 24 aquí en su lugar. Ahora lo que podemos hacer es que básicamente podemos aquí para el cuadro de desplazamiento, voy a escribir cero en el padding, porque ahora voy a agregar padding a todo el asunto. click sobre esta caja vertical, le voy a dar un relleno de, comencemos con 50 y veamos cómo se ve. Bien, eso se ve bien. Y también necesito aumentar, tal vez el overlay ligeramente para poder ver cómo se ve a la derecha y a la izquierda. No creo que necesite darle tanto un agregado a la derecha y a la izquierda. Voy a escribir 35 en su lugar. Así, estoy dando click en estas líneas para eliminarlas. Para ver cómo se ve. Obviamente necesito agregar un espaciador entre el texto y el cuadro de desplazamiento aquí abajo. Agrega un espaciador de tal vez como 15 y la y. ahora tenemos esta pantalla lista aquí arriba. Vamos a escribir solo nivel en su lugar. Vaya a y compile y solo hágalo un poco más grande. También necesitamos arreglar el tamaño, dependiendo de qué tan grande sea la tarjeta de nivel. Por ahora, todo se ve bien. Pero pasemos ahora a la siguiente lección y diseñemos la tarjeta. 92. 10.02 Diseño de la tarjeta de nivel: Para diseñar la tarjeta de nivel, hagamos el mismo método que hicimos aquí con la tarjeta de artículo de la tienda. Así que déjame hacer clic aquí, ir a la interfaz de usuario y hacer una nueva. Llamemos a esta tarjeta de un nivel. Vamos a abrirlo otra vez. Adelante y agrega un panel de lona antes de que hagamos nada, También cambia esto a deseado en pantalla. Ahora ya estamos listos. Lo que quiero hacer es básicamente la tarjeta va a ser un botón porque va a ser un montón de botones aquí para cambiar de nivel. Dependiendo del nivel al que quieras cambiar, en realidad solo voy a copiar este botón que hicimos aquí. Al hacer clic en esta superposición y botón y texto y haga clic en el control C. Vuelva a la tarjeta de nivel y controle V por aquí. Ahora para la superposición, estoy haciendo clic en Tamaño al contenido también para el texto. En realidad, antes de hacer eso por aquí para la superposición, cambiemos el punto de anclaje para que esté en el medio y 0.5 en las alineaciones y 00 en la x e y Ahora está perfectamente centrado para este texto. Ahora está perfectamente centrado para este texto Sólo voy a escribir uno por ahora. Entonces esto va a mostrar el nivel así como para este tamaño de botón. Creo que lo voy a reducir un poco, no necesito que sea así de amplio. Al hacer clic en él, podemos reducir el tamaño en la x. Creo que voy a escribir 100 aquí. Solo asegúrate de copiar este tamaño de imagen y pegarlo en el florecido también y en el prensado también. Para este color de texto. Sólo voy a cambiarlo de nuevo a este color predeterminado. Así que adelante y copia este color. Vuelve a la tarjeta de nivel y pegarla por aquí también. Ahora básicamente este está listo. Echemos un vistazo a cómo se ve si vuelvo al menú principal o a la interfaz de usuario principal. Y hago clic aquí, y esta se llama la lista de artículos. De hecho voy a cambiar el nombre de esta caja vertical a una lista de niveles. Compilar. Ahora busquemos la tarjeta de nivel aquí arriba y arrástrala a la lista de niveles. Y sigue adelante y duplícalo un par de veces para que veas cómo se ve. Lo que quiero arreglar aquí un poco es el tamaño de esta superposición. Si solo lo empujas hasta que esto desaparezca aquí, solo trata de hacerlo así, pequeño posible, pero sin tener que pinchar así También la barra de desplazamiento. Quiero iniciarlo aquí en el borde de este botón. Entonces haciendo clic aquí arriba, bajando la barra de desplazamiento, encontrando la barra de desplazamiento que se dirige a la parte superior. Sólo voy a escribir algo como ocho. Eso es bueno. Creo que también necesitamos eso para la parte inferior. No estoy seguro ahora mismo. Pero siempre podemos duplicar esto un par de veces y echar un vistazo y hacer clic en la última. Y eso también lo necesitamos. Para las palmaditas en el fondo También voy a escribir ocho también. En realidad, necesita menos. Escribamos en vez de ocho, escribamos algo así como cinco en su lugar. Siempre podemos volver aquí si necesitamos cambiar más cosas con la interfaz de usuario. Pero por ahora, todo se ve bien, y si hago clic en jugar, espero que el mouse sobre ellos, todo está funcionando. Lo que puedo hacer ahora es simplemente seguir adelante y eliminar todo para que quede limpio y solo tenemos esta lista de nivel. Compila, guarda todo y sigamos adelante. 93. 10.03 Cómo establecer el nivel: Ahora sigamos adelante y cambiemos dinámicamente este nivel para este botón. Ahora esto va a ser muy fácil porque vamos a hacer clic en este texto y vamos a renombrarlo a compilar a nivel de texto. Y ahora vamos a la gráfica. Ahora vamos a hacerlo igual que antes con el artículo de la tienda. Siempre que lo agreguemos a la lista, va a cambiar esta información dentro de la construcción del evento. Básicamente va a actualizar el costo del artículo y todo esto para éste, nuevamente, tomemos este constructo de evento. Lo único que tenemos que hacer es básicamente establecer esto el nivel que necesitamos para establecer el número. Ahora en cuanto al nivel, vamos a hacer una nueva variable aquí, y vamos a usar un entero. Llamemos a esto un nivel. Vamos a darle esta información. Siempre que creamos este widget, siempre puedes volver al controlador del reproductor si no recuerdas lo que hiciste con la tienda de artículos. Ves aquí si bajas, lo que hicimos es básicamente crear esta variable de información del ítem. Y hicimos clic en exponer en spawn e Instancia Editable y pudimos alimentar información En realidad vamos a hacer lo mismo aquí para la instancia de nivel editable, exponer en spawn Básicamente podemos simplemente hacer clic y arrastrar esto aquí así y en realidad ya terminamos aquí. Podemos darle a esto alguna información cada vez que engendremos la carta, y lo vamos a hacer en la siguiente lección 94. 10.04 Desbloquea un nuevo nivel: Bien, ahora sigamos adelante y demos a esto alguna información. Nuevamente, estamos trabajando con UI, así que en realidad voy a crear esto en el controlador Player aquí abajo. Hagamos un nuevo evento personalizado. Y llamemos a este nivel de desbloqueo. Podemos usar este para desbloquear el nivel o mostrar esta pantalla de nivel por aquí. Siempre que el jugador le gane a un enemigo. Este nivel desbloqueado, básicamente crea este widget a un lado. Para que podamos ver el nivel. Básicamente el botón ahora mismo, tiene una era porque conecté esto sin ningún tipo de información. Si hago clic en Reproducir, básicamente aparece un botón cada vez que superas un nivel. Y esto es lo que queremos hacer. Básicamente crea el widget. ¿Qué widget crea? Es la tarjeta de nivel que necesitamos crear. En cuanto al nivel, podemos decirle más adelante qué nivel desbloquear. Así que sólo voy a hacer click y arrastrar esto hacia aquí. Quiero agregar este botón a mi lista de niveles. Si vuelvo a la UI, abro la Ui principal, a esta le llamamos Lista de nivel VB. Aquí es donde queremos agregar la tarjeta. Si vuelvo al mando de reproducción, puedo ver lo que tengo. Tengo este WB main, así puedo agregarlo desde aquí y buscar la lista de niveles. Adelante y da click en él. Ahora podemos decir sumar dos, y puedes elegir esta. Añadir niño a la caja vertical. Básicamente, puedes agregar este widget que acabas de crear a tu cuadro vertical y seguir adelante y compilar. Ahora estamos empezando por el nivel uno. Y el nivel uno debería estar ahí por defecto porque este nivel en el que estamos ahora mismo, solo desbloqueemos el nivel uno por defecto aquí en el Controlador del Jugador. Siempre que iniciemos el juego, voy a escribir nivel de desbloqueo y básicamente podemos escribir uno aquí. Estamos desbloqueando el nivel uno por defecto y haciendo clic en play Ahora puedes ver que el nivel uno está desbloqueado y se muestra. Y necesitamos desbloquear todos los demás niveles cada vez que derrotemos a un enemigo. Sigamos adelante y hagamos eso dentro del modo de juego, porque en el modo juego, si volvemos, hace mucho tiempo que no hicimos esto aquí en el modo de juego, pero aquí hicimos este incremento de nivel actual Vamos a desbloquear el nivel aquí en su lugar. Siempre que aumentemos el nivel y aún no lo hayamos desbloqueado, podemos seguir adelante y desbloquearlo Vamos a llamarlo, está dentro del controlador del reproductor. Entonces necesitamos el controlador del reproductor aquí. Y podemos buscar nivel de desbloqueo. Y adelante y toma esto aquí. Lo que tenemos que hacer aquí en lugar de simplemente desbloquear este nivel actual Porque en realidad podríamos estar jugando un nivel inferior, si queremos entrar en un nivel superior, no queremos volver a desbloquearlo. Imagínese si estoy jugando aquí y si estoy en el nivel cinco, pero elijo volver a hacer clic en el nivel uno y juego el nivel uno. No quiero volver a desbloquear nivel dos porque ya lo desbloqueé. Necesitamos una nueva variable aquí para guardar el nivel previamente desbloqueado. Vamos a hacer una nueva variable y llamarla nivel previamente desbloqueado, convertirla en un entero. Aquí lo que podemos decir es, es el nivel actual, ¿es más alto que el nivel previamente desbloqueado? Por ejemplo, si estamos en el nivel uno y el nivel previamente desbloqueado es el nivel cuatro, realmente no necesitamos desbloquear el nivel tres y así sucesivamente. Nuevamente, porque ya estamos en el nivel cuatro, nuestro nivel máximo, hagamos esta rama si el nivel actual es superior al nivel previamente desbloqueado. Si hemos alcanzado el nivel cinco y desbloqueamos el nivel cuatro antes, si eso es cierto, vamos a tomar este nivel previamente desbloqueado, vamos a establecer en cualquiera que sea el nivel actual, que ahora es el nivel cinco en lugar de cuatro. Y podemos simplemente enchufar esta información aquí abajo. Ahora si compilo y hago clic en jugar y podemos derrotar a este enemigo. Se puede ver que el nivel dos ya está desbloqueado. Si derroto también a este enemigo, se desbloquea el nivel tres y así sucesivamente. Entonces ahora todo eso está funcionando correctamente. Sin embargo, de nuevo, realmente no hemos recubierto el botón, así que no podemos volver de nivel. Y vamos a trabajar en los siguientes. 95. 10.05 Cómo establecer el nivel actual: Lo que queremos lograr ahora mismo es que queremos evitar que el enemigo desove, cambiando automáticamente un nivel como este Lo que queremos hacer es que queremos cambiar manualmente los niveles cuando hacemos clic en esos botones. Sigamos adelante y trabajemos con eso a continuación. Ahora aquí estoy dentro del modo de juego, y vamos a empujar esto un poco hacia abajo. Aquí estoy por debajo del incremento del evento actual que creamos anteriormente Lo que quiero hacer aquí es un nuevo evento personalizado. Hagamos esto, llamemos a este conjunto de nivel actual. Vamos a usar este evento personalizado cada vez que hagamos clic en esos botones de nivel aquí. Vamos a establecer el nivel manualmente configurando el nivel actual. Obviamente necesitamos el nivel actual aquí y tenemos que fijarlo. Y tenemos que enchufar esto a los eventos, porque entonces podemos configurarlo manualmente otros lugares. Ahora estamos fijando el nivel actual aquí para el nivel actual, sólo voy a decir un nivel. Estableciendo el nivel que elegimos al nivel actual. Entonces nosotros, nosotros, cambiamos un nivel. Queremos asegurarnos de que se elimine al enemigo que está en este nivel actual en el que nos encontramos, lo contrario van a desovar uno encima del otro Recuerda que está en el controlador de placa, así que solo voy a copiar el controlador de placa aquí. Consigue la variable enemiga engendrada. Haga clic derecho y diga convertir a un get validado. Porque ahora podemos decir si es válido, podemos seguir adelante y destruir el Acta. Entonces después de destruir el Acta, queremos engendrar al nuevo enemigo Básicamente, en realidad puedo copiar esto aquí arriba. Sólo puedo copiarlo, pegarlo y conectarlo así. Ahora bien, si el enemigo ya no es válido, solo podemos seguir adelante y engendrar al nuevo enemigo Porque la única razón por la que agregamos esta parte es para asegurarnos de que el enemigo actual sea destruido y enemigo actual no exista. Podemos simplemente seguir adelante y engendrar al nuevo enemigo. Ahora en realidad somos capaces de establecer el nivel actual usando esta lógica. Así que vamos a compilar y guardar todo. Ahora volvamos a la interfaz de usuario. Aquí en la interfaz de usuario, si hago clic en la tarjeta de nivel y hago clic en este botón, baje al botón y haga clic, haga clic en, haga clic en el más aquí para crear un evento aquí. Cada vez que haces clic en el botón se llama por botón y no es realmente correcto. Sólo voy a renombrarlo botón. Voy a llamarlo compilar de nivel. Regresemos al nivel del botón. Siempre que hagamos clic en él, queremos cambiar el nivel. Queremos llamar a este evento aquí en el modo de juego. Sigamos adelante y hagamos eso. Digamos que haga clic derecho aquí y digamos obtener modo de juego. Entonces arrastremos desde aquí y digamos obtener referencia del modo de juego, el de la interfaz del blueprint Golpeemos desde aquí y digamos establecer el nivel actual porque así es como lo llamamos. Ahora ya tenemos esta información de nivel porque la enchufamos aquí Vamos a enchufarlo así. Vamos a compilar. Y hagamos clic en Comp y veamos qué pasa cuando mato a un enemigo. Yo también mato al siguiente. Mata también al siguiente. Ahora veamos si puedo cambiar el nivel. Si presiono en dos, puedo cambiarlo, presionar en uno. Y puedo ver que en realidad puedo cambiar entre los niveles y todo está funcionando. El temporizador se está reiniciando cada vez que cambio los niveles, lo que queremos evitar Ahora, tienes un error aquí, por ejemplo. Si matas al enemigo en el nivel uno, podrás ver que cambia automáticamente al nivel dos. Realmente no quiero hacer eso. Queremos cambiar manualmente los niveles. Sigamos adelante y trabajemos en eso a continuación. 96. 10.06 Prevención de la aparición automática de enemigos: Ahora para evitar que los enemigos engendren automáticamente o cambien al siguiente nivel, abramos el modo de juego Una vez más, tenemos que o reescribir este llamado Increment Current Level, porque recuerda que usamos eso en la muerte enemiga cada vez que vamos a la base enemiga Dentro de los eventos de muerte, incrementamos el nivel cada vez que matamos al enemigo Tenemos que hacer algo al respecto ahora en vez de incrementar el nivel actual, porque en este juego nunca lo harás, nunca lo incrementará En cambio, en realidad voy a llamarlo nivel de desbloqueo. Desbloqueamos el nivel y luego cambiamos manualmente al siguiente nivel. Esto se hace en los juegos clicker porque por lo general tal vez el siguiente nivel es demasiado difícil y hay que ir un nivel atrás para ganar más dinero para comprar cosas, y luego puedes ir al último nivel Has desbloqueado, por eso está hecho. A este también se le llama nivel de desbloqueo. Recuerda que esto es en el Control de Jugador donde agregamos el nivel. De hecho cambiemos el nombre de éste para no confundirnos. En lugar de llamarlo nivel desbloqueado aquí en el controlador del jugador, llamémoslo un botón de nivel, UI. Aquí es donde agregamos el botón a la lista. Vamos a llamarlo así en su lugar. Y volvamos al modo juego para que no nos confundamos ahora. Se llama así. Bien, este nivel de desbloqueo. En realidad queremos seguir ejecutándolo aquí. Siempre que el enemigo esté muerto, queremos desbloquear el nivel. Pero solo quieres desbloquear el nivel siempre que estés en el último nivel. Siempre que estoy en este nivel y estoy jugando, quiero desbloquear el siguiente nivel. No quiero desbloquear el nivel si estoy jugando el nivel uno en estos momentos, porque ya he desbloqueado el nivel dos. Para evitar esto, pasemos al modo de juego y aquí en el nivel desbloqueado. Antes de hacer todo esto, lo que podemos hacer es que podamos tomar el nivel actual. Podemos preguntar, ¿es esto igual al nivel desbloqueado? En lugar de éste, tenemos donde se llama nivel previamente desbloqueado. En realidad necesitamos cambiar este código. Déjame cambiarle el nombre aquí abajo. En lugar del nivel anterior desbloqueado, voy a llamarlo Compilar de nivel desbloqueado. Asegúrate de que el nivel desbloqueado sea uno por defecto porque ya tienes el nivel uno. El nivel actual también es uno. Tenemos el nivel uno desbloqueado por defecto. Si el nivel actual es igual al nivel desbloqueado, Si eso es cierto, queremos seguir adelante y desbloquear el siguiente nivel. Porque esto significa que si el nivel actual, que es uno en este momento, es igual al nivel desbloqueado, que es uno en este momento, entonces en realidad estamos jugando en el último nivel. Y queremos desbloquear el nivel cada vez que matemos a este enemigo. Sigamos adelante y encerremos eso. Nuevamente, queremos aumentar el nivel actual si esto es cierto. Ahora estamos preguntando, es esto menor o igual al nivel máximo Si eso es cierto. Ahora realmente no queremos engendrar al enemigo porque sólo estamos desbloqueando el nivel, No estamos cambiando En lugar de engendrar al nuevo enemigo, en realidad voy a eliminar Elimine esto aquí también. Este también podemos eliminar. Y éste también. simplemente seguir adelante y enchufar esto. Déjame arrastrar esto para que puedas ver todo el asunto. Ahora lo que estamos diciendo es, es el nivel actual igual al nivel desbloqueado, Esto solo comprueba que en realidad estamos en el último nivel. Hemos desbloqueado previamente, si eso es cierto y hemos derrotado al enemigo, sigue adelante y desbloquea, o simplemente toma este nivel actual y agrega uno a él. Cuando hagas eso, este nivel desbloqueado, solo eliminemos este, porque ahora solo podemos enchufar esto a aquí, Bloquear o desbloquear. Pero va a agregar un botón para el último nivel del nivel actual, porque le hemos agregado uno, en lugar de ser el nivel uno ahora es nivel dos y va a agregar el botón para un nivel dos. En realidad, esto es suficiente. Ahora, básicamente estamos desbloqueando el nivel con este evento Y entonces estamos fijando aquí abajo este nivel actual para engendrar al enemigo aquí antes de continuar Este nivel actual en realidad es incorrecto, porque queremos establecer el nivel desbloqueado aquí. Porque es el nivel desbloqueado lo que queremos sumar, no el nivel actual. Porque de nuevo, no queremos cambiar el nivel automáticamente. Quiero quedarme en el nivel actual en el que estoy ahora mismo, pero solo quiero aumentar el nivel desbloqueado. También aquí abajo, enumere este, y peguemos el nivel desbloqueado. En cambio, vamos a agregar un botón para el nivel desbloqueado que es todo correcto. Ahora ahora para asegurarnos de que todo está funcionando aquí, vayamos también a la base enemiga y también nos aseguremos de que el código sea correcto. Ahora estamos en el evento de la muerte, y aquí en el evento de muerte queremos desbloquear el nivel que es correcto. Y recuerda, el nivel desbloqueado sólo va a funcionar si el nivel actual es igual al nivel desbloqueado. Nos estamos asegurando de que estamos en el último nivel, nivel desbloqueado, pero también tenemos que asegurarnos de que queremos establecer el nivel actual porque esto está generando a nuestros enemigos Volvamos a la base y llamemos al nivel actual establecido. Sigamos adelante y conectémoslo aquí. Conectado aquí también. Tomemos el nivel actual, y esta es la variable aquí. Vamos a establecer el nivel al nivel actual. Adelante y compile ahora, el nivel actual va a cambiar cada vez que presiones el botón. Si vas a la interfaz de usuario, vas al código de nivel y presionas este botón, va a cambiar el valor del nivel actual. Va a cambiar este nivel actual establecido. Sigamos adelante y probemos eso. Vamos a hacer clic en Reproducir. Voy a matar a un enemigo. Ahora podemos ver que no está cambiando de enemigos automáticamente porque básicamente estamos, si vuelvo al código, estamos matando al enemigo y luego estamos engendrando al enemigo para el nivel actual Recuerden que hicimos esta función, solo estamos tomando el nivel actual que no estamos incrementando. Sólo estamos incrementando en uno el nivel desbloqueado si estamos en el nivel actual Entonces, si vuelvo y sigo jugando, puedo pasar al siguiente. Ahora puedo matar a este enemigo y voy a desbloquear el siguiente nivel. Puedo volver al nivel uno o dos o tres. Para que pueda volver a uno, por ejemplo, matar a este enemigo. Y puedo seguir recibiendo dinero de este enemigo hasta que sienta que soy lo suficientemente fuerte como para comprar algunas cosas aquí. Y luego puedo pasar al siguiente nivel y puedo ver que puedes cambiar de enemigos como quieras. Y sólo va a agregar un botón si derrotas al último enemigo. Bien, así que terminamos aquí. Así es como se evita el desove automático. Solo asegúrate de echar un vistazo si tienes tal vez un pequeño error, asegúrate de que sea el nivel actual el que sea igual al nivel desbloqueado. Y también es el nivel desbloqueado que estás agregando aquí, agregando, compilando, guardando todo, y pasemos al siguiente. 97. 10.07 Añade iconos de calaveras a los jefes: Haremos que el juego sea un poco más interesante. Quiero agregar un icono de calavera a los autobuses. Recuerda dentro de la tabla de datos, seleccionamos que algunos de los enemigos son autobuses. Éste, el Mago, por ejemplo, y el caballero Rogan. Lo que quiero hacer es agregar un icono de calavera a la pantalla de nivel. Pasemos a la interfaz de usuario, abramos la tarjeta de nivel, sobre en realidad en el diseñador. Empecemos por aquí. Vamos a agregar una imagen. Arrastremos esta imagen aquí abajo a la superposición para esta imagen. Cambiémoslo a un icono de calavera. Recuerda que en realidad podemos usar el que está en los objetos assets. El aquí es sprites. Sólo voy a usar la textura o el cráneo. Si solo buscas una calavera y deberías poder encontrarla aquí, solo voy a usar la textura en lugar del sprite Sigue adelante y edita para el tamaño. Probemos 50 por 50 así como para la posición de la misma. Voy aquí abajo a la transformación y a editar la traducción para ello. Por ejemplo, para la x podemos decir menos seis, y eso irá por aquí, y luego menos seis, y eso subirá de esta manera. Zoom, creo que se ve bien. Siempre podemos cambiarlo, pero se ve bien. Ahora bien este icono de aquí, por defecto, quiero que se oculte porque no quiero que aparezca aquí por cada botón. Lo que quiero hacer es aquí en la visibilidad, vamos a configurarlo para compilar oculto ahora en la gráfica, solo agreguémoslo a los enemigos que son autobuses. Recuerda dentro de aquí lo que podemos hacer es que siempre podemos decir obtener información del enemigo. Necesitamos primero el nombre del enemigo. ¿Tenemos el nombre del enemigo? Nosotros en realidad, si recuerdas en la biblioteca, si vuelvo a bibliotecas y lo pongo, si dices obtener información de nivel, recuerda la estructura get level info. Si abro la estructura de información de nivel, tienes el nombre enemigo que ahí genera De hecho, puedes usar esto a tu favor. Entonces se puede decir obtener información de nivel. Ya tenemos el nivel aquí. Podemos tomarlo y romperlo. Cuando lo rompemos, tenemos el nombre del enemigo, que podemos enchufar aquí. Haga clic aquí, Ocultar pines desconectados. Entonces puedes arrastrar desde aquí. Y descomponerlo también. A partir de aquí ahora tienes el tipo enemigo. Vamos a arrastrar desde aquí. Digamos que ¿esto es igual? Y no vamos a seleccionar éste. Vamos a seleccionar esta porque es una enumeración. Este igual a un jefe. De nuevo, da click en éste. Ocultar pines desconectados que podemos arrastrar desde aquí ahora, y hacer una rama Si es cierto que es un jefe, simplemente queremos mostrar esta imagen. Tomemos esta imagen. Ahora no lo hemos convertido en una variable. Cambiemos el nombre de la misma a imagen. El cráneo es variable. Ahora podemos ir a la gráfica. Podemos sacarlo y decir establecer visibilidad. Y establecer la visibilidad de la misma. Podemos configurarlo para recordar, no golpear comprobable. No bloquea el botón porque visible va a bloquear los clics del mouse. Por lo que no podemos hacer clic en el botón. Golpea comprobable mejor. Eso debería ser. Si compila y hago clic en play, ahora se puede ver nada que hay aquí. Si compro algo aquí para poder matar al enemigo mucho más rápido, podemos cambiar a los niveles, podemos ver que todo está funcionando a la perfección. Si cambio al nivel cuatro, y debería aparecer aquí en el nivel cinco, puede ver que hay un icono y está funcionando perfectamente. Solo voy a hacer que la interfaz un poco más grande para que no se baje. Yo solo minimizo esto. Vuelvo a la interfaz de usuario principal aquí, déjame solo agregar un nivel. Si solo agrego un gato de nivel, puedo ver lo que estoy haciendo así. Ahora podemos hacer click en el overlay y podemos hacerlo solo un poco más grande para que no corte nuestro icono de calavera. Compila y juega. Y aquí vamos. Todo debería funcionar bien. Adelante y borra esta otra que va a fallar. Como una cosa extra. Antes de que terminemos, agreguemos también un icono de calavera junto al nombre del jefe. En el nombre del jefe, está aquí en la información enemiga. Entonces básicamente necesitamos agregar uno aquí. Al igual que antes, voy a buscar imagen, en realidad necesitamos una caja horizontal porque aquí no tenemos nada. Yo sólo voy a buscar primero una caja horizontal. Agrégalo aquí abajo. Busca la imagen. Agrégalo también para la imagen. Justo como antes, voy a cambiarlo a la partitura, una talla es, vamos a conducir 60 por 60. De nuevo, creo que fue 60 por 60, o tal vez fueron 50. Si solo vuelvo aquí, eran 50. Vamos a hacerlo 50 por 54. Ahora permítanme agregar este texto en el cuadro horizontal. Estos dos elementos están dentro de aquí. click en el cuadro horizontal, voy a hacer el ancla al medio, 0.5 en las alineaciones para asegurarme que está en el medio Y además la posición es cero por cero, lo que está perfectamente en el medio. El tamaño al contenido es cierto. Básicamente cambiar el tamaño de la caja horizontal a cualquier contenido que tenga. Bien, entonces ahora lo tenemos aquí. Ahora para el icono. Sólo voy a agregar algo de relleno al fondo, tal vez dos. Lo empujamos un poco hacia arriba. En realidad, en lugar de un relleno, en realidad quiero escribir cero. En realidad, quiero cambiar la traducción aquí abajo. Para que puedas cambiarlo. En lugar de agregar un relleno, puede cambiar la traducción. Iba a decir menos dos, así que está empujado un poco hacia arriba. Bien, igual que antes, voy a hacer que la visibilidad se oculte y vaya a la gráfica aquí para la actualización de información enemiga. Justo como antes. Ahora tenemos el nombre del enemigo, así que sólo voy a decir obtener información del enemigo. Ya tenemos el nombre del enemigo. Entonces podemos romper esto, igual que antes, podemos tomar el tipo enemigo y decir, esto es igual a nosotros? Si ese es el caso, adelante y vuelve a mostrar este icono, igual que antes. Cambiemos el nombre a imagen cráneo. Vamos a establecerlo es variable. Tomemos la imagen del cráneo y fijemos visibilidad para ser golpeada comprobable. Una vez más, da clic en éste. Ocultó pines desconectados. Golpea esto, tal vez un poco más cerca. Vamos a probarlo y ver qué pasa. Hago clic en jugar en el juego. Compro un par de estos para poder dañar mucho más rápido y avanzar a los niveles. Ahora aquí está el enemigo, y se puede ver que el icono ha aparecido. Está funcionando a la perfección. Pero se puede ver aquí, en realidad acabo notar que este nombre es empujado a un lado. No está en el centro de este enemigo. Esto se debe a que el icono del cráneo en realidad está ahí. Simplemente está oculto. En lugar de poner el cráneo a oculto en este caso, en este caso estuvo bien porque solo está ahí. Este en realidad está empujando el nombre. Lo que podemos hacer es establecer en lugar de oculto, puedes configurarlo en colapsado. Es como si minimizaras un menú. Ya no está en tu opinión. Configurarlo para colapsar debería funcionar bien. Ahora bien, si solo cambio nivel rápidamente solo para mostrártelo, ahora este muere. Si voy ahora se puede ver esqueleto estaba aquí antes de que el texto comenzara aquí. Ahora se inicia en la posición correcta. Colapso es mucho mejor para usar en este caso. Bien, genial. Entonces ahora tenemos esta calavera desplegada. Se ve más fresco que antes. Y también, puedo ver que se está estirando un poco, la alineación, voy a ponerla en el medio en su lugar. Adelante, compilar, guardar todo, y continuemos. 98. 10.08 Adición de iconos a las tarjetas de compras: Lo siguiente que quiero hacer aquí es agregar también los íconos para los autos, para los gatos de la tienda. Pero porque se puede ver aquí, se ve bien. Pero creo que se verá mejor si tenemos un icono al lado de este texto De hecho, sigamos adelante y agreguemos eso. Vamos a abrir la tienda por aquí. Agreguemos el icono al lado de este texto. Ahora está dentro de una caja o vertical. Necesitamos una caja horizontal aquí abajo. Solo busco de nuevo un cuadro horizontal, y lo agrego aquí abajo, justo encima del texto. Agrega el texto al cuadro horizontal. Y luego agrega una imagen a la caja horizontal también, justo encima del texto aquí. Ahora para este icono, vamos a cambiarlo al icono del ítem. Pero por ahora, sólo tienes que seguir adelante y seleccionar un icono aleatorio para la alineación. Adelante y colóquelo en el medio para que no se estire por el tamaño de este icono. Creo que 32 por 32 está bien. No creo que necesitemos más que esto. Probablemente necesito un pequeño espaciador entre esos. Haz que se vea mejor, solo agregando en la x, Tal vez cuatro y apenas así. Sí, se ve bien. Bien, sigamos adelante y hagamos clic en esta imagen, llámalo elemento de imagen. Cambiemos esta a la variable Is. Ahora vayamos a la gráfica y hagamos las cosas con ella. Ahora aquí en el gráfico de eventos, echemos un vistazo a dónde podemos hacer esto mejor. Tenemos el ítem de actualización spot I. Tenemos la actualización, el costo. También tenemos el constructo del evento. Siempre que se agregue esta tarjeta, este sería el mejor lugar. Siempre que se agrega la carta Desde el controlador del jugador, simplemente seguimos adelante instantáneamente y agregamos el icono también. Déjame alejar esto. Después de actualizar el nombre del texto, quiero tomar el icono de la imagen y digamos set brush. Así es como estableces una textura dinámicamente o una imagen. Fije el pincel a partir de la textura. Adelante y selecciona éste. Esto básicamente significa establecer esta imagen a partir de una imagen que he importado a este motor. Fije el pincel a partir de la textura. Ahora, ¿qué textura necesitas? Ya tenemos los íconos, creo, y en realidad no lo tenemos. Sigamos adelante y agreguemos eso. Sólo tenemos el sprite aquí abajo. Ahora para continuar, tenemos que agregar esta miniatura a la información del artículo Regresemos, vayamos a los artículos, en realidad agreguemos la información de la estructura del artículo por aquí. Agreguemos una nueva variable llamada thumbnail nail. Vamos a agregar esta o cambiarla a una textura dos D, que es solo una textura que importas o una imagen. Y seguir adelante y seleccionar referencia de objeto. Voy a mover esto hacia arriba justo encima de la miniatura o el nombre del elemento Recuerda, ahora tienes que ir a tu archivo de Google Sheets. Ahora por aquí, voy a ir a la información del artículo aquí a la derecha. Sólo voy a hacer click derecho aquí arriba e insertar columna a la derecha. Llámalo miniatura. Lo mismo que la variable. Ahora podemos agregar la miniatura por aquí, referencias. Ahora volvamos a, veamos si los tenemos aquí en los objetos en realidad solo aquí en las texturas, solo puedes usar esos como referencias, porque esos son los elementos. Lo que quiero que hagas es abrir la mesa. El primero es la pluma ligera. De nuevo, al igual que antes de la luz clic derecho referencia. Vuelva a su documento. Pegado en siguiente es el clic derecho aquí, Referencia pegada para la antorcha Y adelante y hazlo por todos ellos. Esta fue la última para mí. Voy a seguir adelante y volver a hacer clic en Descargar archivo como archivo CSV. Entonces voy a importar esta otra vez a, mi carpeta de tablas de datos. Adelante y portarlo, y deberías tener toda la información. Ahora volvamos otra vez y trabajemos y continuemos con el trabajo. Volvamos a abrir la tarjeta del artículo de la tienda. Ahora tenemos esta miniatura. Esta miniatura la podemos enchufar aquí. Voy a hacer clic para hacer un nodo de reendirección como este y dar clic en Y ocultar los pines conectados, compilar y guardar. Ahora todo debería estar funcionando. Si hago clic en play, ahora puedes ver que se han agregado todos los iconos. Nuevamente, necesito hacer este panel un poco más grande para que no se corte si solo agrego una tarjeta para poder visualizarlo mejor. Entonces, si agrego una tarjeta de artículo de tienda a la lista de artículos, puedo hacer clic en la caja vertical y luego puedo hacerla un poco más grande aquí. Entonces no está cortando así. El cumplir ahora se puede ver que todo se ve bien. Se ve mucho mejor si tienes un ícono al lado de los artículos de tu tienda. Sí, así es como los agregas y debería ser así. Sólo tienes que seguir adelante y ahorrar. Solo asegúrate de nuevo, haz clic en este icono. Asegúrate de que has dicho la visibilidad para no golpear comprobable. No bloquees nada. Sí, sigamos al siguiente. 99. 11.01 Añade el cursor del ratón a la tienda: Bien, ahora es el momento agregar algo con el cursor del mouse. Hasta el momento hemos estado trabajando con los ítems, Pero ahora hagamos algo con respecto al cursor del mouse. este momento, haces clic en el enemigo y haces 15 de daño por clic. Eso es bueno. Sin embargo, cada vez que avanzas por los niveles, digamos que tenemos este clicker automático y avanzamos por los niveles Te das cuenta de que los enemigos ganan mucha más salud que antes. 15. El daño realmente no les va a hacer mucho, sobre todo si estamos, por ejemplo en el nivel 20, tenemos que mejorar nuestro daño de cursor. Sigamos adelante y hagamos eso. Pero primero tenemos que agregar el elemento click a la tienda para que podamos comprarlo y actualizar el cursor. Sigamos adelante y hagamos eso primero. Por cierto, puedes intentar hacerlo tú mismo si lo deseas. Esta es una práctica muy agradable. Intentemos hacerlo juntos. Si no estás muy seguro de cómo agregar uno, abramos las enumeraciones Y recuerda que tenemos todos los artículos listados aquí arriba. Agreguemos una nueva enumeración y llamemos a esto un clic del mouse Sólo voy a agregarlo como primer ítem porque quiero que esté en la parte superior. Este es el clic del ratón. Vamos a cerrarlo. A continuación tenemos que ir a la tabla de datos. Abre tus Hojas de cálculo de Google una vez más, dentro de aquí, vamos a abrir la información del artículo. Quiero agregarlo como primer ítem. Adelante y llámalo clic del ratón. Haga clic aquí también. Ahora para la miniatura que te he dado en los materiales del curso, si solo vuelves a los activos y los objetos y las texturas aquí, te he dado dentro de los materiales del curso Si vas a objetos, este cursor para seguir adelante e importar este, haz clic derecho sobre él, conviértalo, o aplica papel a la configuración. Ahora para este clic derecho y conviértelo en un sprite de sprite Y arrástralo dentro de los objetos de aquí. Ahora haga clic en los objetos. Ahora ya tenemos configurado este sprite. Sigamos adelante y guardemos todo. Volvamos a la tabla de datos. Ahora para la miniatura, vamos a ir a las texturas click derecho, copiar referencia Para esta edición en miniatura, el elemento se llama clic del mouse para el elemento Esta es la enumeración. Solo recuerda agregarlo a la enumeración. También necesitamos una cláusula para ello porque necesitamos engendrarlo al suelo En realidad, vayamos a planos y hagamos eso. Ahora si voy a Artículos y voy a la base de artículos, puedo hacer clic derecho en la base de elementos, Crear un plano infantil Claus Llámalo clic del ratón. Y vamos a abrirla. Hagamos clic en los Componentes de Render y agreguemos el único sprite en el cursor Compilar y guardar. Recuerde, también agregamos los nombres de los elementos para cada elemento. Aquí puedes ver el nombre del ítem, Nosotros escribimos eso, recuerda, para cada ítem. Entonces hay que escribir eso, de lo contrario no se leerá de la tabla de datos. Recuerda hacer clic en los valores predeterminados de clase aquí. Vamos a llamarlo clic del ratón. Lo mismo que lo llamaste dentro de la tabla de datos. Ahora tenemos esto creado, y para obtener una referencia al mismo, igual que antes, vamos copiar éste. Pégalo aquí arriba. Sólo voy a cambiar el nombre esta pluma ligera a clic del ratón. Y éste también. Clic con el ratón. Bien. Ahora para el sprite, de nuevo, vayamos a los objetos assets Podemos hacer click derecho sobre este sprite y podemos copiar la referencia pegada Ahora tenemos que establecer lo que cuesta. Digamos que cuesta tal vez diez o algo así. Siempre podemos cambiarlo después. Ahora vamos a hacer clic en Archivo, descargar, descargar archivo CSV una vez más. Ahora voy a arrastrarlo a la carpeta de tablas de datos. De nuevo, arrástralo y sigue adelante y guarda todo. Solo asegúrate de que toda la información sea correcta aquí, Todo se ve bien. Ahora si hago clic en Reproducir, puedo ver mi clic del mouse. Y lo puedo ver también aquí, puedo dar click en Por. En este momento se está diciendo cero por el costo de este rubro. Algo anda mal aquí. Recuerda que esto es porque aquí en la información del artículo, realidad ya no estamos usando este costo de monedas. No nos confundas más. Vayamos también a la información del artículo y eliminemos el costo de las monedas de aquí. Adelante y guarda todo ahora asegurémonos de que lo eliminemos de la tabla de datos. Haga clic derecho y elimine columna, aquí también está. Vamos al costo de los artículos ahora, porque aquí es donde realmente tenemos el costo, vamos a cambiarlo. Déjame hacer clic aquí y agregar una nueva columna a la derecha. Llámalo mouse haz clic aquí. Básicamente, Digamos que comienza con 18, solo porque quiero un número diferente al de todos los demás, digamos que es igual a este uno por 1.2 Vamos a arrastrarlo hasta el final. Ahora bien, esto obviamente va a necesitar mucho trabajo en el diseño de juegos si quieres que todos estos números tengan sentido, pero por ahora solo estamos probando. Sólo voy a descargar esta tabla de datos de costos de artículos aquí en el motor. Sigamos adelante e importémoslo una vez más. Ir a tablas de datos, importar el costo de los artículos. Ahora no se puede encontrar la propiedad de clic del mouse en costo ST. De hecho, echemos un vistazo a esto juntos. Si hago clic bien y solo voy al costo de STM. Si voy a la interfaz de usuario, en realidad a la estructura, abro el costo del artículo. Esto se debe a que nos falta esta variable dentro de aquí. Permítanme agregar uno nuevo. Llámalo clic del mouse, conviértalo en un entero. Simplemente arrástralo todo el camino hasta aquí. Y sigue adelante y haz clic en Guardar todo. Ahora para este artículo costo también. Recuerda en el jugador, si voy al jugador, tenemos una función llamada sin embargo cuesta. Si hago clic en él, tenemos que vincularlos juntos, lo contrario no funcionará igual que antes. Adelante y vincularlos entre sí. Compila si quieres asegurarte de que no te has perdido ningún otro lugar. Además, haga clic derecho sobre este ítem Costo, continúe y haga clic en Buscar Referencias, solo para asegurarse. Y da click en el pequeño icono, y esto te mostrará todas las referencias que has utilizado para ello. Al hacer clic en este, en realidad no hemos hecho nada aquí. Todo debería funcionar bien. Ahora volvamos a las tablas de datos y voy a volver a importarlo, así es correcto así. Ahora está bien. Ahora vamos a hacer clic en play. Ahora, mi motor se estrelló y suele hacerlo a veces cuando editas cosas dentro de una estructura e intentas hacer clic en play, se bloquea Pero cuando abres por segunda vez, debería funcionar. Ahora bien, si hago clic en Reproducir y a veces puedes ver cosas como esta, en realidad puedes arreglarlo. A veces necesita refrescarse. Si abre el control de reproducción y hace clic en archivo, actualiza todos los nodos y vuelve a hacer clic en reproducir, debería funcionar. No sé por qué hace que a veces suele hacer eso para mis otros juegos también. Pero puedes salir y refrescarte y funciona bien. Bien, ahora puedes ver que el clic del mouse está funcionando bien. Y si compro más y más , también está funcionando bien. Me está enseñando el precio. Ahora necesitamos agregar un punto de span para este clic del mouse. Y hagámoslo en la siguiente lección. 100. 11.02 Adición del punto de aparición del cursor del ratón: Para agregar el mouse. Entonces punto de desove, sigamos adelante y hagamos eso aquí Vamos a abrir los puntos de engendro. Ahora tenemos los puntos de generación de este artículo, así que realmente no necesitamos crear niños, recuerda que solo usamos este Podemos hacer clic en el primero y asegurarnos de que sea clic del mouse. Es por defecto porque hemos reorganizado la enumeración previamente. Al hacer clic en este clic del mouse, ahora abre tu enumeración y solo asegúrate de que todos estos sean correctos en orden Creo que uno de ellos se equivoca porque todavía tenemos diez y tenemos el click del ratón como uno de ellos, falta uno de estos artículos. Solo asegúrate de hacer clic en todos ellos y asegúrate de que sea correcto. Yo sólo voy a copiar este de aquí arriba. Déjame asegurarme de que es la misma distancia que todas las demás y es así. Me aseguro de que este sea clic del mouse. El siguiente es pluma ligera. Y sólo pasa por ellos aquí. El siguiente es Antorcha y así sucesivamente. Bien, ahora están en el orden correcto. Adelante y salve a todos cuando estén. Ahora bien, si haces clic en play e intentas engendrarlo, no va a engendrarlo Recuerda que establecemos algunos que necesitamos cuidar. Si abres el modo de juego y recuerdas lo que hiciste con los puntos items, creamos esta función aquí llamada set items pon points y get items points. Vamos a abrir este, Set items pinpoints. Tenemos que hacer uno para los clics del ratón. Voy a duplicar esta. Voy a llamarlo puntos click del mouse. Adelante y agrégalo hasta aquí arriba. Vamos a asegurarnos de que no tenemos nada más. Vamos a compilar. Vayamos al Get items, pin points también. Déjame copiar y pegar esto aquí. Elimine este y agregue los clics del mouse en su lugar. Adelante y conéctate. Compilar. Creo que esto debería ser. Da click en este, podrás ver que está funcionando correctamente, al igual que los demás elementos. Ahora bien, esto está funcionando bien. Ahora, hay un problema en estos momentos con esto, porque no debería mostrar cero DPS, y además no debería mostrar actualmente haciendo cero DPS El problema con este, ahora mismo, el mouse no es realmente daño por segundo, el mouse es daño por clic. En lugar de mostrar daño por segundo, necesitamos mostrar daño por clic. este momento está diciendo cero DPS porque en la información del artículo, no hemos especificado cuánto daño por segundo debería tener Por ejemplo, se podría decir cinco. Y si hago clic en Play, puedes ver que dice cinco. Pero nuevamente, realmente no nos interesa el daño por segundo, nos interesa más el daño por clic. Entonces sigamos adelante y arreglemos esto como lo siguiente. 101. 11.03 Visualización correcta del texto de daños: Para hacer que el texto se muestre correctamente? Obviamente, tenemos que ir ahora a la interfaz de usuario y echar un vistazo a la descripción emergente. Vamos a entrar aquí. Abrámonos ahora para el DPS solo para asegurarnos de que el texto se muestre correctamente Ahora por el daño, solo voy a escribir algo como 40 para asegurarme que esto que estoy viendo es el falso o estático. I. Me estoy asegurando cuando hago clic en play, en realidad estoy viendo lo real aquí solo para asegurarme de que no tengo una era. Ahora, aquí en la gráfica, tenemos que asegurarnos de que dice para el mouse, dice que cada clic del mouse da cinco daños por clic. Y actualmente haciendo, por ejemplo, cinco daños por clic en lugar de DPS El primer texto, recuerda cómo se llaman. El primero se llama, da DPS y el segundo es da cantidad de DPS Ahora bien este realmente no necesitamos cambiar, solo necesitamos esto da DPS y haciendo cantidad de DPS , volvamos Este da cantidad de DPS. En vez de decir éste, voy a desconectarlo. Voy a dirigir desde aquí y decir Select. Ahora necesitamos usar un nodo selecto. Ahora, ¿para qué vamos a seleccionar? Vamos a seleccionar para si se trata de un clic del ratón o no. Recuerda que tenemos la información del artículo aquí. Y si solo escondo esta miniatura porque no la necesitamos. Pero muestro este ítem podemos arrastrar desde aquí y decir igual, igual enum si esto es igual a clic del mouse y enchufarlo aquí abajo Ahora lo que podemos decir es, recuerda que necesitamos usar un formato de texto. De nuevo, voy a arrastrar aquí y decir formato de texto. También voy a usar uno aquí abajo, formatear texto. Ahora para éste, si no es un clic del ratón, sólo debería decir lo mismo que decía antes. Adelante y pegarlo en Enter para ver esto. Ahora bien, esta es la cantidad de DPS, igual que antes. De hecho voy a arrastrar esto de nuevo a aquí, y en realidad voy a alejar esto así que tengo algo de espacio como este. Ahora para éste, si es cierto que este es el clic del ratón, lo que quiero decir aquí es en lugar de DPS, digamos solo cantidades de daños Digamos daño por clic. Ahora voy a decir daño por clic. Básicamente, el daño por es este DPS aquí Este DPS, podemos elegir configurarlo a cantidad de daño que debe hacer o darle cada vez que compre en la tienda Si acabo de compilar y vuelvo a mi tabla de datos solo para asegurarme de que sea correcta, abra la información del artículo en realidad no costo del artículo para esto. Sólo voy a decir que me da 25 daños cada vez que actualizo. Y también asegúrate de ir a tus Hojas de cálculo de Google y cambiarlo aquí, de lo contrario va a estar mal. Cada vez que importes esta tabla, asegúrate de que es, por ejemplo, 25 aquí. Ahora dentro de aquí, volvamos al Tooltip y continuemos. Esto debería ser correcto. Puedo borrar este y puedo empujar todo a lado para poder tener estos en la vista. Bien. Simplemente reorganizo las cosas amablemente Ahora bien, esto es correcto. Ahora continuemos. Lo siguiente es este texto haciendo DPS. Este antes puedes arrastrar desde aquí y decir Seleccionar. Entonces justo antes de formatear para el primero, formatear texto, formatear sexo para el segundo. Nuevamente, debe elegir si es el clic del mouse o no. Sólo voy a arrastrar esto aquí igual que antes. Si no es el clic del mouse, en realidad solo agreguemos este que teníamos antes. No lo cambiamos ahora. No obstante, si es el clic del ratón, lo que queremos decir es la cantidad total de daños aquí. Por ejemplo, esta es la cantidad total de daños. Éste básicamente va a decir que actualmente está haciendo, por ejemplo, 60 daños. También puedes llamarlo daño por clic si quieres mantenerte consistente. Llamémoslo daño por clic. Ahora para el daño, no es realmente este DPS lo que agregamos aquí, pero es más correcto agregar la variable de daño del cursor Recuerda dentro del jugador, si vuelvo, esto es hace mucho tiempo. En realidad desde el inicio del curso, creamos aquí este flotador de daño del cursor, en realidad podemos agregar este. Vuelvo a la punta de la herramienta, ya tenemos al jugador si puedo arrastrar del jugador y decir daño del cursor. Ahora podemos agregar esto aquí y debería funcionar bien. De nuevo, voy a eliminar este para este número. De nuevo, enchúfelo aquí para que no se equivoque. Esto era lo que teníamos antes. Sólo voy a reorganizar las cosas amablemente. Bien, igual que esto y seguir adelante y compilar y guardar todo. Hagamos clic en Reproducir y veamos qué pasa si sostengo un mouse sobre él. Dice que cada clic del ratón da 25 daños por clic. También puedes llamarlo DPC, creo que es un término en realidad, en lugar de DPS, puedes llamar a DPC por daños por clic si compras Se puede ver que en realidad no está diciendo nada y esto es porque no lo estamos actualizando como todos los demás que estamos haciendo. Esto es en realidad lo siguiente que tenemos que hacer. Necesitamos actualizar lo que se está haciendo actualmente, porque en realidad te está dando 25 daños por clic. Pero no puedes verlo porque no estás actualizando el texto debajo de él. No está actualizando esta variable de daño del cursor. Pasemos a la siguiente lección y hagamos eso. 102. 11.04 Daño al cursor del ratón: Ahora es el momento de actualizar el mouse cuando haces clic en jugar y comprar. El mouse hace clic aquí puedes ver que está haciendo daño automático, lo cual no se supone que suceda porque el clic del mouse es básicamente donde haces clic sobre el enemigo y debería hacer más daño. Sigamos adelante y actualicemos el daño del mouse en lugar del DPS automático Vamos a cerrar esto. Y eso lo hicimos dentro del jugador. Si abres al jugador y volvemos al gráfico del evento, si quieres decir organizar, siempre puedes hacer clic derecho aquí arriba y cerrar pestañas a la derecha que no tengamos que ver todas estas. Cuando compramos la M, recordemos que lo que hicimos anteriormente es que actualizamos el DPS total, que era esta función dentro de aquí En lugar de actualizar el DPS total cuando compramos un clic del mouse, hagámoslo aquí Queremos actualizar el mouse en su lugar. Aquí está el derecho en las funciones, podemos hacer clic en el más. Hagamos una nueva función llamada aumentar el daño del cursor. Lo único que va a hacer aquí en la entrada, voy a agregar un flotador y llamar a este daño para agregar. Tomemos el daño del cursor que creamos antes. Vamos a agregar más el daño que queremos agregar. Entonces volvamos a ponerlo en esta variable. Entonces ahora tenemos este nuevo daño del cursor. Esto es básicamente lo es la función de esta función aquí, es que solo agrega la cantidad de daño que queremos agregar al daño del cursor y lo establece aquí como un nuevo valor. Volvamos al gráfico de eventos y usemos este aumento del daño del cursor en lugar del DPS total para el mouse Ahora para saber si es el mouse del que estamos hablando o no, recuerda aquí en la estructura del ítem, podemos dar click en la info del ítem y podemos esconderlo todo por ahora. Por aquí en el ítem, recuerda en la enumeración hicimos la enumeración de clic del mouse, voy a hacer, da clic aquí y voy a arrastrar desde Y entonces voy a decir igual, igual enumeración. Y luego seguir adelante y seleccionar este ratón haga clic aquí. Si esta enumeración es igual a clic del mouse, si este elemento del que estamos hablando es igual al clic del mouse La forma en que sabemos que dentro de la tabla de datos, aquí es donde estableces tu información. Si abres la información del elemento y abres el clic del mouse, recuerda que configuramos el elemento como un clic del mouse aquí, así que va a saber qué has elegido. Si ha seleccionado algo mal aquí, obtendrá un error si el ítem aquí es clic del mouse y podemos arrastrar desde aquí y luego podemos hacer una rama. Ahora voy a agregarlo. Después de que genere el artículo, en realidad voy a desconectar este Y vamos a arrastrar esos aquí. Ahora, antes de actualizar la IU, porque necesitamos hacer esto antes de actualizar la IU, la IU se actualiza correctamente. Necesitamos agregar la información, vamos a generar el ítem, y luego vamos a conectar esta rama Bien, este es el clic del ratón. Si el ítem es el clic del mouse, queremos aumentar el daño del cristal. Si no lo es, queremos actualizar el DPS total. Entonces recuerda conectarlos de nuevo a aquí. Si quieres mantenerte un poco más organizado, siempre puedes hacer doble clic este en un nodo de ruta trasero como este. Y puedes tomar esto y enchufarlo aquí, así se ve mejor. Ahora queremos agregar el daño que queremos agregar aquí. Solo tomemos el DPS. Si hago clic por aquí, hago clic en el DPS y puedo arrastrar esto hasta la función así De nuevo, voy a crear algunos nodos de ruta trasera para ello. Y justo así, Bien, ahora tenemos bloqueados los DDPS Ahora, cada vez que vamos a actualizar el clic del mouse, lo vamos a agregar al mayor daño del cursor en lugar del DPS total . Ahora si compilo y hago clic en reproducir y actualizo aquí, ahora puedes ver mi UI es o actualizando correctamente. Si hago clic en el enemigo, también está haciendo la cantidad correcta de daño. Si hago clic en él, dice 65. Si vuelvo a actualizar, dice 90. Vuelvo a actualizar un par de veces. Dice 240, y debería decir ahora 340. Y ves que está haciendo la cantidad correcta de daño. Ahora hemos terminado de actualizar el cursor. 103. 11.05 Diseñar el widget de cursor para ratón: Para que sea un poco más interesante, sigamos adelante y cambiemos el cursor del mouse porque puedes ver que tenemos el cursor normal del mouse de windows. Pero vamos a cambiarlo en otro icono, así que se ve un poco mejor para hacerlo. Te he dado aquí en los materiales de costo, te he dado algunos cursores de ratón que en realidad usé en Farm Tail, pero ya podemos usarlos. Aquí, vamos a la interfaz de usuario y a los iconos. Vamos a arrastrar estos íconos hacia aquí. Ahora no es necesario aplicar papel a estos ajustes porque no son los lotes de píxeles. Volvamos a la interfaz de usuario. Y vamos a hacer clic derecho aquí, hacer una nueva interfaz de usuario widgets. Adelante y haz clic aquí. Llamemos a este cursor de un ratón. Vamos a abrirlo dentro de aquí. Lo que quiero hacer primero, quiero agregar un panel de lona. Vamos a arrastrar eso hacia abajo. Lo único que queremos añadir es una imagen. Y este será el cursor. Lo que voy a hacer de nuevo, voy a dar click aquí arriba y decir deseado en pantalla para esta imagen. Podemos darle una talla. Ahora para el tamaño de la imagen, depende del tamaño del cursor del mouse. Si voy a iconos y le echo un vistazo a este cursor del ratón, es 93 veces 101. Así que escribamos eso, 93,100.1 Como puedes ver, el tamaño de la imagen no está cambiando Esto se debe a que hay que hacer clic en Size To Content, y ahora será correcto. Bien, esto es correcto. Ahora lo que queremos hacer es que queremos centrarlo también en la pantalla. Y no estando aquí arriba, voy a cambiar el ancla al medio. Y voy a escribir 00 aquí en la x e y. y no queremos escribir 0.5 en las alineaciones porque en realidad el mouse va a hacer click en medio de este lienzo Esto es correcto hasta el momento. Al hacer clic en este widget, cambiémoslo al cursor. Y esta es la predeterminada. El cursor del ratón aquí. Y vamos a compilar y ahorrar. Creo que tenemos que hacerlo más pequeño porque va a ser muy grande en el juego. Pero tenemos que probarlo primero antes de que sepamos. También para esta imagen, quiero configurarla para que no golpee comprobable, para que no afecte al juego Ahora está listo para ser utilizado. Volvamos al controlador del reproductor. Dentro del controlador del reproductor, igual que con lo que hemos estado trabajando con la interfaz de usuario anteriormente, queremos trabajar con este de aquí arriba en el reproductor inicializado Ahora no vamos a abrir y cerrar un widget aquí. No tiene sentido acreditar aquí. En cambio, vamos a agregarlo al jugador inicial. Sólo voy a copiar estos widgets. Y busquemos nuestro cursor del ratón. Vamos a golpear haga clic aquí. Promociona esto a una variable y llámalo cursor del mouse. Ahora si arrastras desde aquí, y solo buscas mouse y ves algo llamado Set mouse cursor widget. Esta es una función predeterminada dentro de Unreal Engine. Si haces clic en él, lo que quieres hacer aquí es básicamente seleccionar Default. Este será nuestro cursor predeterminado. Ahora hemos definido que este widget acabamos de crear es ahora el cursor predeterminado. Si haces clic en jugar, ahora puedes ver que este es el mouse. Podemos usarlo para hacer clic, y se puede ver que es muy preciso. Ahora voy a empujarlo un poco hacia arriba, porque como pueden ver, está dando click un poco hacia arriba. Si volvemos al widget, ahora creo que lo haré un poco más pequeño porque a lo mejor es demasiado grande. Volvamos y arreglemos esto. Volvamos a la interfaz de usuario, abre el cursor. Siempre puedes hacer click aquí y decir por ejemplo, menos cinco aquí, menos cinco aquí dentro. Menos cinco inter también. Creo que volveré a decir menos cinco aquí, menos cinco. Si hago clic en play y le echo un vistazo, creo que puede ser un poco más pequeño. Nuevamente, menos diez, quizás menos diez aquí. Haga clic en reproducir. Creo que esto es mucho mejor ahora. Ahora si quieres empujarlo hacia arriba, siempre puedes ajustar la posición en la X e Y. Si escribes cinco, en realidad es menos cinco para ir al otro lado. Digamos un menos cinco por menos cinco. Eso es mucho mejor. De nuevo puedes, tratar de ajustar esto lo mejor posible aquí cuando estés satisfecho. Ahora este es el ratón que tenemos. Ahora también necesitamos un evento click, porque como puedes ver cuando estamos clicando, realmente no está dando otro efecto. Y creo que podemos mejorarlo un poco teniendo un efecto click. Este es el otro cursor que hemos importado. Esta es la prensada, Bien, así que si volvemos aquí ahora, puse esta posición x a menos ocho y menos cinco para que sea un poco mejor. Ahora cuando estés listo, vayamos a la gráfica y a la interfe Borremos todo esto. hacer un nuevo evento personalizado. Hagamos un nuevo evento personalizado y llamemos a esta imagen de conjunto. Lo que queremos hacer aquí, en realidad quiero una nueva enumeración. Si vas al plano y abres enumeraciones, hagamos clic derecho y hagamos una nueva Esto básicamente va a contener una lista de los estados presionados del mouse. Si solo llamo a su estado, lo abro, en realidad le voy a dar una S aquí al final. Ahora aquí para los estados del cursor del ratón, podríamos tener un cursor de ratón predeterminado, Podríamos tener un cursor de ratón de prensa. Ahora tenemos estos dos estados. Si vuelvo ahora al widget y agrego esto como entrada, busquemos mouses y seleccionemos esta enumeración que acabamos Voy a llamarlo Moussa afirma el objetivo aquí. Lo que estamos tratando de hacer es que estamos tratando cambiar esta imagen dependiendo de si hemos presionado o no. Sólo voy a llamar a esta imagen cursor del ratón. Vamos a configurarlo en variable para que podamos cambiarlo en código. Si vuelvo aquí, arrastre esto y digo set brush from texture. Ahora la textura depende de lo que tengamos como estado del cursor del ratón. Si solo arrastro de aquí y digo seleccionar, y selecciono este nodo aquí, y podemos arrastrar esto al índice. Ahora bien, si es el estado por defecto, esto es lo que hemos escrito dentro de la enumeración. Si es el estado predeterminado, quiero seleccionar este cursor del mouse. Si es el estado presionado, quiero seleccionar este cursor del mouse aquí. Ahora podemos usar esta imagen de conjunto, dependiendo de lo que estemos haciendo en el juego. Recuerda presionar botones. Eso lo hicimos dentro del jugador. Si vuelvo al jugador, voy a la gráfica de eventos, eso es correcto. Ahora necesitamos encontrar el evento que usamos cada vez que hacemos clic en el enemigo. Ahora realmente no hemos hecho uno porque hasta ahora lo que hemos estado haciendo está dentro del enemigo, tenemos este evento click aquí. Esto de aquí arriba hizo clic en el componente de la cápsula. Realmente no hemos hecho un evento aquí. Cada vez que hacemos clic con el ratón, en realidad tenemos que hacer eso también. Para ello, tenemos que trabajar con insumos. Hagámoslo en la siguiente lección. 104. 11.06 Añade el ratón a la entrada: Bien, para terminarlo, tenemos que agregar una entrada de mouse para cada vez que hagamos clic con el mouse para que podamos cambiar la imagen. Para ello tenemos que agregar una entrada para el jugador. Si acabo de escribir, da clic aquí y hacer una nueva carpeta, y solo voy a llamarla Player. Y arrastra esto hasta aquí. Dentro de este Reproductor, voy a escribir click y hacer una nueva carpeta otra vez, llámalo Input. Y vamos al interior de esta carpeta, haga clic derecho dentro de la entrada aquí. Si no has trabajado con él antes, aquí es donde agregas las teclas del teclado y así sucesivamente. Así que cada vez que caminas en un juego de rol y así sucesivamente. Entonces básicamente solo la entrada para el teclado y el mouse y los pads. Primero vamos a crear un contexto de mapeo de entrada. Esto es lo que tienes que hacer. Llamemos a esto IMC Para el contexto de mapeo de entrada, simplemente puede llamarlo predeterminado. Bien. Haga clic derecho de nuevo. Input, y tenemos que crear algo llamado una acción de entrada. Adelante y crea uno. Llamemos a esto un clic del mouse, por ejemplo, clic del mouse. Vamos a abrir esta. Ahora, dentro de aquí, lo que tenemos que hacer es básicamente nada. Vamos a cerrarlo, porque solo necesitamos hacer click sobre el mouse y algo debería suceder, así que en realidad no necesitamos hacer nada aquí. Vamos a abrir el contexto de mapeo de entrada. Dentro de aquí, tenemos que dar click en el más. Ahora cuando haces clic en el más, tienes que agregar una acción de entrada. Esto es lo que acabamos de crear llamado clic del ratón. Para esta acción de entrada, hay que asignar un botón. Ahora para éste, sólo voy a dar click aquí. Y luego haga clic en el botón izquierdo del ratón. Y lo asignará automáticamente. También encuéntralo aquí arriba si solo buscas mouse y puedes ver puedes seleccionar todas estas cosas aquí, pero ya lo tenemos aquí. Botón izquierdo del ratón. Voy a dar click aquí en los disparadores, voy a dar click en Plus y seleccionar el llamado presionado. La razón por la que hago esto es que si no lo haces, vas a hacer clic varias veces. De hecho te voy a mostrar si acabo de borrar esto por ahora, solo podemos dejarlo y podemos volver a ello. Ahora tenemos que agregarle esto al jugador. Si vuelvo al jugador, abro el jugador, tenemos que agregar el contexto de mapeo de entrada aquí. Antes de que funcione, hagámoslo antes de actualizar la cantidad de iconos y daños y así sucesivamente. Entonces hagámoslo dentro de aquí. Lo que podemos hacer es que necesitamos el controlador del reproductor. De hecho voy a tomar este controlador de reproductor, puedes buscar mejorado, ves este llamado subsistema Enhanced Input Local Player. Adelante y selecciona esto antes de seguir adelante y trabajar con él. Siempre directo desde aquí y decir es válido porque te dará un error a veces donde no se ha cargado y estás tratando de mover al jugador o intentar hacer algunas acciones de entrada. Adelante y seleccionar es válido primero. Siempre que sea válido, podemos arrastrar desde aquí y decir entrada este. Agregue contexto de mapeo, continúe y seleccione. Y luego para el contexto de mapeo, selecciona el que acabas de crear. Ahora debería funcionar bien probar si esto realmente está funcionando o no. Simplemente puedes ir aquí y escribir click y buscar el nombre de la acción de entrada que creaste. Creé el que se llama clic del ratón. Adelante y selecciónelo. Sólo voy a imprimir una cadena a la pantalla. Compilar. Si hago clic aquí, pueden ver que dice hola. Si hago clic con el ratón, me dice hola. La razón por la que necesitamos agregar un disparador presionado para la acción de entrada es porque puedes ver si mantengo presionado el mouse yendo a spam este código que escribo dentro de aquí. Y esto no es lo que queremos. Si vuelvo al contexto de mapeo de entrada y a los disparadores, hago clic en el más y agrego este estado presionado. Lo que significa la prensa es que solo va a reproducir el código una vez cada vez que haga clic aquí. Y este código va a reproducirse si solo vuelvo a escribir una cadena de impresión y hago clic en play. Ahora bien, si mantengo pulsado el mouse, se puede ver que no va a ser spam. Sólo lo va a decir una vez. Cada vez que haga clic, voy a hacer clic varias veces. Ahora puedes ver que solo va a imprimir un bajo cada vez que haga clic en el mouse y lo va a imprimir solo una vez. Esto es solo para la optimización, para que no juegues una y otra vez. Ahora realmente podemos usar esta acción de entrada. Déjame mover todo esto hacia arriba. Déjeme agregar este de aquí abajo. Ahora podemos usarlo para mostrar nuestro cursor del mouse. Recuerde que el cursor del mouse está dentro del controlador de reproducción. Nuevamente, tomemos el controlador de reproducción. Hagamos un seguimiento desde aquí, busquemos el widget que creamos. Si buscas mouse y vas al fondo, es siempre donde están tus variables. Creamos este cursor de ratón B dentro de aquí. Si no te acuerdas, solo volvemos a recordar. Ir a la gráfica que creamos. Éste se llama establecer la imagen del cursor del ratón. Si voy al jugador, arrastre y digo set mouse por imagen. Siempre que se active, vamos a configurar la P para ser presionada. Ahora, en lugar de simplemente hacer esto, tenemos que hacer dos cosas. Siempre que se complete y siempre que se active. Siempre que se active, vamos a configurarlo para que presione, y vamos a copiar esto y pegarlo. Y arrastra esto al objetivo cada vez que se complete. Hagamos el predeterminado, veamos realmente qué pasa. F p, se puede ver que en realidad está funcionando, pero se está disparando muy rápidamente Esto es porque está activando esto aquí. Pero siempre que vaya a completarse, lo que sucede casi de inmediato, va a volver a configurarlo por defecto. Esto es en realidad lo que está pasando. Por eso se ve así. Ahora para arreglar esto, volvamos al contexto de mapeo de entrada dentro de aquí. Vamos a agregar otra vez. Solo agreguemos lo mismo. El botón izquierdo del ratón, haga clic aquí. Haga clic en el botón izquierdo del mouse en su teclado, o en el mouse en los disparadores. Haga clic en el ahora, en lugar de solo presionado aquí arriba. También tenemos que seleccionar Liberado. Adelante, hazlo. Guardar. Volvamos al jugador. En realidad, no tienes que hacer nada. Es correcto Si hago clic en reproducir, ahora puedes ver si hago clic, libero. Esto es ahora correcto. Esto es Hacer el ratón. Ahora puedes ver que tiene un efecto más frío con el ratón cuando hemos cambiado el cursor a éste en lugar del predeterminado. Y también tenemos los estados presionados. Ahora en el futuro, si quieres agregar más estados del widget del mouse, nuevamente, tienes que ir dentro de la enumeración, los planos, Agregar los estados dentro de aquí Entonces recuerda ir a la interfaz de usuario, abrir el cursor del mouse, y también en la gráfica, recuerda seleccionar las imágenes correctas que quieras usar aquí. 105. 12.01 Diseño del mapa final: Bien, así que ahora es el momento de diseñar el mapa. Así que hago clic en Play. Todo se ve bien. Tenemos el nivel, tenemos la tienda, tenemos las monedas, tenemos el cursor del ratón. Pero ahora en realidad también diseñemos el nivel en sí. Ahora lo voy a hacer en mi propio tiempo, pero solo para recordarles, tenemos que ir a los activos y a los ambientes dentro de aquí tenemos este mapa de azulejos prisión de gemas que creamos antes. Recuerda, puedes cambiar entre los conjuntos de mosaicos aquí. Tienes los accesorios. Si deseas agregar algunos apoyos, por ejemplo este, puedes dar click sobre él. O puedes hacer clic y arrastrar aquí y seleccionar ambos. Puedes agregarlos aquí. Recuerda trabajar con la capa frontal, capa base y las decoraciones. Siempre puedes crear más capas si así lo deseas, porque si solo pintas sobre la capa base aquí, porque si solo pintas sobre la capa base aquí, eliminará tus mosaicos. Entonces tienes que crear una nueva capa y luego agregarla para poder agregarla al frente. Si quieres esto a la parte de atrás, siempre puedes hacer clic en esta flecha. Ahora está debajo de las tejas así que no se puede ver. Voy a borrar esta por ahora. Lo que voy a hacer ahora es básicamente simplemente aumentar el tamaño del mapa, que es el ancho y alto del mapa. Por ejemplo, puedes escribir algo así como 50 por 50 o lo que quieras. A lo mejor eso es demasiado grande, pero trata de encontrar el ancho del mapa que es para ti. La cosa está aquí es que estamos tratando de evitar todo este espacio negro a un lado, solo que se ajuste más. Sólo hay que adivinar, por ejemplo. Simplemente puedes hacer un mapa más grande e intentar agregar algo como esto. Y si haces clic en Play, siempre podrás ver a dónde llega y luego sabes dónde parar aquí. Pero básicamente voy a hacer este mapa más grande solo para evitar el espacio negro. Realmente no necesitamos hacer otra cosa. Básicamente solo aumenta el mapa, intenta trabajar con las capas. Adelante y selecciona la ficha. Intenta pintar el mapa como desees. Ahora, teniendo en cuenta que tienes todos estos puntos de generación para estos artículos, siempre puedes, por ejemplo, solo una idea, crear habitaciones para estos artículos o crear un agujero para estos artículos Básicamente haciendo que estos elementos encajen en el juego así como este enemigo desove tal vez en el medio Es el centro de atención para este juego. Sólo tienes que diseñarlo lo mejor que puedas. En realidad no hay reglas aquí. Sólo voy a diseñarlo lo mejor que pueda. Solo trata de jugar con todos estos. A lo mejor tratar de jugar con la esquina. Vea cómo trabajan juntos. Por ejemplo, esto con éste, como éste y éste de aquí. Básicamente. Solo intenta lo mejor que puedas para diseñar el mapa y volveré contigo. Bien, ahora estoy de vuelta. He pasado alrededor de 30 minutos tratando de diseñar este mapa. Como pueden ver, he diseñado el mapa. Y aquí está. diseñar el mapa dentro del mapa de teselas. El ancho y alto del mapa es de 50. Acabo de agregar algunas fichas aleatorias. Simplemente diseñando el mapa como quieras. Realmente no importa cómo lo diseñes, en realidad no va a afectar nada este curso. Solo trata de ser lo más creativo posible y diviértete con él una vez que hayas terminado. Y puedes ver aquí, también he movido los puntos de generación de artículos para que estén en el suelo aquí Cada vez que compre algo en realidad va a aparecer dentro de esta cosa de aquí Ahora puedo aumentar la cantidad de fila de artículos que puede generar aquí A lo mejor quiero aumentarlo. Vamos a tratar de hacer eso. Vamos al plano Y eso lo hicimos dentro del modo de juego. Si abro el modo de juego, y veamos aquí tenemos esta función de puntos de set items. Dentro de esta función, teníamos algunas variables locales. Aquí, la cantidad local de filas es de dos. Yo quería quedarme dos. Ahora podemos tener el último índice del bucle local. Esta es la cantidad de artículos. Se trata de diez artículos. Porque va, recuerda 0-9 son diez artículos, yo, intentemos agregarle tres Voy a comprar algunos artículos. Aquí se ve como. Y ahora está encajando al mapa. Esto es con lo que voy a ir. Este es mi mapa actualmente. Además, quiero aumentar ligeramente el temporizador porque creo que es demasiado pequeño y es un gran foco en el juego. Vamos a cerrar esto. Vamos a la interfaz de usuario. Ábrete. Veamos aquí, la interfaz de usuario principal aquí. Vamos a hacer clic en el texto. En vez de 28, tal vez escribamos 36 así como para el icono, tenemos que aumentarlo, tal vez 60 por 60. En su lugar, hagamos clic en play. Creo que eso es mucho mejor porque sigue siendo el foco principal. Incluso podemos aumentarlo aún más, tal vez como 40, y este es 60, 64 por 64. Por ejemplo, al hacer clic en play, así es como se ve. Creo que esto es mucho mejor porque es, de nuevo, el foco principal en el juego. Todo se ve bien. Ahora bien, si quieres cambiar algo en el juego aquí, básicamente, siempre puedes entrar aquí y ajustar las cosas. Pero me gusta como es ahora mismo. A mí me gusta todo al respecto. Incluso puedes aumentar el nombre y la salud si lo deseas. De hecho voy a hacer eso un poco, solo para que podamos verlo mejor. Dando click aquí, en vez de 28, voy a escribir 32 para la llamada. Voy a escribir 55, 55 también para la salud. Ir a dar clic en el 32 de salud en su lugar. Compilar el com Play. Y ahora puedes ver que es mucho más grande y vuelve a ser el foco del juego. Así que siempre es bueno tener esa interfaz de usuario para que sea más grande. Bien, ahora sigamos al siguiente. 106. 12.02 Preparación de las señales de sonido: Bien, entonces ahora estamos en una etapa donde podemos agregar algunos efectos de sonido al juego, y también música. Y hará que el juego sea mucho mejor. Los efectos de sonido agregan casi la mitad de la experiencia del juego. Ya ves, a pesar de que hicimos un juego divertido, sigue siendo aburrido sin ningún sonido. Y sí, agreguemos algunos efectos de sonido y lo hagamos más interesante. Ahora en la carpeta de contenido, voy a escribir, clic y hacer una nueva carpeta llamada Audio. Y dentro de aquí, entremos aquí. En los materiales de costo, he incluido todos estos efectos de sonido para ti en los materiales de costo. Adelante, abre la carpeta SFX. Todos estos, adelante y selecciónalos y arrástralos a la carpeta de audio. Cuando los arrastras, ves todo esto, y por cierto, muchos de ellos son realmente ruidosos. No hagas clic en reproducir ahora mismo, lo contrario tus tímpanos podrían sonar. Siempre puedes bajar tu sonido para esto, pero son súper altos en el volumen. Lo que queremos hacer es que queremos crear algo llamado señales sonoras a partir de estas Empecemos por, por ejemplo, este llamado compra. Vamos a escribir, hacer clic y crear Q para que puedas crearla aquí arriba. Lo que suelo llamarlo es que borro esta Q al final. Y yo lo llamo S C por sonido que. Se llama compra de sonido que. Ahora voy a hacer doble click sobre este sonido que. Y dentro de aquí, muy sencillo, sólo podemos bajar el sonido de la misma. Voy a escribir 0.2 y después voy a dar click en Reproducir y ver si es alto o notas. Este es el sonido de ello. A lo mejor puedo hacer 20.4 algo así Siempre podemos ajustar el sonido después, pero eso es lo que quiero que hagas. Por ejemplo, tomemos otro ejemplo, este llamado FX punch, click derecho. Y vuelvo a crear una que de ella. Vamos a llamarlo Sound Punch, ábrelo más bajo. El sonido tal vez 0.4 Aún súper fuerte. Tal vez incluso más bajo. Porque esto va a ser spam en el juego, tal vez 0.1 o 0.05 no lo sé, lo resolveremos Ahora un método aquí para el puñetazo que puedas, está sonando igual si estás pinchando sobre el enemigo Se está poniendo un poco molesto como cuando escuchas el mismo sonido una y otra vez. Para cambiarlo, siempre puedes golpear desde aquí. Puedes ver que no hay muchas cosas que puedas hacer dentro de aquí, como en los gráficos de planos que solemos ver Pero lo que quiero que uses es este llamado modulador. Adelante, selecciónelo y conéctelo aquí en su lugar. Ahora lo que está haciendo un modulador, va a cambiar el tono del sonido. Si haces clic en él y cambias el mínimo de tono a 0.9 y el máximo a 1.1 Guardar todo. Ahora si haces clic en Reproducir varias veces, puedes escuchar que el sonido cambia cada vez que haces clic en reproducir. No es del todo el mismo sonido. Se trata de regular o cambiar el tono mínimo y máximo. Eso se hace para éste. Ahora si tenemos múltiples sonidos, por ejemplo, tengo este llamado o Death 01020304 Todos estos van de la mano. Si sólo selecciono todos ellos, clic derecho, crear una sola. Cuando creamos eso, sólo voy a cambiarle el nombre a Sound Or Death. Adelante y entra dentro de ella. Y ahora puedes ver que ya hizo esto para ti. Se creó un nodo aleatorio. Le enchufó todos estos sonidos. En realidad va a elegir el sonido al azar al hacer clic en reproducir. Ahora, antes de hacer esto, también reduce el sonido y da click en play super loud. Tal vez 0.10 0.15 Tal vez 0.2 es realmente bueno. 0.2 está bien. Suena bien. Ahora todo esto es bueno. Vamos a cerrarlo por ahora. La Ascensión otra vez, clic derecho. Haz un crear A y borra esto. Llámalo S C, Ascensión. Ábrelo, reduce el volumen a 0.2 por ejemplo, ciérralo. Entonces tomemos el siguiente, el botón hover. Vamos a hacer clic derecho a crear una Q para esta. Nuevamente, llamémoslo un botón sobre y redujamos el sonido 20.2 Ciérrelo. Pasemos al siguiente, que es el botón pulsado clic derecho, crea un sonido que así. Se puede ver que es el mismo método una y otra vez solo para reducir el sonido. Ahora presionando un botón, en realidad quiero agregar un modulador también. Modulador para éste también. Y conectarlo, pitch mínimo y máximo. Pongámoslo 20.9 a 1.1 entonces. Ahora suena diferente cada vez que presionamos el botón, lo cual es realmente agradable. Ahora tenemos de nuevo a la Muerte Nocturna. Haga clic derecho. Crea un sonido que. Es una lección un poco aburrida porque básicamente estamos haciendo lo mismo. Pero solo quiero mostrarte cómo los creas. Sólo para saber que tienes el concepto, vamos a hacer un 0.2 Suena bien. El siguiente que tenemos es el nivel desbloqueado, clic derecho. Crear una que. Cambiémosle el nombre para abrir este autobús desbloqueado de nivel. Reduce el sonido a 0.2 Ciérrelo hacia abajo. Ahora el siguiente es el clic derecho normal desbloqueado. Crea una que, llámalo Sound que así, y ábrela otra vez, reduce el sonido a 0.2 Puedes ver el mismo método una y otra vez. Ahora por la música. Volvamos a hacer clic derecho aquí, crear un sonido que, llamémoslo Sound Music Now para la música. Vamos a abrirlo, y vamos a hacer clic aquí. Asegurémonos de que hemos marcado. Esto es bucle porque necesitas hacer loop de la música, lo contrario no va a hacer loop y se detendrá en algún momento Ahora la C ya la hemos hecho. Aquí está la o la muerte. Ya lo hemos hecho. El ponche también, la compra. Nosotros hemos hecho la muerte por los cohetes. Haga clic derecho en que. Ya casi terminamos. Ha sido una lección aburrida. Vamos a llamarlo Sound Q Rogue 0.2 Nos sentaremos. El esqueleto. Ahora vamos a seleccionar el esqueleto. Haga clic derecho, Crear una sola que. Nuevamente, vamos a cambiarlo a 0.2 Y debería recordar también cambiar el nombre por éste. El último es el mago. Muerte clic derecho Crear. Vamos a llamarlo Sound que, ábrelo. 0.2 Ahora voy a, en mi propio tiempo, ajustar todos estos volúmenes porque básicamente se trata de hacer clic en reproducir aquí. Y luego escuchar lo fuertes que son los sonidos, solo ajustando los volúmenes de ellos cuando termines. Pasemos a la siguiente lección. 107. 12.03 Adición de SFX a la interfaz de usuario: Bien, así que ahora que has terminado de crear todas las señales de sonido, volvamos a la interfaz Ahora quiero que los lleves uno por uno. El primero puedo ver la información del enemigo. Realmente no tenemos efectos de sonido para esos, es solo un texto y algunas partes de salud. La primera es la tarjeta de nivel. Siempre que hagamos clic en este botón de nivel, hagamos clic en el botón. Bajemos aquí. Y ves algo llamado presionado Sonido y hover. Sonido Sigamos adelante y cambiemos esto. Ahora si haces clic en él, podrás ver todas las señales sonoras y el sonido que has importado dentro de este motor Ahora esta es la prensada, si solo buscamos prensa y seleccionamos esta aquí, buscamos hover y seleccionamos esta Compilar. Ahora bien, si haces clic en reproducir y lo pruebas, puedes ver que este es el hover, esta es la prensa Es un poco más interesante que aquí tengan sonidos. Vamos a cerrarlo. Pasemos al siguiente. Permítanme borrar esta tarjeta de tienda solo para ver o probar esta interfaz de usuario aquí. Realmente no tenemos nada que haga sonar aquí. Vamos a cerrarlo. Vamos a abrir el artículo de la tienda, Bacalao, Dentro de aquí tenemos de nuevo este botón. Bajemos a la búsqueda, presionada en realidad para ésta. Busquemos el sonido flotante que se arregle. Vamos a cerrarlo. La última es la punta de la herramienta que tampoco contiene nada. Sigamos adelante y guardemos todo ahora. Antes de terminar, agreguemos también el clic del mouse. La mejor manera de hacerlo es si abrimos los enemigos y abrimos la base enemiga. Recuerda dentro de aquí hicimos el click. También tenemos todo este daño aplicado. Efecto de flotación de desove y efecto de golpe. De hecho, hagámoslo aquí. Si arrastras desde aquí, si solo buscas sonido, tienes algo que se llama Play Sound dos D. También tienes algo que acabo de buscar, Play Sound tiene algo llamado Play Sound dos D, y reproduce Sonido en la ubicación. Reproducir sonido en el lugar generalmente se usa normalmente. Por ejemplo, en tres juegos D donde hay un enemigo muy lejos y se puede escuchar el sonido lejos en un lugar determinado. Sin embargo, este es un juego de dos D y básicamente tenemos el sonido como dos D. Juguemos el sonido como dos D. Esto se usa principalmente para elementos de interfaz de usuario. También puedes pasar el cursor sobre él y dice un sonido directamente sin atenuación, que básicamente significa que no puedes escucharlo como venir desde la distancia o desde un lugar Es perfecto para sonidos de interfaz de usuario. Seleccionemos este para el sonido. Puedes seguir adelante y seleccionar el punzón. Y sigue adelante y selecciónala ahora puedes hacerlo así o también puedes justo aquí mismo, promover esto a una variable y puedes llamarlo, por ejemplo, efecto de sonido punch. Esto siempre es bueno porque lugar de más adelante en tu juego, lugar de buscarlo y no recuerdas quién era, siempre puedes simplemente hacer clic aquí y cambiar el efecto de sonido desde aquí. Ahora tenemos el efecto de sonido punch si hago clic en play ahora y lo pruebo. Ahora la otra cosa que podemos hacer es siempre que desbloquees un nivel, sigamos adelante y hagamos un sonido. Creo que eso también será mucho más interesante para desbloquear los niveles Recuerda, lo hiciste dentro del modo de juego. En el modo juego, si vuelvo a la gráfica de ventilación y echamos un vistazo al nivel de desbloqueo, vamos a jugarlo desde aquí. Sigamos adelante y hagámoslo aquí. Vamos a arrastrar desde aquí. Y otra vez, toca Sound Two D, en realidad incluí dos sonidos diferentes para ti. Si vuelves al audio y te abres, puedes ver aquí tienes algo llamado desbloqueos y desbloqueados normales Dependiendo de si el enemigo es un jefe o un enemigo normal, en realidad podemos hacer algo con él. Ahora la forma en que hacemos esto es de nuevo, podemos arrastrar desde aquí y decir seleccionar, porque ahora podemos seleccionar el sonido, dependiendo del valor, para obtener el estatus del siguiente enemigo. Por ejemplo, si es un jefe o un enemigo normal. Recuerda que podemos decir obtener información del enemigo. Adelante y selecciona obtener información del enemigo. Adelante y romperla. Romper la estructura de aquí conocemos el, el tipo enemigo aquí. Sigamos adelante y enchufemos esto. Dependiendo de si es un normal o un jefe, podemos seguir adelante y seleccionar, en realidad vamos a hacer clic derecho aquí, promover esta variable en su lugar. Vamos a llamarlo FX desbloqueado a nivel. Esta es la normal. Hagamos clic derecho sobre esta y promocionemos esta variable. Llamemos a este jefe al final. Bien, ahora tenemos estos dos pines seleccionados y desconectados Ahora para el nombre del enemigo, ¿de dónde sacamos esto? Recuerda, siempre podemos hacer clic derecho y decir obtener información de nivel. Adelante y selecciónelo. Ahora para el nivel del que queremos obtenerlo es el nivel desbloqueado. Adelante y enchufa esto, porque el nivel desbloqueado siempre está un paso por delante del nivel actual. Rompamos esto otra vez. Y ahora tenemos el nombre que puedes enchufar, ocultar los pines desconectados Adelante y solo hazlo más estructurado así. Ahora tenemos esta información. Sólo se va a reproducir una vez porque cada vez que desbloqueemos el nivel, va a reproducir el sonido una vez. Compilemos y guardemos todo esto. Ahora puedes ir por delante y probarlo. Pero antes de hacer esto, agreguemos el sonido para el normal, podemos buscar desbloqueado, desbloqueado y buscar el normal. Para el siguiente, para el jefe. Sigamos adelante y seleccionemos al jefe desbloqueado, compilemos el juego y probémoslo. Este es el sonido cuando desbloqueas un nivel. Si vuelvo a hacer eso, se puede ver no hay sonido porque sigo tocando el nivel uno. Si vuelvo al nivel dos, pasa al nivel dos, ahora tengo el sonido. Impresionante. Ahora esta es la última. Cuando mate a este , debería tocar el efecto de sonido del jefe o el nivel de jefe desbloqueado. Vamos a tratar de hacer eso. Ahora es un jefe. Se puede ver que es mucho más interesante jugar con él. Ahora, antes de que sigamos dándole al enemigo algunos efectos de sonido, sigamos adelante y demos también un efecto de sonido a la compra. Para la compra tenemos aquí en el jugador. Recuerda nuevamente que tenemos el artículo de compra. Sigamos adelante y agreguemos el efecto de sonido aquí antes de que hagamos otra cosa. De nuevo, haz clic derecho en Reproducir. Sonido dos D, Adelante y agrégalo aquí. Permítanme hacer clic derecho sobre éste y decir Comprar efectos de sonido. Y arrastrarlo hacia abajo así. Ahora para este, hagamos clic en él Compilado primero y busquemos por compra. Y eso debería funcionar, simplemente agradable si hago clic en Reproducir y compro algo. Ahora veo que suena ese sonido. Yo sólo voy a seguir adelante en el audio y simplemente bajarlo un poquito. Creo que es demasiado ruidoso. Si lo abro, escribo 0.4 en su lugar y juego de nuevo, puedo ver que también está funcionando. Bien, ahora tenemos todos estos efectos de sonido implementados. Vamos a guardar todo ahora. Agreguemos algunos efectos de sonido para el enemigo. 108. 12.04 Añadiendo SFX al enemigo: Bien, básicamente cada enemigo puede tener un efecto de sonido único. Para ello, recuerda que creamos una estructura. Si abro la estructura y abro la información enemiga, lo que podemos hacer es agregarle el sonido. Porque recuerda, cada vez que agregues una variable aquí, será única para ese enemigo. Por ejemplo, si hacemos clic en Agregar Aquí, y podemos decir efectos, muerte, efecto de sonido. Y si solo buscamos sonido, adelante y seleccionamos este Sonido. Entonces lo que puedes hacer es ir a Google Sheets. Dentro de tus Hojas de cálculo de Google, sigue adelante y abre la información del enemigo por aquí a la derecha. Adelante y escribe la muerte como efectos que acabas de hacer. Ahora lo que puedes hacer es agregar referencias justo antes. Siempre podemos ir al audio ahora. Ahora para el primero, veamos aquí, es que todos los cuatro primeros son los , vamos por aquí. Tenemos el C. Simplemente encuéntralo aquí abajo es, por aquí, el clic derecho de la muerte. Y luego copiar la referencia igual que antes. Adelante y agrégalo ya. Técnicamente puedes tener un efecto de sonido de muerte orca que es único para cada uno Pero sólo voy a usar el mismo aquí. Porque he agregado aquí, recuerda en la señal de sonido, agregamos uno aleatorio de estos, solo va a elegir un sonido de muerte aleatorio. Pero básicamente puedes asignar un sonido de muerte único a cada enemigo. Ahora para el mago, voy otra vez a bajar aquí, Encuentra al mago Muerte, haz click derecho, copia, referencia, pegarlo aquí. El siguiente es el esqueleto. Encontremos el esqueleto que está aquí. Voy a renombrarlo y eliminar esto, 01, click derecho, copiar referencia, y pegarlo en Los siguientes cuatro, esto, esto, y esto. Ahora tenemos la muerte pícara y la muerte nocturna. Busquemos al pícaro. La noche ya está aquí. Copiar referencia pasado por la noche para el pícaro. Hagamos clic derecho en Copiar base de referencia para el pícaro. Nuevamente, haga clic en el archivo, descárguelo como archivo CSV. Ahora adelante y lleva esta información enemiga a las tablas de datos. Y básicamente solo arrástralo y debería tener toda la información. Ahora adelante y ahorra. Ahora cada vez que muere el enemigo, y esto sucede dentro de la base enemiga, abramos la base enemiga, guardemos todo, compilemos. Y veamos aquí donde podemos agregarlo, así que estamos haciendo algún daño. Por aquí al final tenemos la muerte F doble clic sobre ella. Y es aquí abajo cada vez que el enemigo dice. De hecho, hagámoslo aquí. Siempre que tocamos el flip book. Déjame tocar el sonido antes de tocar el libro plegable. Ahora realmente no creo que importe si tocas una cosa primero o la otra, pero yo solo lo voy a hacer de esa manera. Volvamos a tocar Sound Two D. Adelante y conéctelo así. Y adelante y conecta estos efectos a aquí. Ahora va a seleccionar este efecto de sonido, dependiendo de lo que le hayas dado como información en la tabla de datos. Así que adelante y compilar. Haz clic en Reproducir y probémoslo. Bien, eso funciona bien. Bien, entonces ahora tenemos el problema de que el sonido se reproduzca muchas veces. Entonces, si solo bajas tu volumen porque podría llegar a ser molesto. Si haces clic en Comprar en algo aquí, compraste un par de veces. Se puede ver cuando muere el enemigo, juega muchas veces. Y esto es un poco molesto. Vamos a la base enemiga aquí. Echemos un vistazo a la muerte. Si solo hago una cadena de impresión, solo imprimo cadena para ver si esto está sonando. Un par de veces, puedo hacer click en play. Puedo volver a comprar algo. Puedo ver que se está jugando muchas veces. Sigamos adelante y arreglemos este problema aquí. Podemos usar algo llamado un nodo one. Tomemos esto y digamos una vez, y sigamos adelante y seleccionemos esto una vez. Entonces va a reproducir este efecto de sonido o básicamente todo este código aquí. Una vez sólo compro algo. Ya puedes ver que está arreglado porque sólo va a jugar una vez. Esto se está reiniciando básicamente de forma automática. Porque recuerden, estamos destruyendo al actor. Cada vez que el actor muere y un nuevo actor responde. Entonces tendrán uno nuevo, nodo. Realmente no necesitamos resetear este. Aquí todo está funcionando bien. Vamos a cerrarlo y sigamos adelante. 109. 12.05 Añade música: Como lo último para el efecto de sonido, agreguemos algo de música. Y esto es súper simple, así que si solo abrimos el audio una vez más, podemos arrastrar en esta música hasta aquí. Voy a darle clic de nuevo. También reduce el sonido. No estoy seguro de lo ruidoso que es. 0.2 está bien, creo que sí. Déjame cerrarlo. Ahora tenemos esto. Sólo voy a decir para el 0200, realmente no importa dónde esté Ahora si haces clic en Reproducir, puedes ver que puedes escuchar el sonido. Esto es súper simple y agregar música y va a hacer un bucle para siempre. Todo suena bien. Bien. Sigamos adelante y guardemos todo. Y pasemos al siguiente. 110. 13.01 Diseño de la interfaz de usuario de Ascensión: Bien, entonces ahora trabajemos en la Ascensión. Básicamente, lo que es Ascensión, si no lo sabes ya, es cada vez que alcanzas un progreso, cierto progreso en el juego, puedes presionar un botón de reinicio Da una rejugabilidad al juego. Cuando reinicias el juego , te da más daño base. Por ejemplo, todo es 300% más de daño. Se puede reiniciar el juego básicamente y tener más daño. Y básicamente puedes continuar porque en cierto punto si no reinicias, el juego se volverá demasiado difícil y tendrás que reiniciar para conseguir ese daño adicional para continuar con los niveles. Bien, sigamos adelante y comencemos con el mecánico de Ascensión Entonces, lo primero que quiero hacer es básicamente diseñar la interfaz de usuario y sacarla del camino. Vayamos a la carpeta UI. Vamos a la derecha L aquí, haz un nuevo widgets. Llamémosle a éste Ascensión pop up. Y vamos a estar trabajando con el pop up en la siguiente lección, Pero por ahora, ahora tenemos eso terminado. Pasemos al Principal. Agreguemos aquí abajo el botón de Ascensión, y lo haremos aparecer siempre que se haya alcanzado el criterio. Empecemos por aquí. Primero, lo que quiero hacer es tomar esta superposición y arrastrarla hacia abajo hasta el panel del lienzo. Vamos a minimizar todo esto. Ahora tenemos esta superposición. Quiero que esta interfaz de usuario sea A, aquí abajo en la parte inferior, punto de anclaje, abajo. Vamos a subir 00 en la posición x e y Ahora para la x, tenemos que subir 0.5 Para la y en la alineación, tenemos que escribir una. Está aquí arriba en la pantalla. A continuación necesitamos la interfaz de usuario. Ahora primero agreguemos una imagen. Añadiendo esta imagen, esta será la imagen de fondo. Será el mismo que éste. Yo sólo voy a copiar esta imagen. Da clic aquí, pégalo. Ahora tenemos eso terminado. A continuación queremos una caja vertical. Agreguemos una caja vertical a esta superposición. Lo que quiero tener es algún texto y un botón debajo de él. Agreguemos algo de texto. Sólo voy a copiar uno de ellos. Por ejemplo, éste, control C, baja aquí, controla V en la caja vertical. También agreguemos el botón, y podemos agregarlo con solo entrar en esta tarjeta de nivel. Podemos dar click en todo esto, copiar y pegarlo aquí en el cuadro vertical. Y puedo quitarle esta calavera. Ahora eso fue todo. Vamos a dar click sobre esta imagen. Hagamos que se llene horizontal y verticalmente. Ahora vamos a hacer clic aquí arriba en la superposición. Y permítanos simplemente cambiar el tamaño de las cosas, o básicamente lo que puedes hacer es simplemente dimensionar el contenido Creo que voy a hacer eso en su lugar. A continuación podemos agregar texto para este botón. Voy a escribir aquí Ascend. Aquí podemos escribir Ascensión disponible. Ahora para el texto de fondo aquí, en realidad voy a copiar este color de contorno. Ve aquí abajo y pégalo para éste para que tengan el mismo color. También, podemos dar click sobre este cuadro vertical y podemos darle algún relleno. Si escribes algo como 50, tal vez no tanto. Si volvemos a hacer clic aquí, escribamos 30. A lo mejor algo alrededor del 30, 35 es algo así. Creo que se ve bien. Ahora vamos a darle algo de espaciado en la parte inferior para que no golpee el borde. Y esa es la posición en la posición Y -30, la X. Escribamos cero. Una vez más, seguir adelante y compilar. Se puede dar click en el plato para ver cómo se ve. Creo que parece que a lo mejor este texto es demasiado grande. En lugar de 24, escribamos uno. También vamos a darle un poco de espacio. Sólo voy a dar click aquí arriba. Dale un poco de relleno al fondo, por ejemplo, cuatro, compile y haga clic en play. Creo que eso es lindo. Ahora tenemos disponible esta ascensión, y tenemos algún efecto de sonido también para el botón, Eso fue todo para esta interfaz Vamos a cerrarlo y continuar en la siguiente. 111. 13.02 Diseña el popup de ascensión: Bien, ahora es el momento de diseñar el Ascension Pub up. Y podemos hacer esto fácilmente simplemente copiando esto por ahora. Copia todo esto que hicimos en la última lección y abre el Pub Up de Ascensión Pasa esto aquí abajo. Ahora en vez de aquí. En realidad agreguemos un panel de lienzo. Por eso se ve tan enorme. Agrega un panel de lienzo y luego agrégalo aquí. Asegúrate de que al hacer clic en la superposición, esté anclada al centro Y 0.5 en la alineación para la X y la Y. Y también 00 en la posición X e Y. Y aquí arriba, seleccione deseado en pantalla. Bien, entonces lo que quiero hacer aquí es quiero, reiniciarás progreso pero con 300% más de daño. Por ejemplo. Siempre podemos escribir un número dinámico para este porcentaje de daño, pero por ahora, vamos a escribirlo así. Si quieres hacerlo un poco más pequeño aquí en el ancho, siempre puedes bajar aquí y en el envoltorio tienes este texto envolvente en. Yo solo voy a aumentar esto y básicamente podemos envolver este texto a un cierto número. Déjanos envolverlo en algo así como 360. Puedo ver que la imagen es en realidad borrosa en el fondo en lugar de imagen Cambiémoslo a una caja y escribamos 0.5 Eso se ve mucho mejor. Hagámoslo también en realidad en lo principal. No creo que hayamos hecho eso. Volviendo, dando clic en él, cambiándolo a una caja y escribiendo 0.5 Volvamos. Ahora, por aquí, voy a duplicar este botón, pero los necesitamos en una caja horizontal. Voy a buscar cuadro horizontal. Adelante y agrégalo aquí. Y agrega este botón a la caja horizontal. Y duplique esta superposición. Al hacer clic en el control D, podemos dar click en la primera superposición. Haga clic en Phil. Haga clic en la segunda superposición. Haga clic en Phil. Ahora el primero va a decir As, Eso está bien. El segundo va a decir cancelar, porque queremos volver atrás. Si no queremos continuar, podemos dar click sobre esto. Podemos cambiar el color solo para hacerlo un poco más único. El botón de cancelar es un poco más rojo, algo así aquí. Y voy a copiar este color al hover y al prensado también, para el as Voy a cambiar el color también a algo un poco más verde como esto. Bien, esto en los otros. Aquí lo tienes. Si compilo y guardo, ahora tenemos esto terminado. Pasemos al siguiente. 112. 13.03 Abre la ventana emergente de ascensión: Bien, ahora es el momento de agregar este pop up de ascensión a la UI Si vuelvo al control del jugador, recuerda que aquí es donde creamos toda la interfaz de usuario y creamos esta función show hide widget. Vamos a abrir la función show widgit. Nos daremos cuenta de que necesitamos agregarlo a la enumeración. Sigamos adelante y hagamos eso. Vamos a abrir el, vamos a los widgets del juego. Vamos a sumar la Ascensión. Solo guardemos aquí y volvamos al controlador del reproductor. Y ahora ves que tienes un alfiler para ello. Ahora copiemos este widget de parte y busquemos, veamos aquí, emergente Ascensión, clic derecho Promueve esto a una variable y llámalo ascensión pop up, igual que antes Tomemos este pop up de ascensión y lo convertiremos en un get validado cuando no sea válido Vamos a crear la interfaz de usuario. No obstante, siempre que sea válido, arrastremos desde aquí y digamos añadir al punto de vista. Vamos a agregarlo a la pantalla. Si es válido, sigamos adelante y solo agreguémoslo a la pantalla. No tiene sentido crearlo si ya es válido. Vamos a agregar este de aquí y empujarlos hacia arriba. Ahora volvamos al widget hide de aquí. Lo que tenemos que hacer es cada vez que cerramos el widget, vamos a arrastrar esta ascensión emergente, hacer clic derecho, y convertirlo en un get validado y conectarlo y eliminarlo del padre Siempre que queramos cerrarlo, podemos eliminarlo de la pantalla diciendo remove de Parent. Yo lo guardo todo. Ahora estamos listos para usarlo. Vamos a los planos, o en realidad a la interfaz de usuario Ahora esto sucede cada vez que hago clic en el botón en el widget principal. Si voy aquí, este botón aquí, voy a cambiar el nombre a Button Ascend Voy a la gráfica. Ahora aquí puedes hacer clic en él y dar clic en el evento clicado ¿Qué debería pasar al hacer clic en este botón? Lo que debería pasar es que quiero obtener mi controlador de reproducción y mostrar el widget, el menú emergente. Puedo ver aquí, no tengo una variable de controlador de jugador. De hecho voy a crearlo aquí arriba en el evento evento construir así. Vamos al igual que antes de obtener el controlador del reproductor, luego obtengamos la referencia del controlador de reproducción desde la interfaz del plano Y haga clic derecho promocione esto a un controlador de reproductor de llamadas variables. Ahora tenemos esto. Vayamos aquí abajo. Arrastremos este controlador del reproductor y digamos Mostrar Ocultar widgets. Sigamos adelante y seleccionemos Canine Pop up. Vamos a hacer clic en Mostrar. Pero también queremos ocultar el menú principal. En realidad principal básicamente voy a arrastrar esto también y decir Mostrar Ocultar Widgets. Voy a ocultar la interfaz de usuario principal. Ya es sentarse así. Compilar. Si haces clic en Reproducir, das clic en asentimiento, podrás ver que aparece De hecho hagamos lo mismo aquí. Eliminemos esto de la pantalla. Siempre que hagamos clic en lápiz, llamémoslo lápiz de botón aquí arriba. Vamos a ir a la gráfica y dar clic, Vamos a eliminar todo esto por ahora. Nuevamente, necesitamos el mando de reproducción. Entonces, sigamos adelante y hagamos esa construcción de eventos. Yo sólo voy a copiarlo de la principal aquí. Sólo tienes que copiar todo esto y pegarlo aquí arriba. Al igual que antes, recuerda hacer click en esta línea de control de vuelo creada como una variable como esta. Entonces ahora lo tenemos. De hecho, vamos a copiar y pegar aquí. No tenemos que escribir todas las mismas cosas una y otra vez. Siempre que hacemos clic en la cancelación, queremos abrir la interfaz de usuario principal, pero queremos cerrar el pop up de Ascensión Vamos a probar eso. Ábrelo, haz clic en Cancelar, y puedo ver que está funcionando bien. Adelante, guarda todo, y pasemos al siguiente. 113. 13.04 Configuración del evento de reinicio de la partida: Bien, ahora cada vez que hagamos clic en el Ascend aquí, en realidad voy a borrar la música solo que podamos trabajar aquí sin la música Sólo voy a hacer click sobre él. Y luego haga clic en el multiplicador de volumen a cero. Y si hago clic en jugar ahora cada vez que hago clic en Ascend y Ascend aquí, quiero reiniciar el Esto es básicamente lo que quiero hacer. Básicamente estamos reiniciando el juego y dando al jugador cantidad de daño extra. Sigamos adelante y reiniciemos el juego. La forma en que hacemos esto, hagamos eso dentro del modo de juego porque aquí es donde tiene más sentido aquí abajo. Hagamos clic derecho, hagamos un nuevo evento personalizado. Llamemos a este juego de reinicio. Hay muchas variables que necesitamos reiniciar porque en realidad necesitamos reiniciar todas las variables con las que hemos estado trabajando hasta ahora. No todos ellos sino los que son muy importantes y se muestran a la pantalla. Empecemos, por ejemplo, con el nivel que has desbloqueado y el nivel actual. Déjame arrastrar este nivel desbloqueado, arrastrarlo y ponerlo en uno. Nuevamente, esto es lo que fue desde el principio. Lo mismo con el nivel actual. Vamos a arrastrarlo y ponerlo en uno. También eliminemos todos estos botones aquí. Cuando tengas todos estos botones, debes quitarlos. Hagámoslo consiguiendo el controlador del reproductor. Encontremos al Maui. Adelante y consígalo. Entonces necesitamos obtener la lista de niveles. Así es como lo llamamos. Si no recuerdas cómo lo llamaste, siempre puedes abrir el Maui Puedes hacer clic en esta lista y la llamaste lista de niveles. Estamos recibiendo este menú. Estamos obteniendo la lista de niveles. Adelante y consígalo. arrastrar de aquí un claro niños. Vamos a eliminar todos los componentes secundarios secundarios que están dentro de esta lista. Siempre que los quite todos, recuerde que también eliminamos el nivel uno. También necesitamos agregar el nivel uno. La forma en que podemos hacer esto es directamente desde el controlador del reproductor y tenemos este llamado UI de botón. Si no recuerdas esto, lo cual es natural porque llevamos bastante tiempo trabajando con esto y a veces también me olvido de mí mismo, como lo llamé. Siempre es agradable volver atrás y ver un botón UI, Básicamente agrega este nivel actual a la lista de servidores. Si vuelvo al modo juego y agregamos este botón de nivel UI, es el nivel uno. Básicamente el nivel desbloqueado que tenemos aquí. Arrastremos el nivel desbloqueado y lo agreguemos. Ahora tenemos los niveles correctos. Lo siguiente en lo que queremos trabajar es la cantidad de monedas que tiene el jugador. Necesitamos una referencia al jugador, y puedo ver que no tenemos una variable para el jugador. En realidad vamos a sumar uno aquí arriba. Déjame arrastrar todo esto. Ahora esta está en la jugada de inicio. En la jugada de inicio, hagamos clic derecho y digamos que obtenga el personaje del jugador, digamos que obtenga la referencia del jugador desde la interfaz del plano Adelante y conéctalo. Hagamos clic derecho y promocionemos esta variable llamada peón jugador Volvamos a conectarnos a éste y simplemente empujarlos de nuevo, Compile. Ahora lo que podemos hacer aquí abajo es que podemos tomar a este jugador y podemos decir cantidad de monedas. Podemos establecer que la cantidad de monedas sea cero, pero también tenemos que actualizar la interfaz de usuario. No recuerdo completamente la lógica aquí. Si vuelvo al jugador, abro el jugador aquí, actualizamos la cantidad de monedas. Y es este en el WB principal, lo llamamos actualizar cantidad de monedas. Simplemente copiemos esta parte del código. Volvamos al modo de juego, pegarlo. Básicamente no necesitamos escribir más código. Podemos simplemente copiar y pegar los que ya tenemos y conectarlo. Hacer un nodo de ruta posterior como este. Y ahora esto ya está establecido. Bien, lo siguiente que queremos arreglar también es la cantidad de artículos que aquí hemos comprado. Entonces tenemos que reiniciar eso también. Para el puerto de artículos, también tenemos este punto de ítem variable dentro del jugador. Si vuelvo al modo de juego, copio el pan del jugador aquí y lo busco bots adelante y obtengo esto correcto de aquí. Y luego di claro, limpiarás todos los valores dentro de este mapa cada vez que los borre. También quiero actualizar la interfaz de usuario. Cuando actualizas la interfaz de usuario para las tarjetas de artículos, básicamente solo recrea todos los elementos Porque recuerden, cuando creamos las tarjetas de artículos de tienda, básicamente limpiamos las anteriores. Podemos seguir adelante y volver al modo de juego. Podemos tomar el controlador del jugador aquí y podemos arrastrar y decir Crear tarjetas de artículos de tienda. Adelante y conectado. Ahora lo último es que también necesitamos actualizar el DPS para el jugador Necesitamos reiniciar el DPS total y el daño del cursor. Volvamos al modo de juego. Volvamos a tomar al jugador así. Tomemos el DPS total, Ponlo a cero, porque esto es lo que es por defecto Tomemos el daño del cursor y pongamos el daño del cursor. Ahora el daño del cursor es de 15, creo. Entonces, si haces clic en él, podrás ver el valor predeterminado para ello que has establecido para tu juego. Y sólo voy a ponerlo de nuevo a 15, que es el predeterminado para mi juego aquí. Y solo podemos hacer una nota de arte posterior y todo queda genial. Bien, entonces lo último es que queremos establecer el nivel actual en el que nos encontramos, porque tenemos este nivel actual establecido y también genera al enemigo para ese nivel y comienza el tiempo de ronda que necesitamos para hacer esto Volvamos aquí. Digamos establecer el nivel actual. Vamos a sumar el nivel en el que estamos que es el nivel actual. El nivel actual lo reiniciamos a uno Nuevamente, aquí si recuerdas el primero, nivel actual establecido en uno se iba a establecer Ahora hemos terminado con este juego de reinicio. Veamos en realidad si funciona. Si volvemos, veamos aquí, si acabo de cerrar todo esto abajo. Abro la interfaz de usuario. Abro este popup de ascensión. Doy click en este ascenso, y voy hacia abajo y hago clic en el botón clicked para este ascenso Voy a copiar todo esto porque necesitamos mostrar la interfaz de usuario principal y también tenemos que eliminar la ventana emergente de Ascensión Cuando hacemos clic en este botón, cambiemos el nombre por él. No es el nivel de botón, es el ascenso de botones. Volvamos. Bien, por aquí también queremos reiniciar el juego. Voy a hacer clic derecho y decir obtener modo de juego y luego obtener la referencia del modo de juego. Entonces voy a decir reiniciar juego. Debería funcionar bien. Adelante, guarda y déjanos jugar y probarlo. Enemigo. Compro algo aquí y enciendo el nivel. Si hago clic en asentimiento y luego asciendo, se puede ver que reinicia Reinicia la cantidad de artículos que he comprado. También reinicia la progresión de nivel aquí y la cantidad de monedas que tengo. Vamos a intentarlo de nuevo. Si solo le digo al enemigo que compro algo en las tiendas, reiniciamos todo el progreso y todo está funcionando muy bien. Eso fue todo por reiniciar el juego. Y pasemos al siguiente. 114. 13.05 Visualización de la ascensión al final de la partida: Lo que queremos asegurarnos ahora es cuando haces clic en jugar, queremos asegurarnos de que esta ascensión disponible solo se muestre cuando el jugador haya llegado al final del juego Nosotros, voy a decir por ejemplo en mi criterio es siempre que el jugador haya comprado todos los artículos como una cierta cantidad, entonces se mostrará esta ascensión disponible Sigamos adelante y hagamos eso. Hagámoslo dentro del modo de juego. Vamos a abrir el modo de juego dentro de aquí. Vamos a crear una nueva función. Llamemos a esta función como criterios cumplidos. Por ejemplo, se va a comprobar si se cumplen los criterios. Y luego va a mostrar este widget ahora para asegurarse de que esté oculto desde el principio. Vamos a la interfaz de usuario. Primero, abramos la Ui principal. Dentro de la Ui principal, hagamos clic aquí. Aquí en la superposición para la Ascensión. Sólo voy a cambiar el nombre por esta superposición porque la vamos a ocultar, así que siempre es agradable saber su nombre. Voy a llamarlo Superposición Ascensión y configurarlo en es variable También como inicio aquí en la visibilidad. En lugar de no golpear comprobable, pongámoslo a colapsado No es en nuestra opinión. Si reproduce el clip ahora puede ver que ya no se muestra. Lo vamos a mostrar siempre que se cumplan estos criterios. Ahora los criterios, cada vez que haya comprado una cierta cantidad de estos artículos, mostrará que necesitamos el mapa de puntos de artículos. Esto está dentro de nuestro jugador. Consigamos o consigamos una referencia al jugador, y ya la tenemos aquí. Juega en. Vamos a sacarlo y decir puntos de artículos. Consigamos este mapa que creamos anteriormente. Ahora necesitamos sacar todas las llaves de él. Los valores, básicamente se llaman claves. Todas las llaves aquí. También podemos ver los valores para ellos. Golpeemos desde aquí y volvamos a decir llaves y arrastramos, luego conectamos aquí Ahora tenemos todas las llaves. Lo que quiero verificar primero es ¿tenemos todos los artículos? Porque realmente no importa hacer un bucle de todo esto y verificar cuántos artículos tenemos si ni siquiera tenemos el artículo. Solo por el bien de la optimización, primero verifiquemos si el jugador tiene todos los elementos antes de que los recorremos y veamos cuántos hay de cada ítem. Tomemos esto y digamos que la longitud es esta longitud, es igual? Adelante y selecciona eso. ¿Esto es igual a la cantidad de artículos de tienda que tienes? Y ¿cómo conseguimos cuántos artículos de tienda tenemos? Esto en realidad es súper fácil porque ahora podemos aquí en el modo de juego, definamos eso en el jugador en el inicio. Juega aquí en el modo de juego después de definir los peones y los puntos de desove Hagámoslo antes de que engendremos al enemigo. Desconecte este y golpeemos desde aquí y digamos obtener tabla de datos. Hasta el momento hemos estado usando este. Obtener fila de tabla de datos pero ahora vamos a usar esta. Obtener nombres de fila de tabla de datos. Vamos a obtener todos los nombres de fila de tabla de datos para la tabla de datos de información. Aquí están todos los nombres para los artículos de este y diciendo longitud, esto te dirá cuántos artículos tenemos. Por ejemplo, si tienes 11 artículos, dirá 11. Vamos a hacer clic derecho en este y promocionarlo a una variable y llamarlo cantidad de artículos de la tienda. Adelante y conéctalo. Ahora, así, conecta esto también. Ahora lo que podemos hacer, vamos a compilar. Si quieres ver lo que hace, siempre puedes hacer una cadena de impresión. Siempre usa una cadena de impresión si quieres ver lo que estás haciendo. Es un indicador. Puedes hacer click en play, y dice 11 aquí arriba a la izquierda. Eso está funcionando perfectamente. Vamos a compilar. Volvamos a los criterios cumplidos. Vamos a meter esta cantidad de artículos de la tienda aquí, y luego hagamos una sucursal. Lo que básicamente estamos haciendo es que estamos obteniendo las llaves de los artículos, estamos tomando la longitud de los mismos. Básicamente estamos comprobando cuántos de estos artículos hemos comprado. Y lo estamos comparando con la cantidad de artículos de la tienda. Si la cantidad de artículos que hemos comprado es igual a la cantidad de artículos de la tienda, esto significa que he comprado todos estos artículos al menos una vez. Después de saber que compré todos estos artículos al menos una vez, la longitud del bote de artículos será la misma que la cantidad de artículos de la tienda. Si eso es cierto, sigamos adelante y continuemos con el código. Si eso no es cierto, podemos, solo podemos dejarlo porque no queremos hacer nada. Sigamos a partir de aquí. Y ahora queremos obtener los valores arrastrando desde aquí O básicamente puedes, solo para hacerlo más limpio, siempre puedes arrastrar aquí nuevo y luego arrastrar y decir valores. Ahora estás obteniendo los valores de esas claves. Básicamente las claves están aquí y los valores están aquí. Ahora estás jugando con los valores aquí. Ahora para los valores que vas a decir para cada bucle con Brick. Tomando este, lo que queremos comprobar es si hemos comprado cierta cantidad de ese artículo, por ejemplo, digamos que el jugador tiene que comprar al menos diez artículos de cada uno antes. Aparece la ascensión. Vamos a revisar todos los valores de los elementos y vamos a verificar si están en esa cantidad de cantidad de bot. Básicamente lo que sea que pongamos, si digo es mayor o igual a lo que escribo aquí, por ejemplo, es mayor o igual a diez y puedo hacer una rama. Entonces lo que quiero hacer es crear un contador. Hagamos una variable local. Y sólo voy a llamarlo contador local. Sólo va a ser un contador que cuenta para mí. Comienza en cero. Vamos a decir este contador plus plus. Cada vez que encontremos que se ha cumplido con este criterio, vamos a agregar uno a este contador. Si hemos comprado diez artículos de cada uno de esos artículos, entonces este contador debería ser 11, porque tenemos 11 artículos. Siempre que sea 11 aquí en el completado, va a recorrer todos ellos y es este local L plus, lo que significa básicamente más uno para ello. Si fue cero, será uno. Si fue uno, serán dos, y así sucesivamente. Va a recorrerlos. Y si este contador local es igual a la cantidad de artículos de tienda, que es 11, básicamente este contador será 11 si hemos comprado esta cierta cantidad de artículos de cada uno de esos artículos, porque nuevamente tenemos 11 artículos, hagamos una sucursal y digamos, ¿es esto cierto? Si eso es cierto, queremos decir que se ha cumplido con los criterios. En realidad voy a hacer una nueva variable aquí. Y es sólo un lingote llamado criterios de ascensión cumplidos. Y cámbialo en lingotes, adelante y conéctalo aquí y conéctalo para que sea verdad Sí, eso debería ser. En realidad lo que estamos haciendo aquí. Hagamos un descanso, por cierto, aquí, porque no necesitamos recorrerlo sin romperlo. Porque aquí estamos usando un para cada bucle con break. Y lo que eso significa es que vamos a hacer un bucle de este código. Sin embargo, no tiene sentido seguir dando vueltas a través de ellos. Si nos enteramos de que para la pluma ligera no hemos comprado diez, ¿por qué deberías recorrerlas todas? Porque no va a mostrarse de todos modos. Porque este no es diez. En lugar de, esto es básicamente para optimización, así que no recorres el código sin ningún significado. Si lo recorremos y descubrimos que uno de los artículos no tiene diez artículos. Pero como escribimos aquí, entonces podemos arrastrar aquí y decir break. Básicamente estamos rompiendo el bucle. Lo que estamos diciendo es que, por ejemplo, estamos recorriendo, estamos echando un vistazo a la pluma ligera Dice, por ejemplo, sí, hemos comprado diez. Entonces estamos más plusing el mostrador local. Entonces se echa un vistazo a la antorcha. Y tal vez sólo hemos comprado nueve. Dirá falso, no has comprado diez. Si eso es falso, sólo vamos a romper el bucle. Entonces ya no hacemos un bucle a través de esto porque no tiene sentido. No hemos comprado todos los artículos diez veces. Se va a romper el bucle y se va a completar. El mostrador local no es igual a la cantidad de artículos empujados, porque a lo mejor eran sólo dos aquí Entonces será falso y entonces no pasará nada. Los criterios de ascensión solo se cumplirán cuando el mostrador local sea igual a la cantidad de los artículos de la tienda Ahora hay que pensar en dónde tiene sentido verificar esto o llamar a esta función aquí? Ahora tiene más sentido en el artículo de compra básicamente. Volvamos al jugador. Aquí es donde lo hicimos. Tenemos este artículo de compra. Cada vez que compramos artículo, necesitamos verificar si se han cumplido los criterios. Vamos a hacer eso aquí. Al final, está en el modo de juego, así que necesitamos tomar el modo de juego y decir ascensión. Y toma este criterio de ascensión, vamos a llamarlo cada vez que compramos algo porque necesitamos verificar, si necesitamos mostrar la ascensión, lo haría Ahora si haces clic en Reproducir y comprar todos ellos, no va a Porque recuerden, establecemos la superposición de la Ascensión. Entonces, si vuelvo a la interfaz de usuario principal, configuramos esta superposición para que se colapse. En algún momento tenemos que mostrarlo. Volvamos al modo de juego ahora, aquí en los criterios de Ascensión, y ahora vamos a mostrar esta superposición Ahora recuerda, esta superposición está dentro de WB main, que tiene la referencia dentro del controlador del reproductor. Si solo tomo el controlador del jugador y busco WB principal, lo entiendo y luego me sale la V ascensión Esto es básicamente como lo llamé. Entonces puedo decir establecer visibilidad. Vamos a establecer la visibilidad para que no golpee comprobable. Recordar visible básicamente va a bloquear tus clics del ratón y no queremos hacer eso. Hagámoslo comprobable, compilemos y guardemos. Ahora, solo para propósitos de prueba, solo escribamos uno. Si solo desactivo los sonidos antes de hacer clic en reproducir, creo que va a ser molesto para ti que siga tocando los sonidos aquí en la base enemiga. Siempre que muera el enemigo. Sólo voy a desactivar este Reproducir sonido a D. Por ahora, vamos a hacer clic en reproducir. Yo sólo voy a comprar. Cada artículo. Ahora bien, este es el último y voy a comprarlo. Puedo ver que no pasa nada, aunque debería suceder. De hecho, esta es una buena oportunidad para intentar depurarlo juntos y puedes ver como lo depuro. Sigamos adelante y volvamos al modo de juego. Básicamente, el error está ocurriendo aquí. Hagamos notas de cadena impresas. Esto es lo que suelo hacer para depurar por aquí. Vamos a escribir una cadena de impresión. Digamos si el código pasa por. Básicamente lo que estoy viendo es ¿pasa el código? Si hace eso, significa que funciona. Vamos a escribir primero aquí, por ejemplo, lo que sea. Realmente no hace ninguna diferencia lo que escribes. Déjame escribir, por ejemplo, segundo aquí. Siempre que reviso el código aquí, lo que está mostrando aquí si dice segundo, esto significa que la longitud de estas claves son iguales a los artículos de la tienda, lo que significa que el código está funcionando antes de continuar. Vamos a tratar de hacer eso. Ahora diciendo primero está bien, debería decir segundo cada vez que compre el último. Pero se puede ver que en realidad se dice en segundo lugar. Cada vez que compré este, aún no lo he comprado. Así que en realidad las cosas que tengo la cantidad de artículos de la tienda ya antes de comprar el último artículo. O tengo un valor predeterminado dentro de este punto de artículo por error, que voy a ver en un segundo, o la cantidad de artículos de la tienda está mal. Primero echemos un vistazo a la cantidad de artículos de la tienda. Sólo voy a borrar la cadena de impresión. Voy a volver al gráfico de eventos del modo juego. Voy a imprimir la cantidad de artículos de la tienda que en realidad estoy obteniendo de esto, es 11, que se supone que debo conseguir. Dice 11. Hay algo mal con la otra variable, algo mal con el punto del ítem. Si vuelvo al jugador y hago clic en los ítems, pero puedo ver aquí, este es en realidad el error aquí. Por defecto, hice clic en el signo más y agregué un elemento vacío aleatorio Y puedo dar click en Eliminar aquí, y dar click en Compilar y Reproducir. Vamos a intentarlo de nuevo ahora. Si compro uno de cada artículo, va a funcionar ahora. Y también me va a mostrar la Ascensión disponible. Puedo dar click en Ascend y ascender aquí, y luego reiniciar el juego Ahora tenemos que esconder esto de nuevo, cada vez que ascendemos, hagamos eso muy rápido Eso lo podemos hacer. Vamos a cerrar esto. Volvamos a la interfaz de usuario. Y vamos a abrir esta ventana emergente de aquí. Hagámoslo aquí cada vez que hagamos clic en Ascend, Aquí cada vez que hagamos clic en Ascend y reiniciemos el juego Sólo hagámoslo antes de reiniciar el juego. Tomemos de nuevo el controlador del reproductor. Pasado en, ir a la principal del WB. Entonces volvamos a conseguir V Ascensión. Entonces empujemos esto más lejos. Básicamente queremos establecer la visibilidad igual que antes, pero ahora queremos establecer la visibilidad para colapsar igual que antes, colapsada y luego conectar esta. Y entonces eso debería funcionar muy bien. Bien, ahora todo está funcionando y sigamos al siguiente. 115. 13.06 Crea la estructura de ascensión: Lo que quiero hacer ahora es crear el Multiplicador para la Ascensión Cada vez que ascendemos a un nuevo nivel o reiniciamos el juego, quiero darme Por ejemplo, el jugador debería tener 300% más de daño que antes, y todo le da 300% más Vamos a establecer el multiplicador y podemos hacerlo muy fácilmente a través de otra vez, una estructura y una tabla de datos. Volvamos a las estructuras y haga clic derecho en ir a Planos y luego hacer una nueva estructura Llamemos a éste ST Ascensión. También se puede llamar al multiplicador de Ascensión , que es lo que es Vamos a abrirlo en vez de aquí, vamos a cambiarlo en un flotador. Y básicamente lo que queremos hacer es que solo queremos tener el multiplicador de Daño de Ascensión Este es el único valor que necesitamos. Ahora vamos a cerrarlo. Vamos a Tablas de datos y hagamos clic derecho en Tabla de datos misceláneos. Y seleccionemos la estructura que acabamos de hacer. Puedes ver en plano básicamente solo haces lo mismo una y otra vez. Y cada vez que te vuelves realmente bueno en ello, básicamente puedes crear tu propia mecánica con solo usar las herramientas que has aprendido. Este llamado básicamente solo ascensión Para éste, ahorremos y abramos ahora las Hojas de cálculo de Google Básicamente por aquí, hagamos uno nuevo. Sólo voy a duplicar este ítem para, por ejemplo, llamemos a este nuevo T, ascensión Eliminemos todo ahora. Para el ID está a qué nivel ascensión estamos. Empezamos con el nivel cero porque no tenemos ninguna ascensión. Esto es básicamente, se puede pensar ello como la cantidad de Ascensiones que hemos hecho o a partir del 01, y pueden continuar hasta cuántas quieran Entonces puedes decir Multiplicador de Daño. Básicamente, hay que llamarlo del mismo nombre, Multiplicador de Daño de Ascensión Entonces el mismo nombre que lo que has escrito dentro de la tabla de datos. Ahora para el multiplicador, tiene que ser uno cuando estás en cero ascensiones porque vas a multiplicar todo por uno, que significa que solo estás recibiendo el daño que acabas de tener anteriormente, que es básicamente el daño base que has definido aquí en tu información de objeto, todo multiplicado por uno Ahora, cada vez que ascendemos, se puede por ejemplo, decir tres Esto significa que ahora tienes tres veces más daño que antes. Y entonces se puede decir, por ejemplo, siete. Y sólo voy a escribir números aleatorios, voy a decir esto veces 1.5 o lo que sea. Y solo puedes arrastrar hacia abajo y luego hacer clic aquí para eliminar todos los decimales. Ahora solo podemos usar esto. Bien, Sigamos adelante y clic en Descarga de archivos, descarga CSV. Ahora tengo esta ascensión DT. Y voy a volver a mi motor. Y aquí ahora podemos arrastrarlo dentro de él hacia aquí, y debería cargar todo correctamente. Bien, ahora tienes los multiplicadores. Y sigamos yendo a las bibliotecas. Ábrela. Hagamos una nueva función aquí. Vamos a hacer clic en Anuncio, hacer clic en la función, llamarlo y como multiplicador por ejemplo, o multiplicador de daño de ascensión Puedes llamarlo como quieras. Ahora para este insumo, básicamente tenemos que saber en qué nivel estamos? ¿Cuántas Ascensiones hemos hecho hasta ahora? Cambiándolo en un entero, podemos llamarlo Nivel de Ascensión Ahora digamos una mesa igual que antes. Consigamos la tabla de datos de Ascensión. Ahora otra vez, no se puede conectar esto a esto porque primero hay que decir, dos cadenas. Tienes que convertirlo en una cadena, y luego puedes conectarlo aquí, y automáticamente lo convertirá en un nombre para ti. Se puede arrastrar desde aquí y decir regreso. Puedes devolver la información aquí arrastrando a esto Y ahora se puede decir información de Ascensión, por ejemplo, compilar. Y recuerda dar click en esta función y dar click en Pure. De nuevo, solo estamos obteniendo alguna información de aquí. Vamos a guardar todo. Y ahora podemos usarlo en las próximas lecciones. 116. 13.07 Añade el multiplicador de ascensión: Ahora lo que tenemos que hacer es que tenemos que multiplicar todo el daño que estamos haciendo en el juego con el multiplicador. Entonces estamos sacando la cantidad correcta de daños. Para ello, tenemos que saber donde hicimos todos los daños? Esto lo podemos encontrar fácilmente. Primero vayamos al jugador. Ahora, en el jugador aquí, por ejemplo, en el artículo de compra hicimos esto, TPS Ahora lo que puedes hacer es que siempre puedes hacer clic derecho aquí y hacer clic en eso es. Lo que yo haría es encontrar referencias para esto porque aquí tenemos el DPS Si podemos encontrar todas las referencias aquí en todos los planos, podemos encontrar dónde estamos haciendo DPS o donde estamos tomando esta información, haciendo clic derecho en Buscar referencias, y luego haciendo clic en este pequeño icono para encontrar las referencias dentro de todos los No sólo ésta. Bien, voy a poner esto en mi segundo monitor y básicamente solo estoy trabajando primero con este. Ahora lo que quiero hacer es multiplicar esta cantidad de DPS con el multiplicador de Ascensión, estoy recibiendo la cantidad correcta de daño en comparación con el multiplicador de la Voy a hacer click derecho y decir Obtener multiplicador de Daño de Ascensión Podemos tomar esto y decir Break ahora, podemos multiplicarlo con éste. A lo mejor debería haberlo llamado algo más corto, pero siempre es bueno tener un nombre descriptivo para saber lo que estás haciendo. Básicamente, cuando saquemos este DPS, queremos tomar esto y decir multiplicar Y sólo voy a desconectarlo de aquí y ponerlo aquí. Realmente no hace la diferencia, pero se ve mejor. Voy a multiplicar el DPS con el multiplicador, entonces voy a arrastrar esto ahora y enchufarlo aquí en su lugar Simplemente arrástralo hacia abajo, para que se vea mejor así. Ahora estamos multiplicando el multiplicador, así por ejemplo, si el multiplicador es tres, podemos decir tres veces el Y mostrará o aumentará el daño del cursor en la cantidad correcta. Ahora necesitamos la Novela esencial. Necesitamos saber en qué nivel estamos? Vamos a crear esta variable dentro del modo de juego. Si abres el modo de juego y dentro de aquí, vamos a crear una nueva variable llamada Nivel Ascensión Cambiemos éste en un entero. Compilar por ahora. Realmente no hemos hecho nada con este nivel de ascensión, pero en realidad no importa ahora mismo Volvamos al jugador y tomemos el modo de juego. Ahora si lo puedo encontrar aquí, nivel de modo juego. Y podemos simplemente tomar esto obtener nivel de Ascensión y seguir adelante y conectarlo con éste Básicamente estamos obteniendo el nivel de ascensión, que ahora mismo es cero, si el nivel de ascensión es cero, si vuelves a las tablas de datos en el nivel de cero, vas a conseguir que el multiplicador sea uno, lo que básicamente significa que el DPS se multiplica por uno, que aquí es solo el No va a cambiar nada. No obstante, si asciendes la primera vez, así tienes ascensión de nivel uno, vas a suplir todo el daño en tres, lo que significa que tienes 300% Ahora encontremos todos los lugares que tenemos DPS. Y sólo voy a copiar todo este código para que no tengas que volver a escribirlo. Copia todo este código. Ahora voy a llevar esto de nuevo aquí. Da click en el primero, es solo esto aquí. Haga clic en el segundo nueve. Info, aquí no hacemos ningún daño. Da click en el tercero, no hacemos ningún daño. Da click en el cuarto, aquí tenemos algunos daños. Esto está dentro de la actualización de la función. Total DPS actualización total DPS. Vamos a hacer esto, entonces vamos a tomar este DPS nuevamente multiplicado por el multiplicador de daño de ascensión y enchufarlo aquí Por cierto, ya puedo ver que aquí tenemos un error porque estamos actualizando la cantidad total de DPS obteniendo todos los artículos que hemos comprado Estamos obteniendo TPS para ellos, y luego los estamos agregando al DPS total Esto en realidad también está sucediendo con el ratón aquí. De hecho, está sumando esto al total de DPS. Lo que quiero hacer aquí para evitar el error es que quiero hacer clic en el ítem. Entonces voy a decir que no es igual. Y seguir adelante y seleccionar no igual a clic del ratón. No queremos agregar los clics del mouse DPS en el DPS total Un pequeño bicho que estaba aquí. Solo asegurémonos de que no añadamos eso. Y voy a hacer una sucursal. Adelante y conéctalo aquí. Y vuelve a conectarlo. Y ahora debería funcionar bien. Ahora, sólo voy a reestructurar las cosas otra vez. Bien, ahora esto está terminado y estamos multiplicando esto por el multiplicador de ascensión Sigamos al siguiente. Si solo vuelvo y encuentro mis referencias de antes y hago clic en la siguiente, aquí también estamos haciendo DPS Esto es actualizar el ToolTipi. Otra vez. Pégalo en. Adelante, multiplica esto con el multiplicador de Ascensión, y vuelve a conectarlo aquí. Ahora nos estamos multiplicando correctamente . Compilar Y tenemos un bug aquí. Dice, no tenemos la referencia del modo de juego, y en realidad no lo tenemos. Sigamos adelante y consigamos la referencia de Gamode. Ahora, antes de hacer todo esto, voy a decir obtener modo de juego y luego digamos obtener referencia del modo de juego. Y adelante y conecta esto. Esto, voy a golpear desde aquí y conectarlo. Ahora también puedes volver a hacer clic derecho y promoverlo a nuestra variable si lo deseas. Hagámoslo realmente para que sea un poco más limpio. Conéctate, puedes hacerlo en ambos sentidos. O simplemente conéctalo directamente o ahora toma esta variable de modo de juego y conéctalo aquí abajo. Eso es lo mismo. Bien, vamos a compilar ahora también. Asegurémonos de que el daño del cursor se muestre correctamente. Y se mostrará correctamente porque ya estamos multiplicando aquí en el jugador cada vez que hicimos el mayor daño del cursor dentro del Aquí, cada vez que compramos un artículo ya lo multiplicamos por tres por ejemplo, y lo enchufamos en el daño del cursor. Este daño del cursor debe ser correcto. Este daño aquí ya se multiplica ahora por el multiplicador de adhesión. Entonces esto también es correcto. Ahora volvamos a repasar a las referencias . Haga clic en el siguiente. Aquí no hay DPS. Haga clic en el siguiente. Aquí tampoco hay DPS. Ahora bien, todo debería estar funcionando bien. Ahora, solo para asegurarse de que el daño de ascensión se muestre correctamente Ahora volvamos al modo de juego aquí. Cada vez que reiniciamos el juego, tomemos este nivel de ascensión y digamos más, más Vamos a agregar uno al nivel de Ascensión cada vez que ascendemos Entonces estamos recibiendo la cantidad correcta de daño en esto. Ahora sigamos adelante y probemos esto. Si hago clic en Play, y compro uno de cada aquí, voy a comprarlo el último, y voy a dar click en Ascend Este no se muestra realmente correctamente, Esto es solo un texto estático. Pero hagamos clic en cancelar y veamos el daño aquí para ver si realmente se muestra correctamente. Yo, cada ratón lo está consiguiendo da 25 DPS y cada pluma ligera da cinco DPS Entonces esto debería mostrar 15. Por ejemplo, si hago clic en Ascend, y da click en Ascend Ahora esto está mostrando 15. Esto está mostrando 75, lo cual es todo correcto. Entonces ahora tengo el triple de daños. Déjame solo tratar de jugar, y déjame intentar ascender de nuevo. Bien, así que ahora voy a comprar el último artículo aquí. Haga clic en el último elemento. Puedo volver a ver esto. Estoy dando click en Ascend Y luego ascender una vez más. Y ahora el daño de la pluma ligera es 35, lo cual es correcto, y 175, porque ahora el multiplicador es siete, todo está funcionando correctamente porque siete por cinco es igual a 35, lo cual es correcto. Y ahora tenemos la cantidad correcta de daños. Bien, ahora esto está funcionando. Y también sólo para asegurarnos de que estamos optimizados, volvamos a la comprobación de los criterios de ascensión cumplidos Siempre que creo bucles, siempre presto atención a si realmente estoy ejecutando este bucle en tiempos necesarios. Por ejemplo, aquí estamos ejecutando el bucle que es correcto. No obstante, ¿ realmente necesitas correr este bucle siempre que se cumplan los criterios de ascensión Porque ahora sabes que se ha cumplido con los criterios de ascensión. Realmente no necesitas volver a ejecutar este bucle porque sabes que se cumple. Toma aquí este lingote, criterios de ascensión cumplidos al inicio del código Nosotros sólo queremos ejecutar esto. Los criterios de ascensión cumplieron con esta función aquí. Queremos ejecutarlo siempre que este sea falso. Arrastremos de esto y digamos lingotes, ascensión no es cierta, que significa que es falsa. Esto es falso. Queremos seguir adelante y verificar si se ha cumplido con los criterios. Sin embargo, si esto se vuelve cierto, no vamos a correr porque básicamente estamos obteniendo falsos y no estamos ejecutando el código. No queremos ejecutar todo este código. El criterio de ascensión ya se ha cumplido porque es innecesario Ya cumplimos con ese criterio. Bien, recuerda que tenemos que hacer que esto sea falso en algún momento porque de lo contrario la próxima vez que subas esto va a ser cierto por defecto porque lo pones en verdadero aquí abajo y nunca más lo pones a fallas Volvamos al juego de reinicio después de esto. Recuerda tomar los criterios de ascensión cumplidos y establecerlo falso cada vez que reinicies el nivel o reinicies el juego aquí Adelante, guarda todo y pasemos al siguiente. 117. 13.08 Visualización del multiplicador de ascensión: Bien, en esta etapa final tenemos que mostrar la cantidad correcta de daño que se multiplica. Entonces, si voy a la UI aquí en el pop up de ascensión, básicamente necesitamos mostrar la cantidad correcta aquí Ahora solo voy a escribir un número falso, así que en realidad podemos ver que lo estamos cambiando dinámicamente. Entonces sólo voy a escribir 00 por ahora aquí. Pasemos ahora a la gráfica y básicamente necesitamos cambiar este texto. Ahora se llama temporizador redondo de texto, y en realidad voy a cambiar a texto Ascensión en su lugar, así que tiene más sentido. Y vamos a compilar. Y ahora podemos configurar este texto siempre que este pop up se abra. Cada vez que hago clic en el botón Ascent aparece, y queremos actualizarlo de inmediato Podemos hacerlo dentro del constructo del evento, que se juega cada vez que se abre este pop up. Hagámoslo aquí. Lo que queremos hacer es que queremos establecer el texto. Tomemos este texto y digamos de nuevo texto establecido. Tenemos que usar un formato de texto porque estamos cambiando las cosas dinámicamente. Nuevamente, dirija desde aquí y diga formatear texto. Salga y selecciónelo. Se puede ver que estamos usando los mismos nodos una y otra vez. Si solo sigues practicando, recordarás todos los nodos y básicamente sabrás qué hacer cada vez que tengas que crear una nueva mecánica tú mismo. Volvamos al diseñador. Sólo voy a copiar todo esto. Voy a pegarlo aquí. Dirá que reiniciarás el progreso, pero ahora necesitamos estos corchetes aquí en su lugar. Y decir daño por ciento, por ciento así, luego más daño. Va a decir que reiniciarás el juego, pero con, por ejemplo, un 300% más de daño. Intentemos hacerlo. Vamos a conectar éste primero. Ahora lo que necesitamos usar es igual que antes, necesitamos hacer clic derecho y decir obtener Multiplicador de Ascensión Porque aquí es básicamente de donde estamos obteniendo la información. Vamos a romper ahora otra vez para el nivel Ascensión, necesitamos el modo de juego para tener esta información Vamos a Drake todo aquí. Digamos que consigue el modo de juego. Y luego golpeemos desde aquí y digamos obtener referencia del modo de juego. Salimos a conectarlo. Ahora aquí para el modo de juego, necesitamos el nivel Ascensión Adelante y consigue el nivel de Ascensión, y podrás conectarlo aquí ¿Cómo obtenemos el porcentaje? Ahora estamos obteniendo el nivel de Ascensión. Lo que tenemos que hacer es que tenemos que obtener el multiplicador después de reiniciar el juego. Porque básicamente lo que estás haciendo aquí es cada vez que abres este pop up y solo estás obteniendo este nivel de ascensión, que es cero ahora mismo, porque comienzas en el nivel de ascensión cero, va a decir uno, básicamente al 100% Ahora necesitamos dividir el multiplicador que está después, si solo abro la tabla de datos para que sea más comprensible lo que tenemos que hacer es que tenemos que dividir este número que viene después cada vez que ascendemos lo que el número está aquí dividido por el actual 13/1 Y siempre puedes simplemente arrastrar esto a la vista y decir 3/1 que es tres veces 100, eso es 300% Ahora si solo lo intentas con el otro, si lo intentas con el siete, digamos que ascendimos una vez y estoy en el nivel uno y necesito mostrar cuánto porcentaje de daño vas a aumentar cuando vayas al nivel dos. Ahora vamos a decir 7/3 veces 100. Eso equivale a 233% más de daño de aquí a aquí, lo que tiene total sentido. Hagámoslo. Lo que tenemos que hacer es tomar este nivel de ascensión, agregarle uno, porque necesitamos obtener lo que es el siguiente multiplicador de nivel de ascensión Ahora cuando tenemos esta información, por ejemplo, es siete dividida, por ejemplo, 7/3 que es la actual , la actual Básicamente necesitamos copiar todo esto y tenemos que eliminar este más uno y simplemente salir y conectarlo. Básicamente estamos diciendo, ¿cuál es el siguiente daño multiplicador? Estamos dividiendo esto por el actual. Entonces esto necesita ser convertido en porcentaje. Ahora puedes hacerlo de dos maneras. O puedes tomar esto y decir como porcentaje y puedes salir y seleccionarlo y conectarlo aquí. Ahora bien, no me gusta este método porque te va a mostrar los decimales. Por ejemplo, si aquí es 7/3 y decimos multiplicado por 100, va a decir 233.33 no me gustan flotadores ni los decimales de los que quiero que quede sin En cambio sólo voy a decir multiplicado por 100 así. Entonces puedes decir piso y puedes leer al respecto, si sostienes el mouse sobre él , dice -1.6 se convierte en -2.1 0.6 se convierte en uno, o puedes usar el llamado round Y ésta es básicamente lo contrario. 1.6 se convierte en dos, y así sucesivamente. Sólo voy a decir palabra. Básicamente va a eliminar los decimales y luego te va a mostrar esto. Ahora bien, esto debería funcionar bien. Ahora si lo conecto aquí y va a configurar el texto cada vez que abro este pop up y pueda compilar. Y veamos si funciona ahora si compro cada uno de esos artículos como antes, y luego puedo dar click en As. Ahora va a decir vamos a reiniciar el avance pero con 300 daños más. Ahora necesitamos el porcentaje, obviamente, el signo. Así que volvamos y solo arreglemos esto rápidamente. Si solo hago clic aquí y pongo un signo de porcentaje, eso debería funcionar, simplemente bien compilar. Bien, así que ahora voy a comprar el último y voy a hacer click en As. Y ahora me va a mostrar 300% lo cual es correcto. Ahora voy a dar click en Ascend, y voy a volver a jugar el juego y ver si todo está funcionando ahora mismo Voy a comprar el último artículo una vez más y voy a ascender por segunda vez Y ahora va a decir que reiniciarás la parte de progreso con 233% más de daño, adelante y ascenderás Y ahora se puede ver que todo se multiplica simplemente correctamente, bien. Entonces eso fue todo. Por ahora, todo está funcionando correctamente. Y ahora podemos continuar a la siguiente sección donde estamos ultimando el juego Y podemos seguir adelante y limpiar todo y podemos empaquetar el juego. Así que sigamos adelante y saltemos a la siguiente lección. 118. 14.01 Limpieza del proyecto: Bien, así que ahora hemos terminado con el juego y ahora tienes que limpiar el proyecto. Ahora bien, lo que suelo hacer es que si tengo un proyecto más grande, lo limpio al menos una vez a la semana. Entonces tal vez todos los viernes, todos los sábados, no lo sé. Por lo general, no lo limpio todos los días porque el código cambia constantemente. Entonces a veces se limpia algo, pero hay que cambiarlo al día siguiente. No tiene ningún sentido porque hay que volver a limpiarlo de nuevo así que es demasiado trabajo. Normalmente lo estoy limpiando una vez la semana o dos veces por semana como máximo. Entonces vayamos, por ejemplo, al plano. Yo sólo voy aquí en esta lección. El propósito es darte consejos sobre cómo limpiar el proyecto. Y también voy a limpiar este proyecto y dártelo como proyecto final. Por ejemplo, si iniciamos el mando de reproducción. Entonces, si abres el controlador de reproducción aquí y abres el gráfico de eventos y ves que está un poco desordenado Lo que suelo hacer es, por ejemplo, aquí arriba, puedes seleccionar todo el evento, Comenzar, Jugar aquí, y dar click en haciendo click en C, Tú creas un comentario y yo puedo, por ejemplo, escribir comenzar, Jugar. Sé que es Begin. Juega. Siempre que me aleje, también puedo hacer clic en este comentario, y puedo dar clic en la burbuja del espectáculo. Cuando se hace zoom, puedo ver esto cada vez que me alejan. Sé que esta es la jugada de inicio, así que no tengo que acercarme constantemente para ver de qué se trata. También puedes hacer click sobre él y cambiar el color del comentario. Puedes cambiarlo a lo que quieras. Puedes cambiar el color aquí, cambiar el alfa, y así sucesivamente. Haga clic en Aceptar. Ahora también puedes guardar este color haciendo clic y arrastrando esto aquí arriba Al hacer clic bien. La próxima vez que crees un comentario. Por ejemplo, este reproductor inicializado, puede hacer clic en C. Por ejemplo, puede escribir Inicializar Puedes dar click en Mostrar Burbuja y Zoom. Por ejemplo, puedes dar click sobre este color de comentario. Y ahora puedes hacer clic en el color guardado aquí arriba. Y da clic en bien. De hecho voy a hacer esto a lo largo este proyecto antes de entregártelo. Lo segundo que puedes hacer es que también puedes dar click sobre estas variables. Y puedes darles aquí una categoría. Por ejemplo, puedo decir widgets, y puedo presionar Enter. Y ahora puedes ver que está en una categoría de widgets. Si hago clic en el siguiente widget aquí abajo, puedo hacer clic aquí y puedo hacer clic en los widgets. Y básicamente puedo hacer eso por todos ellos. Todos los widgets están juntos dentro de esta categoría. Y se puede ver que puedo minimizarlo. Ahora están dentro de aquí. Así también es como puedes limpiar todas las variables que tienes. Adelante, compile y guarde todo ahora. Básicamente se puede hacer eso en cada plano. Por ejemplo, ir al modo de juego. En el modo de juego, tal vez pueda juntar todos estos puntos de generación Entonces puedo escribir una categoría llamada puntos de generación, por ejemplo Y básicamente puedo arrastrarlos hasta aquí. Sólo tienes que seguir adelante y hacer eso. Adelante y limpia tu proyecto. Crear bienes comunes. Ahora la tercera cosa que suelo hacer, de nuevo, seguir adelante y crear redireccionamientos Como ya has aprendido, haz doble clic. Crea algunas notas de redirección e intenta limpiar tu proyecto lo mejor posible Lo que suelo hacer también es reorganizar todos los eventos que he creado Por ejemplo, estos son los cortes de artículos de tienda, este es el artículo de generación Por ejemplo, puedes seguir adelante y tomar esto y pegarlo aquí al lado de esto y tal vez comentar esto. También puedes volver aquí y ver si están en el orden correcto. Por ejemplo, si quieres que esto esté aquí abajo en su lugar, y así sucesivamente. Así que sólo tienes que seguir adelante y tratar organizarlo lo mejor posible. Si hay algunas cosas que quieres convertir en una función en lugar de en un evento, también puedes hacerlo. Por ejemplo, digamos este juego de reinicio. Si quieres hacerlo como una función, vamos a seguir adelante y convertirlo en una función. Por lo general, para las funciones no se pueden convertir cosas en una función si son eventos cronometrados Por ejemplo, si tengo un retraso. Puedes ver este icono aquí significa un evento cronometrado, fy rod. Haga clic en esto y diga colapsar para funcionar. Me va a dar un error porque no se pueden convertir funciones en funciones. Pelea, haz clic y di línea de tiempo también y agrega una línea de tiempo. Este también es un tiempo uno. No puedo hacer clic derecho y colapsar para funcionar, Esto me dará un error. Puedo ver esto mirando el icono en la parte superior y no tengo nada de tiempo. Básicamente puedo cambiar esto en una función. Normalmente lo hago a veces porque si creas demasiados eventos en un gráfico de eventos, realidad empezará a hacerlo. Si tienes un juego lo suficientemente grande, comenzará hasta aquí cada vez que entres en este plano Ahora puedes convertir estos eventos en funciones o puedes hacer nuevos gráficos de eventos. Si haces clic aquí arriba en el plus, haces un nuevo gráfico de eventos. Por ejemplo, lo hemos hecho en el curso de disparos en primera persona. Por ejemplo, a esto se le puede llamar ascensión. Y puedes tener todo el código de ascensión dentro de aquí Si es mucho código, lo que básicamente puedes hacer es que puedes copiar todo esto básicamente controlar x para borrarlo y puedes ir a la siguiente gráfica par. Puedes clicar control V. Ya lo tienes dentro de esta gráfica par. No tiene que verlo aquí en el normal, pero lo tiene aquí abajo. En cambio, solo vamos a hacer clic en control Z porque en realidad no tenemos mucho código aquí. Voy a eliminar esta gráfica par si quieres convertir las cosas en una función. También puedes hacerlo volviendo al gráfico de eventos aquí. Entonces lo que haces o lo que normalmente hago es que puedo seleccionar todos los nodos aquí sin el evento. Puedo escribir clic contraer a una función de nuevo. Por lo general, para empezar lo llamo. Si lo acabo de arrastrar hacia aquí, lo llamo reiniciar juego. Después escribo click en este evento para ver dónde lo he usado. Encuentra referencias y da clic en el icono, todos los lugares en los que lo he usado. Estas referencias son básicamente sólo ésta, no es lo que he usado. Al hacer clic en el siguiente, Reiniciar juego. Aquí abajo puedo arrastrar desde este modo de juego ahora y decir Reiniciar juego. Ahora estoy usando mi función en lugar de mi evento. Puedo borrar esto y puedo conectarlo aquí. Acabo de compilar aquí, Vuelve al modo de juego, borra este evento ahora. Y borra esta función, porque ahora básicamente estás usando esta función para reiniciar el juego. También uso este método a veces para limpiar mi gráfico de eventos. Cuando puedo ver que algunos eventos realmente no necesariamente necesito, puedo cambiarlos en una función. Ahora bien, ¿cuál es la diferencia entre esta función que he creado y este evento? Absolutamente nada. solo limpia tu gráfico de eventos Ahora puedes ver que se pone más limpio. E incluso si quieres que este nivel desbloqueado sea una función, puedes hacerlo colapsándolo en una función Recuerda hacer click derecho en esto, encuentra referencias. Adelante y da clic en el pequeño icono. Dondequiera que hayas usado esto aquí en la base enemiga, puedes convertirlo en una función y puedes usar la versión de función en su lugar. Y luego puedes eliminar éste. Sólo tienes que seguir adelante y limpiar tu proyecto de esta manera. Sigue adelante y recuerda guardar tu proyecto siempre, y saltemos al siguiente, o empaquetamos el proyecto. 119. 14.02 Empaquetado del juego: Bien, así que ahora es el momento de empaquetar el proyecto. Así podemos enviársela a amigos y ellos pueden tratar de jugarlo o también a la familia. Entonces para hacer esto primero antes de empaquetar, me gustaría tener el depurador o el registro abierto Así que los registros de salida si usted acaba de hacer clic en Ventana y Registro de Salida y para mostrar esto. Entonces ahora podemos ver si tenemos algún error al exportarlo. Ahora antes de hacer esto, voy a hacer clic derecho aquí y borrar los registros. Empiezo de fresco, así puedo ver lo que está pasando ahora mismo. Al hacer clic en los filtros de aquí arriba, se pueden ver los mensajes de advertencias y errores. A veces solo elimino los mensajes así, solo puedo ver las advertencias y errores. Esto es básicamente lo importante, para que podamos arreglarlos. Pero por ahora, vamos a tomar el mensaje. Déjame minimizar esto un poco para que pueda ver realmente lo que estoy haciendo. Así mismo, dando clic aquí arriba en las plataformas, yendo a Windows, y luego seleccionando Envío. Ahora cuando seleccionas el envío, también tienes que ir básicamente aquí. Permítanme cerrar esto por ahora. Al ir a la Editar configuración del proyecto, aquí, tienes que ir a Packaging. Ahora dentro del empaque, lo importante es el Avanzado por aquí, dando clic en Avanzado. Entonces bajemos. Ahora en aquí en el Avanzado, tienes que incluir los mapas que quieres empaquetar aquí en la lista de mapas para incluir en una compilación de paquete, tienes que hacer clic en el más, luego tienes que dar click en los mapas. Al dar click sobre estos tres puntos, selecciona los mapas que tengas. Si justo ahora estamos dentro del proyecto aquí en la carpeta de contenido y creamos esta carpeta de mapas. Voy a seleccionar este mapa, Dungeon. Básicamente el mapa principal con el que estamos trabajando haciendo clic en Abrir. Ahora bien, si tienes alguna película, por ejemplo, cuando los juegos arrancan y tienen una pantalla de inicio, arrancan película, puedes seguir adelante e incluir eso también. Si tienes directorios que son extra en tu motor, no los usas, también puedes agregarlos aquí. Pero básicamente esto es todo lo que tenemos que hacer aquí. También para la configuración construida del proyecto, voy a cambiarlo a envío en su lugar. Y dice que si el proyecto tiene código o ejecuta un editor construido localmente, en realidad estoy a favor de la compilación solo voy a decir siempre construir. Siempre que lo hagamos en un envío aquí para la reconstrucción, voy a hacer clic en eso o distribución. Voy a marcar esto también. Y ahora ya estás listo para mejorarlo también. Continúe y haga clic en Configuración del proyecto. Una vez más, aquí arriba, busca FPS suaves, aquí, velocidad de fotogramas suave. Esto es muy importante marcar , porque si no haces esto, va a ejecutar tu juego al FPS más alto al que pueda correr la computadora del jugador. Lo hice con Farm Tail para empezar por error porque no conocía esta opción la corremos a, por ejemplo, 500 FPS. 600 FPS. Y realmente va a lastimar sus computadoras porque van a funcionar súper rápido y se puede escuchar los fans corriendo súper rápido. Al hacer clic en esto, no necesito tener más de 60 FPS en este juego. No es un juego de disparos ni nada. Y puedo tener tan bajo como 22 FPS si la computadora es súper lenta por parte del jugador. Pero básicamente, vamos a sacar al máximo el FPS a 62. También puedes llegar a 122 FPS si así lo deseas, pero sólo voy a dejar que sea a 62 PS. Ciérralo hacia abajo. Haga clic en Archivo, Guardar todo. Ahora puedes hacer clic en Plataformas, Contenido del paquete de Windows. Pero déjame abrirme otra vez. La salida de mi ventana se bloquea para que pueda ver lo que está pasando. Haga clic con el botón derecho para borrar las cerraduras antes de hacer esto. Ahora también lo que debes recordar hacer aquí también, haz clic en Filtrar y mostrar todo también. Puedo ver todos los mensajes. Yo también puedo ver todos esos . Simplemente todos ellos marcaron Siga adelante y haga clic en Plataformas, y luego haga clic en Windows. Y luego seguir adelante y empaquetar el contenido. Ahora he creado una carpeta aquí en mi escritorio llamada Paquetes. Simplemente básicamente, sigue adelante y crea una nueva carpeta en algún lugar tu computadora, realmente no importa. Y siga adelante y haga clic en Seleccionar carpeta, y va a empaquetar dentro de aquí. Ahora va a llevar algún tiempo. La primera vez que hace esto y lo, suele mostrar un par de errores porque nunca he empaquetado por primera vez sin ningún error. Porque hay algunos errores aleatorios que aparecen en algún momento. Bien, así que ahora puedo ver que estamos recibiendo un bicho aquí y dice Fallo de cocinero desconocido. Y solo dejas de empaquetar porque tenemos un error. Entonces da clic aquí arriba y da clic en los mensajes, y veamos qué es. Y dice estructura propiedad y dice Estructura desconocida. Ahora bien, este es un error conocido dentro del motor uneral y es un poco molesto No sé por qué sucede, pero básicamente dice que tienes una estructura desconocida. Realmente no tiene ningún sentido porque lo logramos y está funcionando y todo está bien. Pero solo presta atención a dónde está y está dentro de tu UI. Wb enemigo info. Si vas a tu interfaz de usuario, ve a la interfaz de usuario, abre la información del enemigo. Esto es básicamente lo que te está diciendo. Abre la información del enemigo, ve a Gráfica. Lo único que debes hacer por alguna razón es hacer clic en Archivo, Refrescar todas las Notas. Y entonces esto debería arreglarlo. Archivo refrescar todas las notas. Entonces el siguiente es el Cod de nivel B en la UI. Simplemente minimice esto, voy al nivel Bacalao aquí también. Archivo gráfico, refrescar todas las notas. Lo que suelo hacer también es refrescar todas las notas dentro de la biblioteca. Al abrirlo, haz clic en el primero, el archivo de información enemigo, actualiza todas las notas. El segundo actualiza todas las notas, la tercera solo para asegurarnos que no volvamos a recibir este error. Siempre que cocinemos y hagamos clic en Guardar todo, ahora debería funcionar. Al hacer clic en Plataformas nuevamente, en realidad, permítanme abrir primero el registro de salida P, hacer clic con el botón derecho, borrar el archivo de registro o plataformas, y luego empaquetar el proyecto una vez más aquí. Ahora dando click aquí arriba y mostrar todos los mensajes también solo para ver si tenemos alguna casilla ahora. Realmente no debería suceder. Por lo general solo sucede cuando dice Estructura desconocida, solo hay que refrescar todas las notas por alguna razón. No sé por qué sucede, pero es un poco molesto. Pero ahora se puede ver que todo se está cocinando y todo está funcionando bien. No tenemos errores. Solo toma un minuto aquí. Ahora, siempre puedes hacer click aquí arriba y eliminar los mensajes. Ahora el cocinero está completo, el paquete está completo. Lo que suelo hacer es eliminar los mensajes para ver si tengo algún error en mi juego. Y se puede ver que el proyecto está súper limpio. No tenemos ni una sola advertencia. No tenemos una sola era. El juego está funcionando a la perfección, y esto es lo que queremos. Ahora vamos a la carpeta Paquetes dentro de mi escritorio. Y dentro de aquí puedo abrir esta carpeta de Windows que ha creado, y ahora el juego está dentro de aquí. Intentemos ejecutar este juego fuera del motor. Como puedo ver, aquí tengo algunos errores, problemas que necesito arreglar. Pero como puedes ver, el juego está funcionando bien. Necesito volver a aplicar la música y así sucesivamente. Pero también puedo ver que el fondo está borroso. También puedo ver que este texto está demasiado cerca el uno del otro. Así que sigamos adelante y arreglemos esto y volvamos al cuatro Para cerrarlo, voy a eliminar esta carpeta por ahora. Ahora veamos cuál es el problema borroso. Ahora el problema borroso es si abres, por ejemplo, esta textura prisión mazmorra Bajemos aquí en el ajuste de textura. Vamos a hacer clic en Avanzado. Aquí abajo se ve algo llamado filtro nuclear. Es necesario cambiar este a más cercano en su lugar. Cuando la cambias a la más cercana, esto significa que no va a difuminar tu textura cada vez que la exporte o la empaques. En realidad tienes que hacer eso para todas las texturas. Ahora veamos cómo podemos hacer esto fácilmente. Ahora si hago clic en Activos, y hago clic aquí arriba , baja aquí, y aquí tenemos una textura, solo voy a darle click aquí. Al hacer esto, podemos ver todas las texturas que tenemos en el juego dentro de esta carpeta Assets. Vamos a tratar de hacer eso por todos ellos. Permítanme simplemente hacer clic en el primero, Shift, buscar en el último, hacer clic derecho y luego ir a Asset Action Edit Selection en Property Matrix. Sólo estamos tratando de hacer todo a la vez. Si vuelvo a hacer clic en la textura aquí arriba, y puedo ver este filtro, cámbielo a la más cercana, que es la configuración correcta que podemos guardar. Entonces veamos si los azulejos estaban incluidos aquí. Puedo ver que los azulejos están incluidos. Todo está bien. Todo está incluido aquí. Básicamente, todo debería funcionar bien. Bien, ahora esto está hecho. También tenemos un problema con el nombre. Vamos a arreglar eso también. Si solo hago clic aquí arriba y me quito esta textura para poder ver todo, una vez más, puedo dar click sobre el enemigo. Si vuelvo a los planos, abro los enemigos y la base enemiga Y hago clic en la viewport. Ahora dando clic en la barra de salud, solo necesito mover la barra de salud ligeramente por debajo, creo que si das click arriba aquí, da clic en Reproducir. Como juego independiente, deberías poder ver cómo se ve aquí sin intentar empaquetar el proyecto abierto aquí en mi segundo monitor y puedo ver cómo se ve. Ahora ya se puede ver que ya nada está borroso. No obstante, como puedes ver ahora el nivel y podemos moverlo ligeramente hacia abajo y la salud también. Vamos a cerrarlo. Haz clic en los widgets de Enemy Info. Voy a moverlo a -25 también para la barra de salud. Probemos -45 Y vamos a compilar y hacer clic en reproducir de nuevo. Ahora. Se ve mucho mejor cuando está pantalla completa y todo se ve jugable y todo se ve bien Si quieres También puedes hacer lo sin filtrar para la interfaz de usuario solo para asegurarte todo se vea bien y no borroso Siempre puedes volver a la interfaz de usuario. Si voy al contenido, abro mis imágenes, básicamente estos elementos aquí también. Si solo cambio a la derecha, clic derecho, seleccionando acción ácida, selección en matriz de propiedades, voy a textura y luego el filtro debería ser el más cercano también. Para esos, permítanme simplemente abrir las texturas aquí también. Este es el efecto hit. Solo para asegurarte que el efecto hit no sea borroso también, solo ábrelo y vuelve a bajar a Avanzado Cámbiala a la más cercana, ciérrala. Ahora también para los íconos. Haga clic derecho, establezca acciones, edite la textura de la matriz de propiedades y luego cámbiela a la más cercana, ciérrela a fuentes. En realidad no hace falta hacer nada aquí. Ahora para los botones. Nuevamente, edítalos y haz el filtro de textura al más cercano. Ahora eso se hace para todos ellos. Vamos a hacer clic en Guardar. Voy a poner el volumen de mi música al valor predeterminado, que es uno. Una vez más también voy a, en lugar de los planos y dentro de la base enemiga enemiga, voy a reactivar mi sonido para el año enemigo que desconecté Compilar Guardar todo. Ahora permítanme seguir adelante e intentar empaquetar el proyecto una vez más. Ahora que el proyecto ha sido empaquetado, permítanme seguir adelante y hacer clic en el clicker de Dungeon una vez más para asegurarme de que todo esté funcionando Y ya se puede ver que ya nada está borroso. Todo se ve bien, la interfaz de usuario se ve bien, Todo el sonido está funcionando. Puedo jugar básicamente solo reiniciando las monedas. Eso es algo que me perdí, pero en realidad no es un problema en estos momentos. Pero se puede ver que todo está funcionando y la lista está funcionando aquí, y la Ascensión está funcionando básicamente también Y puedo ver que da la cantidad correcta de daño y ahora tenemos un juego terminado. Bien, así que ahora ya terminamos con el proyecto. Y deberías estar muy orgulloso de lo que has hecho hasta ahora porque hemos pasado por mucho. Hemos hecho puntos de generación, hemos hecho daño a los enemigos, hemos hecho todos estos dos D poniéndolos juntos, la interfaz de usuario, codificando la interfaz de usuario y así sucesivamente Entonces has hecho mucho trabajo, y espero que hayas aprendido mucho de este curso. Y ojalá también fuera muy divertido aprender. Y si lo deseas, también puedes echar un vistazo a mis otros cursos. Tengo muchos cursos en profundidad y sigo creando nuevos cursos hasta el día de hoy. Así que muchas gracias por ver. Espero que te hayas divertido mucho. Sí me divertí mucho creando discursos. Y recuerda, si deseas obtener ayuda 2047, siempre puedes unirte a mi servidor de discurso Somos una comunidad a la que le encanta ayudar. Y también podemos hablar cosas en el desarrollo de juegos en general. O puedes mostrarme tu trabajo. Se lo puede mostrar a la comunidad. Comunidad realmente sana para estar cerca. Muchas gracias por inscribirte en este curso y espero que te diviertas mucho Y te veré en la siguiente.