Cómo hacer un juego de FPS – Unreal Engine 5 Multijugador (2024) | 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 FPS – Unreal Engine 5 Multijugador (2024)

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:21

    • 2.

      1.02 Descarga de Unreal Engine 5

      1:37

    • 3.

      1.03 Crea un nuevo proyecto

      2:21

    • 4.

      1.04 Unreal Engine 5 Descripción de la versión

      17:54

    • 5.

      2.01 Introducción al juego

      2:21

    • 6.

      2.02 Crea un nuevo mapa

      1:05

    • 7.

      2.03 Importación de conjuntos de entorno

      4:16

    • 8.

      2.04 Diseñar el entorno

      12:05

    • 9.

      2.05 Volumen de post proceso

      6:05

    • 10.

      2.06 Iluminación del medio ambiente

      23:46

    • 11.

      2.07 Consejos de optimización del entorno

      10:52

    • 12.

      3.01 Importación de los personajes

      2:56

    • 13.

      3.02 Clases de planos para padres e hijos

      4:53

    • 14.

      3.03 Cómo configurar el personaje

      8:31

    • 15.

      3.04 Modo de juego y controlador de jugadores

      4:58

    • 16.

      3.05 Contexto de mapeo de entrada

      5:14

    • 17.

      3.06 Adición del contexto de mapeo de entrada

      5:13

    • 18.

      3.07 Interfaz de Blueprint

      6:53

    • 19.

      3.08 Movimiento de jugadores

      7:07

    • 20.

      3.09 Importación de las animaciones de los jugadores

      3:27

    • 21.

      3.10 Creación de plataformas de IK

      6:58

    • 22.

      3.11 Crea un redirectivo de IK

      6:49

    • 23.

      3.12 Arreglar las manos

      5:40

    • 24.

      3.13 Retargeting de las animaciones

      4:37

    • 25.

      3.14 Introducción a los espacios Blend

      3:35

    • 26.

      3.15 Espacios de mezcla sin armas

      8:40

    • 27.

      3.16 Introducción a los planos de animación

      3:53

    • 28.

      3.17 Velocidad y dirección del movimiento

      7:47

    • 29.

      3.18 Entrada de agacharse para multijugador

      2:34

    • 30.

      3.19 Función de agacharse para multijugador

      11:54

    • 31.

      3.20 Proyecto de animación de agacharse

      7:30

    • 32.

      3.21 Replicación variable

      3:08

    • 33.

      3.22 Suavizado de animación

      2:46

    • 34.

      3.23 Paseo en multijugador

      6:00

    • 35.

      3.24 Plan de animación a pie

      4:46

    • 36.

      3.25 Salto multijugador

      4:59

    • 37.

      3.26 Plan de animación con saltos

      7:37

    • 38.

      3.27 Introducción a las enumeraciones

      2:47

    • 39.

      3.28 Cambio de variables de movimiento a grupos

      10:46

    • 40.

      3.29 Cambia las reglas de transición de animación

      6:08

    • 41.

      3.30 Arreglo del tamaño del jugador

      3:54

    • 42.

      3.31 Cómo establecer la velocidad de movimiento

      8:18

    • 43.

      4.01 Haz un desplazamiento del espacio de mezcla

      2:04

    • 44.

      4.02 Preparación de las animaciones de desplazamiento de objetivo

      4:56

    • 45.

      4.03 Adición de animación al desplazamiento de objetivo

      2:31

    • 46.

      4.04 Cálculo de la dirección del objetivo

      5:47

    • 47.

      4.05 Adición del desplazamiento de objetivo

      2:19

    • 48.

      4.06 Añadir la cámara del jugador a la cabeza

      6:27

    • 49.

      4.07 Ocultar al jugador como modelo de cabeza

      3:10

    • 50.

      4.08 Adición de una malla en tercera persona

      3:04

    • 51.

      4.09 Suavizado de cámara y FPS

      4:04

    • 52.

      5.01 Ajuste de la velocidad de movimiento

      2:38

    • 53.

      5.02 Ajuste de la velocidad de animación

      10:14

    • 54.

      5.03 Cómo arreglar el recorte de pared de la cámara

      5:50

    • 55.

      5.04 Arreglar el salto de cuclilla

      6:01

    • 56.

      5.05 Arreglando los errores de crujido que quedan

      1:07

    • 57.

      5.06 Preparación de los pasos SFX

      5:27

    • 58.

      5.07 Temporizador por evento

      6:51

    • 59.

      5.08 Replicación de multidifusión

      9:17

    • 60.

      5.09 Pasos en SFX

      13:03

    • 61.

      6.01 Colocación de los puntos de aparición

      5:53

    • 62.

      6.02 Almacenamiento de información de puntos de aparición

      8:07

    • 63.

      6.03 Importación de los Assets de interfaz de usuario

      4:21

    • 64.

      6.04 Importación de una fuente personalizada

      2:54

    • 65.

      6.05 Introducción a los planos de widgets

      5:26

    • 66.

      6.06 Visualización de la interfaz de usuario de selección de equipos

      12:32

    • 67.

      6.07 Tamaño de interfaz de usuario dinámica para todos los tamaños de pantalla

      5:13

    • 68.

      6.08 Diseño de la interfaz de usuario de selección de equipos

      21:24

    • 69.

      6.09 Efectos de sonido de Button

      3:06

    • 70.

      6.10 Cómo hacer que los actores aparezcan

      7:19

    • 71.

      6.11 Ubicación de aparición de jugadores

      5:32

    • 72.

      6.12 Interfaz de Blueprint en modo de juego

      2:15

    • 73.

      6.13 Termina la lógica de selección de equipos

      5:08

    • 74.

      6.14 Desove del jugador

      4:27

    • 75.

      6.15 Configuración del modo de entrada

      3:14

    • 76.

      6.16 Colocación de una cámara de espectador

      5:41

    • 77.

      7.01 Espacios de mezcla de pistola

      5:50

    • 78.

      7.02 Espacios de mezcla de rifles

      3:58

    • 79.

      7.03 Compensación de puntería de pistola

      2:23

    • 80.

      7.04 Remontes de puntería de rifle

      2:14

    • 81.

      7.05 Mezcla poses con Bool

      4:15

    • 82.

      7.06 Enum mezcla poses

      5:53

    • 83.

      7.07 Plan de animación de pistola

      3:05

    • 84.

      7.08 Plan de animación con rifle

      2:20

    • 85.

      7.09 Finalización del plan de animación

      6:38

    • 86.

      8.01 Importación de armas

      3:16

    • 87.

      8.02 Configuración del arma

      5:50

    • 88.

      8.03 Física habilitadora

      4:03

    • 89.

      8.04 Replicación de actores

      1:22

    • 90.

      8.05 Superposición de armas

      4:34

    • 91.

      8.06 Configuración del tipo de arma

      2:31

    • 92.

      8.07 Comprobando si el jugador tiene el arma

      4:09

    • 93.

      8.08 Saquea el arma

      11:17

    • 94.

      8.09 Crea el zócalo de arma

      10:00

    • 95.

      8.10 Crea los sockets restantes

      5:51

    • 96.

      8.11 Cómo unir el arma a la mano

      14:05

    • 97.

      8.12 Coloca armas en la espalda

      10:58

    • 98.

      8.13 Superposición de dos armas a la vez

      13:33

    • 99.

      8.14 Crea la estructura de armas

      5:08

    • 100.

      8.15 Crea la tabla de datos de armas

      9:10

    • 101.

      8.16 Uso de la biblioteca de funciones

      8:03

    • 102.

      8.17 Añade el nombre del arma

      3:08

    • 103.

      8.18 Reemplazo de la variable de tipo de arma

      5:03

    • 104.

      8.19 Acción de introducción de armas

      2:02

    • 105.

      8.20 Lógica de armas sueltas

      4:48

    • 106.

      8.21 Notificar a un representante de armas

      9:51

    • 107.

      8.22 Restablecimiento de la función de notificación de representante

      6:18

    • 108.

      8.23 Interacción con armas Boolean

      5:25

    • 109.

      8.24 Eliminar la interacción de dejar caer al jugador

      7:07

    • 110.

      8.25 Mejora de la interacción con el jugador de armas

      8:03

    • 111.

      8.26 Arma de saqueo con tecla de teclado

      16:58

    • 112.

      8.27 Configuración correcta del tipo de elemento equipado

      2:28

    • 113.

      8.28 Solucionar el error de saqueo de "No se accedió a nadie"

      5:18

    • 114.

      8.29 Limpiando el código

      13:04

    • 115.

      8.30 Solucionar un problema de reproducción pequeña

      7:22

    • 116.

      9.01 Acciones de entrada de cambio de armas

      2:11

    • 117.

      9.02 Lógica de cambio de armas

      7:47

    • 118.

      9.03 Equipa y Unequip con arma RepNotify

      4:47

    • 119.

      9.04 Equipamiento de arma secundaria

      2:30

    • 120.

      9.05 Crea montajes de animación

      2:04

    • 121.

      9.06 Ajusta el plan de animación

      4:37

    • 122.

      9.07 Equipar animación con multidifusión

      5:59

    • 123.

      9.08 Configuración del widget de visualización de armas

      2:41

    • 124.

      9.09 Diseño de la interfaz de usuario de armas

      6:09

    • 125.

      9.10 Visualización de la interfaz de usuario de armas

      4:05

    • 126.

      9.11 Codificación de la funcionalidad de visualización de armas

      6:02

    • 127.

      9.12 Adición de miniaturas de armas a la estructura

      8:26

    • 128.

      9.13 Opacidad de la interfaz de usuario de armas

      5:21

    • 129.

      9.14 Adición de efectos de sonido de Equip

      8:15

    • 130.

      10.01 Creación de la interfaz de usuario de punto de mira

      3:09

    • 131.

      10.02 Mostrando la mira

      2:52

    • 132.

      10.03 Añadir propiedades de armas a la estructura

      1:11

    • 133.

      10.04 Dispara con armas, acción y estructura

      8:41

    • 134.

      10.05 Crea el temporizador de disparos de arma

      18:21

    • 135.

      10.06 Trazo de líneas por canal

      13:21

    • 136.

      10.07 Ajuste de la configuración de colisión del jugador

      8:31

    • 137.

      10.08 Creación de los sockets de destello de bozal

      2:35

    • 138.

      10.09 Grabación de VFX y SFX

      6:26

    • 139.

      10.10 Prevención de disparos durante el equipamiento de Anim

      5:56

    • 140.

      10.11 Creación de la interfaz de usuario de munición

      6:04

    • 141.

      10.12 Configuración de la cantidad inicial de munición para armas

      6:37

    • 142.

      10.13 Crea la lógica de interfaz de usuario de munición

      4:52

    • 143.

      10.14 Actualizar la interfaz de usuario de munición

      5:02

    • 144.

      10.15 Ocultar la interfaz de usuario de munición

      6:03

    • 145.

      10.16 Cálculo de munición

      6:20

    • 146.

      10.17 Recarga la animación de armas

      5:20

    • 147.

      10.18 Recarga la funcionalidad de un arma

      11:27

    • 148.

      10.19 Condiciones de rodaje

      7:31

    • 149.

      10.20 Recarga un arma con tecla de teclado

      5:48

    • 150.

      10.21 Recarga un arma en el cambio de armas

      3:31

    • 151.

      10.22 Adición de tiro con pistola

      3:06

    • 152.

      10.23 Detener el disparo de efectos visuales en el cambio de armas

      7:13

    • 153.

      Animación de rodaje

      13:52

    • 154.

      SFX sin munición

      7:45

    • 155.

      10.26 Bullet Impact VFX y SFX

      22:02

    • 156.

      10.27 Propagación de balas

      5:39

    • 157.

      10.28 Colocación de las armas correctamente

      5:14

    • 158.

      11.01 Diseño de la interfaz de usuario de salud y armadura

      12:01

    • 159.

      11.02 Aplicación de daños

      9:33

    • 160.

      Estructura de información para el jugador

      1:46

    • 161.

      Tabla de datos de información del jugador

      5:08

    • 162.

      11.05 Cómo establecer la salud y armadura base

      4:45

    • 163.

      11.06 Funcionalidad de interfaz de usuario de salud y armadura

      5:08

    • 164.

      11.07 Actualización de la interfaz de usuario de salud y armadura

      4:09

    • 165.

      11.08 Inflige daños a la salud

      4:23

    • 166.

      11.09 Inflige daño a la armadura

      5:13

    • 167.

      11.10 Prevención del saqueo de varios rifles

      5:43

    • 168.

      12.01 Muerte

      8:35

    • 169.

      12.02 Deja caer el arma cuando estés muerto

      23:20

    • 170.

      12.03 Reaparición

      9:03

    • 171.

      12.04 No está muerto RepNotify

      9:06

    • 172.

      12.05 Restablecimiento de la salud en Respawn

      1:40

    • 173.

      12.06 Prevención de daños al equipo

      2:41

    • 174.

      13.01 Diseño de la interfaz de usuario de partitura

      6:18

    • 175.

      13.02 Diseñar la interfaz de usuario de Win

      2:18

    • 176.

      Funcionalidad de interfaz de usuario de puntuación y victoria en equipo

      5:38

    • 177.

      13.04 Seguimiento de jugadores vivos

      7:07

    • 178.

      13.05 Seguimiento de jugadores muertos

      3:09

    • 179.

      13.06 Seguimiento de todos los jugadores generados

      1:40

    • 180.

      13.07 Comprobación de la cantidad de jugadores vivos

      6:03

    • 181.

      13.08 Anuncio de victorias del equipo

      13:17

    • 182.

      13.09 Añadir la puntuación del equipo

      7:34

    • 183.

      13.10 Reaparición de los jugadores

      4:28

    • 184.

      14.01 Impulso en el lanzamiento de armas

      4:46

    • 185.

      14.02 Mejora del peso del arma

      3:12

    • 186.

      14.03 Eliminación de recargar SFX en el lanzamiento de armas

      5:46

    • 187.

      14.04 Agregando anuncios de equipo Win SFX

      5:47

    • 188.

      14.05 Adición de indicador de golpe de enemigo

      8:28

    • 189.

      14.06 Añadiendo SFX de ambiente

      2:10

    • 190.

      14.07 Eliminación de Mag cuando recargas

      9:21

    • 191.

      14.08 Arreglo de error de recarga en el cambio de armas

      3:28

    • 192.

      14.09 ¿Qué pasa ahora

      2:04

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

307

Estudiantes

--

Proyecto

Acerca de esta clase

Cómo hacer un juego FPS - Empieza con Unreal Engine 5 Multiplayer.

Este curso completo de Unreal Engine te enseñará cómo hacer un juego FPS en Unreal Engine 5 Multiplayer desde cero. Inspirado en el juego de clásico Counter-Strike, aprenderás todas las mecánicas básicas y avanzadas necesarias para saber cómo hacer un shooter en primera persona. Todo esto sin escribir una sola línea de código.

No necesitas experiencia previa en desarrollo de juegos para tomar este curso; lo haremos 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 hacer un juego de fps en UE5.

El objetivo principal de este curso es que tengas confianza en cómo hacer un juego de fps. Te permitirá ganar dinero y trabajar como desarrollador de juegos independiente desde casa. De hecho, he sido desarrollador de juegos UE5 de tiempo completo durante un par de años, creando juegos, diseñando cursos y vendiendo activos a través del mercado de Unreal Engine.

¡Empieza hoy mismo tu entrenamiento de disparos en primera persona aprendiendo cómo hacer un juego de fps!

¿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+ de 5 estrellas.
  • Actualmente estoy desarrollando Farmtale 2 en solitario de principio a fin.
  • También trabajo como freelancer en varios proyectos de juegos, especializándome en programación, iluminación, optimización de juegos y más.

Estoy muy interesado en el desarrollo de juegos y lo he convertido en mi trabajo de tiempo completo. Me encantaría enseñarte todo lo que hay que hacer 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.

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 propio juego en línea de principio a fin sin escribir una sola línea de código. Eso significa que puedes crear fácilmente tu propio juego en línea, 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 de Unreal Engine y avanzaremos lentamente hacia el desarrollo de mecánicas de juego más complejas. Al hacerlo, aprenderás a desarrollar juegos de principio a fin.

Puedes saltar a este curso como principiante, ya que aprenderás paso a paso cómo hacer un juego de fps desde cero.

Unreal Engine 5 multijugador.

Empezar a desarrollar juegos en línea con Unreal Engine 5 es muy fácil. Es similar al modelo de Unreal Engine para un jugador, pero con un paso adicional añadido. Mientras aprendes a hacer un juego de fps, aprenderás todo lo que necesitas saber sobre el multijugador de Unreal Engine 5. No necesitas experiencia previa, ya que te enseñaré cómo crear redes básicas y avanzadas en Unreal Engine.

Cómo hacer un videojuego desde cero.

Aunque este curso te enseña a hacer un juego de fps, siempre hay otros objetivos de aprendizaje importantes en mis cursos. Al ver las lecciones en video, es esencial prestar atención a las herramientas utilizadas durante el desarrollo de juegos. Aprenderás a desarrollar juegos a partir de un proyecto de Unreal Engine vacío. Independientemente del género, el proceso de desarrollo de juegos en Unreal Engine 5 sigue siendo el mismo.

Cómo hacer un shooter en primera persona - Aprende todo.

En este curso de Unreal Engine, obtendrás un conocimiento completo de cómo hacer un juego de fps. En primer lugar, el curso comienza con un proyecto vacío y te presenta lecciones de video simples y fáciles de seguir en resolución 4K. En segundo lugar, aprenderás a desarrollar el entorno de juego, incluido el diseño de niveles, la iluminación y la optimización del entorno para un rendimiento óptimo del juego. Luego, pasaremos a los conceptos básicos del multijugador en Unreal Engine 5 y aprenderemos a medida que desarrollamos nuestro juego. Algunos de los conceptos clave en este curso de Unreal Engine:

  • Aprende cómo crear tu propio personaje en Unreal Engine 5.
  • Aprende Unreal Engine con entrada mejorada de movimiento y animación.
  • Aprende a diseñar niveles, desde materiales hasta iluminación y optimización de juegos.
  • Aprende a recoger armas o cualquier otro objeto del suelo.
  • Aprende a equipar, soltar, disparar y recargar pistolas y rifles.
  • Crea un sistema de inventario con funcionalidad de arrastrar y soltar.
  • Inflige daño a otros jugadores con salud y armadura.
  • Crea una funcionalidad de selección de equipos con condiciones de victoria.
  • Aprende cómo hacer que aparezcan y reaparezcan jugadores.
  • Diseñar la interfaz de usuario del juego (UI).
  • Añade efectos visuales y de sonido (VFX y SFX).
  • Y mucho más.

Este curso también incluye el proyecto de juego terminado para que lo inspecciones. Al final de este curso, habrás adquirido las habilidades necesarias para crear tu propio juego en línea.

Toma este curso y certificate.

Al completar el curso sobre cómo hacer un juego FPS, 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.

Cómo continuar cuando completes "Cómo hacer un juego FPS".

Cómo hacer un juego de FPS" proporciona las habilidades y conocimientos necesarios para avanzar hacia temas más desafiantes. Puedes ampliar tu entrenamiento de disparos en primera persona añadiendo un sistema de inventario para convertirlo en un shooter RPG.

Crear juegos 2D dentro de este software de desarrollo de juegos es sorprendentemente fácil y conveniente. Supongamos que deseas aprender a hacer un juego 2D en multijugador con las funciones 2D de Unreal Engine. En ese caso, puedes inscribirte en un curso emocionante sobre cómo hacer un juego de plataformas 2D en multijugador. También puedes entrar en juegos 2D para un solo jugador en Unreal Engine 5 al ver cómo hacer un juego clicker.

Ú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, escribiendo en la sección de preguntas y respuestas de cualquiera de los cursos. Siempre estamos aquí para ayudarte cuando lo necesites.

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

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 desarrollar un juego de disparos en primera persona multijugador usando planos en Unreal engine Five recreando un juego similar al icónico juego Counter Strike Este curso contiene todo lo que necesitas saber para comenzar con desarrollo de juegos de disparos en primera persona multijugador en Unreal Engine Five Incluyendo cómo agregar movimiento FPS multijugador. Cómo hacer una pantalla de selección de equipo. Cómo recoger y soltar armas. Cómo hacer un inventario FPS. Cómo equipar una pistola y un rifle. Cómo disparar usando diferentes tipos de armas. Cómo calcular y mostrar la cantidad correcta de balas. Cómo recargar un arma. Cómo agregar salud y armadura. Cómo inflige daño a otros jugadores. Cómo recompensar los puntos redondos para el equipo ganador. Cómo responder jugadores. Cómo actualizar los valores de la interfaz de usuario del juego correctos en multijugador. Y por último, cómo agregar efectos visuales y efectos de sonido en multijugador. 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 shooter multijugador en primera persona desde cero en hon real engine five 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 Unreal Engine 5: Para descargar Unreal Engine Five, primero tienes que ir a Epic games.com Y dentro de aquí, hay un botón azul aquí arriba en la parte superior derecha Tienes que hacer click en él y se descargará el lanzador de Epic Games. Puedes ver aquí, ya se está instalando. No obstante, ya lo he instalado, así que solo sigue adelante e instálalo cuando esto termine. Y aquí he abierto el lanzador de Epic Games y te pedirá que inicies sesión. Ya tengo una cuenta de Epic Games, así que voy a iniciar sesión con mi cuenta de Epic Games. Si no tienes uno, puedes seguir adelante e inscribirte aquí. Es gratis, o puedes iniciar sesión con todos los demás métodos. No obstante, voy a iniciar sesión con mi cuenta de Epic Games. Una vez que hayas iniciado sesión en el lanzador, estarás dentro de esta página. Adelante y da click en Honoral Engine aquí a la izquierda. Siga adelante y haga clic en la pestaña de la biblioteca aquí arriba, y verá las versiones del motor. Esto es Honoral Engine, y si no ves nada, podrías tener una caja gris aquí si es la primera vez que estás dentro de aquí Pero si no obtienes una caja gris, puedes hacer clic en este botón más aquí arriba y obtendrás uno. Después puedes seleccionar el número y seleccionar qué versión de Unreal Engine quieres instalar Ahora puedes ver que ya tengo instalado Unreal Engine 5.2 Sin embargo, si tienes una versión posterior, si estás viendo esto en el futuro y tienes 5.3 o 5.21 y así sucesivamente, solo tienes que seguir adelante e instalarla Se puede seguir adelante y nada ha cambiado. Pero para este curso, voy a instalar el nuevo motor Unreal cinco Y entonces estamos listos para saltar a la siguiente lección. 3. 1.03 Crea un nuevo proyecto: Sigamos adelante y lanzemos Unreal Engine Five. Cuando Unreal Engine five se haya lanzado, aparecerá esta ventana, para que puedas ver tus proyectos recientes Y si no tienes ningún proyecto reciente, este estará vacío. Pero aquí se puede ver el mío. Y lo que queremos hacer, queremos hacer clic en la pestaña Juegos porque estamos creando juegos. Pero también se puede ver en Real Engine Five se puede utilizar para hacer cine y arquitectura de video, automotriz y simulación también. Muy chulo. Pero para nosotros, vamos a crear juegos. Entonces voy a ir en la pestaña de Juegos. En la pestaña Juegos, puedes ver que puedes seleccionar entre diferentes plantillas. Por ejemplo, si quieres hacer un shooter en primera persona como lo estamos haciendo nosotros, puedes seleccionar la plantilla de primera persona. Si quieres hacer un juego en tercera persona, puedes seleccionar este y así sucesivamente. Para que veas puedes seleccionar entre diferentes plantillas geniales. Sin embargo, todas estas plantillas las puedes hacer tú. De hecho, puedes crear un proyecto en blanco, y puedes construir todo desde cero y crear todas estas plantillas. Si sabes lo que estás haciendo para mis cursos, me gustaría comenzar con un proyecto en blanco sin nada en él. Porque quiero enseñarte a construir un juego de la nada. No me gusta empezar con estas plantillas aquí. Y nuevamente, puedes crear todo esto a partir de un proyecto en blanco si sabes lo que estás haciendo. Entonces comencemos con un proyecto en blanco porque quiero enseñarte cada cosa. Partiendo de un proyecto en blanco, vamos a seleccionar Blueprint como nuestro lenguaje de programación Y la plataforma objetivo es la calidad de escritorio. El ajuste preestablecido se establece al máximo. En cuanto al contenido de datos, si tienes esto, lo voy a quitar para que no tengamos nada. De nuevo, quiero empezar sin nada y luego seguir adelante y seleccionar donde quieres guardar el proyecto. Entonces voy a dar click aquí y seleccionar una carpeta. Y luego sigue adelante y dale a tu proyecto el nombre de este juego. Sólo voy a llamarlo Counterstrike porque es el tipo de juego que estamos haciendo No lo estamos copiando al 100% También estoy haciendo algunas cosas personalizadas. Pero será mucho más como contraataque para este shooter multijugador Adelante, dale un nombre, y sigamos adelante y hagamos clic en Crear proyecto. Una vez creado el proyecto, aquí estamos dentro de Unreal Engine Sigamos adelante en la siguiente lección y echemos un vistazo a la descripción general de Unreal Engine 4. Descripción de 1.04 Unreal Engine 5: Antes de comenzar con nuestro proyecto, hagamos una breve descripción general de cómo se construye Unreal Engine Aquí en el medio, tenemos la ventana gráfica, y aquí es donde ves tu juego visualmente En la ventana gráfica, puede mantener presionado el botón derecho del mouse. Cuando mantienes el botón derecho del ratón en la ventana gráfica, puedes ver que puedes mirar a tu alrededor dentro de la ventana gráfica Ahora cuando mantienes el botón derecho del ratón y haces clic en W, avanzas en el mundo. Al hacer clic en, te mueves hacia atrás, Cuando haces clic en D, te mueves hacia la derecha. Y cuando haces clic en A, te mueves hacia la izquierda. Recuerda mantener presionado el botón de la boca derecha cuando hagas esto. Así que mantén pulsado el botón derecho del ratón y el botón izquierdo del ratón al mismo tiempo. Entonces puedes ver que en realidad puedes moverte solo con tu mouse, así. También puedes mantener el botón izquierdo del ratón solo y moverlo hacia adelante y hacia atrás. Y puedes ver que también puedes verte así. Hay diferentes técnicas de movimiento dentro de aquí. El siguiente es mantener pulsado el botón derecho del ratón, y luego puedes hacer clic en para bajar, o puedes hacer clic en para subir. Por supuesto, lo último que tenemos aquí es que si te desplazas con el botón del mouse, puedes acercar y alejar también. Estas son todas las técnicas de movimiento, y eso fue todo. El principal que uso es que mantengo pulsado el botón derecho del ratón y hago clic en S ADN. Simplemente me muevo por el mundo así. Normalmente no uso los otros métodos, este es el más usado para mí. Entonces puedes intentar simplemente sostener el botón derecho del mouse, hacer clic en, solo tratar de navegar, solo tener una idea de lo que se siente al moverse dentro de este mundo. Por aquí, tenemos diferentes botones dentro del visor, dando click aquí arriba, el más importante es este llamado vista de juego Y éste esconde íconos en el juego. Y esto es útil para si tienes tantos íconos en el juego. Recuerda cuando construyes un juego. Entonces, si haces clic en uno de los elementos que tienes dentro del mundo y simplemente haces clic en tu teclado, realidad te llevan a ese ítem. Puedes ver aquí si hago clic en, en mi teclado, este es el atajo para la vista del juego. Si hago clic en, escondo los íconos. Y esto es muy genial porque quiero ver mi juego, cómo se ve realmente sin ningún íconos. Y puedes volver a hacer clic para mostrarlos aquí. El siguiente que tenemos es el modo inmersivo, y esto hará que tu Viewport esté a pantalla completa Al hacer clic en 11, ese es el atajo para ello. Hace el juego en pantalla completa. Y luego puedo dar click en para ocultar los íconos. Y puedo tratar de ver cómo se ve mi nivel sin que me molesten todos estos íconos Haga clic de nuevo para mostrarlos haciendo clic en 11 para minimizar el Viewpoard Nuevamente, vamos a saltar por encima de estas herramientas muy importantes. La primera se llama herramienta Seleccionar. Al hacer clic en esto, puedes seleccionar diferentes artículos en el mundo. No uso esto demasiado, en realidad uso estos tres. Nunca selecciono esto, en realidad. Si ahora que lo estoy pensando, nunca selecciono esto. Sin embargo, es posible que encuentre un uso para ello. Pero al hacer clic en la Q del teclado, puedes ver que tienen atajos si mantienes el mouse sobre ellos. Al hacer clic en Q, selecciona la herramienta de selección, y al hacer clic en W en el teclado se seleccionará la herramienta de movimiento. Seleccionando la herramienta de movimiento, puedes ver si selecciono uno de los iconos, por ejemplo, me salen estas flechas. Para que veas que tenemos una flecha verde, tenemos una flecha azul y una flecha roja también. Con la herramienta de movimiento, podemos mover artículos. Y puedes dar click en una de las flechas. Y puedes moverlo aquí sobre este eje. En este eje también. Y en este eje también. Aquí a la derecha, puedes ver en el panel de detalles, realidad te muestra detalles sobre el elemento seleccionado. Si seleccionas uno de ellos, puedes ver que cambia los detalles sobre este artículo. Por ejemplo, aquí si selecciono éste y también se puede ver cómo se llama en el Outliner El Outliner básicamente te muestra todos los artículos que tienes dentro de este mundo, dentro de este nivel aquí que tenemos Esto es lo que hay dentro de él. Todas estas cosas del paisaje que puedes ver aquí es solo este mundo, puedes ver. Consta de bloques. Cuando lo seleccionas, puedes ver que también está seleccionado aquí en el Outliner Cuando selecciono este en la parte de vista, también se selecciona aquí en el Outliner Todas estas cosas que puedes ver aquí es en realidad algo que está dentro de tu mundo. Cuando selecciono esto, puedes ver que se llama tragaluz. Es luz del cielo. Y se pueden ver detalles sobre el tragaluz, por ejemplo, lo intenso que es Por ejemplo, puedes aumentarlo. Digamos que quiero escribir tres. Y se puede ver que mi nivel es más intenso en iluminación. Y puedo dar click aquí y volver a hacer clic en uno o a la derecha otra vez, y luego vuelve a la normalidad. Aquí puedes cambiar las cosas. Lo que quería mostrarte aquí con la herramienta de movimiento es cuando la mueves, puedes ver que también está cambiando la ubicación en el panel de detalles. Si lo muevo, puedes ver que está cambiando valores en el valor z aquí cuando lo muevo esta manera y también cuando lo muevo de esta manera. Pero para los puntos de pivote, se puede ver que el rojo es en realidad el eje X. Se puede ver sujetando el ratón sobre él. Dice X. El verde es el eje Y, y el azul es el eje Z. Tenemos el eje X, el eje Y. Y el eje z. Puedes cambiar la ubicación de ellos haciendo esto aquí. O puedes cambiar la ubicación escribiendo un número. Por ejemplo en la Z, puedo escribir 200 haciendo clic Inter y se moverá hasta el valor de 200 en la Z. Pero puedes hacer, en lugar de escribir un número, también puedes hacer clic, dar clic en el número y mantener presionado el mouse y arrastrar Entonces puedes ver también puedes cambiar la ubicación así también. Si quieres moverlo en todas las direcciones a la vez, puedes dar click sobre esta bola blanca en el medio. Y puedes moverlo en todas direcciones todas a la vez. Si quieres moverlo en dos direcciones diferentes a la vez, puedes hacer clic en la casilla en el medio. Y puedes moverlo en estas dos direcciones distintas que hayas seleccionado. A continuación, si haces clic en E en el teclado o haces clic aquí arriba, simplemente obtendrás la herramienta de rotación, tal y como dice. Puede hacer clic aquí y rotar el artículo. este momento es un icono, así que realmente no podemos ver lo que está pasando. Pero si hago clic aquí arriba, esto agregará elementos. Pulsando aquí arriba, yendo a Shapes, y solo voy a agregar un simple cubo. Añadiendo un cubo simple, ahora puedo hacer clic en el cubo, hacer clic en E en el teclado, o seleccionar la herramienta de rotación, y simplemente puedo rotar este elemento alrededor de diferentes ejes. Nuevamente, puedes ver los valores cambiando aquí para la rotación, y puedes verlo aquí. También puede rotarlo haciendo clic aquí, haciendo clic botón izquierdo y arrastrando. Eso también lo rotará. Entonces tenemos la herramienta de báscula por aquí, y como dice escala el ítem. Se puede escalar en todas estas tres direcciones. O si quieres que escale uniformemente en todas las direcciones a la vez, puedes hacer clic en esta casilla blanca en el medio. Y escalará en todas las direcciones, todo al mismo tiempo cuando lo escales. También puedes ver los valores aquí, cuánto lo escalamos Si quieres restablecerlo, en realidad puedes escribir 111 que restablecerá la escala. Sin embargo, también puedes hacer click en esta pequeña flecha aquí. Esto restablecerá los valores a los valores predeterminados aunque al hacer clic en esta pequeña flecha, volverá a los valores predeterminados. Por aquí a la derecha, tienes diferentes herramientas de broches Se puede ver cuando hago clic en W en mi teclado para seleccionar la herramienta de movimiento, puedo mover este ítem. Pero se puede ver que no se mueve sin problemas. Se está rompiendo a una grilla. Puedo desactivar esto haciendo clic en el icono de aquí arriba. Y ahora puedo moverlo, y se puede ver que ahora se mueve sin problemas. Si vuelvo a hacer clic en él, lo habilitaré. También puedes aumentar y disminuir la cantidad con la que se está chasqueando Si hago clic en el número aquí arriba, y puedo seleccionar, por ejemplo, 100, así que va a chasquear mucho más. Si lo arrastro ahora, se puede ver que brota mucho más. Esto es útil para cuando estás, por ejemplo, haciendo diseño de niveles y quieres que los elementos coloquen como en un patrón uno al lado del otro. Lo que puedes hacer, por ejemplo aquí, es que puedes sostener Alt en el teclado. Puede hacer clic y arrastrar mientras mantiene presionada la tecla Alt. Esto copiará el artículo si solo lo vuelvo a hacer. Hago clic y vuelvo a hacer clic y arrastrar. Hago clic, clic y arrastre. Puedes ver que puedo copiar los artículos. Y ahora se colocan a la misma distancia entre sí. Así es como es útil la herramienta de ajuste. Sólo voy a restablecerlo de nuevo a diez por lo normal. Esto se puede hacer con la rotación y con el dimensionamiento también. Se puede ver si hago clic en para seleccionar la herramienta de rotación y hago clic en una de ellas, yo giro, Se puede ver que gira cada diez grados. Otra vez, está aquí arriba. Puedo aumentar o disminuir la cantidad con la que se está rompiendo, o simplemente puedo hacer clic en el icono y puedo girarlo ahora, libremente sin ningún chasquido Voy a volver a encenderlo. Y se puede hacer lo mismo con el escalado. Ahora por aquí, puedes aumentar y disminuir la velocidad de la cámara. Se puede ver ahora mismo me estoy moviendo dentro de mi mundo así. También puedo moverme mucho más lento. Imagina si tienes que enfocar pequeños detalles aquí, es muy difícil mover la cámara para que se vea aquí. Lo que puedes hacer, puedes hacer click aquí arriba, aumentar la velocidad de la cámara. Ahora puedes moverte mucho más lento y concentrarte en pequeños, pequeños detalles dentro de tu nivel. No obstante, si quieres moverte al otro lado del mundo, esto tardará para siempre. Puedes hacer clic aquí arriba, aumentar la velocidad de la cámara, y ahora puedes moverte al otro lado del mundo rápidamente. Nuevamente, si quieres pasar a un elemento específico, siempre puedes hacer click sobre él aquí. Por ejemplo, si quiero moverme, digamos a mi luz direccional, puedo dar click sobre ella. Y puedo dar click en mi teclado. Y lo hará aquí también. Ahora puedo volver a disminuir la velocidad de mi cámara a una por defecto. Y puedo moverme normalmente aquí, igual que antes. Bien, así que esto era todo dentro del Viewpoard Nuevamente, el outliner básicamente muestra lo que hay dentro de tu nivel, lo que puedes ver visualmente aquí dentro del nivel Pero por ahora, voy a borrar estos cubos. Entonces voy a hacer click aquí, pulsa eliminar en mi teclado. Y también seleccionarlos todos. Y pulsa Eliminar en mi teclado. Ahora aquí arriba en la barra de herramientas, podemos guardar el nivel actual en el que nos encontramos. También podemos hacer click aquí y utilizar las diferentes herramientas que tenemos. Por ejemplo, si queremos crear un paisaje, podemos usar la herramienta de paisaje o follaje, por ejemplo. Si quieres pintar pasto y árboles en tu nivel, puedes usar eso también. Sin embargo, no vamos a usar esto dentro de nuestro juego porque vamos a crear un nivel básico y también nos estamos enfocando mucho en los planos y en cómo podemos programar nuestro shooter multijugador en primera persona Entonces si quieres enfocarte en crear paisajes y follaje, por favor echa un vistazo a Pixel Helmet.com mi sitio web Aquí puedes encontrar muchos cursos que te explicarán esto también A continuación por aquí, un botón muy, muy importante es que puedes agregar diferentes cosas a tu nivel. Por ejemplo, creamos la Forma, el cubo aquí. También puedes crear iluminación. La iluminación que puedes ver aquí, también crearemos desde cero. Y puedes crear las diferentes luces dentro de aquí. También puedes crear efectos visuales y así sucesivamente. Para que puedas colocar diferentes elementos a tu nivel usando este botón. A continuación tenemos el plano de nivel. Y vamos a estar hablando mucho de planos más adelante, así que no nos enfoquemos en esto por ahora Y luego tenemos cinemáticas, y por ahora nos saltaremos las cinemáticas Entonces tenemos el botón de reproducción, y si haces clic en él, juegas el juego. Y entonces se puede ver que ahora estoy jugando mi juego dentro del nivel. No está pasando mucho porque en realidad no tenemos mucho dentro de aquí. Entonces voy a hacer clic en Escape en mi teclado para salir del modo de reproducción haciendo clic en estos tres botones. También puedes seleccionar cómo quieres jugar tu juego. En este momento lo estamos jugando dentro del Viewpoard. También haz clic aquí y abre una nueva ventana. Y se abrió en mi segunda pantalla, se puede ver ahora estoy jugando el juego en mi segunda ventana. Puedo hacer clic en Escape para salir de él. De nuevo, puedes seleccionar cómo quieres jugar tu juego. Sólo voy a seleccionar su Viewpoard seleccionado. Aquí abajo tenemos configuraciones multijugador. Estaremos trabajando con eso más adelante. Por último, si quieres empaquetar tu juego y lanzarlo en Steam o lanzarlo a tus amigos, puedes seguir adelante y hacer clic aquí, Windows por ejemplo, y luego empaquetar el juego para lanzarlo. Ahora aquí arriba tenemos los diferentes botones. Tenemos el botón Archivo, donde puedes crear un nuevo nivel, puedes crear un nuevo proyecto y así sucesivamente. Muy básico en software antiguo que hemos visto. Y luego en la edición, lo más importante es el proyecto Settings, y vamos a estar usando mucho eso. Puedes ver que tiene muchos botones y puede parecer un poco confuso si eres nuevo en el motor general. No obstante, centrémonos en las cosas más importantes que necesitamos aprender. Y puedes aprender todo esto más adelante, pero por ahora nos vamos a centrar en las cosas más importantes. Vamos a saltarlo por ahora. Y vamos a estar pasando mucho por esto en el curso. Entonces en Windows, muy, muy cool, puedes abrir diferentes ventanas dentro de nuestro motor medio. Por ejemplo, esta ventana gráfica que puedes ver aquí en el medio, puedes ir a Viewports, Y luego puedes dar click en Viewports dos, y eso abrirá una Ahora bien esto es genial si tienes dos pantallas. Normalmente hago esto si tengo una cámara y solo miro mi juego así, lo pongo en mi segunda pantalla y puedo trabajar aquí también mientras tengo esta vista de mi juego. Así que muy chulo. Puedes abrir múltiples ventanas aquí. Y también va para el panel de detalles si quieres abrir un segundo panel Detalles. Y puedes ver aquí si selecciono algo en mi mundo, puedes ver que son los mismos detalles que se muestran dentro de aquí. Tan muy, muy genial que puedes abrir múltiples ventanas aquí. En las herramientas, en realidad no tenemos mucho, así que vamos a saltarlo por ahora. En Build, el único botón importante aquí es que puedes construir el nivel y construir la iluminación. Y hará las sombras correctas y así sucesivamente, pero estaremos trabajando con esto más adelante cuando hagamos la iluminación, y al final tenemos la ayuda y puedes ver la documentación aquí también. Bien. Lo último por lo que quiero pasar antes de terminar aquí es el cajón de contenido. Y da clic en el cajón de contenido aquí abajo. Aquí es donde estarán todos los archivos para motores reales, para el juego que estás creando. Por ejemplo, si tienes texturas, si tienes música, si tienes tres modelos D, todos estos archivos para tu juego, estarán aquí abajo en el cajón de contenido. Lo que me gusta hacer, puedes ver si hago clic en el Viewpoard, desaparecerá Si hago clic aquí y vuelvo a hacer clic, digamos que estoy trabajando en el Viewpoard, volverá a desaparecer Me parece un poco molesto. Lo que suelo hacer es hacer clic aquí y hago clic en Pato en Layout. Y se quedará aquí. Y ahora se llama el navegador de contenido. Es quedarse aquí en mi pantalla todo el tiempo. Cuando trabajo en mi juego aquí en el punto de vista , nunca desaparece. Y también es mucho más agradable que veas para este curso. Dentro del navegador de contenido, puedo crear carpetas. Si haces clic derecho aquí abajo, puedes crear una nueva carpeta. Por ejemplo, puedes darle un nombre, por ejemplo, hola o algo así. También puedes hacer clic derecho en la carpeta y puedes establecer el color. Se puede establecer el color de la carpeta. Y esto es muy agradable si quieres mantenerte organizado aquí en el navegador de contenido. Porque te puedes imaginar si tienes un juego grande, tienes muchos archivos dentro de aquí en el navegador de contenido, si quieres crear algo nuevo, puedes hacer click derecho sobre aquí. Puedes ver en tu clic derecho, puedes agregar diferentes elementos a tu juego. Lo más importante, vamos a trabajar con planos. Entonces esta es muy enorme. Y también podemos crear un nuevo nivel, un nuevo material. Si tenemos algo que ver con las animaciones, también estaremos trabajando con eso. Se puede crear eso, por ejemplo. Puedes hacer click en una de ellas y podrás ver que tienes diferentes opciones. Ahora mismo, en realidad no tenemos un esqueleto, un jugador. Entonces voy a cerrarlo y crear algo nuevo. Por ejemplo, un material. Y se puede ver aquí que está. Si quieres hacer que los iconos sean más pequeños o más grandes, puedes hacer clic en la configuración e ir al miniatura y seleccionar un tamaño más pequeño Ahora lo que también puedes hacer, puedes mantener el control en el teclado y puedes usar la rueda del mouse. Entonces, si acercas con una rueda del mouse mientras mantienes el control, porque también puedes aumentar y disminuir los iconos. Ahora voy a hacer clic en éste y presionar Eliminar en mi teclado. Y sólo tienes que seguir adelante y eliminarlo por ahora. Si vuelves a hacer clic derecho, podrás ver todos estos elementos que puedes crear y agregar a tu juego. Nuevamente, se ve muy, muy confuso si nunca lo has usado antes, usado en motor real, y si esto es nuevo para ti. Pero nuevamente, no trates de enfocarte en todas estas cosas. Centrémonos en las cosas más importantes y creémoslas durante este curso. Y te prometo que aprenderás todo esto lentamente. Así que no te concentres en todo por ahora. Ahora, también puedes usar este botón Agregar, pero nunca uso esto. En realidad solo entro en la carpeta en la que quiero agregar algo y solo escribiré haga clic aquí. Pero lo mismo, también puedes click aquí arriba si lo deseas. Bien, así que eso fue todo para el Unreal Engine Overview. Si quieres un panorama más profundo de Unreal Engine, por favor visita mis otros cursos También tengo una guía completa para principiantes. Entonces con esto dicho, vamos a seguir adelante y pasar a la siguiente lección. 5. 2.01 Introducción al juego: Hola Ron. Este soy yo del futuro. Y este es el proyecto terminado para este curso. Y sólo voy a mostrarte lo que vamos a hacer dentro de este curso. A veces es mucho más fácil ver el producto terminado antes de continuar. Lo que vamos a hacer aquí es crear un juego FPS desde cero. Y literalmente desde cero, comenzamos con un proyecto en blanco. Y hacemos de todo, desde crear el mapa, la iluminación, importar las armas y hacer el equipo de armas, etc. Y si solo hago clic en Jugar aquí, y podrás ver el juego. Entonces tenemos algo de sonido ambiental en el fondo. Algunas aves, aquí puedes saquear armas. También puedes saquear esto. Lo tienes en la espalda como puedes ver aquí en mi sombra. Pero también lo puedes ver aquí si acabo de engendrar como otro jugador Se puede ver aquí en la parte posterior de este jugador. Y también puedo cambiar de arma. Puedo disparar el arma. También hay diferentes efectos de sonido para cada arma. También se puede ver que tenemos algunos efectos sobre el terreno. Tenemos balas calculando. Podemos recargar el arma. También podemos golpear a otros jugadores. Sí, tenemos salud y armadura y también tenemos puntos redondos. Tenemos mucho que hacer. Podemos soltar armas. Las armas tienen peso. Y también tenemos Ragdoll muerte y respondiendo. Y también recibes una notificación cuando ganas la ronda y pierdes la ronda y así sucesivamente. Pasan muchas cosas dentro de este juego aquí, pero lo pasaremos juntos. Y créeme, será fácil si solo sigues el curso aquí. Te enseñaré todo lo que necesitas saber para crear un juego FPS. Lo bueno de los planos es este curso, si lo sigues completamente y lo entiendes, este curso te enseñará no sólo a hacer juegos FPS, sino también a otros juegos Porque cuando creas otros juegos, en realidad estás usando las mismas herramientas. Los planos son solo planos. Y solo tienes como estas herramientas en una caja de herramientas y creas diferentes cosas con ellas. En este caso, vamos a crear un juego FPS. Espero que te diviertas conmigo. Sigamos adelante y continuemos, y no pierdas el tiempo, y te veré en la siguiente. 6. 2.02 Crea un nuevo mapa: Para crear un nuevo mapa. Primero sigamos adelante y creamos una nueva carpeta por aquí. Voy a hacer click derecho sobre la carpeta de contenido. Voy a dar click en Nueva Carpeta, y llamemos a ésta Mapas. Entonces dentro de aquí, vamos a hacer clic derecho aquí. Y sigamos adelante y hagamos clic en Nivel para este nivel. Por lo general para los mapas los llamo mapa como prefijo porque más adelante en realidad podemos buscar elementos aquí y nos será más fácil más adelante. Por lo que suelo dar prefijos a mis archivos. Yo llamo a esto un mapa y vamos a llamarlo principal. Este es nuestro mapa principal. Ahora podemos hacer doble clic en este mapa. Y ahora nos pregunta si aquí también queremos salvar este nivel. Y sólo voy a quitar esto. Solo quiero guardar mi nuevo mapa Y haciendo click en Seleccionado Seguro. Y ahora estoy dentro de mi nuevo mapa. Y se puede ver que está muy oscuro por dentro de aquí, y en el outliner no hay nada Y está oscuro porque no hay iluminación. Todavía no hay activos en nuestro nivel, y tenemos que agregarlos en nuestras próximas lecciones. 7. 2.03 Importa Assets de entorno: Para los activos ambientales, vamos a utilizar un pack del Marketplace. Si abres el lanzador de Epic Games, y dentro de aquí haces clic en la pestaña Marketplace Cuando estás dentro del Marketplace. Marketplace tiene muchos artículos geniales que puedes usar para tu juego. También puedes ver que tienen gratis para el mes. Vale la pena echarle un vistazo, pero por ahora en los productos, busquemos grid. Si solo escribes Grid aquí y presionas Enter, y luego por aquí en el precio máximo, das clic en Gratis. Y luego ves este llamado Super Grid Start up Pack. Esto es lo que vamos a utilizar. Entonces si haces clic en él y luego dirá descarga aquí si aún no lo has descargado. Y cuando descargues este activo, puedes crear un proyecto. Puede hacer clic en este botón llamado Crear Proyecto. Y luego tienes que seleccionar donde quieres guardarlo y solo tienes que seguir adelante y dar click en Crear. También puedes seleccionar qué versión quieres crearla. este momento se establece en 5.1. Lo es. Bien, no necesitas una versión 5.1 para poder usar esto, pero solo va a crear la última versión del motor Honual No es necesario que lo descarguen para usarlo, así que está bien. Ya lo creé. Entonces si vuelvo a mi biblioteca, aquí es donde, como si la creas, aparecerá aquí. Este es el pack Stata super grit o Unreal Engine 5.1 Voy a hacer doble clic en él para abrirlo De nuevo, no necesitas Unreal Engine 5.1 para De hecho, puedes abrirlo con 5.2 o cualquier versión que estés usando Y aquí está, se abre. Tienes que esperar. Si es la primera vez que lo abres, tiene que preparar los shaders Puede tomar mucho tiempo cuando lo abres la primera vez, a veces media hora, a veces una hora. Pero entonces cuando esté listo, ahora puedes usar el SS aquí. Para poder utilizar activos de un proyecto a otro, hay que migrar archivos. La forma en que haces esto es que puedes escribir, clic en esta carpeta súper Cuadrícula, y luego puedes seguir adelante y hacer clic en Migrar, y hacer clic en Bien. Y después hay que seleccionar ¿dónde desea guardar este archivo? Y quiero guardarlo dentro de mi otro proyecto. Aquí lo hice en esta carpeta shooter multiplicador y en Counter Strike. Y después tienes que seleccionar la carpeta de contenido para tu proyecto de Unreal Engine Recuerda, tienes que seleccionar la carpeta de contenido, No puedes guardar esto en otras carpetas, seleccionar la carpeta de contenido, y además no puedes seleccionar otra carpeta dentro de la carpeta de contenido. Cuando migres cosas de un proyecto a otro, tienes que seleccionar la carpeta de contenido y simplemente seguir adelante y hacer clic en Seleccionar carpeta. Y luego migrará todos los archivos que están aquí, y ahora está terminado. Para que pueda cerrar esta superrejilla hacia abajo. Y si abro mi proyecto, puedes ver ahora tengo esta carpeta Supergrid y puedo usar los activos dentro de aquí ahora en mi juego Ahora, antes de que terminemos, voy a abrir de nuevo el lanzador de Epic Games, porque necesitamos algo más. Antes de continuar, voy a seguir adelante y abrir el mercado. Y para la iluminación, necesitamos un Cielo por aquí. Si solo vuelvo a buscar Sky, hago clic en gratis. Dentro de aquí, voy a usar este que se llama Good Sky. Si vuelves a hacer clic en él, puedes hacer clic en Descargar si aún no lo has descargado, y luego puedes hacer clic en Agregar al proyecto, y luego tienes que encontrar tu proyecto. Puedes ver aquí, si vuelvo, solo está disponible para 5.1 Actualmente, estoy usando 5.2 Lo que tienes que hacer es hacer clic en Ad To Project, y después dar click en Mostrar Todos los Proyectos. Y luego puedo dar click en mi Proyecto Counter Strike. Y después tengo que seleccionar la versión o el Pac. Voy a dar click aquí y voy a seleccionar la última versión con la que sea compatible. Está bien, no va a faltar. Va a funcionar bien. Voy a dar clic en Agregar al proyecto, y lo agregará a mi proyecto aquí. Entonces ahora si vuelvo a mi proyecto, se puede ver que el buen cielo se ha agregado a mi proyecto y puedo usarlo también. Entonces, ahora que hemos importado los activos ambientales, sigamos adelante en la siguiente lección y diseñemos el entorno. 8. 2.04 Diseña el entorno: Con el fin de diseñar el entorno. este momento se puede ver que el nivel es oscuro y es imposible hacer nada si voy a la súper grilla y empiezo un pack y después voy a Source y se puede ver que tenemos la carpeta de mallas, por ejemplo, si arrastre esta caja dentro de aquí, puede ver que está oscuro y no podemos ver nada Si hago clic en el modo apagado por aquí, cambiando el modo iluminado a apagado, ahora lo puedo ver porque realmente no tenemos iluminación y no podemos ver las cosas cuando estamos en el modo iluminado Así que en realidad no me gusta mucho diseñar en el modo apagado. Eso se puede hacer. Por supuesto, puedes intentar simplemente diseñar todo el nivel en iluminado, porque después de eso, vamos a agregar iluminación. No obstante, si deseas diseñarlo en el modo iluminado, puedes simplemente seguir adelante y dar click aquí arriba. Y ve a Luces Y agrega una luz direccional solo por ahora. Y siempre puedes cambiarlo después. Recuerda, si aumentas el tamaño de esta caja, por ejemplo, y piensas que la luz del sol es demasiado brillante, puedes hacer click en ella y puedes hacer click en E para tomar la herramienta de rotación. Y siempre puedes girarlo alrededor, trata de ver si puedes conseguir un buen ángulo. Y también puedes disminuir la intensidad aquí y trabajar a partir de ahí. Pero ahora mismo, esto es sólo temporal. Sólo vamos a diseñar el nivel, y después de eso estamos haciendo la iluminación. Pero solo quiero agregar este para poder diseñar mi nivel en el modo iluminado también. Bien, así que ahora mismo sólo voy a borrar esta casilla de nuevo. Y lo que vamos a hacer es que vamos a diseñar algo así para contraataque Entonces esto se llama mapa. Un mapa es básicamente, tienes dos lados de este mapa. Por lo que el antiterrorista engendrará de un lado y el terrorista engendrará por el Y hay armas que pueden recoger y pueden dispararse entre sí así. Sólo un mapa muy, muy simple y sólo vamos a diseñar algo así de forma natural, un copiar y pegar completamente, pero algo que creemos que queda bien por ahora. Empecemos por arrastrar este plano supercrítico al nivel Lo que me gusta hacer es colocarlo en la ubicación de 000, así el centro del mundo. Y por lo general me gusta empezar desde aquí. Muy chulo. Para estos activos, puede hacer clic en Arte para tomar la herramienta de escala, y luego puede escalarlos en estas diferentes direcciones. Y puedes ver que crea el plano así y crea un nivel para ti. Muy chulo. Puedes escalarlo en ambos ejes y luego crear el terreno para el juego para que sea más fácil para que no tengas que escalar mucho. Lo que puedes hacer es que puedes hacer click aquí arriba teniéndolo escalado así primero, para que teniendo mostrando esta caja completamente Entonces puedes hacer clic aquí para ver la herramienta de escalado aquí. Y tal vez seleccionando el ajuste de escala a uno, configurándolo en uno. Ahora bien, si lo escalo en esta dirección, se ve que escala una caja entera, una escala una vez. Esto es muy genial. En lugar de hacerlo muchas veces ahora, lo que puedes hacer es simplemente escalar una vez y crea esa caja para ti. puede ver lo útil que es usar el chasquido también para el nivel cuando lo escala. Se puede ver también escala aquí en mi panel de Detalles. Se puede ver que los números suben. Puedes escalarlo de esta manera o puedes escalarlo de esta manera. Déjame en realidad solo escalarlo de esta manera. Aquí te puedes imaginar si vas aquí abajo, aquí es donde está parado el jugador. Si quieres ver qué tan grande es este mapa, también puedes dar click aquí arriba en el rápido en el botón dos Fundamentos y agregar un jugador inicia este jugador inicia, voy a bajarlo al suelo primero. Algo así. Dirá mal tamaño. Si está dentro del suelo, voy a moverlo hacia arriba. Algo así. El personaje está en el tamaño de este Los jugadores empiezan casi. Esto es sólo una referencia. Ahora se puede ver que este nivel es muy pequeño. Esto no es con lo que vamos. Necesitamos que sea mucho más grande. Entonces voy a dar click en este avión. Voy a escribir 80 para la x y 80 para la Y. Ahora voy a intentar construir este mapa aquí. Por supuesto, para este curso, siempre puedes hacerlo más pequeño. No importa lo que diseñes. Sigue adelante y vuelve a diseñar tu propio nivel, no importa lo que diseñes en esta etapa. Posteriormente, estamos haciendo la programación con cualquier mapa que diseñes. Solo sigue adelante y sé creativo y diseña lo tuyo y diviértete con él. Cuando hayamos creado el terreno, lo que puedes hacer es tomar esta caja por ejemplo. Se puede colocar aquí en el suelo. Y luego lo voy a mover para que vuelva a brotar aquí a los bordes del suelo Para el chasquido, tenerlo puesto a uno, ahora puedo escalarlo, y esta es solo mi pared Vamos a escalarlo hasta el otro lado, así como así, hasta que haya terminado por aquí. Entonces lo que puedes hacer es también escalarlo hacia arriba para hacer una pared algo así. A la escala de 20 para la altura. Siempre podemos cambiarlo después. Si pensamos que esto es demasiado pequeño o esto es demasiado grande. Lo que puedo hacer es que en realidad voy a moverlo un paso aquí, por aquí en esta caja, porque quiero tener la otra pared aquí también. Lo que podemos hacer ahora con este muro es que en realidad quiero disminuir el tamaño también aquí, ahora está afuera, disminuyendo el tamaño en uno. Así como así. Ahora lo que puedo hacer es sostener Alt en mi teclado y puedo rotar mientras sostengo Alt. Y esto copiará el modelo sosteniendo Alt mientras rotas. Esto lo copiará. Y ahora puedo arrastrar este modelo a esta talla. Sólo voy a aumentar ligeramente la velocidad de mi cámara para poder ver lo que está pasando. Y voy a ir al modo apagado porque ahora se puede ver, en realidad es difícil de ver Y voy a moverlo así así. Tan solo se lo juntan. Solo asegúrate de que se junten. Comprobando aquí para ver si todo está bien. Todo está bien. De nuevo, voy a dar click en E old y luego arrastrar para copiarlo. No así. Voy a hacer clic en Control Z, mantén presionado Alt. Haz clic y arrastra para copiarlo, y luego arrástralo por aquí y luego lo ajusta. A lo mejor es mucho más fácil también aumentar este chasquido. Es mejor controlar. Puedes ver aquí, no tienes que moverlo mucho antes de que se estalle. Esto te lo hará mucho más fácil. Yo voy a hacer lo mismo aquí, arrastrándolo hacia este lado, asegurándome de que esté chasqueando con esta pared Además, asegurándose de que se vea bien por aquí. Ahora se puede ver que tengo una pared. Si ahora voy al modo Encendido, puedo dar click sobre esta luz direccional. Puedo girarlo ligeramente. Puedo ver mi nivel. Y también puedo disminuir la intensidad, así que no es tan intenso. Ahora tenemos este nivel con las paredes. ¿Todo bien? Entonces quiero que diseñes este nivel como desees. Siempre puedes colocar cubos aquí. Puedes intentar redimensionarlos, hacer algunos como muros para el jugador, así que el jugador está parado aquí y disparando a los demás jugadores Puedes intentar hacer cubos, algo así. Puedes mantener presionada la tecla Alt y arrastrarla mientras mantienes presionada la tecla Alt para copiarla y tal vez colocarla así. Incluso puedes volver a copiarlo. Y puedes colocarlo al lado éste, algo así. Y también puedes aumentar el tamaño, hacer algo como esto interesante. Siempre se puede tratar de hacer modelos interesantes también. Puedes ver aquí, puedes usar todos estos activos. También puedes usar rampas. Puedes intentar arrastrar esta rampa y puedes aumentar el tamaño de la rampa y el tamaño de la pendiente también. Así Y así ver también puedes hacer rampas en este nivel Intenta ser muy creativo y simplemente diseñar un nivel aleatorio que podamos usar para programar el juego. Ahora con eso dicho, si realmente no estás interesado en diseñar el nivel y solo quieres comenzar con planos, también he incluido el proyecto para ti donde el nivel ha sido diseñado sin ningún código También puedes usar eso si lo deseas. Es realmente una buena práctica diseñar también tus propios niveles. Imagínese cuando esté haciendo su propio juego más adelante en esta etapa, ya sabe diseñar su nivel también. Por lo que sí recomiendo simplemente seguir adelante y divertirse con esto. Simplemente diseñe el nivel. Usa tal vez una hora o 30 minutos y luego vuelve aquí. Bien, aquí estoy otra vez. Estoy de vuelta y he diseñado el nivel. Pasé un par de horas para simplemente diseñar algo interesante y hacer que se vea genial cuando estamos programando el proyecto. Nuevamente, he incluido esto para ti, que puedas usarlo sin ningún código. Entonces, si no quieres diseñar, aquí está, puedes usarlo. No obstante, de nuevo, te sugiero que sigas adelante, solo que te diviertas y diseñes algo al azar que podamos usar. Puedes ver aquí hice una nueva carpeta llamada marketplace. Y dentro de aquí arrastré en el cielo bueno y la súper grilla también Están aquí y es un poco más organizado. cuanto al nivel, en realidad voy a cambiarlo a modo apagado para mostrártelo porque la iluminación es un poco molesta en estos momentos Dentro de aquí, se puede ver lo que he hecho. Por ejemplo, acabo de armar las cajas. Solo estaba tratando de agregar algunas formas interesantes a este nivel, el tamaño para ello. Nuevamente, el suelo sigue siendo 80 por 80 como lo hicimos antes, y las paredes siguen siendo de 20 por 79, igual que antes. Puedes ver aquí todas estas cajas, constan de diferentes cajas. Puedes ver esta caja aquí agregada con esta caja. Otra vez, igual que antes. Solo usé la herramienta de escalado para escalarlos hacia arriba y hacia abajo y solo tratando de hacer formas interesantes para esta. Este es el anillo super grid. Si haces clic en él, por ejemplo, si haces clic en él aquí, puedes dar click sobre este pequeño icono. De hecho, te llevará al modelo en el navegador de contenido. Entonces esta es la manera fácil de hacerlo, y esta es la que he usado dentro de la carpeta de mallas También he hecho esta rampa. Así que puedes ver aquí diseñé como una rampa. Puedes subir por aquí haciendo esta rampa y haciendo esta pared a su lado para encerrar esta rampa aquí Se puede ver como lo hice esta tierra para solo tener algo de terreno aquí. Y esta tierra también debajo de esta rampa. Son sólo dos rampas juntas y algo de tierra aquí entre ellas. Apenas un par de paredes juntas. Se ve que pasé algún tiempo solo para construir un nivel interesante. Estas son solo cajas que puedes armar. También puedes usar estas formas. Si haces clic en este icono, te lo llevará y son estos cilindros los puedes colocar y luego puedes escalar. Entonces lo que puedes hacer es que puedes usar estos para ponerte encima. Puedes reducirlos para que se vean bien. A lo mejor sólo sacar el chasquido aquí o simplemente reducirlo a algo así como 0.125 o algo así Y solo disminuirlo e intentar copiarlo y pegarlo por todas partes para hacer esa interesante forma aquí arriba. Bien, pero eso es lo que he hecho para diseñar este nivel. De nuevo, puedes descargarla si así lo deseas. Lo he incluido para ti. Con eso terminado, recuerda subir aquí también. Lo que puedes hacer en el outliner, puedes seleccionar todos estos que hayas diseñado Y lo que puedes hacer es seleccionarlos todos. Entonces haz clic en el primero, mantén presionado Mayús y haz clic en el último. Y luego puedes hacer click en este ícono de carpeta para hacer una nueva carpeta. Y da click en dos en tu teclado para darle un nombre a esa carpeta. Y se mantendrá organizado así. Recuerda, siempre es agradable estar organizado aquí abajo en el navegador de contenido. Mantente organizado también aquí en el Outliner. Ahora, con este nivel diseñado, volvamos al modo iluminado. Y ahora estamos listos para hacer la iluminación. No obstante, se puede ver que es muy brillante. Y cuando voy a la luz direccional y la cambio a algo como 0.2 puedes ver la iluminación sigue cambiando y sigue brillando. Entonces tenemos que agregar un volumen de post proceso antes de poder continuar. Así que pasemos a la siguiente lección. 9. Volumen de 2.05 posproceso: El volumen post proceso dentro de Unreal Engine es algo que podemos usar para cambiar la imagen del juego Así como puedes pensar en Photoshop, donde agregas una imagen a Photoshop y cambias los colores de esa imagen. Esto es lo mismo aquí en Unreal Engine, utilizamos un volumen post proceso Ese volumen puede cambiar la calidez del nivel, podemos cambiar el color, la saturación, las bengalas de la lente Bloom, y así sucesivamente Entonces lo que podemos hacer es que podemos hacer click aquí arriba y lo puedes encontrar en cualquiera de los efectos visuales y puedes ver que se llama volumen post proceso. O puedes ir a volúmenes y luego seguir adelante y crear un volumen de post proceso. Dos formas de crearlo. Así que adelante y da clic en él. Y si hago clic en, en mi teclado para mostrar los iconos, puedes ver este cuadro aquí que creamos. Este es el volumen post proceso. Ahora dentro de aquí, si haces clic en uno de ellos, por ejemplo, el Bloom, y haces clic en la intensidad. Y vamos a aumentarlo a algo demente, como cinco Se ve que realmente no pasó nada, si se lo dije a uno, si se lo dije a cinco, no pasa nada. Esto se debe a que hay que entrar dentro de este volumen de proceso de publicación. Se puede ver si muevo mi cámara dentro de ella, la floración entra en vigor. Si salgo fuera de esta caja, puedes ver que la floración no surte efecto, así que tengo que estar dentro de esta caja para que surta efecto. Para aplicar esto a todo el nivel sin entrar y salir de esta caja. Puedes bajar aquí y puedes marcar la llamada extensión infinita. Puedes marcarlo y ahora puedes ver que se aplica a todo el nivel. ¿Qué extensión infinita hace? Simplemente lo aplica a todo el nivel para que no tengas que ir dentro y fuera de la caja. Ahora bien, ¿de qué sirve aquí, para esta caja? Es, por ejemplo, si tienes un calabozo, o digamos que quiero entrar dentro de este edificio de aquí y quiero cambiar de color. Esto es lo que puedes hacer. Se puede mover, por ejemplo, dentro de este edificio. Puedes moverlo aquí arriba. E incluso puedes escalarlo. Puedes ver si la muevo aquí arriba, puedo tomar la herramienta de escala, haciendo clic en R para tomar la herramienta de escala, y luego puedo escalarla en la X, Y y Z. Solo tratando de rellenar el área realmente quiero que surta efecto Digamos por ejemplo, quiero que entre en vigor aquí. Cuando me mudo, cuando me mudo a esta mazmorra, se ve la floración, la floración aumenta, ahora entra en vigor Este es el uso de la misma para no usar extensión infinita. Por ejemplo, si tienes un juego RPG, tienes Dungeons y quieres cambiar color siempre que estés dentro de esa mazmorra Sin embargo, en realidad no tenemos algo así. Quiero que se aplique a todo el nivel, así que voy a dar click en Infinite Extend. Voy a ir a la cima, y también voy por la báscula. Voy a presionar este botón para volver a los valores predeterminados. En realidad no es que importe, pero solo quería tenerlo por defecto así, como pueden ver aquí. Por ejemplo, para la temperatura, puedes aumentar o disminuir la temperatura y puedes cambiar el color de este mundo. Incluso el tinte, puede aumentar y disminuir el tinte. Se puede ver que el volumen de post proceso es igual que en Photoshop. Puedes cambiar el aspecto de este juego. Voy a dar click sobre estas flechas, ponerlas de nuevo a las predeterminadas por ahora. Por ahora no vamos a jugar mucho con él. Lo que quiero hacer es que puedes ver aquí, si elimino esta intensidad para el Bloom, doy click aquí. Se puede ver por la luz del sol, si lo pongo a, digamos cinco muy intensos, se puede ver que cambia la luz. Esta es la exposición. Si lo pongo a 0.2 se puede ver que empieza por estar oscuro y luego aumenta en la iluminación. No quiero hacer eso porque estamos creando juegos, y en los juegos realmente no hacemos cosas así. Siempre es agradable estar en una sola iluminación cuando estás haciendo iluminación. Pasemos al volumen del proceso posterior y hagamos clic en Exposición aquí. Vamos a hacer clic en el mínimo y máximo EV y establecerlo en uno. Y establecer éste en uno también. Ahora puedes ver si hago clic en la luz direccional y configuro la intensidad en algo así como tres. Y ahora puedes ver si me acerco, si me voy, si miro cosas diferentes, puedes ver que realmente no está cambiando la luz y está siendo estática. Y esto es lo que queremos para los juegos. Pasemos al volumen de post proceso para el Bloom. Por ahora, voy a dar click en la Intensidad y ponerla a cero. Siempre es agradable tenerlo a cero para empezar. Cuando estás haciendo iluminación, no afectamos la iluminación por otros factores, así que el Bloom la puso a cero. También aquí abajo, el efecto imagen, tenemos algo llamado viñeta Y una viñeta es que puedes ver si hago clic en ella y la aumentas, crea esa bota oscura alrededor de tu pantalla Si solo aumento la intensidad de la dirección, luz para que veas a lo que me refiero. Si lo configuro en diez y ahora dando clic en el volumen del proceso de post, puedes aumentar y disminuir la viñeta. Así como así. Esto es solo un albot cinematográfico alrededor de tu imagen. Y no quiero hacer eso para empezar. No quiero que afecte mi iluminación. Pongámoslo a cero. Puedes ver si no lo marco, es 0.4 por defecto, puedes ver que en realidad se aplica. Si lo desmarco, acuérdate ticket y ponlo a cero, eso lo eliminará. Si voy aquí solo para asegurarme de que haya algo más para el desenfoque de movimiento. la gente generalmente no le gusta desenfoque de movimiento en los juegos de shoter en primera persona Voy a hacer clic en la cantidad y establecer este 120 también. Y con eso hecho, ahora en realidad estamos listos para hacer iluminación. Ya se puede ver nada está afectando nuestra iluminación Cuando hacemos la iluminación y vemos los resultados, nada está cambiando la iluminación. Y se puede ver cuando me muevo de un lado a otro, la luz permanece igual. Y esto es lo que queremos. Así que sigamos adelante y hagamos clic en Archivo. Y hagamos clic en Guardar todo. Y también aquí en el volumen post proceso, lo que puedes hacer es que puedes hacer click sobre él, Crear una nueva carpeta. Y vamos a hacer clic aquí, hacer clic en dos y llamar a este Post Process. Aquí está el volumen post proceso, y ahora estamos listos para hacer la iluminación. 10. 2.06 Ilumina el entorno: Ya estamos listos para hacer la iluminación. Entonces lo que podemos hacer es que voy a borrar esta luz direccional. Porque ahora estamos listos para empezar de cero, ¿de acuerdo? La forma en que hago la iluminación es que subo aquí, voy a luces, y primero agregamos una luz direccional. Entonces esta es nuestra luz solar. Y suelo agregar todas las luces antes de empezar a ajustarlas. Entonces aquí está la luz del sol. Y dando click por aquí, vuelve a las luces. Y agreguemos este llamado tragaluz. El tragaluz es luz que viene del cielo, que como puedes ver aquí, en este momento está realmente oscuro Lo que podemos hacer es aquí en la carpeta Marketplace, puedo dar clic en la carpeta Good Sky que agregamos anteriormente, y luego dar clic en la carpeta Blueprint Y este Buen Cielo, puedes pinchar y arrastrarlo al nivel. Y cuando lo colocas, puedes ver que está dentro de aquí. De nuevo, quiero que sea de día, pero por ahora en realidad no voy a ajustar nada. Entonces lo que podemos hacer es que podemos dar click aquí arriba. También tenemos otra luz, pero no está dentro de luces. Está dentro de los efectos visuales y es la atmósfera del cielo. Puedes hacer click en esa y luego dar click en esta aquí arriba. Volviendo a Efectos Visuales y da click en esta llamada Captura de Reflexión de Esfera. Va a capturar las reflexiones dentro de tu nivel. Para este, en realidad voy a arrastrarlo hacia abajo tal vez 2000. Y déjame simplemente arrastrarlo a la mitad del nivel. Naturalmente preciso , no importa. Voy a incrementar este radio de influencia para encapultar mi nivel Ya puedes ver que está encapsulando mi nivel. Y va a agregar reflexiones alrededor de mi nivel. Ahora aquí arriba, puedes volver a hacer clic e ir a efectos visuales, realidad no a efectos visuales en los volúmenes. Y tenemos este llamado volumen de importancia de masa ligera. Da clic en esa. Importancia del mapa El volumen es que solo le dice al motor lo importante que necesita para renderizar la luz. Necesitamos encapsulganar nuestro nivel y decirle al motor, esta área es realmente importante para la iluminación Hagámoslo. Vamos a colocarlo en algún lugar aquí en el medio. Nuevamente, en realidad no importa. Voy a hacer clic o configurarlo aquí para la configuración del pincel. Se puede ver en la X. Puede hacer clic y arrastrar para aumentarlo. Estás incrementando esta caja para encapsul tu nivel. Nuevamente, en realidad no necesitas ser preciso, solo nivel encapsul Y voy a hacer eso por la Y también. Yo también voy a hacer eso por las Z Xs. Voy a bajar aquí sólo para ver si encapsula. Y en realidad no necesitamos que sea tanto aquí abajo. Voy a aumentarlo un poco. En realidad disminuirlo un poco solo para asegurarse de que el suelo está aquí con él. Y también me estoy asegurando de que las paredes de aquí arriba estén aquí con ella también. Nuevamente, no es necesario ser precisos, solo asegúrate de que encapsula el nivel Ahora tenemos la dirección, la luz, el cielo bueno, el cielo, la atmósfera, el tragaluz, la reflexión de la esfera, y la masa de luz dentro de nuestro nivel Lo que voy a hacer es que voy a seleccionarlos a todos. Da click aquí para ver esta carpeta, llamémosla iluminación. Y ahora estamos listos para ajustar la iluminación para nuestro juego. Con lo que suelo empezar es que hago clic en la luz direccional, que es la luz solar. Y lo que puedes hacer es hacer clic en E en el teclado para seleccionar la herramienta de rotación. Y entonces se puede tratar de rotar el sol. Entonces puedes darle algunas bonitas sombras interesantes. Esto es lo que intentas hacer para empezar, solo dale algunas sombras interesantes. Simplemente puedes girarlo, ver dónde son interesantes las sombras. También puedes quitar el chasquido haciendo clic aquí arriba. Y luego puedes rotarlo libremente y solo tratar de poner algunas sombras interesantes para tu juego. Para mí, voy a tratar de rotarlo a algo así. A lo mejor también lo estoy rotando de esta manera. Así que en realidad arroja sombra de esta manera. Y siempre puedo tratar de ajustarlo más tarde también. Entonces ahora mismo se puede ver que las sombras son realmente oscuras. Y quiero cambiarlo un poco para que sea más fácil para mí tratar de encontrar algunas sombras interesantes solo haciéndola un poco más brillante. Al hacer clic en este buen cielo, en realidad voy a subir aquí, y para la hora del día, en realidad voy a cambiar este, así que no son las estrellas. Voy a escribir 12 a la hora del día. Y ahora se puede ver que es de día. Y puedes dar click en el tragaluz, bajar, hacer clic en Recapturar para capturar el Se puede ver algunos colores realmente cambiados aquí y se está volviendo más brillante. También puedes cambiar la intensidad del tragaluz aquí para que sea como cinco o algo así Realmente loco ahora mismo. Pero solo para encontrar algunas sombras interesantes con las que puedas trabajar ahora, he girado en mi sol y estoy contento con mis sombras. De nuevo, voy a ir al tragaluz y de hecho hacer clic en esta flecha y ponerla de nuevo en una por ahora Ahora que tenemos el cielo, en realidad voy a empezar con el cielo bueno. Ahora da click en el Buen Cielo. Para estos presets, lo que voy a hacer es que puedes ver, puedes hacer click sobre ellos y cambiarlos aquí por el estilo de las nubes Nuevamente, esto es opcional, pero voy a dar click sobre él y seleccionar esta Nube B. Este es el estilo de las nubes, para la cobertura de nube, voy a seleccionar Medio. Y estos son los escenarios para el buen cielo. En realidad no hay mucho que cambiar aquí. Solo para asegurarme, voy a hacer click en el tragaluz otra vez, bajar, dar click en Recaptura, solo para asegurarme de que tenga la correcta Iluminación desde el cielo. Y voy a dar click en Construir y Construir todos los Niveles. Y esto asegurará que la iluminación se vea realmente correcta. Así que adelante y haz eso. Esto llevará algún tiempo si es la primera vez que lo haces. Y se puede ver el progreso aquí cuando se está construyendo la iluminación. Pero como pueden ver, probablemente me tomará un par de segundos. Ahora, cuando termines de construir la iluminación , te mostrará el progreso. Se ve igual que antes. Todo bien. Puedes ver aquí si hago clic en el tragaluz ahora y aumento la intensidad del tragaluz a algo así como tres, puede ver que las sombras se vuelven Y para esto es para lo que se utiliza el tragaluz. Hace que las sombras sean más brillantes. Si tienes las sombras muy oscuras en tu juego, siempre puedes aumentar esto para que tus sombras se vuelvan más brillantes. Y se ve mucho mejor que antes. Sin embargo, esto en realidad no suele ser tan oscuro. Si lo tengo en la escala de dos, no se supone que sea así de oscuro. Y también si miras dentro de aquí, está pasando algo más. Esto es lumen, el nuevo sistema de iluminación. Si haces clic en este proceso de publicación por ahora, voy a minimizar esta exposición. Si solo vas por aquí y encuentras a Lumen aquí, puedes ver la iluminación global. Lumen, puedes hacer click en él aquí y aquí en el Lumin, iluminación global, puedes dar click en esta distancia máxima para ésta Si escribes cero, puedes ver que es mucho más brillante que antes. Si haces clic en esta flecha para volver a la normalidad, podrás ver que todo está tan oscuro. Y si vuelvo a escribir cero, es mucho más brillante. Algo está pasando con esto también. De hecho voy a reducirlo un poco para este. Puedes ver si escribes 100, se ve así. Si escribes 200, 300, 400500600700900, empieza a tornarse muy oscuro En realidad voy a escribir 700. Puedes intentar equilibrarlo ahora mismo, se ve mucho plano, así que no voy a ir con esto. 1 Lumen es realmente bonito y da bonitos efectos y verás que más adelante cuando la iluminación se vea bien, así que no quiero que se vea este piso. Es realmente agradable tener lumen en tu escena porque la iluminación va a ser mucho mejor. En lugar de quitarlo todo, y pongámoslo a 200, 300, trata de aumentarlo ligeramente, pero sigue siendo plano en el suelo. Voy a seguir aumentando en 100 hasta que pueda ver algún detalle. Ahora en realidad puedo ver algunos detalles aquí aquí. ¿Y si escribo 700 en lugar de 600? Y así es como se ve. Si escribo 800, esto se volverá realmente oscuro aquí. Voy a ir con 700 con éste, siempre podemos cambiarlo después. ¿Bien? Para que veas la diferencia. Si hago clic aquí, se ve así. Si escribo 700, se ve mucho más ligero que antes. Ahora puedes hacer click en el tragaluz y puedes aumentarlo ligeramente para que no sea tan oscuro Para el tragaluz ahora mismo, son dos. Puedes escribir 34, tal vez algo así como cuatro por ahora, bien, Tal vez algo así como cuatro. Y ya puedes ver que se ve mucho mejor que antes. Antes era uno por defecto y ahora son cuatro. Y puedes ver la diferencia aquí. Seguiré ajustando la iluminación hasta que esté satisfecho. En tiradores en primera persona, es muy agradable tener rincones oscuros porque la gente quiere verse, quieren dispararse entre sí Y no es agradable tener un rincón oscuro donde no se pueda ver al enemigo. Algo así, va a ser realmente molesto. Escribamos cuatro en la escala de intensidad aquí. Lo que voy a hacer también, puedes hacer click en la luz direccional y puedes aumentar la intensidad de iluminación indirecta. Y lo que eso hace, simplemente rebota algunas luces en las paredes y se verá mucho mejor Si lo aumentas, puedes ver la diferencia. En realidad mira la diferencia aquí. Si escribo cero o uno como antes y si escribo seis, se puede ver el, estas paredes aquí están rebotando luz una encima de la otra Y el ambiente se ve mucho mejor que antes. Si justo uno, derecho seis, se puede ver lo diferente en esta pared también. Bien, entonces lo que quiero hacer ahora es que quiero equilibrar las sombras frente a la iluminación. Entonces se ve correcto. Antes de hacer esto. Ahora si haces clic en el tragaluz y luego haces clic en este Avanzado aquí en la iluminación aquí en el tragaluz, das clic en Avanzado, puedes ver algo llamado color del hemisferio inferior Lo que esto es, rebota luz del suelo a estas paredes y ambiente Aquí puedes ver si hago clic en él y pongo la luz o el color a algo extremo, puedes ver que en realidad está rebotando luz desde cero sobre estas paredes de aquí Ahora es actualmente negro y realmente no tiene sentido porque realidad no estamos rebotando luz negra en las paredes aquí Para hacerlo más realista, tenemos que cambiar el color a algo más correcto. Ahora mismo, mi suelo es gris. Lo que puedes hacer aquí es que puedes click en el modo Iluminado aquí arriba, puedes ir a Visualización de Buffer, y luego puedes ir a Color Base. Ahora puedes ver el verdadero color base de tu suelo. Lo que puedes hacer, puedes hacer clic en él, tomar el seleccionador de color, y luego puedes seleccionar el color del suelo Voy a seleccionar esta gris aquí. Y voy a volver a mi cielo. Si minimizo esto, ve a la claraboya. Ahora se puede ver que hemos cambiado el color del hemisferio inferior. Ahora si vuelvo al modo iluminado y bajo y recuerdo dar click en recapturar Porque hay que recuperar la iluminación. Ahora está rebotando la iluminación correcta aquí en estas paredes Bien, déjame acercarme aquí. Y ahora quiero equilibrar el equilibrio entre la sombra y la luz. Ahora bien, si haces clic en la luz direccional y cambias la intensidad aquí, esto aumentará y disminuirá la cantidad de luz. Si vas a la claraboya y aumentas y disminuirás la cantidad o la intensidad aquí, aumentará y disminuirá lo oscuras que son estas sombras Empezaré haciendo clic en la luz direccional, y voy a aumentar la intensidad y tal vez algo así como siete. Ahora si vuelvo a pasar al tragaluz, puedes comenzar con uno y luego escribir 23 Puedes intentar aumentarlo ligeramente solo para ver cómo se ve hasta que estés satisfecho, ¿verdad? He jugado con la intensidad para el tragaluz y la luz direccional Para la luz direccional, pongo a seis, en realidad, voy a poner a siete para que no parezca de noche. Poniendo esto a siete para el tragaluz, solo lo pongo a cinco otra vez. Simplemente lo aumenté aquí ligeramente hasta que estoy satisfecho cuando lo aumento a seis. Creo que estaba un poco demasiado brillante, así que reduje cinco. Y siempre podemos cambiarlo después. No es un problema, pero ahora mismo, creo que se ve bien. Podemos ver cómo se ven las sombras en comparación con la iluminación. Y solo comparándolo con el cielo también. Mira y mira si todo se ve realista. Echa un vistazo al interior de este túnel para ver si todo se ve bien. No quiero que se vea muy oscuro como puede ver aquí. Si haces clic en el volumen post proceso y vuelves a bajar al lumen y para la distancia de traza máxima, si lo pones de nuevo a 2000, puedes ver cuánto afecta a la iluminación. Realmente hace que todo sea oscuro y hay que volver a disminuir esto. Puedes escribir 100 para ver cómo se ve, pero ahora mismo es realmente plano en el suelo. Si escribo 200, 300, 400, se puede ver que todavía se ve mucho plano en el suelo. Y si seguimos aumentando este número, en algún momento va a parecer demasiado oscuro. Entonces voy a, de nuevo, ponerla de nuevo en 700. Y me gusta mucho este número, así que me voy a quedar aquí. Pero así es como suelo hacer la iluminación. Primero trato de ir a la luz direccional. Intenta encontrar bonitas sombras girando la luz del sol. Y luego voy a volver a aquí en el tragaluz, igual que antes Haga clic en el botón avanzado para la luz. Bajar al hemisferio inferior y cambiar el color al suelo, por lo que cuesta una iluminación correcta y también para el buen cielo. Cambiamos un poco de configuración aquí. Ahora puedes ver si miro en esta parte y me alejo, puedes ver que de repente desaparece, el reflejo rojo aquí. Si me muevo cerca, puedes ver que aparece si me alejo, puedes ver que aquí hay un pequeño cambio en la iluminación. Lo que puedes hacer aquí es que realmente puedes jugar con la distancia del lumen. Puedes volver al volumen de post proceso y puedes bajar aquí. Y tenemos algo que se llama Lumen Scene Detail. Si das click en el Detalle de Escena Lumen, si das click en el modo Iluminado y luego vas a la escena Lumen y Lumen. Así que en la escena de Lumen se puede ver realmente donde Lumen está afectando a Lumen. Nuevamente es el nuevo sistema de iluminación en el motor Ural hace que todo se vea realmente bien. Tomemos esto como ejemplo. Si esto se pone negro, puedes ver si me alejo de él. Esto significa que el lumen no está trabajando en esta malla en este momento. Si me acerco, funcionará. Se supone que esto va a suceder porque no queremos tener trabajo de lumen todo el tiempo porque en algún momento realmente no lo necesitas porque estás muy lejos. Y realmente no necesitamos poner un alto rendimiento en el juego. Qué podemos hacer aquí para que funcione un poco más. Puedes ver si me paro aquí, en realidad también quería trabajar en algunos de estos modelos. No quiero que sea así de extremo para el detalle Slumencene Se puede aumentar ligeramente. Si lo aumentas mucho, va a funcionar en todo aunque estés lejos. Si lo aumentas, va a quitar algún detalle. Este por defecto es, puedes ver aquí, si lo aumentas, va a aumentar en el costo de la GPU. No quiero aumentar esto demasiado, pero puedes aumentarlo ligeramente. Voy a hacer click y arrastrar solo para aumentarlo ligeramente hasta que esto aparezca algo así como 1.2 Este es un buen cambio. Se ve así cuando lo pongo a uno, cuando lo pongo a 1.2. También consigue el telar en detalle mucho más rápido que antes. Se puede ver cuando lo teníamos a uno, en este punto estaba apagado. Si lo pongo a 1.2 está encendido. Si vuelvo al modo iluminado, ahora es mucho mejor. Bien, así que antes de terminar, primero hagamos clic en Build and Build todos los niveles. Y solo asegúrate de que todo se vea correcto con la iluminación y las sombras. Va de nuevo a tomar algo de tiempo para construir y volveré después de que haya construido la iluminación. Todo bien. Entonces ahora ha terminado construir la iluminación y todo se ve bien. Ahora, a veces para algunas personas la iluminación se ve diferente. Y esto es porque puede ser porque hay que ir a la configuración y escalabilidad del motor Y ahora mismo se puede ver que estoy viendo todo en los gráficos épicos. Y esto es porque tengo una computadora rápida. Pero si tienes una computadora lenta, es posible que quieras usar medio por ejemplo, o baja igualdad. Pero bajo, no puedes ver las sombras, pero puedes usar esas también. Si tienes una computadora más lenta, sin embargo, tengo una rápida. Voy a ir con el Épico. Siempre puedes cambiarlo más tarde cuando estés exportando el juego. Pero Epic suele ser muy pesado, así que quizás quieras ir con alto para tu computadora si es un poco más lento. Pero como puedes ver, esta escalabilidad del motor también afecta la iluminación, por lo que también puedes comprobarlo Bien, ahora para el último paso, voy a dar click en este volumen de proceso de post. Ahora lo que podemos hacer es que en realidad podemos cambiar un poco los colores. Así podemos dar click sobre esta temperatura y puedes marcarla aquí. Esta temperatura más ligera y también este tinte. Entonces voy a reducir la temperatura ligeramente, así se vuelve un poco más azulada. Algo así como tal vez 6,200 muy, muy ligera diferencia. Puedes ver si lo marco y lo desmarco, así es como se ve Sólo una ligera diferencia. Hace que todo se vea un poco más frío, más azul entonces para el tinte, si lo aumentas, puedes ver que se ve un poco más anaranjado, algo de calor a Ahora, no quiero que sea así de extremo. Entonces si subes 0.1 puedes ver cómo se ve y puedes marcarlo y desmarcarlo. El cambio. No obstante, creo que esto podría ser un poco demasiado hasta ahora. I 0.05 en su lugar boleto NFI y boleto. Así es como se ve. ¿Bien? Entonces solo un cambio muy leve en los colores. Bien, así que lo último que quiero hacer aquí, se puede ver en la configuración global, también se pueden cambiar las cosas. Por ejemplo, la saturación. Si tu juego está demasiado desaturado, puedes aumentar la saturación y todo se saturará mucho más Ahora no tienes que aumentar demasiado el ajuste. Por ejemplo, puedes ponerlo en 1.1 y hay una ligera saturación en tu juego. Se ve que le da un poco más de color. No obstante, por ahora sólo me voy a quedar con uno. También puedes aumentar la ganancia si tu juego es demasiado oscuro, así puedes aumentar la ganancia. Todo el juego será mucho más brillante que antes. Ahora para mí, voy a quedarme en uno para éste también. No necesito cambiar nada aquí. Lo que quiero cambiar es que creo que las superficies son un poco demasiado brillantes y esto es en realidad lo más destacado. Si vas a Destacados aquí arriba y haces clic en, por ejemplo, la ganancia. Y puedes ver aquí, si aumentas y disminuyes la ganancia, aumentas y disminuyes los colores aquí arriba. Si solo lo pones a cero, en realidad puedes ver a qué afecta. Este es el punto culminante. Afecta el destaque arriba de estos modelos, 5.21 Creo que esto es un poco demasiado brillante y molesto de mirar Lo que puedes hacer es disminuirlo ligeramente, así que no es tan brillante. Y molesto mirar tal vez algo así como 0.60 0.56 Y puedes ver si escribes uno, así es como se veía Y si escribo 0.6 así es como se ve. Ahora creo que esto se ve un poco mejor que antes, porque antes estaba un poco demasiado brillante en el hielo, y escribir 0.6 ayuda a solucionar ese problema. Esto es lo que tenemos actualmente dentro de un nivel. Ahora, para esta, podemos agregar algo de floración. Y en realidad voy a agregar un poco de floración aquí para mi nivel. Esto es ahora preferencia. Tampoco puedes agregar floración a tu nivel. A algunas personas no les gusta florecer dentro de costas en primera persona. Pero para mí, solo voy a aumentarlo ligeramente solo puedas aumentarlo y ver cómo se ve. Si escribes uno, así es como se ve. Le da ese efecto soñador. Si escribes 01, creo que uno es demasiado extremo. Si lo pongo a 0.6 y puedes intentar escribir 00.6 para ver la diferencia Creo que algo como 0.6 es el camino a seguir. No más que eso, de lo contrario será un poco más molesto. Ahora podemos ver cómo se ve aquí dentro. La iluminación se ve muy bien. Se puede ver cómo cuesta encima de las olas aquí, y también se puede ver fuera de aquí también Intenta mirar dentro de aquí, asegúrate de que nada esté oscuro. Se puede ver al enemigo si entro de aquí. Ahora bien, si crees que este túnel está un poco oscuro, siempre puedes entrar de aquí y dar click aquí arriba. Vaya a las luces, haga clic en la luz puntual y cree una luz puntual aquí. Y siempre puedes colocarlo en algún lugar aquí dentro de este túnel. Para este punto la luz, se puede aumentar y disminuir la intensidad y ver cómo se ve. Ahora es un poco demasiado brillante aquí en esta área específica. Y quiero suavizarlo porque como pueden ver aquí, realmente no tenemos una bombilla. Entonces se verá un poco raro que esta iluminación sea tan brillante aquí. Entonces lo que puedes hacer es que en realidad voy a disminuir la intensidad. Voy a dar click en Avanzado, y aquí usar Inverse squared Fall off. De hecho voy a desactivarlo aquí. Ahora puedes ver cuando aumentas y disminuyas la iluminación, ahora puedes aumentar la intensidad para ser mucho más que antes. También se puede disminuir esta intensidad de decaimiento. Y se puede ver que se ilumina un poco más en el medio ambiente en lugar de centrarse solo en esta área específica. Ahora si sigo adelante y de nuevo hago clic en el punto de luz. Y sólo voy a dejar que esté aquí a las dos para que la luz caiga del exponente. Entonces voy a disminuir la intensidad a algo como se puede ver, es muy, muy brillante ahora porque hemos desactivado, hemos bajado la luz caída del exponente y también desactivamos esta para la intensidad Si solo escribes uno por ejemplo, puedes ver la diferencia si lo metes dentro y fuera. Solo un ligero efecto para asegurarnos de que no tenemos ninguna mancha oscura dentro de nuestro nivel. Ahora puedes jugar con el radio de acentuación. Si haces clic en, podrás ver dónde afecta. Entonces, si aumentas y disminues el radio de acentuación, así es como se ve Sólo voy a ponerlo a algo como el 2000, tal vez, algo como esto. Si haces clic en, puedes moverlo así así. Intenta colocarlo en algún lugar realmente agradable donde realmente no veas que hay una bombilla dentro de aquí. Y trata también de jugar con la intensidad. Creo que esto es demasiado brillante, así que si lo pongo a 0.5 así no es demasiado notorio. Y puedes dar click sobre este ojo para ocultarlo y mostrarlo. Y se puede ver cómo se ve, sólo un ligero efecto. Pero puedes ver aquí, si el enemigo está parado aquí y mirándote, puedes ver que hay un poco más de luz. Y siempre es más fácil ver al enemigo. Y eso es más agradable a la vista. Ahora, solo trata de moverte alrededor la luz ahora que terminaste de colocarla. Y trata de colocarlo en una zona donde tenga sentido para ti. Creo que la luz de verano aquí es agradable. Yo voy a hacer lo mismo aquí. Voy a mantener presionada la tecla Alt y dar clic y arrastrar para copiarla. Voy a colocarlo aquí dentro de este túnel también. Intenta colocarlo en algún lugar en el medio aquí. Y entonces voy a moverlo en esta dirección. Sólo voy a echar un vistazo y ver cómo está afectando en algún lugar como aquí. Es lo mismo que lo que hiciste aquí para esta iluminación también. Esta iluminación, también está en el medio. Solo asegurándome de que esté en el medio y que se coloque aquí. Para el otro, voy a empujarlo un poco solo para que se vea como la otra luz también. Ahora que hemos colocado la luz personalizada solo para que se vea un poco más brillante por dentro de aquí, creo que hemos terminado con la iluminación y así es como se ve el nivel ahora. 11. 2.07 consejos de optimización del entorno: Antes de que podamos llamar a este entorno terminado, también tenemos que echar un vistazo a la optimización y asegurarnos de que funcione bien como un juego cuando lo lanzemos. Para echar un vistazo a la optimización, hagamos clic en el modo de tapa aquí arriba. Pasemos a los modos de vista de optimización y comencemos con este llamado Complejidad Ligera. Por la complejidad de la luz, básicamente estamos, como su nombre lo dice, echando un vistazo a lo compleja que es la iluminación. Como puedes ver aquí, tenemos un gradiente aquí, comenzando desde el oscuro y el azul, y luego va hasta el rojo, morado y el blanco. Ahora bien, si estás aquí abajo en el azul, esta es muy buena actuación. Si estás aquí afuera en el morado y el blanco, este es un rendimiento pesado y esto es malo para tu juego. Pero como pueden ver, nuestro nivel es completamente azul. Y se puede ver que es por aquí. Y es realmente muy bien optimizado en cuanto a la iluminación. Esto se debe a que en realidad no estamos usando tantas luces. Solo tenemos la luz direccional y luego tenemos la luz del cielo. Están encendiendo esto principalmente como pueden ver, si vuelvo, si apago la luz direccional y si apago la claraboya, puede ver que todo se oscurece Básicamente son en realidad estos dos los que están iluminando el ambiente. Ahora si vuelvo a la luz el área de complejidad es verde. Esto se debe a que agregamos las bombillas. Recuerda que hicimos clic aquí en las luces y agregamos una luz puntual. Por eso es verde. Esta es más pesada en el rendimiento en comparación con esta área. Sin embargo, esto sigue siendo bajo rendimiento. Esto es muy agradable. Esto es bueno para tu juego. Sigues en la buena zona. Si tomo una de las bombillas y esta de aquí, si tomo este icono, este punto luz, si sostengo Alt y arrastre para copiarlo, puedes ver si lo copio y lo coloco fuera de estas otras luces puntuales, es bueno para ir. No obstante, si empiezo a superponer luces, como pueden ver aquí, ahora se vuelve roja. Y en la zona naranja. Ahora, digamos que este era tu nivel, esto está bien. No va a afectar tu juego. Esto sigue siendo muy bueno. No obstante, si todo tu juego es rojo, así, podrías experimentar en tu juego. Sin embargo, si es solo un área mínima en tu nivel que es roja, está bien. Eso está bien. Ahora bien, si lo copio, lo vuelvo a pegar, se ve que se vuelve aquí, morado y blanco. Y si tienes esto en tu juego, esto es realmente malo. Cuando optimices tu juego, trata de reducir la cantidad de iluminación que estás usando. los puedas usar lejos el uno del otro. Así, puedes superponer algunos de ellos. Eso está bien. Sin embargo, no trates de superponer muchas luces a la vez. Esto hará que tu juego se quede rezagado. Voy a borrar todas las otras luces puntuales que hice aquí. Éste y éste también. En este momento nuestro nivel está muy bien optimizado. Así que pasemos a la densidad del mapa de luz. este momento está abombada en motor real. A lo mejor lo arreglarán. Estas cajas negras parpadeantes no se supone que estén aquí. A lo mejor lo arreglarán en el futuro. Pero por ahora, solo ignora estas líneas negras parpadeantes en la densidad del mapa de luz Lo que te muestra aquí ahora mismo, vuelve a ser azul. El azul es resolución. Y es bueno para el rendimiento de tu juego. Si algo es muy rojo así, es malo para tu desempeño. Vamos de azul a rojo. Hay un gradiente. Entonces va de azul a ligeramente verde a verde, y luego pasa al naranja, y luego va al rojo. Ahora mismo, ¿cuál es la densidad del mapa de luz? ¿Cuál es la densidad del mapa de luz? Se puede aumentar la resolución del mapa de luz para cada modelo. Y esto aumentará lo detallada que se ve tu sombra en el suelo. Si tu sombra es realmente de baja resolución en el suelo, esto se debe a que la resolución del mapa de luz del suelo es baja. Esto puede ser una razón para ello. Lo que queremos hacer es que queremos ir a la densidad del mapa de luz y tenemos que aumentarla. El azul es realmente de baja resolución para un mapa de luz. Tenemos que aumentar la resolución para que las sombras se vean bien cuando golpeen las mallas, por ejemplo. Esto es realmente bueno. Queremos apuntar a este color verde. Lo que quiero hacer es hacer click sobre este terreno. Puedes encontrar este terreno aquí en el navegador de contenido. No obstante, si no lo encuentras, lo que puedes hacer es hacer click en el suelo. Y puedes dar click sobre este icono de aquí, y te llevará a esa malla de tierra. Ahora vamos a hacer doble clic y abrirlo aquí en el panel de detalles. Busquemos un mapa ligero. Ahora puedes ver la resolución del mapa de luz y la resolución mínima del mapa de luz. Ahora tengo que hacer click en otra cosa. No veo este color rosa, solo dando click en otra cosa. Puedo ver el color azul aquí para el suelo. Ahora bien, si solo aumentas la resolución del mapa de luz a algo así como usualmente lo multiplicamos por dos, puedes decir 128. Ahora puedes ver que es menos azul. Ahora si lo vuelvo a hacer, me multipliqué por dos. Ahora en vez de solo escribir el número, lo que puedes hacer, motor realmente agradable e irreal, puedes decir multiplicar por dos y luego presionar Enter Y lo va a hacer automáticamente. Ahora se puede ver que es una resolución más alta que antes. Antes eran 64 tú. Baja resolución. Ahora cuando lo multiplicamos por dos, multiplicado por dos, todavía quiero multiplicarlo por dos, porque esta sigue siendo una resolución baja multiplicada por dos. Ahora esto es mucho mejor. A veces me detenía aquí porque esto en realidad también es agradable. Pero lo que quiero hacer es simplemente multiplicarlo por dos solo para ver cómo se ve también. Este es el color al que suelo ir en mis juegos. Esto todavía está en el área de baja resolución, pero esto hará que tus sombras se vean bien mientras sigues manteniendo tu juego optimizado. No me gusta hacer mis modelos muy verdes así. Me gusta quedarme en la zona verde azulado. Todavía se ve bien con las sombras. Resolución 1024, resolución de mapa de luz para el suelo. Y recuerda copiar este número y pegarlo. La resolución mínima del mapa de luz también. Y luego puedes seguir adelante y cerrarlo. Y te pregunta si quieres aplicarlo. ¿Bien? Luego haga clic en Sí. Tienes que hacer eso para todos los demás modelos. Por ejemplo, tomemos otro ejemplo. Vamos a dar click en este de aquí. Este anillo de aquí. Es este anillo de aquí. Haga doble clic en él, ábralo. Resolución de Mapa de Luz, aquí está. Ahora vamos a hacer clic en otra cosa para que podamos ver realmente el color. Escribamos tiempos dos. Sigue siendo de baja resolución. Vamos a multiplicarlo por dos otra vez. Vamos a multiplicarlo por dos otra vez. Esto es realmente bueno. Creo que va a ser demasiado alto si lo multiplico por dos. Ya puedes ver que es verde y naranja. Éste. Sigue siendo buena en cuanto al rendimiento. No obstante, sigo pensando que este es un rendimiento demasiado alto. Recuerda, cuanto más aumentes la resolución del mapa de luz, más va a golpear en los fotogramas por segundo. Y rendimiento, voy a decir dividirlo por dos y simplemente quedarse aquí como máximo. Voy a copiar este número por aquí también. Y voy a cerrar esto y voy a aplicarlo ahora. Solo tienes que seguir adelante y hazlo para todos los modelos que estés usando en el juego. Voy a saltar adelante y sólo tratar de hacerlo para todos los modelos que tengo aquí. Terminé de ajustarlas todas, y como pueden ver, así es como se ve. Ahora se puede ver que algunos de ellos siguen siendo de muy baja resolución. Por ejemplo, este muro de aquí. No obstante, esta pared es también esta caja que se ve muy verde. Se puede ver si abro la caja de supercrid y busco resolución de mapa de luz, puedo hacerla más Por ejemplo, multiplicarlo por dos nuevamente y multiplicarlo por dos nuevamente, y este muro será de alta resolución. No obstante, se puede ver que estas cajas todas rojas y rojas ahora. Y esto realmente no es bueno. Esto se debe a que cuanto más escales un ítem, menor será la resolución. Por ejemplo, en realidad volvamos a 128 antes. Si lo coloco aquí en el nivel, se puede ver ahora se ve verde. No obstante, si tomo la herramienta de escala y la escalo hacia arriba, va a parecer de menor resolución. Si lo escalo más arriba, se puede ver que ahora está buscando una resolución más baja que antes. Cuanto más escales el ítem, menor resolución será. No obstante, todo se ve bien hasta el momento. Y si solo vuelvo al modo iluminado y lo que puedes hacer es guardar nivel y luego seguir adelante y dar click en Construir y Construir todos los niveles. Y eso es solo para asegurarse de que toda la iluminación esté construida, todas las sombras estén horneadas y todo se vea correcto. Aquí va a tomar algún tiempo. Va a tomar un poco más de tiempo que antes porque has aumentado la densidad del mapa de luz. No obstante, se puede ver que el nivel sigue siendo muy optimizado. Entonces esto en realidad no tomó tiempo, y ya está terminado. La iluminación en este momento está en alta resolución aquí en el suelo que antes. Se ve más de alta calidad que antes. Esto se debe a que aumentamos la densidad del mapa de luz. Ahora volvamos aquí en los modos de vista de optimización. Entonces tenemos la superposición de luz estacionaria. Como puedes ver, no usamos mucho. Aquí estamos en la zona verde. Se puede ver que está muy optimizado. Si pasamos a la complejidad del shader, nuevamente, se ve muy bien Nada de lo que preocuparse si voy por encima, en realidad, sólo voy a pasar al sobregiro de quad En lugar de ponerlos juntos, voy al sobregiro del quad Y estos son los tres modelos D que estás usando. Se va a echar un vistazo a cuántos triángulos estás usando por modelo, y no tenemos mucho Se puede ver que está realmente, realmente optimizado. Todo tu nivel está actualmente optimizado. Y si pasas ahora al modo Lit, ahora ya terminamos con el nivel, todo está optimizado. Y si voy a los fotogramas por segundo, si hago clic aquí arriba, mostrar los fotogramas por segundo. Y debes saber que 120 FPS es el máximo aquí en Unreal En la ventana gráfica aquí, tienes que exportar tu juego como un archivo EXC Por ejemplo, si quieres liberarlo a vapor y será mayor FPS, pero dentro del propio motor, está bloqueado a un máximo de 120, ¿verdad? Así que todo está muy bien optimizado. Todo el nivel se ejecuta al máximo FPS. Y también hemos optimizado el nivel. Entonces ahora estamos listos para continuar. 12. 3.01 Importa los personajes: Bien, ahora es el momento de importar los personajes. Ahora, durante el curso, vamos a importar más cosas. Por ejemplo, las armas y las animaciones. Pero vamos a darle un paso a la vez. Empecemos con los personajes. Abramos el lanzador de Epic Games. Dentro de aquí, quiero que hagas clic en la pestaña Marketplace. Ahora dentro del Marketplace, puedes encontrar activos que puedes usar para el juego. Puedes ver que están creando cosas muy bonitas que puedes usar. Por supuesto, gran parte es por dinero. Sin embargo, lo que vamos a hacer es que vamos a clic en Navegar y ir a Caracteres. Entonces vamos a hacer clic en el gratis aquí para que el precio máximo sean de uso gratuito. Ahora dentro de aquí, voy a usar este se llama Militar Doc y Military Silva. Sin embargo, también puedes usar otros caracteres. Puedes usar esta si quieres, puedes usar esta si quieres. Realmente no importa. Puedes usar esta. Depende de ti. No obstante voy a usar estos dos, así que voy a dar click en el primero. Después sigue adelante y da clic en Descargar. Si no lo has descargado antes , dirá descargar aquí. Adelante y haz clic en Descargar. Entonces puedes dar click en Agregar al Proyecto. Ahora puedes ver aquí, esto está vacío, y esto es porque solo es compatible con Unreal Engine 4.8 a 4.27 Esta es una versión muy antigua Ni siquiera es Unreal Engine Five. Sin embargo, todavía podemos usarlo para nuestro juego. Siga adelante y haga clic en Agregar al proyecto, y haga clic en Mostrar todos los proyectos. Y luego puedes seleccionar nuestro Proyecto. Y ahora está diciendo que no es compatible con Unreal Engine 5.2 Así que hay que seleccionar otra versión Da click aquí y selecciona la última versión de Unreal Engine Ahora adelante y selecciónelo. Y siga adelante y haga clic en Agregar al Proyecto. Ahora va a ítem al proyecto, si ves aquí, si vuelvo a mi juego aquí, si hago clic en él, ahora puedes ver que ahora está dentro del proyecto y puedo usar a este tipo en mi juego. Está bien si no es compatible, en realidad todavía podemos usarlo para el juego. Regresemos y vayamos al otro, este plateado. De nuevo, continúe y haga clic en Descargar. Y cuando lo hayas descargado, haz clic en Agregar al Proyecto, Mostrar todos los Proyectos. Seleccione nuestro Proyecto y seleccione la última versión con la que sea compatible. Siga adelante y haga clic en Agregar al proyecto, y también agregará este al proyecto. Ahora tenemos ambos personajes. Tenemos este doc. militar. Tenemos esta plata militar que podemos usar para el juego. Bien, así es como importas cosas del mercado. Simplemente descárgalos y agrégalos a tu proyecto. Y si no son compatibles, recuerde mostrar todos los proyectos, Seleccione el proyecto, y también seleccione la versión con la que sea compatible. Entonces ahora que hemos importado los personajes, pasemos a la siguiente lección. 13. 3.02 clases de planos para padres e hijos: Ahora estamos listos para trabajar con planos. Hagamos una carpeta aquí, haga clic derecho. Vaya a la carpeta nueva y llame a este plano dentro de esta carpeta de planos Hagamos clic derecho y seleccionemos la clase Blueprint. Ahora vamos a hacer un personaje. Entonces voy a seleccionar esta clase de Aca. No obstante, si no estás familiarizado con las clases de planos, la primera es un actor Y el actor es simplemente un actor que se puede colocar en el mundo. Por ejemplo, una mesa, una silla, una botella, sólo un actor estático que está justo ahí. El peón es algo que puedes controlar. Por ejemplo, si tienes una pelota rodando, este es tu jugador. puedas controlar esa pelota en tu nivel porque se puede poseer un peón Poseído significa que el jugador puede controlar esta clase de planos con el teclado y el mouse Ahora vamos a crear un personaje porque tiene la capacidad de andar por ahí. Se puede imaginar como un ser humano con dos brazos, dos piernas caminando por ahí. Después hay que seleccionar el personaje. Si tu personaje es simplemente una pelota rodando, entonces basta con ir con una pata. No obstante, tenemos personajes, así que adelante y haz clic en personaje. Y voy a llamar a éste BP Player Base. Ahora bien, ¿por qué no solo lo llamé jugador BP? ¿Por qué lo llamé base de jugadores BP? De esto se trata esta lección. Se trata de clases de planos para padres e hijos. Ahora voy a crearlo aquí primero. Antes de explicarlo, hagamos clic derecho en esta base de jugadores de BP y creemos clase de plano infantil Llamemos a éste BP Terrorista. Volvamos a darle clic derecho y seguir adelante y llamarlo BP bajo terrorista. Bien. Esto es lo que son las clases de planos padre e hijo Ahora mismo. Tenemos, creamos una clase de planos A partir de eso, escribimos clicked e hicimos una clase de plano infantil Lo que esto hace es que si cambio ajustes dentro de esta clase de planos padres, estos cambios serán trasladados a la clase de planos antiterroristas y a la clase de planos terroristas Digamos que entré en la base de jugadores dentro de aquí. Fui al componente de movimiento del personaje y luego cambié la velocidad máxima de caminata. Digamos que quería que mi personaje caminara más despacio. Entonces fui hasta aquí y escribí 250. Reduje la velocidad. Pulsé en Compilar para guardar mis ajustes aquí, y luego fui a, puedes ver que ahora tienen esta estrella Y la estrella significa que necesitan ser salvados. Si haces clic en Contraterrorista, puedes ver si hago clic en el componente de movimiento del personaje, también está ahora en 250 Lo hizo automáticamente. Y si voy también al terrorista , componente de movimiento de personajes, la pieza máxima de Wx también es 250 Puedes ver si cambias cosas en la clase de blueprint padre, todos sus hijos también cambiarán esta configuración Esto te ahorrará mucho tiempo. Digamos por ejemplo, Quincena. Si estás jugando Quincena, digamos que eres desarrollador de Quincena Tienes esta base de jugadores y luego tienes todas las máscaras. En Quincena, tienes todas las pieles. Todos los skins de jugador que estás controlando. Cuando cambias una configuración en la base de jugadores, cambiará la configuración de todas las máscaras. Digamos de nuevo, por ejemplo, la velocidad a la que están caminando. En lugar de cambiar la velocidad de caminata para cada personaje en quincena, es muy fácil simplemente ir a la clase de planos padres, cambiar la velocidad y surtirá efecto en todos los niños del plano Bien, entonces por eso creamos planos padres y clases de planos infantiles, por ejemplo, el movimiento, vamos a hacer el movimiento con el teclado dentro de la base de jugadores porque no necesitamos codificar el mismo movimiento en el antiterrorista y el mismo movimiento en el Cuando tienen exactamente el mismo movimiento, se mueven de la misma manera. O si eres antiterrorista o terris no importa, el movimiento es el mismo Y por eso es mejor hacerlo en la base de jugadores, así que solo tienes que hacerlo una vez. Bien, voy a cambiar el máximo, caminar regreso a 600 y la base de jugadores compilada como se puede ver en el antiterrorista y terrorista, se vuelven a cambiar a 600. Así es como vamos a trabajar. Vamos a hacer principalmente cosas dentro de la cláusula de plano padre y cuando tienen cosas específicas que no son similares, entonces las vamos a hacer dentro de los niños aquí Pero por ahora, esta es la explicación básica. Vamos a guardar todo y cuando todo esté guardado, pasemos a la siguiente lección y configuremos el personaje. 14. 3.03 Crea el personaje: Para establecer el carácter. Empecemos primero con el terrista por aquí en el terris Hagamos clic en Abrir editor de planos completo. Este visor se te muestra cada vez que el plano está vacío y lo abres por segunda vez Luego haga clic aquí en el editor de planos completos de Abrir y volverá aquí en la vista normal aquí en la ventana gráfica Si da clic aquí arriba en los Componentes, haga clic en la Malla. Y luego a la derecha, puedes ver que puedes agregar un activo de malla esquelética Ahora puedes pinchar sobre él por aquí, y puedes seleccionar el personaje. Lo que puedes hacer, también puedes seleccionar la carpeta que hayas importado. Y puedes hacer clic y arrastrar el personaje a este componente de malla aquí también. Puedes seleccionarlo desde aquí o simplemente puedes hacer clic y arrastrarlos a aquí. Por ejemplo, voy a usar este, el terrorista masculino, y voy a hacer clic y arrastrar esto hasta aquí y asignarlo. Como pueden ver, voy a hacer lo mismo por el terrorista. Haga doble clic en él. Abra el editor de planos completo dentro de aquí. Haga clic en la malla. Ve a la ventana gráfica, solo para que pueda ver lo que estoy haciendo aquí Haga clic aquí y vende. Seleccione la hembra. Eso depende de ti, realmente no importa lo que elijas, pero voy a seleccionar este, el personaje antiterrorista masculino. Ahora puedes ver que en realidad se supone que los personajes están enfrentados de esta manera, donde se muestra la flecha azul. Están enfrentando el camino equivocado. Ahora otra vez, te hablé las clases de planos de padres e hijos En lugar de girarlos tanto aquí como aquí, puedes hacerlo todo a la vez dentro de la base de jugadores. Si abro la base de jugadores y voy a la parte de vista, hago clic en la malla. Haga clic en E en el teclado para la herramienta de rotación, y luego en realidad tengo este chasquido encendido Me puse este chasquido y giré 90 grados -90 grados Eso los hará avanzar de esta manera. Si hago clic en Compilar y hago clic en cada uno de ellos, se puede ver que ambos están rotados. Por eso es agradable tener una pérdida de padres. Por lo que puedes cambiar una configuración y se aplicará a todas ellas. Ahora lo que tenemos que hacer también, tenemos que hacer que el pie de estos personajes esté en la parte inferior de la cápsula. Realmente no podemos hacerlo dentro de aquí. Tenemos que hacerlo por cada uno de ellos. Puedes hacerlo. De hecho, intentemos. Sólo hagámoslo. Vamos a hacer clic en la malla. Y da click en la malla esquelética aquí. Simplemente asigne cualquier carácter aleatorio aquí. realidad no vamos a preocuparnos por el personaje porque también lo vamos a quitar. Así que da click sobre este personaje. La mejor manera de hacerlo es ir a la vista en perspectiva aquí. Y da click en, Empecemos con la vista frontal, por ejemplo. Puedes acercar y arrastrar a este personaje hacia abajo. Así como así, se puede ver que la cápsula no está realmente llenando a todo este personaje. Entonces lo que voy a hacer es dar clic en la cápsula. Y la cápsula a media altura, voy a aumentar ligeramente, algo así como 93 o algo así. Haga clic en el personaje. En realidad voy a cambiar a la vista correcta. Creo que es mucho más fácil de ver y simplemente arrastrar a este personaje. Entonces el pie aquí está en la parte inferior. Te imaginas que este es el piso. El piso está aquí. Donde llegue a este punto, voy a arrastrarlo hacia abajo. Entonces el pie está en el piso así como así. No tiene que ser 100 precisos. Siempre se puede ajustar más tarde. Pero esto es solo un buen comienzo ahora. Realmente no tiene que llenar todo esto. Cápsula de colisión. Este componente de cápsula se suele utilizar para que sea una colisión. Por ejemplo, en dos juegos D, tres juegos D, si quieres golpear al jugador, van a ser golpeados a través de este componente cápsula. No obstante, en nuestro shooter multijugador en primera persona, vamos a crear un sistema de colisión más avanzado para brazos y piernas y así sucesivamente. Porque puedes ver en este juego, si tenemos esta cápsula como la colisión, cuando golpeas al jugador. En realidad se puede golpear al jugador si la bala es disparada aquí. Y eso realmente no tiene sentido. Entonces vamos a hacer un sistema de detección de aciertos más avanzado. Para que el jugador solo sea golpeado si en realidad son golpeados en el brazo y no aquí afuera. Este realmente no importa demasiado por ahora. No tiene que ser del todo preciso, pero me gustaría estar aquí en la vista correcta, solo hazlo lo mejor que puedas que llegue al piso así. Si vas a la vista frontal, puedes intentar reducir ligeramente la cápsula. Se trata de su cuerpo, así como así. Bien, hagamos clic en Compilar ahora. Vayamos al Contraterrorista. Mira cómo se ve. Si voy a la vista correcta. Vista frontal, échale un vistazo. Se ve bien. Si voy a la compilación terrorista, basta con echar un vistazo en la perspectiva. Toma la vista correcta. Basta con echar un vistazo al antiterrorista Este también se ve bien. Puedes ver que hicimos todo aquí dentro de la base de jugadores, y ahora se aplican para todos los personajes futuros que hagamos. Ahora digamos que quieres hacer otro personaje en el futuro. Lo que necesitas hacer es hacer clic con el botón derecho aquí y crear una nueva clase de plano infantil Digamos por ejemplo que lo llamamos EP y hay un terrorista llamado Phoenix. Un nuevo personaje puedes entrar de aquí y puedes hacer clic en este tipo en esta malla y luego puedes cambiarlo a ese personaje de Phoenix. Por ejemplo, este personaje femenino podría ser Phoenix. Y puedes ver lo fácil que es crear nuevos personajes. Se aplican todos los ajustes. Digamos que para este personaje, hay algunos ajustes que hay que cambiar. Entonces solo puedes entrar dentro de este personaje y simplemente ajustar este personaje. Puedes ajustar bien estas clases de planos de niños bien estas clases de planos No es necesario que solo confíes en la configuración de la base de jugadores. Puedes ajustar cada una de ellas si quieres. Sin embargo puedes ver que es muy agradable que ya tengamos los ajustes básicos Ajustes predeterminados suministrados y facilita nuestro trabajo. Ahora vamos a cerrar todo. Voy a borrar esta. Esto fue solo para mostrarte y voy a volver a la base de jugadores, necesitamos agregar una cámara también, porque ahora mismo el personaje está ahí. Sin embargo, no tenemos una cámara para que el jugador la vea. Vamos a dar click en la Malla aquí, ir a D. Entonces vamos a agregar algo llamado resorte de primavera. El brazo es solo un soporte para la cámara. click en el muelle, ve a D y luego busca cámara. Entonces puedes seleccionar esta cámara. Ahora se puede ver que tenemos un brazo de resorte, y dentro del brazo de resorte hay una cámara. Ahora haciendo clic en el resorte, voy a hacer clic en mi teclado para la herramienta de rotación, y luego voy a rotar la cámara para que quede detrás del personaje. Por ahora. Sólo voy a arrastrarlo hacia arriba. Simplemente algo así como, esto realmente no importa por ahora. Vamos a ajustar la cámara más adelante. Pero por ahora solo quiero ver a mi personaje cuando estoy dentro del juego. Lo que puedes hacer es que lo puedes ver aquí si, por ejemplo. Ahora se puede ver que en realidad se aplica a ambos, los terris y al antiterrorista porque son niños Se puede ver que ambos tienen un brazo de resorte ahora, tanto el terrista como el contra-terista también Pero lo que puedes hacer es hacer clic y arrastrar la terraza del mostrador, por ejemplo, al nivel. Si haces clic en el personaje, puedes ver que tienes una vista aquí. Y esto es porque acabas de agregar una cámara. Se puede ver cómo se ve este personaje desde atrás. Lo que suelo hacer, en realidad aquí en la base de jugadores, voy a dar click en el brazo de resorte. Y voy a establecer la longitud del brazo algo así como 600, así que está un poco lejos del personaje. Y luego voy a hacer click en el personaje, y ya se puede ver que así es como se ve. Me gustaría desarrollar mi shooter en primera persona de esta manera primero y después . Es muy fácil. La diferencia entre un tirador en tercera persona y un tirador en primera persona es solo que puedes hacer clic en el brazo de resorte y establecer la longitud del brazo objetivo en cero. Y entonces en realidad estás viendo este juego como un modo en primera persona. Pero por ahora, como estamos haciendo el movimiento del jugador, me gustaría comenzar con una longitud de brazo objetivo de 600 porque entonces podemos ver todo el movimiento que estamos haciendo y podemos ver si estamos haciendo las cosas correctamente. Esto fue por sentarse del jugador. Recuerda compilar y guardar todo tu trabajo. Y pasemos a la siguiente lección. 15. 3.04 modo de juego y controlador de jugador: Cada juego que creas. No importa cuál sea el juego, siempre tienes un modo de juego y un controlador Player. Vamos a hacer clic en la carpeta Blueprint. Antes de hacer nada, vamos crear una nueva carpeta dentro de aquí, y llamémosla Player. Voy a tomar todos estos aquí y agregarlos dentro, moverlos dentro de la carpeta Player. Así que estamos un poco más organizados aquí en la carpeta de planos Vamos a hacer clic derecho y crear una nueva clase de blueprint. Seleccionemos un controlador de jugador. Un controlador Player, lo que solemos hacer dentro de aquí es crear la interfaz de usuario y luego también engendramos cosas dentro de aquí Por ejemplo, si el jugador deja caer un arma al mundo, entonces generamos esa arma en el mundo, generando cosas dentro del Controlador de jugador y también la interfaz de usuario está dentro del Controlador de jugador Vamos a seguir adelante y hacer clic y crear un controlador de jugador. Y por lo general les doy un prefijo de EC para controlador de jugador, entonces lo llamo el nombre del juego. El juego es contraataque, solo voy a llamarlo bajo strike, luego haga clic derecho otra vez Ve a la clase Blueprint y luego crea un modo de juego Y por lo general para qué sirve el modo de juego, crea las reglas y la puntuación de los juegos. Por ejemplo, cuántos segundos por ronda y cuál es el modo de juego, por ejemplo, capturar la bandera y así sucesivamente. Así que adelante y crea el modo de juego, y llamémoslo GM para el modo de juego. Y otra vez, voy a llamarlo el nombre del juego Hound, A Strike Entonces lo que quiero que hagas es hacer doble clic en este modo de juego. Y necesitamos algunos ajustes iniciales dentro de aquí. En el modo de juego, puedes ver que tenemos en la clase predeterminada los valores predeterminados, tenemos la clase Player Controller Este es solo el controlador de reproductor Unreal Engine predeterminado. Queremos hacer clic en él, cambiarlo a nuestra propia ley de control de jugadores personalizada que acabamos de hacer. Lo mismo para la clase por defecto. Más adelante, no vamos a tener a nadie, vamos a seleccionar ninguno. Sin embargo, en realidad no tenemos una pantalla de selección de personajes en este momento. Lo que quiero hacer es simplemente engendrar como, por ejemplo, un terrorista o un antiterrorista Sólo voy a seleccionar antiterrorista. Más adelante lo vamos a eliminar porque tendremos una pantalla de selección de personajes y podrás seleccionar como lo que quieras engendrar Pero por ahora, vamos a engendrar como un antiterrorista porque no tenemos una pantalla de selección de personajes Ahora vamos a cerrarlo. Vamos a Editar y Ajustes del Proyecto. Dentro de aquí tenemos los mapas y modos. En mapas y modos, hay que cambiar el modo de juego. este momento está configurado en la base del modo juego, que es solo el modo de juego básico para Unreal Engine Sin embargo, quiero cambiarlo a nuestro propio modo de juego personalizado. Y haciendo clic en esta pequeña flecha para el modo de juego seleccionado, solo asegurándonos de que la cláusula de punto por defecto es el antiterrorista que hemos seleccionado y el controlador del jugador es nuestro también. Ahora si quieres, has notado si cierras y abres el motor, te pondrá en ese mapa por defecto de mundo abierto. También puedes cambiar esto dentro de mapas y modos. Los editores inician mapa, puedo cambiarlo para que sea este mapa, este mapa que creamos también para el mapa predeterminado del juego, podemos cambiarlo a este también. Bien, vamos a cerrar esto. Como última cosa, sigue adelante y da clic en la Configuración del mundo. Ahora si no puedes ver la pestaña, puedes hacer clic en Ventana y hacer clic en Configuración del mundo, y podrás verla. Así que adelante y haz clic en Configuración del mundo, y en la anulación del modo de juego del juego, haz clic en éste y selecciona nuestro modo de juego así. Esto es muy importante que hagas todo esto porque de lo contrario no podrás engendrar al jugador dentro del mundo Ahora bien, si borro este reproductor, este es solo alguien que acabo colocar en la lección anterior. Tenemos que tener un jugador que empiece antes de que podamos realmente engendrar dentro de aquí Voy a dar click aquí arriba e ir a Básicos y seleccionar un inicio de Jugador. Voy a dar click en G para ver los íconos. Voy a moverlo hacia abajo así, al mundo. Algo así aquí. Puedes ver aquí, si lo pones debajo del suelo, va a decir mal tamaño. Solo asegúrate de que esté por encima del suelo. Algo como esto. Ahora puedes hacer click en play, y esto debería engendrar a tu personaje Si no genera, por favor vea este video nuevamente. Asegúrate de que el modo de juego está dentro del mundo, configuración está dentro de la configuración del proyecto, y así sucesivamente. Pero ahora puedes ver que estamos desove como el personaje y hacemos clic en Jugar Y en realidad se ve genial. Esto es Lumen. Se pueden ver las iluminaciones de los lúmenes, en realidad lobo tomándolo de la superficie Bien, entonces ahora hemos agregado el modo de juego y el controlador del jugador. Y sigamos adelante y hagamos el contexto de mapeo de entrada y agreguemos movimiento para el jugador. 16. 3.05 Contexto de mapeo de entrada: Sigamos adelante y comencemos en el contexto de mapeo de entrada donde podemos agregar el movimiento del jugador. Sigamos adelante y entremos dentro de la carpeta del reproductor. Dentro de aquí, voy a hacer clic derecho y hacer una nueva carpeta llamada Input. Simplemente escribí mal esa entrada así como esa dentro de aquí Vamos a abrirlo, haga clic derecho, vaya a Entrada y cree este llamado contexto de mapeo de entrada. Normalmente llamé a IMC como prefijo y sólo voy a llamarlo default Ahora, antes de que podamos usar esto, puedes ver si lo abro, está vacío. Si hago clic en este plus aquí para agregar una clave a mi movimiento, por ejemplo, se puede ver que dice ninguno, y no puedo seleccionar nada. Esto se debe a que quiere una acción de entrada. Así que aquí abajo, hagamos clic derecho, vayamos a input y seleccionemos input action. A éste lo vamos a llamar movimiento. Ahora para esta, la voy a abrir. Esta acción de entrada, lo único que realmente necesitamos cambiar dentro de aquí es el tipo de valor. El tipo de valor, puedes pincharlo y podrás ver que tienes estas diferentes opciones. Lo que vamos a hacer es avanzar y retroceder para nuestro personaje dentro del juego. Si pongo el personaje dentro de aquí, personaje se va a mover de un lado a otro. Ese es un eje. El personaje se va a mover a izquierda y derecha. Ese es el segundo eje. Es por ello que voy a elegir un eje dos D, porque estamos avanzando hacia atrás y también a la izquierda y a la derecha, que es el segundo eje. Entonces voy a ahorrar aquí. Volvamos al contexto de mapeo de entrada. Ahora podemos hacer click aquí y agregar nuestra acción de entrada que acabamos de hacer. Bien, vamos a minimizar esto por ahora. En lugar de aquí, hay que asignar una clave. Quiero seguir adelante con mi tecla W. Lo que puedes hacer es presionar aquí arriba y buscar. Y entonces se puede ver que este es el teclado. Puedes seleccionar la W. Otro método más fácil para hacerlo si haces clic en el más aquí arriba. Ahora quiero moverme hacia atrás con mi tecla S. En lugar de hacer clic aquí y escribir y encontrar tu clave S. A veces puede llevar algún tiempo. Lo que puedes hacer es hacer clic en este icono, y luego puedes hacer click en el teclado que asignará esta tecla. Ahora para moverme a la izquierda y a la derecha, voy a dos de ellos aquí por la derecha, voy a dar click aquí y dar click en D para la izquierda. Voy a dar click aquí y dar click en A en mi teclado. Ahora tengo esas llaves. También quiero agregar es que quiero agregar el movimiento del mouse. Voy a crear una nueva acción de entrada. Voy a bajar aquí, hacer clic derecho, ir a entrada y crear una nueva acción de entrada. Voy a llamar a éste Mira, buscando con el ratón esta otra vez, voy a abrir la acción de entrada. Y voy a cambiar el tipo de valor al eje dos D, porque voy a mirar hacia arriba y hacia abajo. Ese es un eje. Y el segundo eje está mirando el eje izquierdo y derecho dos D. Va a hacer clic en Guardar. Y volviendo a mi contexto de mapeo de entrada, ahora puedo hacer clic en el más aquí arriba y puedo agregar mi nueva acción de entrada para esta. Ahora da click en él aquí y busca un mouse. Y tienes este llamado mouse Xy2D. Ahora también solo agrega el mouse X, y también agrega otro, y agrega el mouse Y. puedes hacerlo. Eso es lo mismo, pero para hacerlo más limpio, solo voy a dar click aquí y buscar el mouse y agregar este mouse Xy, porque podemos hacer eso también y se volverá mucho más limpio en el código. Ahora lo que queremos hacer con el movimiento aquí con la WK, estamos avanzando con la K, estamos retrocediendo Sin embargo, ahora mismo, ambos están avanzando. Lo que tenemos que hacer para que el SK se mueva hacia atrás es en los modificadores que necesitas para hacer clic en el más Entonces aquí abajo hay que seleccionar esta llamada negate. Esto invierte tu entrada. Al hacer clic en él se moverá hacia atrás. Cuando tienes este negate lo agregó, Negate solo significa que hace lo contrario de lo que hace la clave Tenemos que hacer lo mismo aquí abajo. D se mueve hacia la derecha, en realidad, para la izquierda y la derecha. Lo que tenemos que hacer también en los modificadores, tenemos que dar click aquí y seleccionar al espacio mundial Tenemos que hacer lo mismo por la izquierda. Aquí, tenemos que dar click en los modificadores y seleccionar al espacio mundial Ahora para la izquierda y la derecha, la D va a la derecha y la A va a la izquierda. Ahora para la izquierda, también tenemos que agregar este modificador llamado Nick Gate, igual que antes. Va a ir por el camino opuesto a lo que va la D. Así que sigamos adelante y hagamos clic en Guardar. Todo se ve bien. Y ahora estamos listos para agregar este contexto de mapeo de entrada a nuestro personaje. Porque ahora lo hemos sumado todo. Todo se ve bien. Ahora si conseguimos alguna caja con el movimiento, siempre podemos volver aquí y cambiarla. Pero por ahora, esto es lo que tenemos. Y eliminemos este personaje. Y pasemos a la siguiente lección. 17. 3.06 Añade el contexto de mapeo de entrada: Antes de que podamos usar el contexto de mapeo de entrada y agregar movimiento al personaje, tenemos que agregar esto a nuestro blueprint Clauss. Sigamos adelante y hagamos eso. Vamos al jugador y vamos al interior de la base de jugadores. Dentro de aquí, vamos a sumar el movimiento. Cuando agreguemos el movimiento aquí, lo va a aplicar también a los niños. En el plano padre Claus, la base de jugadores. Vamos a la gráfica de eventos. Dentro del gráfico de eventos, puede hacer clic en mantener presionado el botón derecho del mouse y puede desplazarse por dentro de aquí. Ahora sigamos adelante y seleccionemos todos esos. Y golpeó la ventaja en el teclado. Y empezar desde el principio como lo primero que voy a escribir. Haga clic. Y cuando escribes click, puedes seleccionar entre diferentes funciones y eventos. El primer evento que vamos a crear se llama Begin, Play, Play. Sigue adelante y selecciona el evento, Comenzar, Jugar. Y lo que eso hace es ¿qué debería pasar si empiezo a jugar el juego? Puedes escribir código aquí Si arrastro de este pin de ejecución y voy a soltarlo. Y escribo print y uso esta cadena de impresión. Entonces esta es la función simple, más simple que tenemos en Unreal engine En planos, esto solo imprimirá algún texto en la pantalla Ahora si compilo, hago clic en play. Se puede ver que dice hola aquí arriba. Si vuelvo a hacer clic en reproducir, puedes ver que dice hola. Entonces esto solo dice ¿qué debería pasar si empiezo a jugar el juego? Lo que queremos hacer es agregar el contexto de mapeo. La forma en que haces esto es primero tienes que obtener la referencia del controlador del reproductor. Para ello, escribamos click y solo busquemos controlador. Puede seleccionar este llamado Controlador Yet. Estamos recibiendo el controlador, sin embargo, este es solo el controlador básico de reproductor predeterminado en Unreal Engine Tenemos que especificar a Unreal Engine que en realidad estamos hablando este control de jugador personalizado que hicimos La forma en que hacemos esto es contratando desde aquí. Y podemos decir elenco dos, costo dos medios es que estamos tratando de obtener la referencia de este controlador de jugador puedo arrastrar desde aquí y decir cuesta dos y luego hay que darle el nombre del controlador del jugador. Controlador de reproductor, PC. Counterstrike es lo que lo llamamos. Así que adelante y selecciónala. Ahora podemos acceder a todo lo que hay dentro de aquí. Digamos en el controlador Player. Si yo, por ejemplo agrego una variable, solo llámalo hola o algo así. Cualquier cosa al azar haga clic en compilar dentro de la base de jugadores. Ahora puedes ver si arrastro desde aquí y escribo hola, puedo ver la variable que acabo de hacer. Casting es que puedes acceder a todo lo que hay dentro de este controlador de reproductor ahora porque tienes una referencia al mismo, esto es lo que se llama comunicación de planos Porque ahora estás en la base de jugadores y te estás comunicando con el controlador del jugador y puedes acceder a todo lo que hay dentro de aquí. Lo único que queremos hacer dentro de aquí es que queremos arrastrar. Y luego potenciamos, nunca recuerdo este nombre, es tan largo. Subsistema de reproductor local de entrada mejorada. Simplemente escriba Enhanced y selecciónelo aquí. A partir de esta vamos a arrastrar y decir agregar contexto de mapeo. Siga adelante y agregue el contexto de mapeo. Y recuerda conectar tu código de lo contrario no funcionará porque va a ir desde el evento, va a obtener esta referencia de Play Controller. Y luego va a agregar este contexto de mapeo a este plano Y recuerda que en el contexto de mapeo tienes que dar click aquí y seleccionar el contexto de mapeo que hiciste. Adelante y haz clic en Compilar. Y eso es en realidad. Ahora has agregado el contexto de mapeo al jugador y ahora puedes usar eventos y crear el movimiento. No obstante, en la siguiente lección, vamos a hablar de interfaces de blueprint Realmente no me gusta hacer casting porque el casting crea referencias calientes en el motor real cuando comienzas el juego. Por ejemplo, digamos que creaste un juego completo. Has lanzado, por ejemplo, 100 planos en tu juego Ahora se lanza en Steam. No obstante, para las referencias calientes, cuando un jugador abre tu juego antes de que cargue el menú principal y todo lo demás, va a cargar primero las referencias calientes. Si tienes, digamos 100, 200 en tu juego del casting, va a ralentizar tu juego porque necesita cargar todas las referencias calientes. Necesita cargar todos estos primero. Puede ejecutar tu juego. No estoy diciendo que nunca debas usar esto, porque hay casos que es ridículo no usarlo. No obstante, para este caso, lo que normalmente me gusta hacer es que me gusta hacer una interfaz de blueprint Y a partir de eso podemos comunicarnos con otros planos sin crear referencias calientes Entonces hagámoslo, hagamos nuestro juego más optimizado. Y también estoy tratando de mostrarte cómo lo haría normalmente de la manera avanzada, y realmente no me gusta enseñarte malas formas de hacerlo. Intentemos evitar el casting por ahora, y pasemos a la siguiente lección donde podamos reemplazar esta parte. 18. Interfaz de 3.07 Blueprint: Se utilizan interfaces de blueprint en lugar de calcular costos. Para una comunicación de blueprint, generalmente usamos interfaces de blueprint para que podamos evitar costos Y como puedes ver aquí en el jugador que hicimos en la base de jugadores, hicimos este costo y para evitar ocultar referencias que hay que cargar en el juego antes del menú principal y ralentiza el juego, creamos una interfaz de blueprint para evitar estos casting Sigamos adelante y creemos uno. Y veamos de qué se trata. Por encima en la carpeta de planos, voy a escribir, dar clic y hacer una nueva carpeta Y voy a llamar a éste interfaces o interfaz. Y vamos a entrar en esa carpeta dentro de aquí. Vamos a escribir click, ir a Blueprint y seleccionar Interfaz de blueprint Por lo general, para las interfaces, suelo llamarlas t como prefijo. En este momento hay que llamarlo a lo que está tratando de hacer referencia. Estoy tratando de hacer referencia a mi controlador de reproductor. Voy a llamar a este controlador de una reproducción. Voy a entrar de aquí y esta es la interfaz del blueprint Ten en cuenta que las interfaces de blueprint suelen ser difíciles para los principiantes, pero trata de entenderlas y en realidad es muy fácil de entender Solo intentemos hacer uno y veamos qué sucede dentro de una interfaz de blueprint Tienes esta vista, realmente no puedes hacer nada dentro de aquí. No se puede arrastrar ni hacer nada. Lo único que puedes hacer es por aquí en las funciones, puedes crear una función. La función que quiero hacer ahora si haces clic en dos en el teclado, puedes cambiar el nombre de este. Yo solo quiero llamarlo get player controller ref. Estoy intentando, con esta función, estoy tratando de obtener la referencia de los controladores del reproductor. que pueda evitar este casting de aquí por aquí. Voy a dar click sobre esta función que acabo de hacer. Voy a crear una salida aquí. En las salidas, voy a seleccionar la clase de blueprint a la que estoy tratando de hacer referencia Ahora estoy tratando de hacer referencia a mi contraataque de PC Player Controller Así es como lo llamamos. Y seleccione la referencia del objeto. Selecciona aquí en las variables que tienes para seleccionar la clase de blueprint a la que intentas hacer referencia Voy a llamar a este Controlador de Jugador. Y ahora esta función está terminada. Muy sencillo. Recuerda presionar y compilar aquí. Muy importante y seguir adelante y ahorrar. Ahora tenemos esta sencilla función. Ahora lo que podemos hacer con esto es ahora vamos a abrir el controlador. Si voy a planos y abro controlador del reproductor dentro de aquí, abramos el editor de planos completo y luego sigamos adelante y seleccionemos Configuración de clase En la configuración de clase aquí abajo, ahora puede agregar la interfaz del blueprint Hagamos click aquí y busquemos T. Aquí está, la interfaz que acabamos de hacer. Adelante y selecciónelo. Cuando seleccionas la interfaz del blueprint, podrías notar que por aquí a la izquierda, ves esta pestaña Ahora bien esta es una nueva pestaña que acaba de aparecer llamada interfaces. Dentro de aquí, puedes ver la función que acabamos hacer dentro de esta interfaz de blueprint Ahora ha aparecido cuando se agrega la interfaz del blueprint. Si haces doble clic en esta función y vas dentro de ella, ahora puedes establecer esta variable aquí. Creamos esta variable de control del jugador, pero ahora mismo está vacía. Lo que tenemos que hacer, tenemos que arrastrar de esto. Y luego escribimos auto. ¿Qué significa eso? Déjame hacerlo de nuevo. A lo mejor fue demasiado rápido. Dragón de aquí. Y escribir yo y luego seleccionar éste, obtener una referencia a uno mismo. Lo que eso significa es, permítanme volver aquí. Hicimos la interfaz de blueprint aquí e hicimos esa función dentro de ella aquí para las variables que seleccionamos, la variable a la que queríamos hacer referencia Ahora dentro del control del jugador, cuando agregamos la interfaz a través de la configuración de clase apareció aquí. La función dentro de aquí para esta variable estamos escribiendo auto. Lo que eso significa es que solo le estamos diciendo al motor qué es esta variable del controlador del reproductor. Porque si mantengo el control y hago clic aquí y lo desconecto, el motor nunca sabrá qué es esta variable. Si se mantiene así, está vacía, la variable está vacía y obtendrás era en tu juego. Pero si hacemos una autorreferencia, lo que eso significa es que significa esta variable es yo. Recuerda que estamos dentro del Controlador del Jugador. Básicamente estamos definiendo esta variable del controlador Player. Le estamos diciendo al motor que es este Player Controller en el que estoy ahora mismo. Es uno mismo. autorreferencia significa lo que Eva, clase de plano en la que estoy en este momento, que es el controlador Player Entonces lo acabamos de definir aquí. Adelante, compilar y guardar lo que podemos hacer ahora. Ahora ya terminamos con esto. Ahora podemos ir al jugador y sigamos adelante y eliminemos esto. Lo que podemos hacer ahora es que podemos arrastrar desde el controlador y luego escribir la función que le llamamos. Aquí está el nombre de la misma. Obtener la referencia del controlador del jugador, puedo arrastrar desde aquí y decir get layer. Y entonces se puede ver que aparece aquí desde la interfaz de blueprint que hicimos, Dice obtener referencia del controlador del jugador Esta es la función que acabamos hacer cuando dice mensaje al final, esto significa que proviene de una interfaz de blueprint Así que adelante y selecciónala. Este icono aquí, solo significa que proviene de una interfaz de blueprint. Y ahora lo tenemos. Ahora evitamos el casting, evitamos las referencias duras, y nuestro juego también es más optimizado en cuanto al rendimiento. Ahora puedes simplemente seguir adelante y conectarlo. Ahora sabe que este controlador de reproductor al que estamos haciendo referencia es nuestro controlador de jugador de contraataque para PC Porque toda esta variable en el contraataque de PC seguimos adelante y escribimos auto, en realidad ahora sabe de lo que estamos hablando aquí Esto podría ser un poco confuso para empezar si nunca antes has usado interfaces de blueprint, pero muy útil para evitar el casting Acabamos de crear la interfaz del blueprint. Luego seguimos adelante y seleccionamos la clase de planos a la que queremos hacer referencia Entonces dentro de la clase de blueprint que estamos tratando de hacer referencia, agregamos esa interfaz de blueprint y esta apareció Entonces dentro de aquí hicimos una autorreferencia. Y a partir de eso más adelante ahora ya podemos usarlo aquí donde podemos decir obtener el controlador y luego obtener la referencia del controlador del reproductor, así como así y evitar costos Muy bien, así que eso fue todo para la interfaz del blueprint. Vamos a tener más ejemplos en el futuro. Si esto fue un poco difícil, por favor eche un vistazo a mi servidor de Discord o eche un vistazo a Pixel Helmet.com Estoy muy, muy feliz de ayudarte 2047 Así que sigamos adelante y hagamos clic en Archivo Guardar todo. Y continuemos a la siguiente lección. 19. Movimiento de jugador en 3.08: Ahora que hemos agregado el contexto de mapeo de entrada al jugador, ahora podemos hacer el movimiento. Tenemos que escribir el nombre de las acciones de entrada que creamos. El primero que creé se llamó movimiento IA. Empecemos con esa. Lo que puedes hacer ahora aquí en el jugador, puedes escribir, hacer clic y escribir IA movement, el nombre de la acción de entrada. Y luego puedes dar click en este evento para crearlo. Recuerda, este símbolo significa que se trata de un evento. Así que adelante y créalo. Ahora tenemos este evento y parece un poco complejo, pero no realmente. Simplemente te dice, cuando el evento se desencadena, inicia, continúa, se cancela y se completa. Aquí no hay nada demasiado complejo. Ahora bien, ¿cuándo se desencadena este evento ? El evento se desencadena. Si vas al contexto de mapeo de entrada, recuerda que agregamos botones para nuestro movimiento. Si hago clic en W, se activará este movimiento. Ahora veamos si esto realmente funciona. Porque si no has agregado este código, este no disparará cadena de impresión correcta y solo imprimo un mensaje sencillo en la pantalla. Si hago clic en, por ejemplo, puedo dar click en play. Y si hago clic en, se puede ver que en realidad está imprimiendo a la pantalla. Ahora si hubiera desconectado esto y no agregué mi contexto de mapeo de entrada, y hago clic en Reproducir y hago clic en, puede ver que nada está imprimiendo a la pantalla y no está funcionando. Recuerda agregar esto a tu código. Bien, ahora que esto está funcionando, hagamos algo de movimiento. Para el movimiento para el jugador, usamos una función llamada Entrada de movimiento de anuncio, clic derecho, y escribimos entradas de movimiento, así es como agregas movimiento a un personaje. Vamos a conectarlo ahora. Ahora lo que te pide es, ¿en qué dirección quieres mover al personaje? Ahora hagamos el primero. Avanzar y retroceder. Lo que puedes hacer simplemente click derecho y derecho. Sin embargo, en el vector forward, este es el vector forward y podemos conectarlo aquí a la dirección mundial. Ahora bien, ¿cómo nos movemos hacia atrás? En realidad no necesitamos nada más. Esto es lo único que necesitamos. ¿Cómo es eso, cómo sabe cuando caminamos hacia adelante y hacia atrás? Esto se debe a este valor de escala. El valor de escala es uno, va a seguir adelante. Puedes ver aquí, si hago clic en jugar y hago clic en él se mueve hacia adelante. Si hago clic en este momento, realidad también avanza porque este valor de escala se establece en uno. Si lo configuro a menos uno y hago clic en Reproducir aquí y hago clic en, o puedes ver ahora se mueve hacia atrás. Cuando éste es uno, avanza, y cuando es menos uno, se mueve hacia atrás. Este es el valor de acción aquí. Podemos hacer clic derecho en esto y dividir el pin de estructura. O puedes tomar esto y romper vector dos D. Esto es en realidad lo mismo. Sólo voy a darle click derecho y decir estructura dividida. Ahora para esta x, puedes agregarla aquí al valor de la escala. En cambio, cuando haces clic en, avanzas. Cuando haces clic en, te mueves hacia atrás porque será menos uno. Recuerda en el contexto de mapeo de entrada, escribiste el modificador aquí para el, cuando presionas hacia atrás, escribiste o seleccionaste Negar, que simplemente invierte el movimiento Lo que significa que esto será menos uno cuando hagas clic en el bien. Este es el movimiento hacia adelante y hacia atrás. Esto ya está terminado ahora para la izquierda y la derecha, muy, muy simple. Puedes copiar esto y pegarlo y conectarlo aquí. Entonces para la dirección de la palabra, puedes escribir acorrightvector Y ya puedes conectarlo. Y ahora puedes conectarlo para la y sobre en el valor de la escala. Ahora recuerda organizar tu código. Puedes hacer doble clic aquí para hacer un nodo de reencaminar. Solo trata de mantenerte organizado. Haga doble clic en este también. Trate de mantenerse organizado. Así como así. Siempre es agradable mantenerse organizado porque puedes imaginar que tu código será muy grande más adelante. También puedes seleccionar todo y hacer clic en C en el teclado para crear un comentario. Por ejemplo, puedes escribir movimiento WASD y así sucesivamente. Por ahora no lo voy a hacer, voy a hacerlo un poco más tarde. Sí, este fue el movimiento. Ya puedes compilar y hacer clic en play. Pero en lugar de jugar dentro de la ventana gráfica, creo que es más fácil para ti para esta vista si juego en el editor en una nueva ventana del editor, haciendo clic aquí arriba, nueva ventana del editor, y va a aparecer así Ahora puedo jugar ahora déjame en realidad solo hacerlo un poco más grande. Haga clic en jugar, haciéndola más grande. Se puede ver ahora cuando hago clic en, sigo adelante. A medida que me muevo hacia atrás, si hago clic en D, me muevo hacia la derecha. Y si hago clic en, me muevo a la izquierda. Ahora puedo mover mi personaje con mi teclado. Muy, muy agradable. No obstante, ahora mismo todavía no podemos mover el ratón. Tenemos que agregar el código para eso también. Puedes hacer clic derecho aquí de nuevo. A este le llamamos IA look Input action. Tenemos que usar ese evento. Ahora puedes hacer clic derecho y escribir una mirada. Y luego podemos seleccionar ese evento. Ahora para buscar, tenemos que usar algo llamado agrega tu entrada, esto es mirar a izquierda y derecha. Y entonces tenemos el segundo llamado pitch Insumos, Este de aquí, este se mueve o mira hacia arriba y hacia abajo. Muy sencillo otra vez, haz clic derecho aquí, divide el alfiler troceado. Adelante y conecta la x aquí y la Y aquí. Y eso fue todo por esto muy sencillo, por mirar arriba y abajo e izquierda y derecha con el ratón. Vamos a compilar y vamos a hacer clic en play. Y voy a mover mi ratón. Ya ves que puedo moverlo de derecha e izquierda. No puedo moverlo hacia arriba y hacia abajo. Esto en realidad está en el brazo de resorte. Si hago clic en el brazo de resorte, tengo que tomar este llamado uso al control de rotación. Ahora puedo hacer clic en Reproducir. Y ahora puedes ver que puedo moverme arriba y abajo, izquierda y derecha. Sin embargo, cuando me muevo hacia arriba y hacia abajo, en realidad está invertida en comparación con lo que estoy acostumbrado. No estoy acostumbrada a moverme hacia arriba y hacia abajo al ratón así. Estoy acostumbrado a tenerlo todo lo contrario. Vamos al contexto de mapeo de entrada por aquí en el mouse Xy aquí. Para el modificador, voy a agregar un nuevo modificador y a la derecha negar, quiero invertir mi movimiento Y para el mouse haciendo clic en la flecha pequeña Para los negados, voy a quitar la X y la Z. no quiero invertir la X y la Z, solo quiero invertir la Y. Así que de nuevo, sólo voy a dar click en play Y ahora cuando me muevo hacia arriba y hacia abajo, en realidad es correcto. Entonces ahora cuando me muevo hacia arriba y hacia abajo, es correcto para mí. Y cuando miro a la izquierda y a la derecha también es correcto. Todo bien. Entonces este fue el movimiento. Y nuevamente, si algo es la forma opuesta a lo que estás tratando de moverte, siempre puedes entrar de aquí usando el negate e intentar invertir el movimiento Y cuando todo es correcto, este fue el movimiento muy, muy sencillo para nuestro personaje. Ahora podemos movernos y mirar con el ratón. No obstante, nos falta la animación. Y vamos a trabajar con eso en la siguiente lección. Así que adelante y guarda todo, y sigamos adelante. 20. 3.09 Importa las animaciones del jugador: Ahora que hemos terminado el movimiento del jugador, ya estamos listos para agregar algunas animaciones en esta página web. He incluido para ti algunos materiales del curso. Siga adelante y descargue los materiales de la corte y probablemente obtendrá esta carpeta de materiales del curso como una carpeta Sip. Solo asegúrate de extraer el contenido de la carpeta Sip. Ahora lo que podemos hacer aquí es entrar dentro de la carpeta Animaciones de Counter Strike. Este es un proyecto de Unreal Engine. He agregado todas las animaciones para ti que necesitas usar para el juego. Si solo sigues adelante y abres este proyecto, cuando hayas abierto este proyecto, esto es lo que verás. Tienes esta carpeta de animaciones. Dentro de aquí están todas las animaciones que necesitas para hacer el juego. Tienes algo de desplazamiento de animación cuando estás apuntando el arma y así sucesivamente. Para este, hagamos clic derecho en la carpeta de animaciones y luego seleccionemos migrar. Por cierto. Otro consejo aquí. Si hace clic con el botón derecho en un archivo en lugar de una carpeta, la migración se encuentra en Acciones de activos, y luego está aquí migrar. Esto es si quieres migrar solo un archivo, pero queremos migrar toda la carpeta. Haga clic derecho y migre. Y solo dale bien, aquí de nuevo, vamos a migrarlo a nuestra carpeta de contenido. Si vas al Multiplicar Shooter, esta es mi carpeta. Está dentro de los contras, strike project y luego ins content dentro del contenido. Aquí, nuevamente, solo selecciona la carpeta de contenido, selecciona cualquier otra carpeta, de lo contrario no funcionará. Sólo tienes que seguir adelante y seleccionar la carpeta de contenido. Seleccionar carpeta, y extraerá todas las animaciones o más a nuestro propio proyecto. Ahora que hemos terminado de migrar, volvamos a nuestro propio proyecto Dentro de aquí, puedes ver que ahora tenemos el proyecto de animaciones, y tenemos todas estas animaciones que hemos migrado Ahora vamos a transferir todas estas animaciones a nuestro propio personaje. Y posteriormente podremos eliminar estas dos carpetas que importamos. Además, para estas dos carpetas, en realidad voy a hacer clic y arrastrarlas al mercado solo para que sea un poco más limpio. A veces cuando arrastras carpetas de una a otra, y puedes ver en el mercado, ahora están aquí. Sin embargo, todavía están por aquí, y solo son carpetas vacías. No borró. Lo que puedes hacer, puedes seleccionarlos, presionar eliminar en tu teclado, y puedes ver que son redirectores de objetos Simplemente puedes ignorar eso y seguir adelante y eliminarlo. Ahora puedes ver que todavía no está borrando. Ocurre a veces en Unreal Engine. Puede hacer clic con el botón derecho en la carpeta de contenido y hacer clic en Reparar redirectores, y luego puede intentar eliminar nuevamente Si no borra, normalmente solo sigo adelante y cierro el proyecto. Y luego entro de mi propio proyecto aquí y la carpeta de contenido y solo los borro de aquí. Solo asegúrate de haberlos transferido a la carpeta Marketplace como puedes ver aquí. Sólo voy a eliminar estas carpetas vacías de la carpeta de contenido, y luego voy a abrir mi propia carpeta. Nuevamente, esto sucede a veces en Unreal Engine. Bien, entonces aquí volvemos a estar dentro del proyecto, y ahora que hemos importado nuestras animaciones, y las vamos a transferir a nuestro propio personaje. Y luego vamos a eliminar estas dos carpetas más adelante, pero pasemos a la siguiente lección. 21. 3.10 Crea equipos de IK: Antes de poder copiar las animaciones a nuestro propio personaje, tenemos que crear algo llamado una plataforma K. Pasemos a los planos. Y vamos a ir a la carpeta del reproductor aquí voy a click derecho y hacer una nueva carpeta llamada Animaciones. Y luego dentro de esta carpeta, podemos ir a animaciones. Aquí, aquí abajo vemos algo llamado K. Entonces tenemos que seleccionar esto en el amarillo llamado K rig. Normalmente los llamo, llamemos a este maniquí. Maniquí es el nombre del otro personaje que vamos a copiar las animaciones del maniquí K. Ahora puedes hacer doble click e inter aquí. Y lo que puedes hacer aquí ahora tienes que seleccionar una malla esquelética que quieras usar Voy a usar aquí este maniquí del que necesitamos copiar los artículos Puedes seguir adelante y seleccionar esta. Se puede ver que se llama en esa carpeta de referencias 01. Si puedes ver esa información ahí abajo en el enlace, si sigues adelante y das click en ella. Ahora este es el Maniquí, vamos a crear un rig IK para muy sencillo Por aquí en la interfaz IK rig tienes todas las animaciones como puedes ver aquí en el navegador de assets. Si puedes hacer doble clic sobre ellos, puedes ver las animaciones aquí en la ventana de retargeting IK Aquí hay que especificar los huesos de este personaje y luego también tenemos que especificar los huesos de nuestro otro personaje. Y entonces de esa manera podemos copiar animaciones de este personaje al otro. Porque hemos definido los huesos y motor honoral sabe copiar las animaciones Ahora sólo voy a dar click en reiniciar solo para que se queden quietos. Aquí en el IK re targeting. Lo que tienes que hacer es crear una nueva cadena. la primera cadena a la que vamos, sólo vamos a llamarla cabeza. Adelante y llámalo cabeza. En este momento no necesitamos seleccionar nada, solo encadenar. Así como así. Bien, ahora tenemos uno llamado cabeza. Sigamos sumando los otros. Voy a golpear una cadena de nuevo. Y esta va a ser llamada izquierda, izquierda, Y luego seguir adelante y crear una nueva llamada, derecha. Después crea uno nuevo, Leg left. Crea una nueva llamada pierna, ¿verdad? Entonces podemos crear una nueva llamada columna vertebral y una última llamada raíces. Bien, entonces estas son todas las cadenas que necesitamos crear. Cabeza, izquierda, pierna derecha, pierna izquierda, columna derecha y raíz. Ahora hay que especificar dónde comienza la cabeza y dónde termina, el hueso inicial y el hueso final. Lo que puedes hacer aquí, y de una manera muy, muy fácil, ahora sé que se llama. Si buscas aquí cuello, entonces puedes seleccionarlo aquí y termina en la cabeza. Ahora sé esto porque lo he hecho 100 veces. No obstante, si eres nuevo aquí o si tienes un nuevo personaje con huesos diferentes, porque recuerda, si tienes un artista haciendo esto por ti de manera personalizada en un software de tres D, ellos pueden llamarlo como quieran Hay que saber cómo se llama. Estos son solo los nombres de los huesos que suelen entrar en motores reales. Sé cómo se llaman. Qué puedes hacer aquí para poder ver sus nombres sin saber realmente cómo se llaman. Aquí puedes hacer clic en Mostrar realmente el personaje aquí. Da click en Carácter y ve a Huesos y selecciona todo Jerarquía. Esto lo hace para que puedas ver todos los huesos de este personaje. Lo que puedes hacer aquí, puedes hacer click aquí abajo. Ahora puedes ver que se llama Neck 01. Mi cabeza empieza desde el cuello 01. Si hago clic aquí arriba, a esta se le llama cabeza. El hueso final es la cabeza. Ahora hagámoslo por el brazo izquierdo. Ahora este es el brazo izquierdo aquí. Si estamos de pie así, este es el brazo izquierdo. Si puedes hacer click en el brazo izquierdo, empieza en el clevical, a la izquierda sobre el hueso de inicio es Levical dejó el No es realmente el final aquí en los dedos, sino donde empieza la mano, si haces clic aquí arriba, dice mano izquierda. El hueso final aquí. Vamos a seleccionar había dejado, así como así. Se había ido como el final. Ahora por la derecha, es lo mismo. Es solo Levi Coal, ¿verdad? Y luego la mano derecha para la pierna otra vez, puedes probarla como ejercicio, puedes pincharla en algún lugar de aquí arriba. Este es el muslo. Comienza desde el muslo aquí, buscando th solo voy a copiar esto. Muslo a la izquierda, y voy a pegarlo por aquí en la pierna derecha para que quede muslo izquierdo. Muslo derecho. La pierna termina aquí abajo. Si haces clic en él, termina en el pie seleccionador izquierda y abajo aquí, pie derecho. Ahora el último, columna vertebral, esto es muy fácil. Es la columna media de aquí. Comienza desde la columna uno y termina en la columna tres. Este es uno fácil. Buscando columna vertebral, se puede ver que parte de la columna vertebral uno y termina en la columna tres. La raíz se llama simplemente raíz. Puedes buscar raíces, solo llámalo root aquí también. Raíz, raíz. Esto es lo mismo, Es solo el hueso aquí arriba, El hueso de la raíz aquí abajo. Ahora ya terminamos con el retargeting de este personaje. Y lo que puedes hacer es que puedes clic derecho sobre la pelvis aquí. Muy importante. Ahora haga clic derecho en la pelvis y seleccione establecer raíz objetivo. Esto estabilizará este personaje. Y siga adelante y haga clic en Seguro. Bien, ahora que hemos terminado con este, lo que podemos hacer ahora es que podemos seguir adelante en la carpeta de animaciones. Encuentra tu IK Ric que acabas de hacer. Puede hacer clic derecho y luego realmente puede duplicar esto. Déjenme llamar a este jugador K. Este es el jugador. Ahora en lugar de hacer cualquier cosa aquí, lo que puedes hacer es simplemente seleccionar al jugador. Ahora por ejemplo, se puede seleccionar este macho undaterroristk. No tienes que volver a hacerlo. Se puede ver que ya está ahí. Todo está bien. Todo está bien. Ya está establecido como la ruta de retarget porque lo hicimos para la otra Podemos cerrar esta, pero ahora tenemos estas dos plataformas IK Con eso terminado, pasemos a la siguiente lección y creemos la retargeta IK 22. 3.11 Crea un redireccionador de IK: Ahora sigamos adelante y creamos el IK Targeta. Vamos a la derecha, mira aquí, dos animaciones. Y luego selecciona de nuevo el K C. Y seleccione el segundo llamado IK Targeta. Porque ahora estamos listos para copiar las animaciones de un personaje a otro, creando el retarget K. Voy a llamarlo IKR. Vamos a llamarlo jugador por ahora, IKR. Vamos a abrirla. Ahora te va a preguntar de qué IK Rick quieres copiar animaciones. Quiero copiar animaciones de mi maniquí en las que tenemos las animaciones Y quiero copiar animaciones a mi reproductor así como así. Se agregará estos dos caracteres para usted automáticamente. Ahora se superponen por aquí en la malla objetivo. Desplazar la x aquí. Voy a hacer click y arrastrar y simplemente mover a este personaje fuera del camino, algo así como 175 aquí en el eje x. Para que pueda verlas a las dos. Ahora dentro de la tageta IK, puedes ver, ahora puedo ver todas las animaciones aquí abajo en la cadena o en el navegador conjunto En el mapeo de cadenas, se pueden ver las cadenas que creamos para que funcione correctamente. Y generalmente lo hace correctamente de forma automática, solo asegurándose de que la raíz para la cadena objetivo, que es esta, la misma que la raíz de origen se empareja con la raíz, y la columna vertebral se empareja con la columna vertebral, y así sucesivamente. Solo asegurándose de que la pierna derecha, por ejemplo, no esté emparejada con la columna vertebral. Eso va a estar mal. Deben ser emparejados con el mismo hueso o cadena que creamos. Por lo general, Unreal Engine lo hace automáticamente correctamente. Pasemos ahora al navegador ácido , estas son las animaciones. Si haces clic en uno de ellos, por ejemplo, vamos a seleccionar este caminar ¿verdad? Se puede ver que es casi correcto. En realidad, voy a quitar estos huesos para que podamos verlo más correctamente. Si hago clic en Huesos de personaje y seleccioné solo ahora es casi correcto. No obstante, los brazos son muy raros, lo contrario todo lo demás parece funcionar correctamente. Podemos copiarlo casi sin embargo necesitamos corregir algo aquí. Voy a hacer click en Detener. Yo creo. Aquí, sí, da clic en Detener. Detendremos la animación. La razón por la que no está copiando correctamente es porque la posición para este personaje necesita ser la misma posición para este personaje. Y se puede ver que el brazo no está en la misma posición. Por eso está creando una era con los brazos. En esta animación, voy a golpear Detener aquí. Lo que podemos hacer es seleccionar uno de los huesos. Nuevamente, da clic en los huesos del personaje, todos en jerarquía. Para que pueda ver todos los huesos, y aquí están para estos huesos. Ahora lo que podemos hacer es hacer clic en el modo Editar. El modo de edición nos permite editar la pose de este personaje. Ahora puedes seleccionar uno de los huesos, por ejemplo. Simplemente puedes probarlo, Selecciona éste, intenta girarlo. Puedes ver que este no es el que debes rotar. Puede hacer clic en el control Z para volver atrás, y puede seleccionar el siguiente. El siguiente aquí. Si solo lo rotas hacia abajo, así así, pienso algo así como 50 grados. Creo que 40 grados es un poco demasiado. A lo mejor podemos probar -50 grados de esta manera. Para el otro, voy a hacer clic en el mismo hueso y luego girarlo -50 grados, así como así. Al igual que este tipo. También se puede ver que este tipo tiene una rotación en el hueso por aquí. Yo también tengo que hacerlo por aquí. Tengo que dar click aquí sobre este hueso. Entonces puedo girarlo tal vez como 30 grados. Y sólo trata de comparar estos dos. También haciendo clic en el otro, girándolo 30 grados, así como así. Solo trata de echar un vistazo desde arriba y comparar estos dos personajes. Bien, creo que se ven igual. Vamos a probar la animación y ver si realmente está funcionando. Voy a salir del modo de edición. Voy a esconder los huesos otra vez, sólo para ver cómo se ve sin los huesos. Y luego voy a dar click en una de las animaciones. Por ejemplo, en realidad vamos seleccionar uno donde esté caminando o corriendo. Eso es un poco mejor a la vista. Se ve que las manos es un problema en estos momentos, y creo que eso es porque giramos demasiado los brazos hacia abajo. Volvamos de nuevo en el modo de edición. Voy a ver todos los huesos, después voy a dar click sobre este hueso y girar un poco el brazo hacia arriba. Probablemente el tema, lo rotamos un poco demasiado hacia abajo Ahora echemos un vistazo. Volvamos del modo de edición. Da click en el frente aquí, déjame simplemente quitar el hueso para que pueda ver cómo se ve probando otras animaciones. Se puede ver que todo está funcionando correctamente. No obstante, el error aquí es ahora mismo son las manos, realidad no están funcionando correctamente. Sólo para asegurarme de que todo esté correcto, voy a detener las animaciones y voy a echarle un vistazo desde la perspectiva. Aquí. Desde la vista correcta. Simplemente echando un vistazo a estos dos personajes, solo asegurándome de que todo se vea correcto. También yendo a la vista frontal y asegurándose de que todo esté correcto para poder verlo mejor. Aquí podemos volver a hacer clic en el personaje, Huesos, y luego en toda la jerarquía. Para que podamos ver todos los huesos y aquí están. Se puede ver que hay una pequeña diferencia. Si puedes hacer clic en uno de los brazos y luego establecer el ajuste para la rotación, voy a configurarlo en cinco y luego ir al modo de edición Entonces déjame solo rotarlo aquí un poco. Entonces voy a girarlo ligeramente solo para que casi le quede la otra mano. Algo como esto aquí. Puedes dar click en el otro, y tampoco en este, este de aquí arriba. Y gírela para que se ajuste a la otra también. Ahora puedes volver a la vista en perspectiva, echar un vistazo a estos personajes. También puedes echarle un vistazo desde la vista superior para ver cómo se ven ambos. Y si se ven iguales, creo que en su mayor parte en realidad se ven iguales. Volvamos ahora al modo perspectiva. Lo que tenemos que hacer es que en realidad necesitamos arreglar las manos porque no se ven bien. Sólo podemos intentar ejecutar una animación. Por ejemplo, el caminar hacia atrás a la izquierda. Y voy a quitarle todos los huesos para poder verlo. Se puede ver que se ven bien. Ambos. No obstante, las manos están un poco estropeadas. Entonces tenemos que arreglarlo. Pasemos a la siguiente lección y arreglemos las manos antes de copiar las animaciones. 23. 3.12 Arregla las manos: Ahora sigamos adelante y arreglemos los dedos. Antes de copiar las animaciones, hagamos doble clic en este maniquí K rig Ya he añadido las cadenas. Puedes ver aquí, hay que agregar cadenas también para los dedos. Si quieres que los dedos funcionen igual que las otras partes del cuerpo, solo tienes que seguir adelante y agregar los mismos. El pulgar aquí, este pulgar aquí. Y luego tienes el dedo índice, el dedo medio, el dedo anular, y luego el rosa aquí. Hay que agregarlos, todos de nuevo, pulgar izquierdo, pulgar derecho, índice izquierdo, índice derecho, izquierdo, medio derecho, anillo, izquierdo, anillo, derecho y meñique izquierdo y meñique, Sólo tienes que seguir adelante y agregarlos. Sólo voy a mostrarte los dos primeros sobre cómo puedes encontrarlos de nuevo, y luego voy a sumar el resto de ellos. El primero aquí, el pulgar, puedes dar click sobre el primero aquí. Se puede ver que este es el pulgar 01, ¿verdad? Puede hacer clic aquí y buscar el pulgar. Se puede ver que comienza con el pulgar 01. Este es el de la izquierda. Tenemos que seleccionar el pulgar. 01, Izquierda, pulgar derecho. Termina en el pulgar 03, izquierda. También puedes dar click aquí para ver el nombre, pero es muy fácil para estos dedos, el mismo derecho, puedes buscar pulgar, seleccionar el correcto. Termina en el 033, por aquí en el dedo índice, puedes hacer click sobre él. Comienza con el índice 01. Se puede ver por las manos, en realidad son sencillas. Si simplemente da clic aquí y busca índice, puede ver el índice 01 para la izquierda, uno para la derecha, 1203 para el derecho 101203, uno izquierdo y uno derecho. Por aquí en el dedo medio, puedes hacer clic en el dedo medio. Comienza con el 01 medio. Yo sólo voy a seguir adelante y agregarlos todos aquí. Ahora los he agregado todos y podemos seguir adelante y dar clic en Guardar. Y puedes verlas todas aquí. Justo como lo que hicimos aquí arriba. Bien, entonces ahora lo que puedo hacer, puedo cerrar esto. Ahora en vez de agregar lo mismo por aquí, sólo voy a eliminarlo. Yo sólo voy a borrar esta. Y haciendo clic en Bien. En realidad te va a dar una época porque se agrega a esta plataforma IK. Yo solo voy a eliminar esta plataforma IK también. Ahora dice que aquí hay algo corriendo y no estoy seguro de lo que quiere. Estoy tratando de salvar el proyecto. Al hacer clic en la carpeta de contenido, arreglar redirectores, volver a las animaciones del reproductor e intentar eliminar De hecho, eliminemos este. K jugadores me van a dar esto. De hecho voy a cerrar el proyecto e intentar abrirlo de nuevo para ver si funciona. Bien, aquí estamos otra vez. Voy a borrar esta. Y ahí va. A veces Unreal Engine te da algunos errores aleatorios No eliminemos el objetivo de IK, solo hagamos que se quede aquí. Voy a hacer clic derecho y duplicar mi maniquí IK y llamarlo jugador IK como antes, entrar de aquí y simplemente cambiar este maniquí con nuestro propio antiterrorista Así como así, todo está bien. Nosotros con guardar. Volvamos al objetivo de IK. Ahora mismo para el retarget de IK, asegúrate de que el maniquí IK sea la fuente y que el objetivo sea el jugador Entonces todo se ve bien. Vamos a intentarlo de nuevo. Intentemos ejecutar una animación. Si caminamos hacia atrás a la izquierda, por ejemplo. Y solo voy a esconder todos los huesos para poder ver realmente lo que está pasando. Se puede ver que tampoco se ve bien. Sospecho que las cadenas no están mapeadas. Si haces clic en el mapeo de cadenas, tal como te dije antes, tienen que ser similares, puedes ver que en realidad no son lo mismo aquí, tengo que vincularlos. En lugar de hacerlo manualmente, intenta dar click aquí y haz clic en Mapa Todo Exacto. Y puedes ver que los mapea todos para ti. Ahora veamos cómo se ve. Ya puedes ver que es mucho mejor. En realidad es sostenerlo, igual que el otro jugador, no solo sujetando los dedos al azar. Aquí están, arreglamos el mapeo de cadenas. Ahora puedes ver que la mano para este jugador está torcida, como puedes ver aquí. Está retorcido por aquí. Sin embargo, en realidad no es tu problema, es solo cómo se hace el personaje. Se puede ver que está un poco desordenado en esta parte del brazo. Está bien. No eres realmente tú quien ha hecho algo malo. Juguemos un par de animaciones solo para asegurarnos de que todo esté correcto antes de continuar. Y solo echándole un vistazo y todo se ve bien, incluso se puede ver que este dedo en gatillo se sostiene correctamente, igual que este otro dedo gatillo también. Bien, así que siempre nos puede gustar, si quieres que los brazos y las manos sean 100% como este jugador, igual que antes te lo dije antes, puedes ir a editar, mover ligeramente los dedos alrededor si deseas recordar hacer clic en los huesos del personaje y toda la jerarquía y puedes intentar moverlos un poco si hay algo con lo que no estás satisfecho. Y luego puedes seguir adelante y simplemente reproducir una animación. Echa un vistazo a cómo se ve, pero creo que por ahora esto se ve muy bien. Antes puedes imaginar, o puedes recordar, que los brazos volaban hacia arriba. Ahora todos están bien y los dedos están funcionando también. Bien, entonces con eso, hagamos clic en el personaje. De nuevo, voy a esconder todos los huesos porque en realidad ya no necesito verlos. Y ahora vamos a guardar el proyecto, y pasemos a la siguiente lección donde copiamos las animaciones. 24. 3.13 Retargeting de las animaciones: Ahora estamos listos para copiar sobre las animaciones. Pasemos al IQ Targeta. Dentro de aquí, se puede ver cuando hago clic en las animaciones, igual que en la lección anterior, todo está funcionando bien. Ahora estamos listos para copiar todas las animaciones. Lo que puedes hacer, esto es muy sencillo. Puedes hacer clic en el primero y bajar seleccionar el último y simplemente seguir adelante y hacer clic en las animaciones seleccionadas. Ahora tienes que seleccionar una carpeta donde quieras guardar estas nuevas animaciones. De hecho voy a crear una nueva carpeta. Para mantenerme más organizado, voy a hacer una nueva carpeta y llamarla Activos. Esto es lo que suelo hacer por mis juegos. Puedo escribir click aquí y sigamos adelante y llamemos a las nuevas animaciones de carpetas. Y luego puedes seguir adelante y dar click en Exportar. Y ahora estamos exportando estas animaciones aquí, y ahora está terminada. Ahora bien, si minimizo y repaso a mis animaciones assets, ahora puedes ver que están todas aquí. Si solo hago clic en una de ellas, puedes ver que está trabajando con nuestro personaje. Esto se ve muy bien. No, no creo que sean todas las animaciones que puedo ver aquí. Y esto es porque no están usando el mismo maniquí. Si vuelvo a, veamos aquí, el jugador y si vuelvo a mi K targeta, este maniquí de aquí, puedes ver si sostengo mi K targeta, este maniquí de aquí, el mouse sobre él, está usando la malla esquelética de la carpeta de referencia 01 Puedes ver aquí ahora mismo son solo las animaciones para la pistola. Puedo ver que por aquí en la carpeta de animaciones assets, hemos copiado todas las animaciones de pistola. Se puede ver al final se les llama pistola. Sin embargo, sí tenemos más animaciones. Puedes ver si vas a la carpeta de otras animaciones que importamos, tienes el desarmado y también el rifle No los podemos ver. ¿Y por qué es eso? Sólo podemos ver las de pistola. Esto se debe a que los otros en realidad están usando otros maniquíes para el rifle Si solo sostienes el mouse sobre él, puedes ver que está usando el esqueleto de la carpeta de referencias 02, en realidad está usando otra Manequin Lo que podemos hacer es volver al maniquí K dentro de aquí Podemos dar click en éste. Si solo sostienes el mouse sobre los otros maniquíes que tengas, por ejemplo, este, dice que este es de la carpeta de referencias 02 este momento estamos usando el maniq de las referencias 01, haciendo clic en el segundo maniquí Ahora adelante y haz clic en Guardar. Pasemos al objetivo K. Ahora se puede ver en las animaciones todavía hay la pistola. Lo que tenemos que hacer es simplemente hacer clic en esta flecha solo para restablecerla. Después voy a hacer clic de nuevo y seleccionar el maniquí IK. Y seguir adelante y golpear Guardar. Ahora puedes ver que ya no es la pistola, son todas las animaciones de rifle para seguir adelante y seleccionar todas las animaciones de rifle. Exportar animaciones seleccionadas. Y voy a volver a exportarlos en la carpeta de animaciones. Adelante y exportarlos cuando hayan sido exportados. Voy a volver a mi maniquí IK. Voy a seleccionar el Maniquí de la carpeta referencias 03, puedes guardar Regresa a la Ktageta. Voy a hacer clic en la flecha nuevamente aquí arriba para restablecerla. Entonces voy a seleccionar de nuevo el maniquí, y solo asegurarme de que al final diga UA, lo que significa Estas son todas las animaciones desarmadas. Y puedes pinchar sobre él para ver cómo se ve. Adelante y selecciona todos de nuevo. Y continúe y haga clic en Exportar animaciones seleccionadas, y vuelva a exportarlas en la carpeta de animaciones. Golpear Exportar. Ahora vamos a cerrar todo, y echemos un vistazo a la carpeta de animaciones. Ahora tienes todas las animaciones aquí. Para que veas cuando haces clic en ellos, se ven un poco tontos. Y esto no es porque hayamos hecho algo mal, en realidad es la animación la que se ve un poco tonta, en mi opinión, Pero está bien. Realmente no tenemos mejores animaciones. Y estos son gratis, y podemos usarlos. Así que puedes ver aquí todas estas animaciones realmente, muy bonitas. Y podemos usarlos para crear nuestro juego. Bien, entonces ahora todo está funcionando para el personaje. Y se puede ver que todo se ve genial. Y a veces podemos ajustar algunas de estas animaciones. puede ver cuando mira al suelo, es demasiado en el suelo, en mi opinión. Y podemos ajustar eso más adelante. Pero se puede ver que todo está funcionando bien. Y así es como se copian animaciones de un personaje a otro. Así que sigamos adelante y golpeemos Guardar, y pasemos a la siguiente lección. 25. 3.14 Introducción a Blend Spaces: Bien, así que sigamos adelante y creamos un espacio de mezcla. Y un espacio de mezcla solo se usa para combinar dos animaciones juntas. Y podemos usar eso en el plano de animación. Más tarde. Se puede ver yo solo seguí adelante y coloreé mi carpeta de planos solo para verla o localizarla más rápido De nuevo, recuerda que puedes hacer esto seleccionando todas estas carpetas. Haga clic derecho en Ir a Establecer color, y luego haga clic en Nuevo color y solo seleccione el color. Así es como pones colores en las carpetas. Ahora, dentro de la carpeta de planos en las animaciones. Sigamos adelante y haga clic derecho aquí. Ve a Animación y selecciona este llamado espacio de mezcla. Nuevamente, un espacio de mezcla es donde puedes combinar dos animaciones juntas. Por ejemplo, la animación inactiva y la animación de ejecución. Podemos utilizarlos más adelante en el plano de animación. Sigamos adelante y creémoslo por ahora. Ahora te pide que escojas un esqueleto. Tienes que escoger el esqueleto para tu personaje. Para este voy a seleccionar el estilo MW. Este es el antiterrorista y este es el terrorista. Voy a seleccionar al antiterrorista porque recuerden en las animaciones que en realidad reorientamos las animaciones a este antiterrorista Voy a seleccionar el esqueleto antiterrorista. Llámalo BS por espacio de mezcla. Entonces sólo voy a llamarlo correr después de eso. Normalmente lo llamo, por ejemplo, éste voy a hacer los espacios de mezcla desarmados porque más adelante vamos a hacer la carrera con el rifle y la carrera con la pistola también A éste se le llama correr armado. Vamos a hacer doble clic en él cuando lo abras. Este es el espacio de mezcla. Por aquí a la izquierda, tienes un panel de detalles dentro de aquí. Se pueden hacer cosas como suavizar la animación, la velocidad de movimiento, la dirección , etc., pero vamos a trabajar más con eso más adelante. Aquí abajo, muy, muy importante, tienes una gráfica. Y aquí agregas todas tus animaciones. Aquí es donde combinas las animaciones, y lo vamos a hacer en la siguiente lección a la derecha. No te preocupes demasiado por ello. Realmente no tenemos mucho que hacer dentro de aquí. Pero aquí abajo se pueden ver todas las animaciones. Si solo haces doble clic en uno de ellos, por ejemplo éste, haz doble clic en éste, puedes ver todas las animaciones aquí dentro de este reproductor de animación. Si haces doble clic en él, podrás ver que estás fuera del espacio de mezcla. Ahora no puedes ver esta gráfica si solo te desplazas por ahí. O bien puedes simplemente abrirlo de nuevo aquí haciendo clic aquí. Pero ahora también se puede ver con las animaciones. Se puede ver aquí abajo. Este es el color para el espacio de mezcla. Puedes hacer doble clic en él y abrirlo de nuevo, así como así. Muy, muy sencillo. Así es como lo hacemos. Y podemos, por ejemplo, hacer clic y arrastrar una animación. En realidad no usemos estos. Estos son un desplazamiento. Usemos estas animaciones. Vamos a trabajar con el offset de Aim más adelante. Vamos a trabajar con una de las animaciones. Puede hacer clic y arrastrar, colocarlos en la gráfica. Y entonces se puede ver que este tipo ahora camina automáticamente. Y puedes arrastrar otra animación y simplemente colocarla en algún lugar. Y ahora se puede ver que en realidad se están fusionando. Si mantienes el control en tu teclado y solo mueves el mouse de aquí a aquí, puedes ver que ahora se están fusionando. Bien, realmente genial. Por ahora, esto era sólo un ejercicio. Hagamos clic en éste, haga clic en Eliminar en el teclado. Da click en éste, haz clic en Eliminar en el teclado. Sigamos adelante y ahorremos. Y comencemos desde la siguiente lección, donde agregamos espacios de mezcla desarmados 26. 3.15 espacios de mezcla sin armas: Ahora estamos listos para crear los espacios de lentes desarmados. Empecemos por aquí. Con lo que suelo empezar es por aquí en el panel de detalles. Tenemos un eje horizontal y un eje vertical. Si simplemente da clic en las flechas pequeñas, podrá ver toda esta información. Por lo general en el eje horizontal, tenemos la dirección del movimiento. Sólo tienes que seguir adelante y llamarlo dirección de movimiento. También se puede ver que cambia de nombre. Aquí abajo aquí arriba tenemos la velocidad de movimiento. Este es el eje vertical. Vamos a llamarlo velocidad de movimiento. Ahora para la dirección del movimiento, vamos de un valor mínimo a un valor máximo. El mínimo es menos 180 grados, el máximo es de 180 grados. Es así como podemos girar 360 grados. Ahora para la velocidad de movimiento, por lo general lo que hago aquí, por ejemplo, esta es la carrera. Si pasamos al personaje, si hacemos clic en el jugador y hacemos clic en la base de jugadores, dentro de la base de jugadores, hacemos clic en el componente de movimiento. Aquí se puede ver que la velocidad máxima de caminata, que también es la velocidad de carrera, es de 600 en este momento. Por lo general, lo que hago es colocarlo aproximadamente la mitad de lo que aquí está escrito. Porque si escribes 600, entonces tienes que alcanzar la velocidad de 600 antes de poder hacer la transición completa a esa animación. Quieres hacer la transición a la animación de carrera, suelo escribir 300 porque cuando llego a la velocidad de 300, lo cual hago muy rápido porque mi velocidad máxima es 600, luego hago la transición a la velocidad de carrera mucho más rápido. Normalmente solo lo hago más bajo de lo que es. Sólo voy a escribir 300 para éste, para la dirección del movimiento. Voy a aumentar aquí las divisiones de grid porque tengo más animaciones que cuatro. Voy a escribir ocho. un movimiento de ocho direcciones. Ya pueden ver aquí tengo más líneas. Y así es como queremos que sea. Ahora bien, esto es lo único que quieres hacer dentro de aquí. Vamos a hacer clic en guardar para este detalle spanel por ahora. Ahora por aquí en la gráfica, ahora lo que puedes hacer es ahora mismo queremos hacer la animación de carrera para los desarmados de aquí abajo a la velocidad de cero Aquí es donde tienes la animación inactiva a la velocidad de cero. Sólo estamos parados. Ahora, por aquí, si buscamos ociosos, este llamado ocioso armado. Tomemos esta. Inactiva, desarmada, vamos a arrastrarla. Y tenemos que bajarlo aquí, donde la velocidad de movimiento es cero. Ahora bien, si mantienes el turno en tu mouse mientras lo arrastras, puedes ver que encaja a la cuadrícula. Y esto es lo que quiero. Quiero cortarlo aquí abajo. Si lo colocas, puedes ver el personaje ahora está inactivo con una animación inactiva Ahora vamos a hacer clic y arrastrar esto de nuevo. Mantenga el turno para chasquearlo. Simplemente siga adelante y haga clic y arrástrelo a todos estos puntos de la cuadrícula aquí abajo. Solo toma la animación ociosa hasta aquí. Es solo la animación inactiva porque la velocidad es cero. Ahora por aquí, cuando la velocidad esté llena, toma la animación de carrera. Si solo busco correr ahora mismo estamos en el desarmado. Si solo vas aquí, puedes ver que este se llama es adelante. B significa al revés. B L por ejemplo significa atrás a la izquierda, y B R significa atrás a la derecha, y así sucesivamente. Para este queremos la carrera hacia adelante, pero estando desarmados, correr hacia adelante aquí Y se puede ver este llamado desarmado. Puedes arrastrar esta otra vez, mantener el turno, y ponerla aquí arriba. Ahora bien, si sostienes el control en el teclado y mueves el mouse, puedes ver que puedes hacer la transición de la animación de Ale. Y si mueves el mouse mientras mantienes el control en tu teclado, puedes hacer la transición a este. Se puede ver cómo se ve. Y esto es lo que es un espacio de mezcla. Ahora por aquí, en realidad voy a dar click en este botón para mostrarte los nombres de las muestras, que veas lo que he para que veas lo que he colocado y te será más fácil también. Así que por aquí, en lugar de buscar corrida, en realidad voy a buscar desarmado así como así Creo que será más fácil para mí y puedo ver todas mis animaciones de correr desarmadas Entonces por aquí a la derecha, tenemos el frente derecho. Este llamado frente a la derecha. Lo voy a dejar caer aquí. Entonces tenemos el derecho por aquí. Voy a tomar el que se llama bien. Déjalo caer aquí. Entonces esta está de vuelta, ¿verdad? Voy a tomar la parte de atrás. Justo al final, en la esquina está el movimiento hacia atrás. Estoy tomando la parte de atrás y la pongo aquí para que veas si tengo el control y me muevo hacia ella lentamente. Puedes ver que mi personaje está en transición. Así como así, todo se ve correcto. Él camina hacia atrás y luego camina de regreso. Para este es justo lo contrario de esto. Este es el lado izquierdo, por lo que corriendo de frente a la izquierda. Entonces voy a tomar este de delante a la izquierda, mantener turno, colocarlo y éste queda a la izquierda. Voy a encontrar a la izquierda y luego atrás a la izquierda, recogiendo esta llamada atrás a la izquierda y esta volvió a llamar otra vez. Al igual que en la otra esquina tenemos el movimiento de espalda aquí y también tenemos el movimiento de espalda aquí. Porque estamos dando la vuelta de 360 grados. Bien, entonces esta es mi animación y todo se ve correcto. Entonces así es como se supone que debe ser. Entonces tenemos el movimiento frontal, y luego tenemos los movimientos de izquierda y los movimientos de derecha. Y ahora en realidad estamos terminados con el correr en el brazo, para que puedas mantener el control. Mira cómo se ve cuando haces la transición. Ahora tienes que hacer esto con los otros también. Entonces sólo voy a compartirte un ejemplo más rápido. Sólo voy a pasar por ello rápido. Ahora, si solo regresas a las animaciones del jugador, hagamos clic derecho, vayamos a animaciones, hagamos un nuevo espacio de mezcla. Selecciona de nuevo el personaje, el esqueleto que creamos, llámalo PS. Esta vez lo voy a llamar agacharse porque ahora estamos agachados Y otra vez, llámalo no armado. El último, vamos a hacer clic derecho de nuevo. Vamos a la animación. Ve al espacio de mezcla, selecciona el esqueleto. Este S caminar porque ahora estamos caminando y lo llamamos desarmado Esta la tenemos que hacer también. Al hacer clic de nuevo en la agachada, por aquí en el eje horizontal, tenemos la dirección del movimiento Entonces tenemos la velocidad de movimiento. Como el movimiento, estamos pasando de menos 180 a 180. La división de cuadrícula es de ocho, porque tenemos ocho movimientos que necesitamos sumar aquí abajo para la velocidad de movimiento. Nuevamente, esta es para los agachados. Ahora, agacharse es mucho más lento que la velocidad de caminar. De nuevo, puedes regresar si quieres a la base de jugadores. Haga clic en el componente de movimiento y eche un vistazo a la velocidad de agacharse En este momento son 300. Sólo voy a ponérselo a 150, la mitad de eso por ahora. Como más adelante vamos a cambiar todo este movimiento porque tenemos que poner a prueba al jugador en el juego y ver qué tan rápido está corriendo. Y siempre podemos entrar aquí y cambiar este valor aquí, ¿de acuerdo? Ahora que tenemos eso por aquí a la derecha, ahora necesitamos esto es el agacharse, agacharse armado Sólo vamos a escribir subrayado brazo, tenemos todos estos agachados El primero es el inactivo. Voy a tomar este , anim agacharse ocioso. Voy a mantener turno, colocarlo aquí abajo. Simplemente haga clic y arrastre el mismo inactivo agachado en todos estos puntos aquí abajo. Porque nuevamente la velocidad de movimiento es cero. Sólo estamos al ralentí. A continuación tenemos el movimiento frontal. Aquí vamos a tomar el frente, frente desarmado. Entonces por aquí está el movimiento correcto. Este es frontal, derecho, arrastrando adelante a la derecha. El otro lado es delantero izquierdo, delantero derecho, delantero izquierdo. Entonces tenemos el derecho aquí, el derecho y el izquierdo está del otro lado. En este está de vuelta a la derecha, arrastrando hacia atrás a la derecha. En el otro lado está atrás a la izquierda. Y entonces tenemos el movimiento de espalda en estos lados. Podemos volver a tener el control. Mira cómo se ve. Todo se ve bien. Adelante y ahorra. Y yo sólo voy a hacer el último y me pondré en contacto contigo. Bien, entonces aquí he terminado el andar y puedo habilitar las etiquetas para que veas lo que hacía justo antes. Los movimientos de derecha, los movimientos de izquierda, y también el inactivo aquí abajo. Nada nuevo. Sigamos adelante y ahorremos, y sigamos adelante y cerrémoslo. Y aquí tenemos todos los espacios de mezcla para el movimiento desarmado Ahora más adelante, también tenemos que crearlo todo de nuevo para el rifle y para la pistola, pero no nos preocupemos por eso por ahora. Vamos a saltar al plano de animación. 27. 3.16 Introducción a los planos de animación: Ahora estamos listos para trabajar con planos de animación. Sigamos adelante dentro de la carpeta de planos. Voy a ir dentro de la carpeta del reproductor. Carpeta de animación. Aquí. Voy a hacer click derecho, ir a Animación. Y luego seleccione este llamado blueprint de Animación. Ahora tenemos que seleccionar el esqueleto para el jugador para el que lo estamos haciendo. Lo estoy haciendo para este Cando Terris ahora mismo. Voy a seguir adelante y seleccionar el esqueleto. Adelante y haz clic en Crear. Vamos a llamarlo un jugador MBP. Ahora hagamos doble clic y abramos este plano de animación Un plano de animación consta de dos partes. La primera parte es esta gráfica de animación. Dentro de este gráfico de animación, conectamos las animaciones y puedes ver si sostienes el clic derecho aquí, puedes desplazarte dentro de este gráfico de animación, conectamos las animaciones aquí. Y la segunda parte es esta gráfica de eventos. Dentro del gráfico de eventos, escribimos el código para el movimiento. Tenemos la parte de código, y luego tenemos la parte de animación donde agregamos las animaciones. Empecemos de nuevo aquí en el gráfico de animación, puedes ver a la derecha tienes todas las animaciones que puedes ver aquí. Incluso puedes hacer clic y arrastrarlo al gráfico de animación y puedes conectarlos y compilarlos y así sucesivamente. Y puedes ver cuando lo conectas, puedes ver ahora el reproductor está inactivo y puedes ver la animación Ahora estamos trabajando con espacios de mezcla de animación, no solo estas animaciones aquí. Eliminemos esta. En lugar de simplemente conectar una animación aquí, hagamos clic derecho y busquemos la máquina de estado Seleccionemos esta máquina de un estado. Adelante y cámbiale el nombre a éste. Voy a llamarlo Movimiento desarmado, porque más adelante vamos a tener movimiento con la pistola y movimiento con el fusil también Tomemos esto y lo conectemos aquí, y vamos a compilar. Y se puede ver que recibe una advertencia porque ésta está vacía en estos momentos. Hagamos doble clic en esta máquina de estado que creamos dentro de aquí. Si haces clic y arrastras desde esto, no tienes muchas cosas que puedas hacer aquí. Lo único que queremos hacer es simplemente crear este estado. Haga clic en un estado, y llamemos a este funcionamiento inactivo. Y ahora podemos ver que tienes este estado. Ahora bien, si haces doble clic en este estado dentro de aquí, ahora puedes agregar la animación. Vamos a golpear este movimiento desarmado de carrera aquí. Este es con el que estamos trabajando ahora mismo. Vamos a enchufarlo y hagamos clic en Compilar. Ahora se puede ver que la época ha desaparecido ahora. Si quieres volver al gráfico de animación, puedes dar click aquí arriba. Se puede ver que no tiene ficha. Solo tienes que dar click aquí arriba y vuelves al gráfico de animación. Se puede ver que la época ha desaparecido. Hemos conectado el movimiento desarmado dentro de aquí. Y tenemos este estado, el estado de funcionamiento inactivo. Más adelante vamos a crear más estados. Por ejemplo, si arrastras al estado, vamos a crear el estado agachado, y luego vamos a crear otro A lo mejor queremos crear el estado del paseo y así sucesivamente. Pero por ahora, solo el estado de funcionamiento inactivo. Dentro de aquí, tenemos este espacio de mezcla que creamos antes. Ahora podemos ver que el espacio de mezcla quiere tomar dos entradas. Si vuelvo al espacio de carrera dentro de aquí, se puede ver que creamos la dirección del movimiento y la velocidad de movimiento. Esto es lo que quiere. Quiere estos dos valores. Ahora bien, si solo escribo un número estático aquí en la velocidad de movimiento, por ejemplo, digamos que me estoy moviendo con una velocidad de 400. Y si compilo, se puede ver que el personaje está funcionando correctamente. Si solo cambio la dirección también, por ejemplo, escribiendo 90 grados, podemos compilar que también está funcionando correctamente. Muy bien, muy guay. Ahora realmente no queremos números estáticos aquí, queremos calcularlo a través de código en el gráfico de eventos. Sigamos adelante y hagamos eso en la siguiente lección. Vamos a compilar por ahora, escribiendo 00 de nuevo aquí. Vamos a guardar todo y sigamos adelante. 28. 3.17 Velocidad y dirección del movimiento: Para calcular la velocidad de movimiento y la dirección del movimiento, sigamos adelante y entremos en la gráfica de la camioneta. Ahora dentro de aquí, en lugar de comenzar desde aquí, hagamos clic derecho ahora y busquemos inicializar Y seleccione este llamado Blueprint Initialize Animation Este evento es, es igual que la jugada de inicio. Si recuerdas, si vuelvo a la base de jugadores, usamos esta llamada la jugada de inicio. ¿Qué debería pasar si empiezo a jugar el juego? Ahora en los planos de animación, esto se acaba de llamar blueprint, Inicializar ¿Qué sucede cuando inicializas este plano? Eso es lo mismo aquí. Qué quieres hacer, toma esta función aquí, intenta conseguir dueño de peón Dirigimos desde aquí y digamos que es válido. Y seguir adelante y seleccionar éste con el signo de interrogación es válido. Ahora nos preguntamos si el jugador es válido, si el jugador ha engendrado en el mundo Si el jugador ha engendrado, queremos hacer clic derecho sobre esta promocionada a una variable y llamarla peón jugador y seguir adelante y conectarse a la es válida Ahora lo que simplemente estamos haciendo aquí es que solo estamos preguntando a este peón aquí es que este jugador tiene este jugador engendrar al mundo Te puedes imaginar contraataque. Cuando te conectas, tienes que seleccionar si quieres ser terrorista o antiterrorista. Ahora bien, si el jugador aún no ha seleccionado a un terrorista o antiterrorista, el jugador aún no ha engendrado al mundo No tiene sentido hacer todo este código de animación si el jugador ni siquiera ha generado todavía. Solo estamos comprobando si el jugador ha engendrado, si el jugador es válido, si el jugador está colocado dentro del mundo Si no, queremos esperar. Solo escribamos delay aquí y seleccionemos este retraso. Vamos a retrasar el código digamos 0.3 segundos. Por ejemplo, cuando este retraso esté completo, vamos a correr. Esto vuelve a ser válido porque si el código no es válido, si el jugador aún no ha generado, no queremos quedarnos atascados aquí Si aquí no agregamos nada, el código sólo va a parar. Y no quiero eso, quiero que esta variable pon jugador se establezca cada vez que el jugador reaparezca. Voy a seguir comprobando si el jugador ha engendrado. Voy a retrasar el código si no es válido y luego voy a volver a ejecutar esto de nuevo. Y ahora podemos hacer doble clic en éste para crear re, rutear nodos con el fin de hacerlo un poco más organizado. Algo así. Aquí seguimos retrasando el código si el jugador no ha generado, hasta que el jugador genere y creará esta variable de dolor de jugador Ahora podemos tomar esta variable de peón jugador , podemos colocarla aquí Si lo tomas aquí, puedes obtener la variable o establecer la variable. Ahora para simplemente hacerlo rápidamente, puedes mantener el control y arrastrarlo en eso lo conseguirá automáticamente. Si mantienes Alt y lo consigues aquí, establecerá la variable. Estos son solo atajos, manteniendo presionado el control y manteniendo presionado Alt mientras los arrastras. Bien, entonces estamos obteniendo esta variable de peón jugador. Ahora vamos a hacer clic derecho esta variable y convertirla en una validada todavía. Ahora lo que hace esto es ahora conectémoslo aquí. Lo que esto hace es de nuevo estamos comprobando si el jugador es válido, si el jugador ha empeñado Solo para asegurarnos de que estamos ejecutando este código solo cuando el jugador haya generado Porque se puede ver si compilo ahora, ahora el código se está ejecutando. Y se puede ver que esto corre infinitamente, porque aún no hemos engendrado Esto dejará de funcionar cada vez que engendremos. En cuanto a este, esto siempre se ejecutará, la actualización del blueprint, la animación siempre se ejecutará Y siempre es agradable comprobar si el jugador ha generado porque no queremos ejecutar este código cuando un jugador val aún no ha generado Bien, ahora para calcular la velocidad de movimiento, golpeemos de este jugador, pata. Busquemos la velocidad y consigamos esta llamada velocidad. Esto es simplemente lo único que tenemos que hacer, en realidad. No obstante, si vuelvo aquí en el blueprint de animación y vuelvo a mi estado de ejecución inactiva, se puede ver el plug in Quiere la entrada que quiere, es una variable de tipo float. No es un vector. Puedes ver si vuelvo a mi gráfica de ventilación, esto es un vector. Realmente no podemos enchufarlo aquí. Lo que podemos hacer para convertir un vector en un flotador, podemos arrastrar de éste y buscar longitud. Podemos elegir esta llamada longitud vectorial, que en realidad la convertirá en una variable de tipo flotante. Podemos hacer clic derecho en esto y promoverlo a una variable ahora y llamarlo velocidad de movimiento. Ahora vamos a conectarlo aquí a la S válida. Y ahora tenemos la velocidad de movimiento. Esto en realidad es muy fácil. Así es como lo haces. Obtienes la velocidad del jugador. Hicimos la longitud del vector porque queremos convertir la variable en una variable flotante. Y entonces tenemos aquí la velocidad de movimiento. Ahora para calcular la dirección del movimiento, podemos arrastrar desde aquí y buscar calcular. Y se puede ver este llamado calcular dirección. Al igual que éste ahora, pide una rotación. Lo que puedes hacer es dirigirte desde el jugador y buscar la rotación de actos. Este consigue rotación de actos. Ahora vamos a seguir adelante y enchufarlo. Ahora bien, si eres muy nuevo en blueprint, a veces no sabes cómo se llaman estas funciones Si pide rotación, por ejemplo, puedes simplemente dirigir desde aquí y puedes escribir rotación. Esto es lo que hice cuando empecé. Cuando estaba completamente, solo escribí rotación y traté de leer cuáles eran todas estas funciones. Después después de eso, selecciono de esos. Ahora tomará un tiempo si eres nuevo. Sin embargo, esto se acaba de hacer una y otra vez y se convertirá en memoria muscular para ti. No te preocupes por ello, solo sigue practicando. Estamos consiguiendo la rotación del actor, estamos enchufando aquí Estamos calculando la dirección. Ahora podemos hacer clic derecho en éste, promoverlo a una variable, y llamarlo dirección de movimiento. Ahora hemos calculado la velocidad de movimiento y la dirección del movimiento también. Sigamos adelante y compilemos. Y ahora tenemos este código aquí. Pasemos aquí al estado de ralentí. De nuevo, se puede dar clic en el gráfico de animación. También puede hacer clic en el gráfico de animación de aquí. O ir al estado de ejecución ociosa por aquí, a la izquierda, dentro de aquí. Golpeemos nuestra velocidad de movimiento. Conéctelo a la velocidad de movimiento y arrastre la dirección del movimiento, conéctelo a la dirección del movimiento. Sigamos adelante y compilemos ahora. Antes de que podamos jugar, puedes ver si juego ahora no va a pasar nada porque no hemos usado el plano de animación en el jugador Vamos a la base de jugadores. Ve al Viewpo, da clic en el jugador o en la malla. Por aquí, aquí arriba se puede ver el modo de animación. Usa el blueprint de animación, eso es correcto. La cláusula de animación, tenemos que seleccionar nuestro plano y dejarnos dar clic en Compilar Y ahora se puede ver que el jugador está animado aquí en el Viewpoard también Vamos a hacer clic en Play, y vamos a probarlo. Si hago clic en W para avanzar, para retroceder, también me muevo hacia los lados. Me mudo a todos los demás sitios. Se puede ver que está funcionando correctamente. Impresionante. Las animaciones que hemos enchufado funcionan correctamente. Ahora en cuanto a la velocidad de movimiento, vamos a cambiarlas más adelante, así que no te preocupes por ello. También puedo ver que el jugador es realmente muy pequeño en comparación con el entorno. Entonces tenemos que arreglarlo también. Pero no nos preocupemos por eso por ahora. Todo está funcionando correctamente. Y saltemos a la siguiente lección y creemos la agachada 29. 3.18 Entrada de entrada de Crouch multijugador: Ahora vamos a crear la entrada para el agachado dentro de la carpeta del reproductor Voy a ir a la carpeta de entrada. Nuevamente, aquí hagamos clic derecho, vaya a Entrada y cree esta acción de entrada. Nuevamente, llamemos a éste agachado. Ahora vamos a abrir nuestro contexto de mapeo de entrada dentro de aquí. Vamos a agregar este nuevo mapeo. Ahora ya lo hemos hecho antes. Voy a ir un poco más rápido, esta vez creando esta agachada Para el agachado, voy a dar click aquí y usar mi botón de control izquierdo Ahora puedes elegir cualquier botón que desees para los disparadores, voy a hacer click en el más aquí. Y solo quiero que esta acción agachada active cada vez que presiono el botón Porque si no agregas esto presionado aquí, esto en realidad va a correr muy rápido muchas veces por segundo. Al igual que el movimiento aquí, si no agregas ningún disparador, simplemente correrá continuamente. Sin embargo, esto solo se activará una vez cuando lo presione. Y esto es solo hacer que el código sea más optimizado. No solo presionado, también quiero hacer clic aquí y seleccionar Liberado. Porque quiero agacharme cuando suelte mi botón, ya sea presionado o Bien, sigamos adelante y guardemos esto ahora. Vamos a cerrarlo. Ahora volvamos al jugador ahora. Y dentro del jugador, abramos la base de jugadores. Aquí abajo otra vez, haga clic derecho, busque IA agacharse o como se llame la acción de entrada. Seleccione el evento aquí. Ahora aquí abajo en el valor de la acción, que arrastrar desde aquí y escribir una rama y conectarla al disparado. Lo cierto aquí va a reproducirse cada vez que presiones el botón. Si solo arrastro desde aquí y escribo una cadena de impresión y solo escribo presionada. Ahora, siempre es bueno agregar cadenas de impresión si estás depurando el código Si tienes una era en tu código, muy, muy bueno simplemente escribir cadenas de impresión por todo tu código, como insertarlas aquí en medio del código, ver si funcionan, y así sucesivamente. Siempre es agradable depurar a través de cadenas de impresión. Ahora podemos depurar la Siria y ver si funciona. Si lo presiono, debería decir presionado. Si lo libero, solo debería decir liberado. Si compilo, ahora, si hago clic en Reproducir, si hago clic en Control, solo una vez, y si lo dejo ir, ahora dice liberado. Se puede ver nota de prensa. Prensa dada a conocer. Bien. Ahora está funcionando correctamente. Entonces podemos eliminarlos por ahora, y podemos pasar a la siguiente lección. 30. 3.19 Función de agacharse para multijugador: Bien, así que sigamos adelante y hagamos el agachado Ahora, para agacharte, tienes que dar click en el componente de movimiento del personaje Primero aquí arriba, solo busca agacharte y tienes que hacer clic en este llamado can Si no tienes esto marcado, realmente no puedes agacharte y no pasará nada Recuerda ir al componente de movimiento del personaje, buscar agacharse y seleccionar este, agacharse Bien, Ahora vamos a hacer clic en esta T de nuevo. Ahora para el agachado, podemos simplemente seguir adelante y arrastrar aquí y decir Esto funcionará perfectamente para un solo jugador. No obstante, estamos trabajando con el modo multijugador, así que tenemos que ejecutarlo a través de un servidor. Ahora en Honorable motor tienes algo llamado cliente y servidor. Si haces clic aquí arriba y estableces la cantidad o número de jugadores en dos, y en el modo Ith, lo configuras para que juegue como servidor de escucha. Si haces clic en jugar aquí, ahora puedes ver que dos Windows se abrirán y ahora estamos trabajando con multijugador. Ahora en Honorable motor, tienes el servidor y tienes al cliente. Ahora el servidor es el verdadero juego. ¿Y eso qué significa? El servidor tiene la autoridad del juego. Y eso significa que el servidor puede hacer lo que el servidor quiera. Por ejemplo, digamos aquí en el shooter multiplicador, tengo un arma y disparo mis balas a estos clientes. Ahora en el cliente, puedo disparar las borrones, puedo pegarle al cliente No obstante, el cliente, cuando disparo el arma con el cliente ahora en el servidor. Este código para el disparo del arma. Va a pasar por el servidor y luego el servidor va a enviar esta información de vuelta al cliente y decirle al cliente, bien, se le permite disparar. ¿Por qué hace eso? Y esto en realidad es para evitar hacer trampa. Ahora el servidor, de nuevo, es el verdadero juego. Eso significa que todos los clientes aquí están conectados al servidor. El servidor puede ver el juego tal como está, por ejemplo, dónde están parados los jugadores, qué están disparando, qué armas tienen. Sin embargo, para los clientes, en realidad tenemos que enviarles toda esa información, del servidor al cliente. Por ejemplo, si alguien saquea un arma, digamos que tenemos múltiples clientes Y arreglemos ese dólar más adelante. Pero digamos que tenemos, por ejemplo, cuatro jugadores. Y damos click en Reproducir. Y todos se abren en mi segundo monitor. Así que déjame arrastrarlo hasta aquí. Ahora digamos que aquí estoy, el servidor, y tengo a todos estos clientes jugando conmigo. Digamos que este cliente aquí frente a mí va a saquear un arma Ahora el arma que este cliente va a saquear, tengo que mandar esa información Por ejemplo, si saqueas un AK o un arma, solo Agle por ejemplo Tengo que enviar esa información desde el servidor a todos los clientes. Porque si no envías la información en realidad solo el servidor puede ver que has saqueado un deagle y los demás clientes no pueden ver que estás sosteniendo un Si no envía esta información desde los servidores a los clientes, no funcionará. Es por ello que decimos que el servidor es el verdadero juego, tiene la autoridad del juego, y toda la información está contenida aquí en el servidor. Y el servidor necesita enviar información importante a los clientes. Por ejemplo, si uno de los clientes dispara una bala, este cliente va a decir, yo voy a disparar una bala. Y va a enviar esa información al servidor. Ahora el servidor va a verificar, ¿este cliente realmente tiene balas? Porque estamos tratando de evitar hacer trampa. Va a enviar esa información de vuelta al servidor. El servidor va a verificar, ¿este cliente tiene balas? Entonces el servicio, a lo mejor va a decir, sí, este cliente en realidad tiene balas. Entonces va a enviar esa información de vuelta al cliente y luego va a decir, bien, puedes disparar. Ahora en realidad tienes balas y el cliente puede disparar. Así es como lo hacemos aquí en la relación cliente-servidor, el servidor tiene toda la información y el cliente simplemente recibe y envía información para evitar trampas. Bien, esta sesión grupal está terminada. puede ver que están en una sesión de grupo discutiendo, vamos a dejar de fumar aquí. Ahora tenemos esta era aquí, muy, muy sencilla. Es solo decir acceso, no intentar leer esto, obtener subsistema jugador local. Y en realidad está aquí arriba. Si solo haces clic aquí arriba, te lleva hasta aquí, solo dice eje ninguno. Tratando de leer esta propiedad aquí, lo único que tenemos que hacer es simplemente arrastrar de esta y decir que es válido. Y adelante y conecta éste con el signo de interrogación. Solo nos estamos asegurando de que el control del jugador sea válido. Y si es válido, podemos seguir adelante y ejecutar este código. La época en la que llegas aquí es porque está tratando de ejecutar el código. Cuando el control del jugador aún no es válido, obtendrás un error diciendo access none. Lo que el eje none significa es que está tratando leer la variable que intentas ejecutar. Sin embargo, el acceso, esta variable está vacía. No sé de qué estás hablando. Vamos a cerrarlo. Juguemos de nuevo. Puedes ver si solo juego aquí y este tipo cayó por el suelo, porque todos están desovando uno encima del otro Y se puede ver que la época se ha ido. Bien, sigamos aquí antes de que el video se alargue demasiado. Vayamos aquí en el código agachado. Aquí en el código agachado, primero quiero crear una función Vamos a crear una función aquí arriba. Si haces clic en el más esta función, voy a llamarlo agacharse Normalmente escribo delante de mis nombres de funciones para poder buscarlos más tarde muy rápidamente. Aquí arriba. Si también los agrego por aquí, puedo ver que es un.Si vuelvo a pasar al gráfico de eventos, puedo arrastrar esta función aquí y simplemente golpear dos de ellos. Conecta uno a lo verdadero y conecta uno a lo falso. Lo que queremos hacer es añadir un lingote. Éste es porque queremos agacharnos aquí y queremos agacharnos Voy a dar click sobre esta función en las entradas, voy a dar click en el más y agregar este lingote llamado u Como puedes ver, puedes agregar una B delante de las variables de lingotes y no aparecerán aquí. Como puedes ver, puedes agregar una B delante de las variables de lingotes y no aparecerán Esto se suele hacer en C plus plus. Podrás buscarlos más fácilmente más adelante. Escribir una B no se mostrará en el nombre si lo haces para bullins Ahora para el agachado, voy a marcar esta. Entonces quiero agacharme aquí cuando estoy tratando de agacharme con mi botón de control y cuando suelte el botón quiero desenroscar, esto se dice con mi botón de control y cuando suelte el botón quiero desenroscar, esto se dice falso. Ahora bien, si entramos en esta función agachada, ahora se va a poner tal vez un poco difícil Y hay que practicar esto un poco dentro de esta función. Ahora podemos hacer click derecho sobre este agacharse y solo voy a promocionarlo a una variable local y llamar a esta Crouch Ahora lo que es una variable local, simplemente está contenida dentro de esta función. Ves si voy a la gráfica de eventos, esta función o esta variable no está aquí. Y si vuelvo a la función, se puede ver que tengo la variable local, Crouch Esta variable en realidad solo se usa dentro de aquí y no se usa afuera. Ahora, antes de que hagamos algo, quiero arrastrar de aquí y decir, cambiar tiene autoridad. Este interruptor tiene autoridad. Se puede ver que tiene dos pines de ejecución. El primero es la autoridad y el otro es el remoto. Recuerda que te dije que el servidor tiene la autoridad. La autoridad significa justamente que este es el servidor que está ejecutando el código. Remoto significa que este es el cliente que está ejecutando el código. Como te dije antes, el cliente tiene que ejecutar el código a través del servidor y verificar si lo que sea que esté haciendo el cliente es legal antes que podamos continuar el código al servidor para evitar trampas. Pero por ahora, hagámoslo a través del servidor. El servidor puede simplemente seguir adelante y hacer el código sin ningún problema, porque el servidor tiene la autoridad sobre el juego. Entonces lo que queremos hacer es que queremos comprobar aquí si esto es verdadero o falso, porque lo establecemos aquí en verdadero o falso. Y este lingote establecerá aquí esta variable. Entonces voy a tomar esta variable local y arrastrar desde aquí y escribir una rama y preguntar si esto es verdadero o falso y conectarlo a la autoridad aquí. Ahora puedes hacerlo de esa manera o puedes hacerlo de esa manera. Eso está bien. Lo mismo. Solo quiero estar un poco más organizado. Entonces lo conecto de esta manera. Si el agachado está puesto en true, quiero agacharme Si no es cierto, quiero agacharme. Busca agacharte así como así. Muy fácil. También voy a crear variables que usaré más adelante en el plano de animación Crea una nueva variable aquí, un nuevo lingote llamado agachado Entonces puedes tomar esta, puedes arrastrarla desde aquí y ponerla en true. Y arrástralo aquí y ponlo a la culpa. Vamos a usar este más adelante en el plano de animación, para que podamos cambiar la animación Ahora ya tenemos el servidor terminado. Se puede ver si hago clic en jugar ahora, y juego como servidor y corro aquí. Doy click en el control. Se puede ver que la velocidad de movimiento reduce, en realidad ahora agachada Sin embargo, la animación aún no está enchufada, por lo que no se puede ver la animación agachada Ahora en realidad está funcionando. Ahora para el cliente, lo que tenemos que hacer, necesitamos ejecutar este código a través del servidor primero para verificar si el jugador está haciendo trampa o no. Volvamos a la gráfica de eventos. Hagamos clic derecho y busquemos un evento personalizado. Vamos a crear un evento personalizado. Llamemos a este SRV para servidor. Y lo llamaré agachado. Porque ahora quiero ejecutar esto a través del servidor. Dentro de este evento, hagamos clic en él. Y ahora se pueden ver réplicas. Lo que necesitas hacer es hacer clic aquí y ejecutarlo en el servidor, y hacer clic en Confiable. Ahora estamos ejecutando este evento aquí a través del servidor. Tomemos esta agachada aquí otra vez y simplemente conéctelo Y conectar este bullying a aquí. Y automáticamente creará esta variable dentro de este evento. Ahora en realidad lo estamos ejecutando a través del servidor. Lo que tenemos que hacer es que tenemos que volver a la función aquí desde el mando a distancia. Tenemos que tomarlo de aquí y buscar el evento de cuclillas del servidor que acabamos Ahora para esta entrada, simplemente la conectamos aquí, creamos un nodo de ruta trasera solo para mantenernos un poco organizados. Ahora se está ejecutando a través del servidor. Después de que se ejecute a través del servidor, ahora puede ejecutar este código junto con el servidor. Bien, esto fue todo. Ahora podemos compilar, y eso debería funcionar bien. Si hago clic en play, ahora soy el servidor y hago clic en controlar. Ya ves que estoy agachado, me estoy moviendo despacio. Lo mismo con el cliente. Puedo moverme y puedo dar click en el control. Y también me muevo lentamente. Se puede ver en el servidor, en realidad también me estoy moviendo lentamente. Esto quiere decir que está funcionando correctamente. Ambos están trabajando lentamente. Solo para pasarlo muy, muy rápido, puede ser un poco confuso para empezar. Creamos esta función agacharse, agregamos el lingote para que ya sea agacharse o agacharse cuando pulsamos el botón o soltamos el botón Dentro de esta función, tenemos básicamente solo el lingote por aquí configurando esta variable local Entonces tenemos el switch, tiene autoridad comprobando si es el servidor ahora mismo que estamos jugando As o el cliente, si es el servidor, solo puedes seguir adelante y ejecutar el código. Ahora si estás agachado, aquí nos vamos a agachar Si no estás agachado, nos vamos a agachar dependiendo del valor que hayas establecido aquí Ahora si estás jugando con el cliente, primero tienes que pasar por el servidor y verificar con el servidor cuál es este valor que tienes aquí. Entonces va a correr a través del servidor. Dependiendo de este valor que conectaste, va a tomar este valor y ya sea o agacharse también en el cliente 31. Plan de animación de 3.20 agacharse: Ahora que tenemos el agachado trabajando dentro de nuestro personaje de plano, sigamos adelante y hagamos eso dentro del plano de animación Vamos a la carpeta de planos, animaciones de com player Y entremos en el plano de animación. Ahora dentro de aquí otra vez, puedes volver al gráfico de animación por aquí. Puede hacer clic en su máquina de estado. Dentro de aquí, necesitamos hacer un nuevo estado. Vamos a golpear desde aquí y vamos a la derecha. O da click en este estado aquí. Vamos a agacharnos Ahora vamos a hacer la agachada No tienes que hacerlo aquí abajo. También puedes simplemente arrastrarlo aquí a un lado o aquí arriba. Sólo me gusta arrastrarlo hasta aquí abajo. Para los agachados. imagino que estoy agachado, bajando Y luego podemos hacer doble clic sobre este estado agachado por encima a la derecha Hicimos que éste se agachara desarmado. Podemos arrastrar este espacio de lente a la gráfica y luego podemos conectarlo. Recuerda que ya hicimos la dirección y velocidad del movimiento, así podemos arrastrarlos y enchufarlos aquí. Entonces vamos a compilar. Ahora nos llega un error o una advertencia aquí porque no hemos hecho la transición. Volvamos aquí en el gráfico de animación, puedes volver a tu máquina de estado. Y dentro de aquí se ve ahora este círculo. Y este círculo es una regla de transición. Tienes que contar tu juego. ¿Cuándo quieres pasar del modo de ejecución inactiva al modo agachado Hay que darle una transición. Ahora bien, si haces doble clic aquí, puedes ver aquí está la transición, el lingote, así que tenemos que darle una transición Y la forma en que haces esto, primero tienes que ir al gráfico de eventos y hacer algún código antes de poder darle una transición. Hay que saber cuando el jugador está agachado. Ahora bien, si vuelves a nuestro en la base de jugadores, vuelves aquí en nuestra función agacharse Si no haces clic aquí. Hicimos este llamado agacharse Este lingote de aquí, Recuerda que no es el local que hicimos Es esta una variable bull global la que hicimos. Este lo podemos usar para saber si el jugador está agachado o no y podemos usarlo aquí dentro del plano de animación Primero tenemos que conseguir la referencia al jugador. Ahora mismo se trata de un peón de jugador, pero necesitamos una referencia a la base de jugadores porque ahora necesitamos usar este lingote aquí Volvamos aquí y volvamos a la carpeta Interfaces. Hagamos clic derecho para ir a Blueprint y hagamos una nueva interfaz de blueprint Llamemos a esto en base de capas porque queremos hacer referencia a la base de jugadores. Vamos a abrirlo. Y aquí, dentro de esta interfaz de blueprint, igual que para el controlador del reproductor, si no lo recuerdas, puedes seguir adelante y ver la interfaz del controlador Player Cuando lo hicimos aquí, en realidad es lo mismo. Puedes dar click aquí, hacer click en dos para cambiar el nombre y decir get player, obteniendo la referencia del jugador. También puedes simplemente llamarlo get get player base reference. Eso es lo mismo. Entonces puedes dar click sobre esta función aquí en la salida. Adelante y haz una nueva variable. Recuerda aquí tienes que seleccionar a qué Eva estás tratando de hacer referencia. Estamos tratando de hacer referencia a la base de jugadores de BP. Adelante y selecciónelo. Déjame llamar a este jugador. Ya puedo compilar. Y yendo a la base de jugadores. Al ir a la clase, en realidad en los valores predeterminados de clase, los ajustes de clase aquí, en las interfaces, haga clic en Agregar y busque la base de jugadores T. Este compilar y verás esta interfaz. Recuerda, si no ves esto, aunque lo hayas agregado, tienes que compilar dentro de la interfaz antes de poder verlo. Muy importante haciendo clic en la referencia Obtener jugador. Y aquí podemos volver a arrastrar y escribir yo igual que antes. Porque recuerda que estamos en la base de jugadores. Sólo estamos diciendo que esta variable aquí es esta base de jugadores. Ahora podemos ir a la. Vamos a compilar primero. Ahora podemos ir al plano de animación. Y aquí ya tenemos al peón jugador. En lugar de simplemente arrastrar desde aquí, permítanme crear una nueva variable Sólo voy a arrastrarlo por aquí y colocarlo y dar clic en Obtener. Y solo voy a usarlo aquí en vez de arrastrarlo desde aquí Creo que se verá un poco desordenado cuando las líneas estén por encima de todo el código Déjame tomarlo aquí como uno nuevo y decir capa ref. Ahora tenemos este get player ref. Sigamos adelante y conectémoslo. Ahora podemos usar la variable. Ahora si arrastras de aquí y a la derecha agacharte. En realidad un pequeño truco que quiero mostrarte. Si tienes razón agacharte y quieres usar la variable lingotes, las variables siempre se encuentran Se puede ver que esta es la variable agachada que necesitamos. Sin embargo, si no lo ves, siempre puedes hacer un espacio y escribir variable VAR para variable y podrás ver todas las variables. Sólo un pequeño truco para encontrarlo rápidamente. Obteniendo esta variable agachada que hemos hecho. Ahora puedo hacer clic derecho sobre esta variable promovida a una variable dentro de aquí en el plano de animación Y yo sólo lo voy a llamar, es agacharse así como así O simplemente puedes llamar a un agachado lo mismo. Adelante, conéctalo y da clic en Compilar. Bien, ahora estamos tomando esta agachada. Estamos tomando el valor de ello aquí en la base de jugadores. Entonces si es verdadero o falso, estamos tomando ese valor y poniéndolo dentro de esta variable. Ahora podemos usar esta variable para la regla de transición. Si vuelvo a la gráfica de animación, a mi máquina de estado y a esta regla de transición, puedes seguir adelante y dar click en ella. Ahora te está preguntando, ¿cuándo debo pasar de la carrera ociosa a la agachada Y podemos arrastrar de aquí y enchufarlo a aquí. Cuando estamos agachados es agacharse es verdad, entonces queremos seguir adelante y hacer la transición Sin embargo, volvamos. Tenemos que dar click sobre esto y arrastrar desde aquí. Y enchufarlo a aquí también. Porque en algún momento tenemos que pasar de la agachada de nuevo a la inactividad, yendo y haciendo clic en la segunda regla de transición Esto va a volver de agacharse a correr. Voy a arrastrar esto y aquí dentro podemos escribir N B y éste llamado N lingotes Básicamente lo que estamos diciendo es que si es agacharse es falso, entonces queremos volver al modo running porque ya no estamos agachados Será falso cuando evalu no estén agachados porque lo configuramos aquí para que caiga en la Sigamos adelante y compilemos. Y ahora se puede ver que todos los errores se han ido. Ahora veamos si nos falta algo. Hemos hecho todo aquí enchufado en la dirección de movimiento y velocidad De hecho, probémoslo. Vamos a hacer clic en Reproducir. Y voy a hacer click en, en realidad estoy atrapado aquí como el jugador. Déjame volver a hacer click en play. Ahora estoy caminando. Como jugador aquí, voy a tener el control para agacharme. Y se puede ver que estoy agachado. Está funcionando. Pero se puede ver en mis otras pantallas, no estoy agachada Esto se debe a que ahora estamos trabajando en multiplicador. Se ve que estoy agachado como servidor, los demás no pueden ver. Estoy agachado No obstante, si llevo a este cliente aquí y me agacho, se puede ver que el servidor puede ver que estoy agachado así si estoy agachado como cliente, pero si estoy agachado como servidor, estoy agachado No obstante, los clientes no pueden ver que estoy agachado. Y recuerda en la lección anterior te dije que estamos trabajando en multijugador. Y el servidor tiene que devolver la información al cliente y decirle a los clientes, oye, ya estoy agachado, actualizar mi animación El servidor tiene que enviar esa información sobre de lo contrario no pueden ver lo que estoy haciendo. Y esto es lo que vamos a hacer en la siguiente lección con la replicación variable. 32. 3.21 Replicación variable: Derecha. Sigamos adelante y arreglemos la agachada Ahora antes de hacer eso, voy a dar click aquí arriba y seleccionar dos jugadores. Porque no quiero cargar demasiados jugadores todo el tiempo. Si hago clic en Reproducir, puedes ver aquí igual que antes, si me agaché en el servidor, el cliente no puede Estoy agachado, yo, estoy agachado sobre el cliente. El servidor puede ver en el, el propio servidor que estoy agachado Recuerda como antes, tenemos que enviar información al cliente y decirle al cliente que en este momento estoy agachado Esto es muy fácil de hacer. Entonces, si vas a la base de jugadores está agachado, esto es básicamente lo que va mal ahora mismo en el plano de animación Si volvemos a las reglas de transición, tenemos estas reglas de transición tomando de este lingote aquí Este lingote controla si estamos agachados o no aquí, La variable, esta información dentro de aquí, necesita ser enviada al cliente Si das click en él, podrás ver las variables también se pueden replicar, no solo los eventos, puedes ver el evento Lo hemos replicado antes para ejecutarlo en el servidor, pero las variables también se pueden replicar Si da clic en esta variable, puede ver que la replicación aquí está establecida en none. Pero necesitamos enviar esta información al cliente. El cliente también tiene la información si estamos agachados o no haciendo clic aquí y configurando esto para replicarlo Y tendrá el símbolo aquí arriba porque está replicado. Y ahora puedo dar click en Compilar. Ahora bien, muy importante saber, las variables sólo se pueden replicar a través del servidor Nunca se puede tomar una variable aquí. Por ejemplo, si, digamos que estoy en el cliente aquí y lo pego así, nunca se podrá hacer esto. No se puede replicar a través del cliente, las variables solo se pueden replicar en el servidor Muy importante recordar que no se puede establecer una variable y replicar a través del cliente, nunca va a suceder Aquí se puede ver que se está ejecutando a través del servidor porque tenemos este switch tiene autoridad y se está ejecutando a través del servidor y replicando así como el remoto, realidad se está ejecutando en el servidor porque se está ejecutando a través del servidor primero, y luego estamos replicando esta variable Entonces esto era en realidad lo único que teníamos que hacer, simplemente hacer clic en él y configurarlo para replicarlo Ahora, si pudiéramos quejarnos, ahora como pueden ver, yo soy el servidor. Ahora bien, si solo maximizo esto un poco. Entonces puedes ver si me agaché como servidor, ahora estoy agachado tanto en el cliente como en el Y si yo soy el cliente y agachado también, estoy agachado en el cliente y en el servidor A veces también es agradable hacer clic aquí, ir al modo Net y jugar como dos clientes. Así que adelante y juega. Siempre es agradable probarlo en ambos sentidos. Entonces como servidor y cliente, pero también como cliente y cliente para ver si realmente pueden verse entre sí. Si me agacha sobre el cliente, el otro cliente puede verme también Está funcionando y volvamos a cambiarlo para jugar como servidor de escucha. Por ahora, sigamos adelante y guardemos todo y pasemos a la siguiente lección. 33. 3.22 Suaviza la animación: Cuando sigo adelante y juego el juego, puedes ver que mi animación no es realmente fluida. Entonces si camino por ahí, se puede ver que pasa muy rápido así como como cuando me agaché aquí, simplemente sucede De repente puedo suavizar esto un poco y hacer que se vea bien. Y en realidad es solo un ajuste lo que tenemos que hacer. Si vas al jugador y haces clic en las animaciones. Y haces clic en, por ejemplo, esta corrida de espacio de mezcla. Tienes este de aquí abajo llamado Weight Speed. Si lo pones en algo muy bajo, como uno, por ejemplo. Y puedes hacer click en play y podrás ver qué pasa. Se puede ver si empiezo a caminar, a correr, se puede ver que pasa a esa animación de carrera. Si me detengo, hace una transición hacia atrás por carrera, hace una transición. Ya puedes ver que es muy suave cuando corro y paro. Entonces tenemos que ponerlo a un número que se vea bien, no demasiado alisado. Si aumentas este número, va a ser menos suave. Por lo general, algo alrededor del 56 es realmente bueno. Cinco ahora mismo es mucho mejor que antes. Si lo pones a algo así como tres, esta una velocidad de peso, pongámoslo a tres y hagamos clic en play. A veces no me gusta ponerlo demasiado abajo porque el personaje de alguna manera se siente pesado cuando camino por ahí. Pero se puede ver que ahora está transición mucho más que antes Creo que tres es demasiado bajo. Para que podamos seguir adelante y probar cuatro y hacer clic en play. Y entonces podemos correr por ahí y ver qué pasa. Cuatro sigue siendo demasiado pesado. Creo que cinco fue un buen número. O para el alisado aquí, si simplemente corres así, queda bien. A lo mejor ni 5.5 no me gusta que sea demasiado bajo aquí, 5.5 No me gusta que el personaje se sienta demasiado pesado. Hagámoslo con los demás. Vamos a hacer clic en el agacharse, poner la velocidad del peso a 5.5 Y dar clic en la caminata, poner la velocidad del peso a 5.5 también Sigamos adelante y hagamos clic en Archivo y Guardar todo. Vamos a hacer clic en Reproducir. Y se puede ver ahora cuando estoy corriendo, cuando estoy agachado, también está suavizando Se puede ver la diferencia en realidad para los agachados mucho más Creo que si dijera el agachado a cero otra vez. Y si hago clic en play, se puede ver que las transiciones son realmente rápidas. Cuando estoy agachado, es casi antinatural. Si lo pongo en 5.5 y guardo y hago clic en play. Ahora cuando me agaché y hago esto, se puede ver que es mucho más suave que antes No se siente antinatural. Solo un ajuste muy pequeño que puede hacer tus animaciones se vean mucho mejor cuando las estás suavizando. 34. 3.23 Paseo multijugador: Ahora estamos listos para hacer el caminar. Ahora el caminar es lo mismo que el agachado. Si volvemos al jugador y vamos a la base de jugadores, en realidad es el mismo proceso que hemos estado haciendo aquí con el agachado Intenta hacer esto solo si puedes, y trata de ver hasta dónde llegas sin mi ayuda. Es un ejercicio muy bonito si quieres continuar conmigo, adelante y continuemos. Voy a seguir adelante en la entrada y hacer una nueva. Vamos a Input y damos clic en Input Action. Llamémosle a éste. Yo camino. Y sigamos adelante dentro de aquí. Dentro de aquí, realmente no necesitamos hacer nada. Vamos al contexto de mapeo de entrada dentro de aquí. Vamos a hacer clic en el más y agregarlo aquí abajo como el paseo. Para el caminar, voy a sostener Shift, dando click en éste, dando click en shift en mi teclado. En cuanto a los disparadores, voy a dar click aquí, dos ventajas, y se presiona el primero y se suelta el segundo Este botón se activará cada vez que lo presione para caminar y cada vez que lo suelte para dejar de caminar. Ahora sigamos adelante y ahorremos aquí. Y volvamos a la base de jugadores aquí dentro. Voy a escribir, dar clic y escribir un paseo y seleccionar la acción de entrada recién creada. Ahora para éste, igual que antes, arrastremos de este lingote y escribamos una rama de lo verdadero Estaremos caminando porque es entonces cuando hemos presionado turno. Cuando liberemos el turno, dejaremos de caminar aquí desde lo falso. Hagamos una nueva función igual que antes. Voy a llamar a este paseo. Volvamos al gráfico de eventos. Voy a arrastrar este paseo aquí y conectarlo aquí. Y arrástralo otra vez. Y conéctalo aquí abajo. Ahora otra vez, igual que antes, necesitamos un lingote para caminar o dejar de caminar, voy a compilar y dar click en la entrada y llamar a este B walk Ahora para este lingote, lo voy a poner en verdad cuando quiera caminar, y lo voy a poner a caídas cuando deje de caminar Ahora igual que antes, quiero ejecutarlo a través del servidor cuando sea el cliente. Entonces voy a hacer click derecho aquí abajo, digamos servidor walk. Y recuerde configurar las réplicas para que se ejecuten en el servidor y sean confiables Ahora sigamos adelante y tomemos este paseo conectado, y tomemos esta entrada para el lingote y colóquelo en el evento para que cree automáticamente esta variable aquí Bien, la mayoría está terminada. Vamos a entrar en la función de caminar dentro de aquí. Vamos a hacer clic derecho en éste y promoverlo en una variable local. Y a esta la podemos llamar a pie local. Adelante y arrastra de aquí y di que el interruptor tiene autoridad. Ahora, al igual que antes, primero queremos ejecutar el código a través del servidor. Si somos el cliente arrastramos desde aquí y decimos server walk, el que acabamos de hacer y ahora lo estamos ejecutando a través del servidor primero. Recuerda tomar esto y conectarlo con el paseo doble clic para hacer un nodo re redondo y simplemente hacerlo un poco más organizado. Ahora tomemos esta variable de caminata local y la dejemos caer aquí. De aquí, derecha, una sucursal y vamos a conectarla. Porque tenemos que preguntar, ¿es esto cierto o falso? Porque si es verdad, queremos caminar. Si se trata de caídas, queremos dejar de caminar. Queremos a lo mejor empezar a correr. Adelante y conecta todo lo que necesita para quedar así. Ahora a partir de aquí, lo que básicamente queremos hacer es que se pueda ver en el componente de movimiento del personaje tenemos algo que se llama la velocidad máxima de caminata. Esto es lo mismo que correr. No sé por qué se llama velocidad de caminata, pero en realidad también es la velocidad de carrera para esta. Esto es lo que queremos ajustar cuando queremos caminar y no caminar. Lo que tenemos que hacer es tomar este componente de movimiento del personaje y tomar de aquí y decir establecer la velocidad máxima de caminata. Esto es lo que queremos ajustar. Queremos conectarlo aquí. Por supuesto, en realidad no necesita ser alto. Si vas al componente de movimiento del personaje en este momento, la velocidad de carrera es de 600. Cuando queremos caminar, necesitamos reducirlo a un número menor. De hecho, puedo hacer clic derecho en este, Promocionar esto a una variable. Yo sólo voy a llamar a este paseo velocidad. No me gusta tener números estáticos así. Vamos a compilar y hacer clic en esta variable de velocidad de caminata Y configurarlo en algo así como, vamos a configurarlo en 100 o en realidad solo 200 por ahora, número aleatorio. Vamos a cambiarlo más tarde cuando ya no estemos caminando. Vamos a tomar esto por, pegarlo aquí. Volvamos a promover esto a una variable y llamemos a ésta, por ejemplo, una velocidad de carrera. Ve y ponlo aquí abajo y conecta las cataratas a él. Cuando ya no estemos caminando, vamos a ponerla de nuevo a nuestra velocidad de carrera. Y da clic en la velocidad de carrera. Recuerda establecer el valor predeterminado. Adelante y compile Primero te pide que compiles el plano Adelante, compilar y establecerlo en 600, igual que por defecto. Y ahora volvemos a correr. Ahora, igual que antes, necesito un lingote para usar dentro de mi plano de animación Voy a hacer aquí un lingote nuevo, paseo de bala. Ahora puedo tomar este tirón y ponerlo en verdad cuando estoy caminando. Y lo copio y lo pego aquí abajo. Y ponerla en falso cuando no estoy caminando. Ahora recuerda que esto tiene que ser replicado para que el cliente sepa si esto es verdadero o falso para que el blueprint de animación siga adelante y establezca esto para replicarlo Con eso terminado, estamos terminados y tenemos que avanzar hacia el plano de animación Pero vamos a probarlo. Vamos a hacer clic en play. Y si hago clic en Shift, se puede ver que estoy caminando. Estoy caminando despacio. La animación que necesitamos arreglar en la siguiente lección. Pero como pueden ver, si libero mi caminar, puedo volver a correr. Esto es muy, muy genial. Sigamos adelante y hagamos el plano de animación. 35. 3.24 Blueprint de animación caminante: Ahora para el plano de animación, sigamos adelante y vayamos a la animación del jugador y abramos nuestro plano de animación Ahora dentro de aquí, recuerda dentro de la máquina de estado gráfico de animación, vamos a arrastrar desde aquí y crear otro estado. Llamemos a esto caminar. Ahora para este, hagamos doble clic en él y ábralo. Al igual que antes, creamos este espacio de mezcla de caminata. Sigamos adelante y conectémoslo aquí. Y vamos a arrastrar la dirección del movimiento y enchufarlo y la variable de velocidad de movimiento. Y enchufarlo también. Sigamos adelante y hagamos clic y compilemos Ahora. Volvamos aquí. Como puedes ver, al igual que antes tenemos que establecer la regla de transición, en realidad tenemos que ir primero al gráfico de eventos y obtener ese lingote que acabamos de hacer antes desde la misma interfaz aquí Podemos arrastrar y decir caminar variable. Podemos obtener este lingote de éste. Podemos escribir click y promover esto a una variable y llamarlo, por ejemplo, es caminar. Podemos llamarlo es caminar. Sigamos adelante y lo conectemos. Haga doble clic en esto para hacer una nota de reencaminamiento, hacerla organizada, así como así Vamos a compilar y volvamos al movimiento aquí. Ahora para la regla de transición, ahora estamos transitando de la carrera a la caminata Podemos arrastrar, esto es entrar aquí, así como así. Si estamos caminando, queremos hacer la transición de correr a caminar. Sigamos adelante y compilemos. Volvamos otra vez. Tenemos que arrastrar esto de aquí a aquí, porque ahora queremos pasar de caminar a correr. Si ya no estamos caminando, arrastra esto y consíguelo y di bullying si ya no estás caminando, lo que significa que este bullying ambulante será falso, entonces queremos empezar a correr de nuevo. Salga y haga clic y compile. Ahora esto va a funcionar. Si haces clic en Play y puedes dar click en el turno, puedes ver como estoy caminando. Y todo está funcionando de maravilla. Todo está funcionando. Puedes probar la animación si algo anda mal con la animación. Probablemente hayas hecho mal el espacio de mezcla. Pero se puede ver que todo está funcionando en todas las direcciones. No obstante, hay un problema en estos momentos. Si haces clic en agacharte y haces clic en el botón de caminar al mismo tiempo, ahora no es caminar, no está en transición Esto se debe a que hay que arrastrar de esto a esto también para crear reglas de transición. Si estás agachado y quieres seguir adelante y empezar a caminar, solo voy a arrastrar esto un poco lejos que haya más espacio, más organización Ahora adelante y da clic en esta regla de transición. ¿Qué debería pasar? ¿Cuándo debo hacer la transición de caminar a agacharse? Puedes tomar esto es caminar y volver a conseguirlo aquí, igual que antes del bullying. Si no estoy caminando, ahora mismo estamos haciendo la transición de caminar a agacharse Así que ya no vamos a caminar. Ya no voy a caminar, pero estoy agachado Si agacharse es cierto, pero correr es falso, y tenemos que arrastrar desde aquí y decir, seleccionar este lingote, seguir adelante y Si ya no estás caminando y estás agachado, adelante y ejecuta esta regla de transición Volvamos aquí y golpeemos desde aquí, desde el agachado hasta el andar así y hacer doble clic sobre él Ahora bien, ¿cuándo deberías pasar de estar agachado a Esto es si ya no estoy agachado, tomando éste. Si ya no estoy agachado, así como así, estoy caminando Quiero hacer la transición a la caminata. Si ya no estoy agachado pero estoy caminando, quiero hacer Si sigo adelante y hago clic en jugar ahora, puedes ver si me agaché Si sostengo el turno para caminar y solto el agachado, se puede ver que estoy Podemos hacer la transición de caminar y agacharse también. No obstante, se puede ver que todavía hay un pequeño error. Se puede ver si me agaché, sostengo, cambio para caminar, y ver que estoy Pero si tengo el control para agacharme, puedes ver que mi velocidad de movimiento es ligeramente mayor porque en realidad estoy agachada Está tomando la velocidad agachada. Esto es algo que hacer dentro de nuestro jugador, en la base de jugadores de aquí, dijimos esta velocidad de carrera y velocidad de caminata. Estamos corriendo automáticamente esta velocidad de caminata aquí cada vez que caminamos, a pesar de que estamos agachados Esta es una época pequeña y quiero presentarles más adelante las enumeraciones Y podemos hacer que este sistema sea mucho más inteligente, pero por ahora, todo está funcionando. Y pasemos a la siguiente lección. 36. Salto en 3.25 multijugador: Haz el salto. Sigamos adelante en la carpeta de planos, vamos a entrada del jugador Sigamos adelante y hagamos una acción de entrada. Justo como antes. Puede hacer clic derecho aquí, ir a Entrada y crear una acción de entrada. Llamemos a esto un salto dentro de aquí. Realmente no necesitamos hacer nada, cerremos la acción de entrada. Y vamos a entrar en el contexto de mapeo de entrada en su lugar, vamos a minimizar todos esos para que podamos ver lo que estamos haciendo. Vamos a hacer clic en el plus aquí arriba y agregar el salto. Si buscas salto y seleccionas la acción de entrada que acabas de realizar. En cuanto a los disparadores, igual que antes, voy a dar click en el plus aquí y voy a seleccionar la prensa. Cada vez que presiono, elijamos la barra espaciadora. Para que pueda dar clic aquí y dar clic en la barra espaciadora. Así que cada vez que haga clic en la barra espaciadora, activará esta acción de entrada. Ahora que esto se ha agregado, puede seguir adelante y hacer clic en Guardar. Vamos a cerrarlo, y pasemos a la base de jugadores. Dentro de la base de jugadores donde tenemos todo nuestro movimiento aquí en el gráfico de eventos, puedes hacer clic derecho y buscar un salto, y luego puedes seleccionar este evento de salto. Ahora para este evento de salto, lo que queremos hacer es simplemente arrastrar desde aquí y saltar a la derecha. Y luego puedes seleccionar esta función llamada jump. Ahora para que esto funcione, en realidad esto ya está funcionando como puedes ver aquí. Hicimos todo esto con el caminar y con los agachados, pero el salto en el motor Unreal ya está replicado Así que en realidad no necesitas hacer más que esto. Puedes ver si compilo ahora y si hago clic en reproducir y puedes dar click en la barra espaciadora, puedes ver que estoy saltando ahora mismo. La animación no es correcta porque no hemos establecido nada dentro del plano de animación Pero como puedes ver aquí, si salto como cliente funciona y si salto como servidor, funciona también. Saltar dentro de Wheel Engine ya es multijugador. En realidad no necesitas hacer más que esto. No obstante, antes de hacer esto, solo quiero asegurarme de que el jugador no pueda spam al botón de salto cuando ya está en el salto. Porque se puede ver aquí, si arrastre desde aquí y escribo cadena de impresión. Siempre es bueno usar una cadena de impresión para depurar para que podamos compilar y hacer clic en Reproducir. Puedes ver si acabo de enviarme spam a mi botón de espacio. Puedo spam del salto aunque esté en el aire. Para arreglar esto, solo para hacerlo más optimizado, podemos tomar este componente de movimiento de personaje que podemos arrastrar desde aquí y decir que está cayendo. Lo que básicamente es decir básicamente si el jugador está en el aire o no. Podemos tomar esto aquí y ahora voy a decir que no por no lingotes Lo que estamos diciendo es que solo queremos saltar siempre que mi personaje no se caiga. Esto quiere decir que el personaje no está en el aire y por lo tanto quiero saltar. Si el personaje está en el aire, no quiero saltar. Podemos arrastrar de aquí y tomar esto y hacer una rama. Podemos arrastrar esto un poco lejos así tenemos más espacio para trabajar y conectarlo aquí. Lo que estamos diciendo es que si mi personaje no está cayendo, es decir, mi personaje no está en un salto, queremos seguir adelante y saltar. Si compilas y haces clic en Reproducir y spam el botón de salto, en realidad, escribamos aquí una cadena de impresión para que veas lo que está pasando. Compilemos, guardemos y juguemos. Si spa mi botón Espacio, puedes ver que solo puedo enviarlo spam cada vez que aterrice en el suelo. Sólo se activa una vez. Esto solo hace que el juego sea más optimizado solo para que sea un poco más limpio aquí. Lo que puedes hacer, esto es opcional por supuesto, pero lo que puedes hacer es que puedes sobre estos nodos y puedes escribir click y decir colapso a una función. Ahora bien esta función a la que puedes llamar, por ejemplo, no es saltar. En lugar de hacerlo con las entradas aquí, pines de ejecución. Este es básicamente solo obtener información si haces doble clic en esta función aquí, si haces doble clic en ella y vas dentro de ella. Y sólo voy a organizar esto un poco. Se puede ver que sólo estamos obteniendo alguna información. No estamos estableciendo ninguna nueva información, solo estamos obteniendo si el jugador está cayendo o no. En lugar de tener estos pines de ejecución, Esto realmente no tiene sentido para funciones que solo obtienen información. Podemos dar click en la función y seleccionar puro. Puro solo significa que esta es una función que obtiene información. No necesitamos ejecutarlo a través del código porque realmente no estamos configurando nada nuevo aquí. Podemos simplemente arrastrarlos juntos. Y ahora estás diciendo que si el jugador no está saltando, puedes seguir adelante y saltar. Y puedes ver que puedes hacer las cosas un poco más limpias si las colapsas a funciones. Para que puedas seguir adelante y hacer clic en Compilar y Reproducir, y solo probarlo. Y todo está funcionando tanto en el cliente como en el servidor. Y sigamos adelante y hagamos el plano de animación. 37. Plan de animación de salto de 3.26: Haz la animación. Vamos a las animaciones. Y dentro del plano de animación del jugador. Ahora dentro de aquí en realidad voy a hacer clic aquí y hacer clic derecho y cerrar las pestañas a la derecha solo para que esté más limpio. De nuevo, voy a abrir el gráfico de animación. Abre la máquina estatal que hicimos dentro de aquí. Para el salto, necesitamos tres estados. Para el primero puedes arrastrar desde aquí y puedes crear un nuevo estado. A este lo voy a llamar jump start. Entonces puedes arrastrar desde aquí y hacer un nuevo estado llamado jump loop o jump air. Y puedes arrastrar de éste y hacer un tercer estado llamado jump end. Ahora para el extremo del salto, puedes tomar esto y conectarlo de nuevo a la marcha inactiva. Ahora tenemos tres estados y necesitamos agregarles las animaciones. Cómo va a funcionar esto es cuando salto, tengo una animación de inicio de salto. Si hago clic en él y solo busco saltar aquí en mis animaciones, tienes esta llamada Jump Start Unarmed Solo asegúrate de que sea el desarmado. Haz clic y arrastra esto aquí y conéctalo. Si quieres ver cómo se ve la animación, siempre puedes hacer doble clic sobre ella. Y así es como se ve. Tenemos una animación inicial de salto que vamos a atravesar antes de ir a la animación donde estamos en el aire. Volvamos aquí. Ahora que hemos conectado esto, volvamos, hagamos clic en el salto de aire y tomemos este llamado Jump A desarmado Y ponlo aquí para el último. Regresemos al extremo del salto. Vamos a dar el salto desarmados. Si lo encuentro, éste en realidad salta tierra desarmada. Podemos tomar esto y conectarlo y seguir adelante y compilar, Bien. Ahora, igual que antes, tenemos que establecer estas reglas de transición, hagamos clic en la primera. El primero, básicamente cuando estamos en el aire, como hicimos aquí en la base de jugadores, si regresas como hicimos aquí para el salto, si el jugador está cayendo, significa que estamos en el aire. Esto significa que en realidad queremos saltar. Tenemos que ir primero en el gráfico de eventos y codificar eso aquí como jugador, al igual que lo que hiciste en la base de jugadores, puedes arrastrar de esto y obtener el componente de movimiento del personaje. Y luego desde el componente de movimiento del personaje puedes arrastrar y decir que está cayendo. Si estamos cayendo, puedes hacer clic derecho en esto y promoverlo a una variable y puedes llamar a esta está en el aire. Esto significa que estamos en el salto. También puedes llamarlo es saltar si quieres adelantarte y compilar Ahora dentro de la gráfica de animación. Volvamos al salto aquí. Esta regla de transición. Tomemos esto está en el aire y conectado. Ahora estamos transf, vuelvo aquí. Estamos haciendo la transición al arranque en salto cada vez que estamos en el aire Siempre que hagamos clic en este botón de espacio por aquí. Desde el inicio del salto hasta el salto, podemos hacer clic en esto. La función que queremos usar aquí se llama tiempo restante. Si estás con el botón derecho y buscas el tiempo restante, este llamado ratio de tiempo restante. Solo asegúrate de que sea ratio. Puedes arrastrar de esto y decir menos, menos que aquí y luego puedes conectarlo. Lo que estamos diciendo aquí es que queremos hacer la transición de una animación de inicio de salto al salto, una animación siempre que el tiempo restante de la animación de inicio de salto sea menor que cualquier número que conectes aquí. Por ejemplo, si enchufo 0.5 y compilo, en realidad continuemos con esto y luego puedo mostrarte lo que está haciendo esto. Entonces volvamos aquí para el salto aquí. Si hago clic para la regla de transición entre el salto aéreo y el extremo del salto, pero esta, vamos a aterrizar siempre que ya no estemos en el aire. Porque puedes imaginar que el jugador está saltando y luego el jugador vuelve a aterrizar en el suelo. Cuando el jugador aterriza en el suelo, queremos reproducir esta animación de extremo de salto cuando el jugador ya no está en el aire. Entonces podemos conseguir esto decir no lingotes, y podemos conectar esto Cuando el jugador ya no está en el aire, queremos seguir adelante y jugar la animación de salto final. Ahora para este de aquí abajo, igual que antes, queremos escribir click y buscar relación de tiempo restante para la tierra de salto cuando es menor que algún número que ingresamos aquí. Entonces queremos seguir adelante y detener la animación de jump end y volver a la carrera add. Para este voy a escribir 0.5 otra vez y voy a compilar ahora podemos seguir adelante y probarlo y ver qué pasa si haces clic en play y maximizas esto aquí. Cuando corro y salto, se ve que tengo una animación de inicio de salto. También tengo una animación de salto terrestre. Se puede ver más claro si pongo este número a algo muy bajo. Si vuelvo a éste también y lo pongo a algo muy bajo, se puede ver que las transiciones. Si hago clic en play jump, tiene una animación de inicio de salto. Y tiene una animación de salto terrestre. Y mira que la animación de salto terrestre es más visible. Ahora parece que el jugador se desliza por el suelo cuando el jugador aterriza. Así es como lo controlas aquí para la proporción de tiempo restante, si haces clic en él, cuanto más alto pongas esto, más rápido se va a cortar la animación. Si lo pones muy bajo, puedes ver que la animación no está cortando rápidamente. Y parece que el jugador se está deslizando. No obstante, si lo pones a algo muy alto, por ejemplo 0.9 saltas, puedes ver que el jugador ya no se desliza. La animación de salto cortará mucho más rápido. Cuando este es un número mayor, solo tienes que sentarte aquí y ajustar este número así como este número. Para el arranque en salto, sólo tienes que hacer clic en Reproducir varias veces, intentar saltar, ver qué funciona para ti, ver qué se ve bien, e intentar ajustar estos números. Trato de jugar con esto, y el número que mejor me queda para el arranque en salto es 0.8 Si vuelvo para el extremo del salto, es 0.9 Eso es correcto. Así que vamos a hacer clic en Reproducir y ver cómo se ve. Ahora si saltamos, se puede ver que así es como se ve. Siempre puedes ajustarlos un poco más si así lo deseas. Pero creo que esta es una buena ronda de salida para el salto. Ahora lo que puedes hacer también. Puedes ver aquí si hago clic en jugar y camino por ahí sosteniendo turno para caminar y hago clic en saltar. La animación no se está reproduciendo. Esto es porque, recuerda que tienes que hacer la transición de la caminata. Aún no tienes una transición para arrastrar de la caminata y la transición al inicio del salto desde aquí, puedes ver esta regla de transición igual que antes. Al igual que lo que hiciste aquí para la carrera al ralentí, usas el Is en lingotes de aire Tienes que dar click aquí y usar lo mismo. Si estás en el aire, puedes hacer la transición de la caminata al salto. Ahora, no estoy seguro si quiero hacer transición de la agachada al salto, pero puedes agregar esa mecánica a tu juego, pero no quiero agregarla por No creo que lo vaya a tener así. Así que puedes hacer clic en reproducir ahora, y puedes caminar presionando Mayús, puedes hacer click en el espacio. Y ahora puedes ver que pasa a la animación de salto cuando estás caminando también. 38. 3.27 Introducción a las enumeraciones: Ahora mismo, quiero cambiar algo con el movimiento aquí. Puedes ver si hago clic en turno y camino y si tengo el control, puedes ver que realmente no puedo agacharme mientras sostengo el Si sostengo turno para caminar y tengo control al mismo tiempo, no estoy realmente agachado Tengo que presionar turno y luego tengo que soltar turno y luego presionar C. Realmente no me gusta eso. A mí me gusta, por ejemplo, si haces clic en Cuervo, presionas en turno al mismo tiempo, va a caminar aquí así. Pero no está haciendo esto ahora mismo. Tengo que soltar el botón y luego puedo caminar. Y tengo que soltar el botón de caminar. Y luego haga clic en, en la agachada antes de que pueda agacharme. Y realmente no quiero hacer eso. Sigamos adelante y arreglemos esto y hagamos que el sistema un poco más avanzado para que pueda tomar entradas así. Lo que vamos a utilizar para esto son las enumeraciones. En esas lecciones, sólo quiero presentarles las enumeraciones. Puedes volver a la carpeta de planos y puedes hacer clic derecho aquí y hacer una nueva carpeta y llamar a ésta enoms o Eso depende de ti. Puede hacer clic derecho en esta carpeta, establecer un nuevo color y simplemente usar el mismo color que antes dentro de esta carpeta. Vamos a hacer clic derecho, Ir a Blueprint y seleccionar esta llamada enumeración Adelante y hazlo, y lo llamaré como prefijo y voy a llamarlo estados de movimiento. Y puedes abrirlo y puedes ver una enumeración es básicamente solo una lista de ítems Puedes hacer clic aquí para agregar un artículo. Si solo hago clic aquí un par de veces, puedes ver que es una enumeración es solo una lista de elementos que puedes hacer Puede ser una lista de cualquier cosa, por ejemplo, una lista de abarrotes, una lista de armas, una lista de estados de movimiento Como estamos haciendo aquí solo una lista de cualquier cosa que desees. También puede ser una lista de artículos que puedes saquear o una lista de qué porciones tienes en tu juego Cualquier cosa de la que puedas hacer una lista, puedes crearlos aquí. Al hacer clic en estos iconos, puede eliminar los elementos de la lista. Para el primero, sólo vamos a hacer una lista de estados de movimiento. El primer estado de movimiento que tenemos es correr. Entonces puedes volver a hacer click aquí arriba. Entonces tenemos caminando. Ahora bien, en realidad no necesita estar en un orden específico. Se puede hacer, por ejemplo, correr primero y o el caminar primero y así sucesivamente. Pero ahora mismo tenemos el correr y caminar, y también tenemos el agachado y puedes seguir adelante y ahorrar Entonces muy, muy simple y la enumeración es solo una lista de ítems En este caso, estamos creando una lista de los estados del movimiento, y los usaremos en la siguiente lección para hacer que el sistema sea un poco más avanzado para el movimiento. 39. 3.28 Cambia variables de movimiento a grupos: Ahora que hemos creado la enumeración, hagamos clic en el Jugador Vamos dentro de la base de jugadores. Ahora volvamos al gráfico de eventos aquí. Y voy a arrastrar esta pestaña hacia un lado. Entonces tiene un poco más de estructura así para la primera. Por ejemplo, para el agachado, vamos a entrar en la función agacharse Dentro de aquí, puedes ver que estamos agachados y estamos poniendo este lingote a C y no agachado este lingote a C y Vamos a hacer este sistema un poco más avanzado para que pueda tomar múltiples entradas. Sigamos adelante y eliminemos estos bulones por ahora. Voy a arrastrar esto hacia abajo así tengo más espacio para, vamos a crear una nueva variable. Esta variable, la vamos a llamar estado de movimiento para el tipo de variable. En lugar de simplemente hacer estas variables predeterminadas, también puedes hacer variables de cualquier cosa dentro del juego. Por ejemplo, se puede hacer una variable a partir de la enumeración que acabamos de hacer Si solo buscas estados de movimiento, puedes ver aquí, esta es la enumeración que hice Solo asegúrate de buscar el nombre tal como lo has escrito, para el archivo. Estados de movimiento. Puedes ver aquí, si vuelvo a la enumeración, se llama estados de movimiento Ahora tengo esto como variable y puedo hacer click y compilar. Ves si le echo un vistazo aquí al valor predeterminado, puede establecer el elemento de lista aquí para la enumeración Puedes configurarlo en uno de estos estados si estás corriendo, si estás caminando, si estás agachado y así sucesivamente Puede hacer clic y arrastrarlo hasta aquí y escribir conjunto. También puedes ver la enumeración aquí. Puede configurarlo en uno de estos elementos de la lista. Puedes ver que esto es muy bueno y también lo vamos a usar más adelante para los widgets. Cuando estamos creando la interfaz de usuario, podemos hacer una lista de UI. Por ejemplo, menú principal, menú pausa, menú de escape. Podemos hacer el juego Main UI. Y así uno puedes hacer una lista de cualquier cosa que sea realmente útil usar aquí. En lugar de simplemente tenerlo así como una variable estándar, quiero darle múltiples valores. Puedes ver si me conecté, quiero caminar, en lugar de simplemente agacharme, establecerás esta variable en caminar en su No obstante, esto simplemente será como antes, Realmente no hay un cambio. Solo lo estás configurando para caminar y no caminar. Y lo estás configurando para agacharse y no agacharse. Ahora quiero que tenga entrada múltiple. Lo que quieres hacer. En cambio, quiero dar click sobre esto, en el tipo aquí de qué tipo de variable debería ser. Y voy a seleccionar una matriz en lugar de una sola variable. Ahora lo que se compara una matriz con una sola variable o la variable única, solo puedes establecerla en un valor. Por ejemplo, si lo configuro para caminar en el caminar, esto anulará este valor que he establecido aquí. Para el agachado para la matriz, puedes imaginarlo como una caja y tienes múltiples entradas dentro de aquí Se puede ver si compilo. Y cuando lo cambias a una matriz y haces clic en este plus aquí, puedes ver que puedes tener múltiples entradas. Se puede tener el correr, el caminar, el agacharse a la vez una matriz, se puede imaginar como una caja Y estás poniendo todos estos valores dentro de la caja. Sin embargo, si solo tiene una única variable estándar, es solo un elemento que puede configurar para caminar, agacharse, etc. Pero para las matrices, de nuevo, se puede imaginar como una caja. Básicamente estás poniendo todos estos elementos dentro de tu caja, y tienes todos estos valores almacenados para ti. Otro uso para una matriz es, por ejemplo, ¿qué artículos tienes en tu inventario? Por ejemplo, puedes tener un triste, puedes tener un escudo y así sucesivamente. Así podrás tener varios artículos dentro de tu inventario. Puedes ver que las matrices son muy agradables, o si tienes varios elementos que quieres almacenar por ahora, eliminemos todo aquí. Y vamos a compilar para el agachado. Vamos a arrastrar esto agachado hasta aquí. Lo que queremos usar es si arrastras, puedes decir set array element para las matrices. Si no conoces todas estas funciones, básicamente puedes arrastrar desde aquí y escribir array. Yo hago eso a veces si hay algo que olvido o no sé, puedes escribir array. Y puedes ver, puedes ver todas las funciones para la matriz. Puede borrar, puede encontrar un artículo que estés preguntando si contiene un artículo. Puedes encontrar un artículo. Puedes obtener un artículo específico. Puedes preguntar si esta matriz está vacía y puedes hacer algo con ella. Puede obtener la longitud de la matriz. Puedes ver que tenemos muchas funciones que puedes usar para la matriz. El que vamos a usar se llama set array element. Vamos a establecer un artículo. Ahora también puedes usar este si arrastras y escribes un, por ejemplo, escribe agrega aquí. Y puedes escribir el agachado. Cuando estamos agachados, vamos a agregarle el agachado, el ítem. Sin embargo, este está funcionando muy bien en un solo jugador, pero tengo muchos problemas con él en el modo multijugador. A veces no se agrega y trato de depurar mi código durante horas, y en realidad es solo este molestando. No hay nada malo en tu código. Este es realmente malo para usar en multijugador, tiene muchos errores, así que voy a eliminarlo y usar este. Si desea agregar elementos, use este elemento sit array en su lugar para continuar y conectarlo. Lo que quiero establecer es cuando me voy a agachar, quiero poner el ítem a Voy básicamente lo que estoy haciendo aquí a través del código. Cuando hago clic en agacharse, estoy agregando este agachado Bien, adelante y asegúrate haber eliminado todos los valores predeterminados por ahora. Entonces ahora estamos poniendo el agachado. Ahora para el índice, solo te pregunta dónde quieres poner el agachado Si haces clic en la matriz y haces clic en el más, puedes ver que tienes un número de índice. Y si vuelvo a hacer clic en el más, puedes ver que tienes otro número de índice. Las matrices comienzan en el índice cero, y cuantos más elementos agregue, se incrementará Será el índice uno, índice dos, el índice 345, y así sucesivamente. Entonces comienza en el índice cero. No empieza en el índice uno. Muy importante saber ahora para el índice en vez de solo tenerlo ya esto va a ser un problema. Porque si tomamos esto y copiamos pégalo en el caminar, y también establecemos la caminata en índice cero. Aquí se puede ver que se superpondrá si estoy caminando, digamos, digamos que aquí estoy agachado Presiono la agachada y voy a eliminar todas las demás Esta voy a borrar así como esta. Ahora mismo estoy agachado. Añadió el agachado a mi índice cero Ahora bien, si hago clic en el caminar al mismo tiempo, va a superponer mi agachada aquí, El valor agachado, porque lo va a establecer en índice cero en lugar de superponer cero en lugar de Lo que puedes hacer es tomar de esto y decir, último índice. Se va a echar un vistazo a cuál es tu último número de índice. Ahora mismo, mi último número de índice es cero. Si agrego estos ítems, por ejemplo así, mi último índice sería tres. Va a encontrar el último índice que puedas sacar de esto y ahorrar pérdidas y agregarle uno así. Y luego puedes agregarlo al índice. Lo que básicamente estás diciendo es encontrar el último índice número tres por ejemplo, incrementado en uno Aquí es donde quieres agregar este nuevo valor. Nunca estás superponiendo tus viejos movimientos. Voy a borrar todo esto. Compile ahora haz clic en Tamaño a Ajustar, porque esto básicamente hará espacio para el nuevo estado que vas a agregar. Bien, ahora tenemos esto aquí. Ahora para el agachado, si ya no queremos agacharnos, puedes tomar este estado agachado y puedes arrastrar desde aquí y decir Y puedes elegir este llamado remove item y puedes conectarlo aquí. Cuando ya no estamos agachados, básicamente queremos eliminar el agachado de este elemento o de esta matriz aquí Cuando estamos agachados, estamos agregando el ítem a la matriz, al último índice más uno, lo que significa que no estamos superponiendo el último elemento que agregamos, que tal vez podría ser caminar o correr y así sucesivamente Y luego cuando ya no estamos agachados, queremos eliminarlo de esta matriz porque ya no estamos agachados Bien, vamos a compilar. Vamos a copiar y pegar todo esto aquí. Copiarlo y pegarlo al caminar. Voy a borrar la velocidad de movimiento y la caminata. Vamos a añadir la velocidad de movimiento más adelante. Hazlo más palanca también. Eliminaremos todo esto. Pegar este código, conectarlo, y para este, seguir adelante y seleccionar el caminar en su lugar. Si ya no estamos caminando, podemos tomar esto y decir quitar artículo igual que antes y conectado. Y se puede quitar el caminar. Y adelante y organízalo un poco más. Bien, entonces tenemos el caminar, ahora estamos agregando el caminar. Solo asegúrate de tener los valores correctos para caminar y para los agachados también . Agachado, agachado Cuando estamos agachados. Vamos a agregar el artículo cuando estemos caminando. También vamos a agregar el artículo. No obstante, ahora para la carrera, realmente no tenemos un lugar donde podamos agregarlo para el running. Lo que quiero hacer es solo quiero agregarlo por defecto. Si hago clic en el estado de movimiento, quiero dar click en el más aquí. Y sólo voy a agregar el running como predeterminado. Porque cuando estoy caminando o cuando no estoy agachado aquí y no estoy caminando, básicamente estoy corriendo Yo sólo quiero que este estado de movimiento sea por defecto. Cuando no estoy agachado y caminando, correrá automáticamente Entonces puedes ver aquí, cuando empiece a caminar, agregará esta caminata al último índice más uno, lo que significa cero más uno. Se sumará el caminar aquí abajo y nunca se superpondrá a mi estado de movimiento de carrera. Ahora que tenemos esto terminado, en realidad terminamos con este sistema. Se puede ver que es un poco más avanzado, pero va a funcionar mucho mejor que antes. Y se puede ver cuando hacemos una enumeración, podemos reducir la cantidad de variables que hacemos Porque ahora para la agachada, puedes seguir adelante y dar click en Eliminar Simplemente puedes eliminar esto. Y para el caminar también. Ahora puedes ver que solo tenemos una variable para el agachado y para el caminar más adelante Si quieres crear una variable sprint para tu juego, puedes seguir adelante dentro de la enumeración, agregar la variable sprint, y para el sprint nuevamente, igual que antes, seguir adelante y convertirlo en una función para el sprint Al igual que el agachado y el caminar, puedes agregar el sprint así como así 40. 3.29 Cambia las reglas de transición de animación: Ahora que terminamos con este sistema, compilemos, guardemos todo. Cerremos esto y pasemos al plano de animación del jugador en su lugar Ahora dentro de aquí, obtenemos un par de errores porque hemos eliminado la agachada y la caminata en el gráfico de eventos del plano de animación Simplemente puedes seguir adelante y borrar estos, el agachado y el caminar, porque ya no lo necesitamos Se puede compilar y se puede ver que los errores se han ido. Lo que queremos usar aquí en cambio, podemos dirigir desde aquí y decir estados de movimiento que queremos usar esta matriz que creamos. Adelante y consigue esta matriz. Puedes escribir lick it promovido a una variable y simplemente llamarlo estado de movimiento aquí dentro del plano de animación Adelante y conéctalo. Y conectar el está en Er junto con él. Y adelante y solo hazlo un poco más organizado. Ahora cuando compilamos, te da un error. No estoy seguro de lo que realmente quiere aquí. Si acabo de compilar de nuevo, se puede ver que desapareció. No lo sé, eso fue solo un error aleatorio. Pasemos al gráfico de animación. Dentro de la gráfica de animación, vamos dentro de aquí. Ahora queremos cambiar todos los estados de movimiento por el primero de los ociosos a caminar, por ejemplo. Puedes hacer clic aquí usando este lingote que usamos antes Sigamos adelante y lo eliminemos. Tomemos este estado de movimiento. Ahora para esta matriz, lo que puedes hacer es tomarlo desde aquí y decir get. Básicamente solo queremos sacar el paseo. Recuerda, si vuelvo con el jugador solo para explicarlo un poco mejor. En lugar de cuando estamos caminando, básicamente estamos agregando el elemento walking a esta matriz. Ahora, para el plano aquí, el plano de animación, queremos que este camine Realmente no sabemos en qué índice se encuentra, porque podría estar en el índice cero. Podría estar en el índice uno. Recuerda, nunca puede estar en el índice cero, porque en el índice cero siempre estamos corriendo. Entonces puede estar en el índice uno o dos para saber qué es esto. En lugar de simplemente obtener, puedes arrastrar desde este de aquí y obtener el último índice. Recuerden, usamos este en la lección anterior, luego seguir adelante y conectarlo aquí. Ahora estamos obteniendo el último índice. Recuerda que cualquiera que sea el último índice es el botón actual que estás presionando. Si estoy presionando en el caminar, mi último índice sería caminar aquí. Si obtienes esto y estás pidiendo obtener el último índice para esta matriz, este último índice es igual. Para que puedas escribir un signo igual y seleccionar esta enumeración igual Si este último índice que obtuviste de esta matriz es igual a caminar, esto es cierto. Significa que estoy caminando. Porque el último índice, si está caminando, significa que actualmente estoy presionando el botón de caminar y quiero caminar. Quiero pasar de ocioso a caminar más allá de esto aquí y volver e ir a éste. Vamos de la caminata a la ociosa en vez de usar esta no es caminar. Puedes copiar y pegar el código que escribiste antes y simplemente puedes cambiarlo a ejecutarlo. Si el último índice es igual a correr significa que no estamos presionando el caminar, porque lo eliminamos de la matriz. Y no estamos presionando a los agachados también. Debido a que lo eliminamos de la matriz, solo nos queda el estado de ejecución. Si está funcionando, entonces podemos seguir adelante y correr y esto va a ser correcto. Bien, solo sigue adelante y copia y pega esto a todos ellos. Esto fue para el caminar. Ahora para que los inactivos se agachen, puedes hacer click sobre esto En lugar de que este esté agachado, puedes pegarlo Seleccione agachado, conéctelo. Vuelve atrás y de la agachada para correr, otra vez, borra este pasado, selecciona el running y conéctalo Se puede ver que en realidad es mucho más fácil de usar, pero esta de la agachada para caminar, podemos eliminar todo No lo necesitamos de la agachada para caminar. Esto quiere decir que estamos caminando. Podemos seleccionar el caminar. Y conectó lo mismo de la caminata a agacharse. Esto significa que estamos agachados. Podemos seleccionar esto y seleccionar agachado y conectarlo. Ahora hemos cambiado todos esos. Nosotros los hemos cambiado. Y éste es sólo para el salto. Realmente no necesitamos cambiar nada aquí. Vamos a compilar y vamos a hacer clic en play. Vamos a probarlo. Se puede ver como el jugador, puedo dar click en el control, puedo agacharme Si mantienes turno al mismo tiempo, puedes ver que ahora puedo caminar mientras tengo control y turno al mismo tiempo. Si dejo ir el turno para volver a agacharme, se puede ver que está funcionando. Y si dejo ir el control, estoy caminando por aquí ahora, la velocidad de movimiento no es correcta, y tenemos que arreglarlo más tarde. Pero pueden ver ahora puedo presionar múltiples botones. Si dejo ir el turno ahora, puedo caminar normalmente. Puedo mantener turno otra vez, mantener el control al mismo tiempo. Se puede ver que ahora podemos mantener pulsados los botones al mismo tiempo. Y va a hacer esta acción en vez de antes tuvimos que soltar el botón, antes de que pueda hacer esta acción. Bien, así que probémoslo también en el cliente, solo para asegurarnos de que funciona en multijugador. Para el cliente, puedo agacharme, para el servidor, puedo agacharme y no está funcionando igual que Si recuerdas lo que dije, tenemos que replicar la variable antes de que pueda funcionar Entonces si volvemos al jugador y hago clic en el estado del movimiento, y hago clic en Replicar. Y replicado y compilar y hacer clic en jugar como la encuesta Otra vez, si me agaché, se puede ver que funciona. Y si camino, vuelve a funcionar. También podemos probarlo para dos clientes solo para asegurarnos. Juega como cliente y juega. Ahora tenemos dos clientes. Si haces el movimiento, funciona correctamente. Ahora otra vez, para fijar la velocidad de movimiento más adelante. Pero ahora se puede ver que todo está funcionando correctamente. 41. 3.30 Arregla el tamaño del jugador: Antes de continuar fijando la velocidad de movimiento, tenemos que fijar el tamaño del personaje. Porque ahora mismo se puede ver como el personaje, si voy por ahí, soy un personaje muy pequeño y tenemos que hacerlo más grande. No estoy seguro de si es mi mapa el que es muy pequeño o si son estos personajes los que importé del marketplace. Son muy pequeños. De cualquier manera, en realidad no importa. Lo que tenemos que hacer es que tenemos que aumentar el tamaño del jugador. Esa será la solución más fácil. Sigamos adelante y hagamos clic en la base del jugador en la malla. Recuerda, tienes que hacerlo en la base de jugadores. Automáticamente lo aplicará al encuentro terrorista, terrorista haciendo clic en la base de jugadores. Al hacer clic en este personaje, intenté probar un poco con los tamaños. Solo intenté escalar esto un par de veces para ver qué es lo mejor aquí. Pero si haces clic en la malla y haces clic en este candado, puedes ver si solo escribes un número aquí, la y y la z no está escalando junto con la x, en realidad no está escalada uniformemente. realidad no está escalada uniformemente Puede hacer clic en este candado. Esto significa que si cambias un número, éste lo cambiará para todos ellos. Extrema derecha, 1.7 aquí, por ejemplo. Y puedes seguir adelante y hacer clic en Compilar, y puedes dar click en Reproducir. Se puede ver si voy por ahí ahora, soy muy grande comparado con el medio ambiente. Puedes intentar probar diferentes tamaños. Intenta correr por tu entorno y ver cómo se ve. Creo que esto es quizá un poco demasiado grande. Voy a disminuirlo a 1.6 Adelante y compilar y dar click en Reproducir. Y trata de caminar por ahí ahora en el entorno para ver como tu altura se compara con las cajas. Incluso puedes dar la vuelta por aquí y tal vez caminar esta rampa para ver el tamaño y subir hasta aquí. Creo que esto es mucho mejor que antes. Voy a usar este 11.6 si tenemos problemas más adelante, siempre podemos cambiarlo y arreglarlo después Podemos simplemente cambiar el número aquí. No obstante, creo que esto es bueno ahora. También tenemos que arreglar esta cápsula de colisión. Porque si corro por ahí ahora, tal vez vaya a esta parte y entre aquí. Se ve que me superpo con todo. Y puedo saltar a la pared. Y esto se debe a que hay que aumentar de nuevo el tamaño de esta cápsula de colisión. Si hago clic aquí arriba y voy a la vista derecha, por ejemplo, puedo aumentar la mitad de la altura de la cápsula, puedo dar click en el personaje. Mueve al personaje hacia abajo para que el pie quede en la parte inferior. Aquí pueden ver tengo que aumentarlo un poco más. Entonces si vuelvo a hacer clic en la cápsula de colisión, aumentarla, tal vez algo así como 150. Y puedo volver a hacer clic en el personaje , Mueve el personaje hacia abajo. Se ajusta mucho mejor que antes. Ahora bien, en realidad no tiene que ser preciso. Vamos a hacer un mejor sistema más adelante. Pero con solo hacer clic aquí, asegúrate de que el pie esté en la parte inferior. Aquí, puede hacer clic en esta cápsula de colisión. Ahora probablemente tengas que hacerlo más amplio. Puedes hacer click, dar click en la vista frontal, Ahora tenemos que hacer el radio un poco más ancho. Y solo voy a hacerlo un poco más ancho que estos brazos para que no choquen con los objetos Algo así, tal vez 60 precisamente. Podemos seguir adelante y dar click en play. Ahora podemos andar por ahí. Es mucho más preciso que antes. Puedes intentar entrar aquí y puedes ver que no te permitirá. Tenemos caja pequeña. Si haces clic en control, puedes caminar aquí, pero también puedo dejar el control y ya ves que me estoy superponiendo ahora, tenemos que arreglar estos pequeños problemas más adelante. Pero puedes ver en general todo está funcionando bien, el tamaño del personaje es mucho mejor que antes. Entonces sigamos adelante y continuemos. 42. 3.31 Establece la velocidad de movimiento: Ahora que hemos mejorado nuestro sistema de movimiento, sigamos adelante y fijemos la velocidad de movimiento. Vamos a cerrar esto. Y voy a volver al jugador en la base de jugadores. Dentro de aquí, lo que quiero hacer es hacer una nueva función. Vamos a hacer clic en el plus aquí arriba. Escribamos F, ajustemos la velocidad de movimiento para esta función. Simplemente lo que quiero hacer es tomar este componente de movimiento del personaje y establecer la velocidad máxima de caminata. Esto es simplemente lo que quiero hacer ahora. Quiero establecer esta velocidad máxima de caminata dependiendo de si el jugador está corriendo o si el jugador está caminando, o si el jugador está agachado Ahora la forma en que podemos hacer esto es que podemos dirigir desde éste y decir seleccionar. Y se puede ver este llamado select. Esta es la primera vez que estamos usando esta. Y este es realmente, muy útil en los juegos o aquí básicamente en cada juego que hagas en motor real con planos te permite seleccionar una opción dependiendo de lo que conectes aquí abajo Digamos por ejemplo, estás enchufando un arma aquí. Y dependiendo de qué arma estés enchufando, tendrás como la velocidad de disparo o tendrás cuántas balas tienes en esa pistola y así sucesivamente Tan nota muy útil para usar en este caso. Vamos a establecer la velocidad de movimiento dependiendo de si estamos corriendo, agachados o caminando, en realidad necesitamos esta velocidad de movimiento nuevamente Consigamos el último índice igual que antes. Recuerda que el último índice es el último botón que hemos pulsado y vamos a arrastrar de aquí otra vez y digamos obtener y obtener una copia, y conectemos este. Bien, así que ahora estamos recibiendo el último movimiento. Estamos presionando en el teclado y vamos a arrastrar de esto ahora en vez de antes, arrastramos de esto y escribimos igual y lo hicimos así Ahora para los selectos, ahora vamos simplemente solo para obtener el último índice y ver qué está empujando actualmente el jugador. Y podemos arrastrar de esto y enchufarlo aquí. Y ahora se puede ver el correr, caminar y agacharse. Y la razón por la que ves esto es porque simplemente lo está tomando de esta enumeración que hemos escrito Si añades más cosas a esta enumeración también agregarás más opciones a aquí Sea lo que sea que agregues a esta enumeración, podemos ver muy útil ahora, siempre que estés corriendo, puedes tener esta variable de velocidad de carrera Puedes arrastrarlo y enchufarlo aquí siempre que estés caminando, puedes enchufarlo aquí siempre que estés agachado Realmente no tenemos uno todavía. Vamos a hacer clic derecho en éste, ascendido a una variable y llamarlo velocidad agachada Sigamos adelante y compilemos ahora. Por ahora, realmente no tengo números de movimiento específicos, los vamos a ajustar más tarde. Por ejemplo, para el running, puedes escribir 1,000 para el caminar, puedes escribir 500 para el agachado, puedes escribir 150 Esto es solo para ver si funciona y puedes seguir adelante y hacerlo más organizado. Bien, para este conjunto de velocidad de movimiento, lo que quiero hacer es volver al gráfico de eventos. Y comencemos con la agachada. Para los agachados, aquí estamos haciendo la agachada. Y entonces tenemos que tomar esta velocidad de movimiento establecida y ponerla por aquí. También aquí abajo, necesitamos establecer también la velocidad de movimiento, arrastrándola hasta aquí, establecer la velocidad de movimiento porque cuando ya no estamos agachados, de nuevo, necesitamos obtener el último índice y ver si es correr, caminar Tenemos que hacer esto también para caminar. Volvamos a arrastrar la velocidad de movimiento establecida. Enchúfelo. Y lo mismo aquí abajo, Establecer la velocidad de movimiento. Ahora para la carrera, no importa porque si quitamos la caminata y la agachada, va a estar corriendo aquí como último índice y va a ir y tomar la velocidad de carrera Bien, hagamos clic en Reproducir y probarlo y ver si todo funciona. Entonces aquí estoy como servidor. De hecho, estoy corriendo aquí para correr. También es necesario cambiarlo primero. Aquí en el valor por defecto en el componente de movimiento catal para la velocidad máxima de caminata. Ya que escribí aquí que la velocidad máxima de caminata sería de 1,000 por defecto, escribamos 1,000 aquí también por ahora. Entonces son lo mismo aquí para la velocidad de caminata, 500, bien. Volvamos a hacer clic en jugar , probado. Ahora estoy caminando y es muy rápido. Vamos a ajustar esto más tarde. Crolick, turno para caminar. Se puede ver que todo está funcionando agacharse y cambiar al mismo tiempo Ves que hay un error, una pelea agacharse o una prensa agacharse y luego Se puede ver que el movimiento sigue siendo el agachado. La razón por la que esto es porque cuando estás agachado, escribes esto, tienes éste Nunca te agachas a menos que realmente te quites el dedo del botón agacharte Nosotros en realidad, cuando nos agachamos y caminamos al mismo tiempo, seguimos en este estado agachado En realidad necesitamos agacharnos para que la velocidad de movimiento sea correcta Volvamos a la velocidad de movimiento establecida. De hecho, vamos a agacharnos si estamos agachados para que parezca correcto, lo que vamos a hacer es que solo vamos a Y voy a extender esto aquí, copiar y pegarlo. Lo que hay que hacer es arrastrar de esto y decir igual y necesitamos ver si es igual a agacharse Tenemos que preguntar, ¿el jugador está actualmente agachado o no? Si el jugador se encuentra actualmente agachado, necesitamos simplemente escribir esta agachada Si el jugador está agachado, es decir, si el último índice está realmente caminando A pesar de que el jugador también presiona el botón agacharse, pero el último índice es caminar, el jugador está caminando actualmente Necesitamos en realidad, vamos a conectarlo más adelante. Podemos agacharnos. Cuando quitemos el caminar, vamos a conectarlos aquí. Este es el agachado Y aquí nos agachamos. Y podemos simplemente seguir adelante y enchufarlo aquí. De nuevo, solo voy a hacer click y hacer un nodo trasero hacia afuera aquí y voy a enchufar este de aquí. Sí, eso parece correcto. Ahora si me agacho, va a volver a poner el agachado Si no estoy agachado, digamos que estoy presionando el botón de caminar al mismo tiempo que estoy presionando el agachado, en realidad va a agacharse realidad va Y entonces voy a aplicar esta velocidad de caminata. No obstante, cuando dejo de caminar y sigo presionando el botón agacharse, simplemente se va a agachar aquí Vamos a hacer clic en Reproducir y ver. Vamos a hacer clic en Shift to Walk. Ahora puedes ver si hago clic en agacharse y hago clic en Shift al mismo tiempo, puedes ver la velocidad de movimiento ajustar correctamente Si vuelvo a dejar el turno y me agacho, se puede ver que las velocidades de movimiento se están corrigiendo aquí y están caminando correctamente Si me muevo, me agacho y luego cambio, o luego primer turno y luego agacharme, puede ver que también está Nuestra velocidad de movimiento funciona correctamente. Ahora lo que básicamente hicimos es que hicimos que esta función estableciera la velocidad de movimiento. Ahora estamos preguntando si el jugador está agachado o no. Y la razón por la que hacemos esto es si no lo estamos haciendo y estamos presionando primero el botón agacharse, vamos a aplicar esta función agacharse Sin embargo, si todavía estás presionando el botón agacharse y luego presionar el botón de caminar, todavía está teniendo este agachado aplicado porque nunca te agachas, nunca dejas que este botón todavía está teniendo vaya por el agachado nunca dejas que este Básicamente aplicaría el movimiento equivocado a pesar también han establecido el movimiento para la velocidad de caminata. Sólo estamos preguntando aquí, ¿estamos agachados o Si estamos agachados, solo sigamos agachados. Si no estamos agachados, asegúrate de estar agachados antes de hacer todo esto Porque si no te agachas, sigues aquí arriba. Solo nos estamos asegurando de que estamos aplicando el movimiento correcto. Ahora que la velocidad de movimiento está terminada, podemos guardar todo y podemos pasar a la siguiente lección. 43. 4.01 Espacio de mezcla de offset de objetivo: Ahora estamos listos para crear el Desplazamiento de Apunte. Para que el jugador cree el desplazamiento de objetivo, volvamos a la carpeta del jugador. Dentro de aquí, volvamos a Animaciones. Y vamos a hacer clic derecho aquí, Ir a Animación. Ahora tenemos algo llamado desplazamiento de objetivo, pero también tenemos uno más simple llamado desplazamiento de objetivo uno D. Esto es lo mismo que el espacio de mezcla. En realidad tienes algo llamado espacio de mezcla. Una D para esta, solo te la estoy mostrando rápidamente Para el espacio de mezcla. Por ejemplo, se puede ver antes de que tuviéramos el movimiento de ocho vías, pero una D es simplemente pasar de caminar a correr un espacio de mezcla muy simple. Ahora para el desplazamiento de Am, permítame eliminar este clic derecho de nuevo. En lugar de hacer el movimiento ocho, vayamos al legado y utilicemos el offset Aim. Una D. Voy a seleccionar de nuevo mi esqueleto y llamarlo un O stand desarmado Vamos a hacer doble clic en éste. Esta es la compensación de objetivo. El Objetivo compensado, muy, muy básico. Solo tenemos nuestro objetivo aquí es el centro donde estamos mirando hacia adelante. Y el jugador está mirando hacia abajo por aquí. Y el jugador está mirando hacia arriba por aquí. Lo que tenemos que hacer, al igual que el espacio de mezcla, tenemos un eje horizontal. Esta es nuestra dirección. Podemos escribir dirección. El valor mínimo para la dirección es -90 Esto es cuando estamos mirando hacia abajo, el máximo es 90, esto es cuando estamos buscando la velocidad del peso Sólo voy a aplicar igual que antes lo que hicimos con los espacios de mezcla. Voy a aplicar un poco de suavidad para que se vea mejor Y ahora estamos listos para aplicar la animación. Vamos a guardar todo. Ahora puedes ver que también he importado para ti las compensaciones de objetivo Si tomas uno de ellos por ejemplo, vamos a hacer éste. Se puede ver cuando intento arrastrarlo, dice tipo de animación aditiva no válida. Entonces tenemos que arreglarlo. Y pasemos a la siguiente lección para arreglar este tipo de aditivo. 44. 4.02 prepara las animaciones de desplazamiento de objetivo: Antes de que podamos usar nuestras compensaciones de objetivo, tenemos que prepararlas. Así que vamos a las animaciones assets. Y aquí es donde están todas tus animaciones. Recuerda, no está dentro de las animaciones la que te di. Está dentro de estos, los activos, animaciones a las que nos dirigimos antes. Por ejemplo, busquemos un desplazamiento de animación. Si solo escribes AO aquí arriba, verás todos los desplazamientos de animación Ahora puedes dar click en uno de ellos y aquí puedes ver éste, por ejemplo. Esta es la pistola mirando hacia adelante, pistola central agachada. Para este, se puede ver el tipo de aditivo, esto es de lo que estaba hablando. Este, tienes que hacer clic aquí y configurarlo en malla de espacio. Entonces hay que dar clic aquí y decir cuadro de animación seleccionado. Ahora hay que seleccionar el ídolo para esta animación. El ídolo para esta animación es el ídolo agachado de pistola, podemos buscar aquí Si solo buscas ídolo, éste de aquí, animación agacharse Asegúrate de elegir esto para tu esqueleto reajustado y no para la pistola ídolo agachada de animación manqin predeterminada Este sería el correcto para éste. Sigamos adelante y ahorremos ahora para éste. Puedes ver si lo cierro y vuelvo a las animaciones de mis jugadores. Ábrela aquí, puedes ver si vuelvo a la pistola del sensor, si la encuentro aquí. Éste de aquí. Pistola con sensor agachado Ahora bien, si lo arrastro hasta aquí, ya se puede ver que está funcionando. Tenemos que hacer esto con todos ellos. Se puede ver que los otros también son inválidos para el tipo de aditivo. Permítanme simplemente borrar esta por ahora. Y tenemos que hacerlo por todos ellos. Ahora, hay una manera más fácil de hacer esto. Si vuelves a hacer clic en los Activos, animaciones, vuelves a buscar el AO. Ahora puedes hacer clic en el primero, Hold Shift. Haga clic en el último, puede escribir haga clic en Ir a Acciones de Activos, y luego haga clic en Edición masiva a través de la matriz de propiedades. Dentro de aquí, puedes editar los ajustes de todos ellos a la vez. Un truco muy útil para hacerlo. Aquí puedes ver también puedes editar otros ajustes como la compresión, la animación. Puedes editar cosas como esta, pero por ahora solo nos interesa la configuración de aditivos aquí. Veamos aquí, el tipo de animación aditiva. Puede hacer clic aquí y configurarlo espacio de malla para todos ellos. Para todos ellos, puede hacer clic aquí y configurarlos en el marco de animación seleccionado. Ahora para la animación de pose base, no puede ser lo mismo para todos ellos porque algunos de ellos tienen una pistola, un rifle, y así sucesivamente. Así que vamos a cerrar todo. Ahora que tenemos los ajustes básicos establecidos, podemos seguir adelante y guardarlos primero. Ahora lo que podemos hacer, por ejemplo, comencemos con la pistola agachada Dando click en éste. También estoy haciendo clic en esta agachada abajo y agacharse pistola hacia arriba Solo tenemos tres por cada centro de pistola hacia abajo y hacia arriba. Ya podemos dar click sobre ellos aquí, click derecho Acciones ácidas Editado a granel vía matriz de propiedades. Nuevamente, podemos ir a la configuración de aditivos. Haga clic en este botón aquí, estos cuadrados aquí. Tenemos que encontrar la animación ociosa para esta pistola de gruñidos Podemos ver que es la pistola agachada. Tenemos que encontrar al ocioso. Para la pistola inactiva agachada. Ahora es correcto. Vamos a cerrarlo. Tenemos que hacerlo también para el rifle aquí. Haga clic en el rifle agacharse, el rifle agacharse y el rifle agacharse Haga clic derecho en Acciones Bulk Edd vía Matriz de propiedades. Vaya a la configuración de aditivos. Haga clic en los cuadrados. Ahora tenemos que encontrar la agachada. Para el rifle inactivo agacharse, rifle aquí . Ciérrelo de nuevo. Se puede ver que es sólo el mismo método, pero tenemos que hacerlo varias veces. Ahora es para los desarmados. Éste. Éste y éste. Clic derecho, edición masiva a través de la configuración de aditivos de matriz de propiedades . Haga clic aquí y luego busque inactivo. Ahora necesitamos encontrar la agachada para los ociosos, desarmados, así como Así que solo voy a hacer lo mismo por el stand también. Y puedo ver que éste tiene un nombre equivocado. Así que sólo voy a cambiarle el nombre antes de continuar. A éste se le llama AO, retírese desarmado. En lugar de esto, ahora voy a aplicarlo para el stand, igual que el agachado Y voy a saltarme adelante. este momento, los he preparado todos para que veas si solo buscas uno de ellos, por ejemplo el rifle de pie AO, puedes pinchar sobre él y ahora puedes ver que lo has aplicado rifle Animation Idol. Solo asegúrate de que estás aplicando la animación ociosa correcta, de lo contrario estará mal. Así que lo hice por todo el stand aquí así como el agachado Ahora guardemos todo y pasemos a la siguiente lección. 45. 4.03 Añade animación al desplazamiento de objetivo: Vamos a crear ahora la compensación Am para los movimientos desarmados Pasemos a los planos. Y vuelvo a volver a la carpeta de animaciones. Yo en realidad, hagámoslo primero para el estrado. Antes de hacer los otros, hagamos clic en este soporte desarmados dentro de aquí Recuerda que hicimos la dirección e hicimos la suavidad en el peso aquí Ahora lo que podemos hacer es que podemos buscar AO para éste. Ahora es el estrado desarmado. Necesito el movimiento desarmado. Entonces el stand comienza de aquí a aquí. Necesito el centro Primero, tomemos el centro desarmado Este clic y arrastre y mantenga presionado Mayús, y luego se ajustará aquí. Ahora para el -90 en la dirección esto está mirando hacia abajo, necesitamos este llamado stand significa clic desarmado y arrastre y mantenga presionado shift para ajustarlo en esta esquina Luego, para el movimiento hacia arriba, ponte de pie desarmado, mantén el turno y conéctalo aquí Ahora al hacer clic en el control y mover el ratón, se puede ver que este desplazamiento de animación está tomando acción. Esto se ve genial. Siempre podemos ajustar qué tan lejos está mirando hacia abajo y qué tan lejos está mirando hacia arriba más adelante si queremos, si creemos que esto se ve un poco ridículo. Así que siempre podemos hacerlo así en vez de esto. Siempre podemos ajustarlo más adelante. Pero por ahora, vamos a guardar todo. Esto está funcionando ahora hagámoslo por los demás. En realidad solo voy a hacer clic derecho en este y duplicarlo. Y llamémoslo brazo gruñido. Ahora para el caminar, en realidad es lo mismo que el de pie. Realmente no necesitamos uno para caminar. Ahora que tenemos esto duplicado, hagamos doble clic sobre él. Permítanme simplemente borrar esta por ahora. Ahora esta es la agachada. Busquemos aquí el agachado, el brazo central agachado, y el brazo agachado, y el brazo agachado arriba . Ahora puedes ver que esto también está funcionando. Bien, sigamos adelante y guardemos todo ahora. Vamos a hacerlo más adelante para la pistola agachada y el rifle y así sucesivamente, pero por ahora realmente no los necesitamos Bajemos coloso ahora. Antes de que podamos aplicar estos desplazamientos de animación, tenemos que calcular la dirección del objetivo Necesitamos saber en qué dirección apunta el jugador, si está arriba o si está abajo. Y hagámoslo en la siguiente lección. 46. 4.04 Cálculo de la dirección del objetivo: Muy bien, ahora es el momento de calcular la dirección de puntería. Y podemos hacerlo de manera muy sencilla acudiendo al jugador. Ahora yendo a la base de jugadores dentro de aquí, hagamos realmente una nueva función. Hagamos una nueva función llamada calcular la dirección del objetivo. Para esta función, permítanme simplemente compilarla y dejarme volver al gráfico de eventos. El lugar que quiero colocar este, tiene más sentido para este evento look. Aquí es donde controlamos el movimiento del ratón cuando estamos en juego. Esto tendría más sentido ponerlo aquí, en realidad, después de este, permítanme simplemente arrastrar esto, calcular una dirección, y simplemente enchufarlo aquí. Ahora básicamente lo que queremos hacer es establecer un flotador llamado dirección de puntería. Hagamos un nuevo flotador llamado dirección de puntería. Y vamos a cambiarlo en una variable flotante. Vaya, entero. Flotar, compilar y guardar. Ahora dentro de esto aquí, tomemos esta dirección de puntería. Simplemente queremos configurarlo. Ahora recuerda lo que dije antes, en multijugador, nunca se puede establecer una variable para un cliente. Necesitas estar en el servidor para establecer una variable y luego configurarla para replicarla. que configurar este para replicarlo, porque los clientes necesitan saber en qué dirección están apuntando los otros jugadores Las animaciones se actualizan correctamente para todos los clientes conectados. El servidor necesita replicar esa información a los clientes De lo contrario, los clientes no podrán ver en qué dirección apuntan todos los jugadores. Y sólo van a estar mirando hacia adelante. Y es como si nada estuviera pasando cuando estableces variables y las pones para replicarlas. Nunca se pueden establecer y replicar variables a través del cliente, tiene que ejecutarse a través del servidor Ahora puedes ver si escribo una cadena de impresión a partir de esto. Ahora te voy a dar un truco para saber cuándo estás en el servidor y cuándo estás en el cliente. este momento, debería imprimir una cadena automáticamente cuando mueva mi mouse, porque lo he conectado aquí y se conectará aquí si compilo ahora, y hago clic en play y muevo mi mouse. Cuando muevo el ratón, estoy en el cliente. También puedes ver que estoy jugando como el cliente aquí arriba para que el cliente pueda ejecutar este código. Cuando el cliente es capaz de imprimir código, significa que este código que estás escribiendo también se está ejecutando en el cliente. Se puede ver cuando juego como servidor, en realidad es el segundo cliente. Ahora déjame cambiarlo aquí arriba para jugar como servidor de escucha. En su lugar, permítanme hacer clic en Reproducir. Ahora estoy jugando como el servidor y se puede ver ahora es el servidor imprimiendo la cadena en la pantalla cuando estoy jugando como el cliente. Déjame jugar otra vez y llevarme a este cliente. Ahora puedes ver que el código ahora está imprimiendo como el cliente. Cuando también puedes imprimir una cadena a través del cliente, esto significa que este código es ejecutado tanto por el servidor como esto significa que este código es ejecutado tanto por por el cliente y no solo por el servidor. Cuando necesitamos establecer esta variable, tenemos que asegurarnos de que estamos ejecutándonos en el servidor. Lo que podemos hacer, de nuevo, igual que antes, tomar esto y decir interruptor tiene autoridad. Nos estamos asegurando de que solo estamos ejecutando esto en el cliente servidor. Aún necesitas ejecutar el código. Si eres el cliente, primero tienes que correr por el servidor. Volvamos a la gráfica de eventos. Yo sólo voy a volver aquí abajo. Vamos a organizar esto más tarde. Aquí abajo podemos escribir un evento personalizado, luego ejecutarlo a través del servidor. Y lo voy a llamar Calcular una Dirección. Y vamos a ejecutar esto en el servidor y siendo confiables. Y voy a tomar esto calcular una dirección y conectarlo a aquí. Adelante y compilar ahora volvamos al calcular una dirección. Y vamos a ejecutar este servidor, calcular la dirección del objetivo aquí abajo. Y entonces podemos continuar con el código. Cuando eres el cliente, vas a pasar por el servidor y ejecutar esto. Y esto asegurará que como cliente nunca puedas ejecutar este solo. Tiene que pasar por el servidor. Bien, Entonces ahora para la dirección de puntería, cómo podemos calcular esta es la primera lista, haga clic derecho y digamos control de rotación. Ahora estamos obteniendo la rotación para el controlador del reproductor. Entonces podemos decir obtener Rotación de Acta. Tenemos la rotación para el controlador del jugador y tenemos la rotación para el actor. Ahora lo que podemos hacer para encontrar un punto medio, Necesitamos encontrar este punto medio para saber a dónde apunta el jugador. Podemos tomar esto y decir delta y elegir este llamado delta rotador Puedes enchufar esto, es a través de la rotación del controlador del reproductor y la rotación del actor. Va a encontrar un punto medio través de este rotador delta Ahora vamos a romperlo aquí, rotadores. Cuando rompes un rotador, puedes ver la X, Y y la Z. También puedes simplemente hacerlo Si escribes, haz clic aquí y di split struct pin, eso es en realidad lo mismo Sólo me gustaría dividirme aquí. Entonces voy a escribir break, Break rotador. Y puedo ver el XY y Z para la dirección de puntería, necesitamos la y, la Y Puedes tomarla y enchufarla aquí. Ahora en realidad estás calculando correctamente la dirección de puntería. Puedes seguir adelante y compilar y guardar todo. Ahora estamos listos para aplicar esto al plano de animación y hacer que nuestro jugador que tenga el offset Am funcione 47. 4.05 Añade el desplazamiento de objetivo: Sigamos ahora y agreguemos el desplazamiento de puntería al plano de animación Vuelve a la carpeta de animaciones y abre el plano de animación del reproductor Aquí voy a volver a la gráfica de animación. Y a partir de aquí vamos a desconectar realmente esto. Te voy a enseñar un truco con éste. Para esta máquina de estado, en realidad puedes arrastrar y decir Caché, y luego hacer clic en esta . Guardar en caché Déjenme llamar a este Movimiento Desarmado en Caché. Qué es esto, solo está tomando la locomoción, toda esta máquina de estado, y la está guardando a través de este caché Lo está guardando dentro de aquí. En lugar de tomar este, en realidad podemos simplemente usar el caché. Vamos a ponerlo aquí arriba. En lugar de volver a usarlo, hagamos clic derecho y digamos movimiento desarmado Ya ves que puedes usar este. Se usa el movimiento desarmado de caché aquí. Ahora puedes usar esto en lugar de este aquí arriba. Hagamos clic derecho y busquemos AO. Permítanme recordar realmente cómo lo llamé. Usemos este soporte 10 desarmado. Busquemos O, permanezcamos desarmados, y asegurémonos de que sea esto. 01:00 A.M. jugador offset. Un jugador offset, de pie armado. Justo como lo llamamos aquí. Lo llamábamos el brazo de pie AO. adelante y conectemos esto como el poste base, el movimiento desarmado con el desplazamiento de animación desarmado Sigamos adelante y conectémoslo aquí. En cuanto a la dirección de puntería. Recuerda, ya calculamos esto. Tenemos que ir al gráfico del evento y tenemos que arrastrar desde el jugador y necesitamos buscar la dirección de puntería. Éste de aquí. Volvamos a promocionarlo a una variable aquí dentro del plano y llamarlo dirección Vamos a conectarlo aquí al final de, de la gráfica. Y déjame doble clic y hacerlo un poco más agradable. Muy bien, vamos a compilar. Y ahora puedo volver al gráfico de animación. Y dentro de aquí, la dirección estoy tomando esta dirección de puntería, enchufándola aquí Y ahora vamos a compilar. Ahora cuando hacemos clic en play, veamos si funciona. Y se puede ver que funciona. Ahora bien, si miro hacia abajo y si miro hacia arriba, en realidad está funcionando. 48. 4.06 Añade la cámara del jugador a la cabeza: Ahora cuando seguimos adelante y jugamos el juego, se puede ver que la cámara está flotando por ahí y realidad no está siguiendo la cabeza cuando miramos hacia arriba y hacia abajo. Para hacer esto, volvamos aquí. Agreguemos la cámara a la cabeza del personaje. Para ello, necesitamos encontrar el esqueleto de nuestro personaje ahora mismo. Está dentro del mercado, dentro del carácter militar Silva, y este es el esqueleto que hemos estado usando hasta ahora. Déjame simplemente hacer doble clic en él aquí. Dentro de este esqueleto, encontremos el hueso de la cabeza. Simplemente puedes ir por aquí y tratar de buscar el hueso de la cabeza, y puedes ver que está aquí abajo. También puedes simplemente buscarlo aquí arriba. Un tercer método es hacer clic en el personaje aquí arriba. Ir a Huesos e ir a Toda la Jerarquía. Esto te mostrará todos los huesos para el personaje. Simplemente puedes seguir adelante y hacer clic en el hueso de la cabeza. Y puedes ver que también será seleccionado aquí. Quiero volver a hacer clic en el personaje e ir a Bones. Y seleccionarlo sólo para poder volver a quitar esos huesos. Ahora que has seleccionado el hueso de la cabeza, sigamos adelante y haz clic derecho aquí y creamos un zócalo. Agrega una toma para una toma. Es solo un soporte vacío que puedes usar para adjuntar artículos a él. En este caso, vamos a utilizar este soporte para fijar nuestra cámara a la cabeza. También puedes imaginar que puedes usar esto para armas también. Por ejemplo, si digamos que quieres adjuntar un AK 47 al costado del personaje, siempre puedes agregar un socket al lado del personaje aquí, tal vez a la cadera. Y luego se puede fijar el arma también a través de un zócalo. Pero por ahora sólo vamos a agregar una cámara. Vamos a la derecha este hueso de la cabeza, vaya a Agregar zócalo. Y déjenme dar click en él y dar click en dos en mi teclado para cambiarle el nombre. Y déjenme llamarlo para socket y cámara. Bien, esta cámara socket, tenemos ahora, sigamos adelante y perdamos todo. Ahora volvamos al plano. Ve al jugador y ve a la base de jugadores. Bien, dentro de aquí. Volvamos a la ventana gráfica. Y ahora queremos unir este resorte a la cabeza o a la cámara socket que acabamos de crear aquí en los zócalos, se puede ver en el panel de detalles, al seleccionar el resorte, puede ver la sección de socket y también se puede ver que está unido a nada bien. Ahora, si hacemos clic en esta carpeta, ya se puede ver el socket. Ahora bien, si no ves esto es porque no tienes este resorte dentro de este componente de malla. Si arrastro esto afuera aquí así, puedes ver si hago clic en esta carpeta, ahora no pasa nada. Puedes ver que tienes que poner el brazo de resorte en el personaje. Es un hijo de esta malla. Antes de que realmente puedas hacer clic aquí y ver todo esto, también puedes hacer clic en el terrorista de condominios, por ejemplo. Cuando haces clic en el antiterrorista, realmente no puedes hacer clic aquí en la primavera para el antiterrorista, tienes que hacerlo a través del padre Entonces en la base de jugadores, esto es posible. Tendrás el brazo de resorte dentro de la malla. Y luego para el brazo de resorte, podemos dar click aquí y luego podemos seleccionar la cámara. Recuerda, si no tienes nada en la malla, por ejemplo aquí no tienes ninguno, lo has borrado y no tienes un personaje parado aquí, entonces no encontrarás el socket aquí también. Es por esto que en la base de jugadores necesitamos un personaje para estar dentro de aquí, porque necesitamos dar click aquí y luego agregarlo a un socket. Da click en esta cámara. Ahora la cámara está adherida al personaje. Se puede ver que en realidad se mueve con el movimiento de la cabeza. En realidad está apegado. Ahora es más realista ahora. Ahora está flotando. Vamos a hacer clic en el resorte para la longitud del brazo objetivo. Voy a escribir cero, ya que es un juego en primera persona. Después para la ubicación y la rotación, simplemente haga clic en estas flechas para restablecer la ubicación y la rotación también. Puedes seguir adelante y compilar y guardar todo. Sigamos adelante y haga clic en Reproducir y ver cómo se ve. Puedes ver que estamos dentro de la cabeza del personaje ahora mismo, pero cuando miro hacia abajo y miro hacia arriba, puedes ver que está siguiendo la cabeza. Ahora cuando me quedo quieto y miro como delante de mí, se puede ver que también está siguiendo la cabeza. La cámara se mueve ligeramente lo mismo cuando corro. En realidad se mueve con el mismo movimiento que la cabeza. Bien, ahora está apegado a nuestro jugador. Volvamos y tratemos ahora de ajustar el zócalo. Si vuelves a abrir el esqueleto, vuelvo al personaje militar Silva, abro el esqueleto. Y dentro de aquí, vamos a hacer clic en la cámara socket. Y yo sólo voy a ir al frente aquí y tratar de ajustar el zócalo. Puedes ver para el socket, cuando lo hayas seleccionado, también tienes la ubicación relativa. Puedes hacer clic y arrastrar aquí. Y solo estoy tratando de ajustarlo cerca de los ojos porque la cámara está realista cerca de los ojos del personaje A lo mejor diez en la X y en la Y y la Z. está bien ahora mismo Déjame, sigamos adelante y volvamos a jugar para ver cómo se ve. Ahora estamos dentro de la cabeza del personaje. Si miramos hacia abajo, si miramos hacia arriba, se ve bien. No obstante, la cabeza de los personajes está en el camino. También puedo ver los lados del personaje está en el camino. Déjame volver de verdad. Déjame simplemente empujar la cámara ligeramente hacia adelante. Si haces clic y arrastras esto, puedes ver que estás deslizando la cámara hacia adelante. No obstante, no quiero deslizarlo demasiado hacia adelante. Sólo voy a escribir cinco en vez de cero. Déjame intentar volver a jugar. Se ve mejor. Ahora, sin embargo, todavía podemos ver partes de la cabeza. La cosa es que aquí no podemos ver el cuerpo dentro de nuestro personaje. Todo se ve bien. No obstante, la cabeza está en el camino. De hecho, vamos a ir a la siguiente lección y quitarle la cabeza a este personaje. Sólo el enemigo puede ver tu cabeza, pero tú como jugador no puedes ver la cabeza, es así dentro de la cámara. Sigamos adelante en la siguiente lección y hagamos esto. 49. 4.07 Oculta la cabeza modelo de jugador: Para ocultar la cabeza de los personajes para el jugador, puedes volver a acudir al jugador. Y abramos la base de jugadores. Lo que queremos hacer es quitarme esta cabeza como jugador. Cuando interpreto a mi personaje, sin embargo, los enemigos aún pueden ver mi cabeza encima de aquí. El motivo por el que me quito la cabeza porque cuando soy el personaje de primera persona aquí, tengo la cámara. En realidad está dentro de mi cabeza, justo esto, y no quiero ver todo esto, no es necesario. Ahora vamos a quitar la cabeza para el jugador que está interpretando al personaje. Vamos a la gráfica de la camioneta dentro de aquí. Sólo hagámoslo aquí arriba en el inicio Play. Cuando empecemos a jugar el juego por aquí, puedes hacer clic derecho y tienes una función llamada hide o por nombre. Ocultar hueso por nombre. Y selecciona eso. Y va a crear esta variable de malla para ti automáticamente. Esta variable es simplemente de esta variable de malla. Simplemente puede hacer clic y arrastrar esto. Es el mismo. Bien, así que sigamos adelante y conectémoslo. Ahora te pregunta, ¿ qué hueso intentas ocultar? Ahora bien, si vuelves a tu esqueleto, estás tratando de ocultar el hueso de la cabeza. Si solo haces clic en él, puedes ver que se llama cabeza. Hay que escribirlo exactamente como está escrito aquí. Es sensible a mayúsculas. Hay que escribirlo exactamente como está aquí. Si acabo de escribir cabeza así y hago clic en Compilar, y si hago clic en Placa para jugar el juego, puedes ver que la cabeza se ha ido para mí. Y también lo puedo ver en mi sombra. Se puede ver que la cabeza se ha ido. Y en realidad se ve mejor. Ahora como el personaje de primera persona por el que puedo correr, todo se ve bien, nada está molestando. Sí, es increíble. No obstante, el lado del personaje, puedo ver esto, creo que es la radio del personaje la que en realidad nos está apareciendo para arreglar esto. Siempre puedes volver con el jugador aquí si tienes algo para tu personaje que aún está mostrando. Y da clic en el zócalo para la cámara. Y luego puedes volver a hacer clic en la Y y solo aumentarla ligeramente hasta que ya no esté molestando. Si solo aumentas esto a algo como diez y das clic en play. Y si miro hacia abajo y camino de costado, ya ves que ya no puedo ver la radio. Sin embargo, no aumentes demasiado de esta manera porque si lo aumentas demasiado hacia adelante, la cámara en realidad está atravesando paredes. Si hago clic en jugar ahora veo que está recortando paredes porque lo he aumentado demasiado. No aumentes demasiado este. mejor en vez de cinco, quiero probar seis y ver si eso soluciona mi problema. Si voy por ahí y sigo viendo la radio ligeramente, puedo aumentarla a siete En su lugar, intente volver a hacer clic en reproducir. Intenta jugar con el valor mínimo para ver si lo arregla. Puedo ver que siete es el número para ir conmigo, y todo se ve bien. No obstante, se puede ver mi sombra, me falta la cabeza. Entonces también tenemos que arreglar esto. Sigamos adelante en la siguiente lección y arreglemos todo eso. 50. 4.08 Añade una malla de tercera persona: Bien, ahora arreglemos la cabeza faltante en la sombra. Entonces sigamos adelante y vayamos a la base de jugadores. Déjame dentro de aquí, cómo podemos arreglar esto es que en realidad podemos agregar otra malla de tercera persona. Si haces clic en la malla y vas a Agregar y buscas malla esquelética Ahora bien, si no sabes lo que es una malla esquelética, si eres nuevo aquí, es simplemente un modelo de tres D que está animado en estos momentos Por ejemplo, la malla para tu, tu personaje está animado. Esta malla, si sostienes el mouse sobre ella, dice que el componente de malla esquelética es simplemente un modelo de tres D que está animado Se trata de una malla esquelética. Adelante y vuelve a crearlo. Llamemos a este personaje de una tercera persona, o malla de tercera persona, dentro de aquí. Lo que queremos hacer, de nuevo, queremos seleccionar el personaje y tenemos que seleccionar este estilo, uno masculino como este. Entonces tenemos que seleccionar el plano de Animación aquí arriba. Reproductor de planos de animación. Ahora puedes ver que se está animando exactamente como nuestra malla por aquí Lo que en realidad queremos hacer es este personaje. No queremos que nuestro propio jugador vea este. Si haces clic en play, ahora puedes ver que la cabeza está de vuelta. El motivo por el que la cabeza está de vuelta es porque ahora tenemos esta malla que estamos viendo en juego, pero también tenemos esta malla. esta malla de tercera persona, en realidad no queremos que la gente vea porque solo estoy agregando esto para ver mi sombra en el suelo y corregirla desde la otra. Para ocultar esto a todos los jugadores, podemos dar click en esta malla en tercera persona. Y luego podemos bajar e intentar ir a la configuración de renderizado. Puedes ver en la configuración de renderizado, puedes hacer clic en Oculto en el juego. Ahora está escondido en el juego. Si haces clic en play, puedes ver ahora que la cabeza se ha ido. Sin embargo, mi sombra también se ha ido. Tengo que arreglarlo también. Si vuelves a hacer clic en la malla de tercera persona y buscas sombra, tienes esta llamada Sombra oculta. Puedo ver la sombra de mi objeto oculto, mi malla oculta en tercera persona. Si haces clic en sombra oculta, compilas. Puedes hacer clic en Reproducir. Mi personaje está oculto. No obstante, ahora también puedo ver la sombra en el suelo. Ahora está funcionando correctamente. Ahora esto está arreglado. Y volvamos solo para asegurarnos de que no tenemos ninguna colisión en este personaje porque no queremos que este modelo de personaje colisione con la malla de aquí arriba Al hacer clic en esta malla de tercera persona, solo voy a bajar a la configuración de colisión y me estoy asegurando de que diga que puede caracter arriba, voy a decir que no aquí. Y asegúrate de no haber generado eventos de superposición en. Y asegúrate de que no tienes colisión como el preestablecido de colisión. Vamos a compilar todo. Vamos a guardar todo y pasemos a la siguiente lección. 51. 4.09 Suavizado de cámara y FPS: Cuando estamos jugando el juego, hay una pierna ligera, lo mejor no estoy seguro si puedes notar ahora mismo, pero si solo corres y tratas de mover el mouse hacia arriba y hacia abajo, a veces en realidad se siente un poco rezagado Para arreglar esta rotación, puedes intentar cerrar este juego ahora mismo. Acude al jugador y dentro de aquí puedes hacer click en el muelle. Si haces clic en el resorte, puedes habilitar este aquí debajo de este llamado habilitar rotación de la cámara Le. Esto suavizará la rotación de tu cámara. Si juegas y puedes sentir que en realidad es, se siente un poco rezagado En realidad se puede sentir rezagado cuando trato de rotar mi cámara Para solucionar esto, puede habilitar la pata de la cámara de rotación, y esto suavizará la rotación de la Se puede escuchar para la pata de rotación de la cámara, se puede tratar de establecer un número. Si lo pones muy, muy alto, puedes ver cómo se ve. Aquí no está pasando mucho. Si a lo mejor lo pones a uno e intentas volver a jugar, ya puedes ver que es muy suave así. Esto es demasiado. puede ver que está tratando de suavizar la cámara. Esto es demasiado. Tengo que aumentarlo a tal vez algo así como diez y se puede tratar de ver cómo se ve. No obstante, si lo pones demasiado bajo, puedes ver que es suave, sin embargo se siente un poco rezagado y probablemente dará mareo por movimiento a algunas personas Déjame ponértelo en algo así como 30. En cambio, compilo y trato de rotar alrededor. Yo sólo quiero que se sienta natural. Sigue siendo un tirador en primera persona y no queremos ponerlo demasiado alto o demasiado bajo aquí, tal vez poniéndolo en 40 en su lugar. Sólo trata de seguir jugando de nuevo. Trate de aumentar el número. Intenta mirar a tu alrededor y ver cómo se siente. Todavía se siente un poco y, tal vez algo así como 60. Y voy a tratar de mirar a su alrededor. Se siente mucho más natural, igual que un tirador en primera persona. Intentemos ajustar este número aquí. No quieres que sea demasiado baja, de lo contrario la cámara se sentirá muy lenta y está bien, esto está arreglado. Ahora vayamos a la ventana o editemos realmente, y vayamos a Configuración del proyecto dentro de aquí. Si buscas sin problemas, tienes algo llamado velocidad de fotogramas suave. Tienes que tener esto habilitado para tu juego si quieres lanzarlo en otro lugar, por ejemplo en Steam o a un amigo. La razón por la que esto es un error que cometí cuando solté Fm tail en Steam. Si no tienes esto limitado, si no tienes esto habilitado, entonces el jugador que esté jugando tu juego va a ejecutar tu juego al máximo de fotogramas por segundo. Depende de qué tarjeta gráfica tengan. Si tienen uno muy, muy bueno, lo mejor tu juego se ejecutará a 800 cuadros por segundo, y en realidad utilizará muchos recursos para su computadora. Probablemente puedas escuchar a la computadora haciendo mucho sonido de los ventiladores porque la tarjeta gráfica está funcionando demasiado. Tienes que habilitarlo para evitar que el juego se ejecute y utilice todos los recursos del jugador. Siga adelante y use esta velocidad de fotogramas suave. El mínimo, sólo lo voy a poner a 30 cuadros por segundo como máximo. Por lo general lo pongo a 60 cuadros por segundo. Para otros juegos, sin embargo, este es un shooter en primera persona, necesitas más fotogramas por segundo. A lo mejor lo pondré a 200 como el fotograma máximo por segundo. Creo que 200 está bien. No creo que necesites más que eso. Cerremos esto y guardemos todo. Pasemos a la siguiente lección. 52. 5.01 Ajusta la velocidad de movimiento: Ahora estamos listos para ajustar la velocidad de movimiento. Puedes ver cuando haces clic en play, se está ejecutando demasiado rápido. Entonces, si corres juego, puedes intentar tener una idea de lo rápido que quieres correr en tu juego. Ahora para mí, esto es demasiado rápido. Realmente depende del juego que estés creando. Ahora bien, si estás creando un juego de ritmo rápido, esta carrera podría incluso ser demasiado lenta para ti Para mí, solo estoy creando algo cercano al contraataque En realidad no al 100% sino algo así. Voy a reducir ligeramente esta velocidad de movimiento. Creo que es demasiado rápido. Puedo ir aquí en mi base de jugadores, el componente de personaje. Y entonces puedo disminuir mi velocidad máxima de caminata. Ahora voy a disminuirlo a algo así como 700. Trato de jugar un par de veces y tratando de ajustar este número. Y después tienes que volver a hacer clic en Reproducir. Y sólo para correr aquí y tratar de ver cómo se siente. Ahora solo sigue jugando el juego. Trate de aumentar y disminuir el número de velocidad y ver cómo se ve. Creo que para mí esto está bien. Tal vez en realidad pueda aumentarlo a 750 e intentar volver a jugar. Creo que 750 es el número para ir con. Bien, entonces cuando estás pesado con este, también puedes recordar que tienes estas variables de flotación también para la velocidad. Permítanme en realidad simplemente hacer clic y arrastrar esto aquí arriba, así que están juntos. Puede hacer clic en esta velocidad de carrera y establecerla en 750 también. Sigue y compile ahora Para la velocidad de caminata, voy a ponerla en algo así como 400. Y para la velocidad agachada, algo así como 200. De nuevo, intenté jugar mis juegos un par de veces. Conozco estos números. que, de nuevo, establecer la velocidad de la caminata a algo. Entonces tienes que hacer clic en Reproducir. Entonces tienes que hacer clic en Shift to Walk e intentar ver si esta velocidad de caminata es buena para ti. O si quieres tenerlo un poco más rápido. Solo intenta jugar tu juego una y otra vez e intenta ajustar estos números. Ahora bien, si juego mi juego y si corro por ahí y trato de tener una idea de lo rápido que es, si hago clic en Shift para caminar, creo que esto también se ve bien. Y si hago clic en el control y trato de ver cómo se ve, creo que esta velocidad también me queda bien. Bien, así que sigamos adelante y cerremos todo esto ahora que se ha ajustado la velocidad de movimiento. Y ajustemos también la velocidad de animación en la siguiente lección. 53. 5.02 Ajusta la velocidad de animación: Cuando ajustamos la velocidad de movimiento, también tenemos que ajustar la velocidad de animación, lo contrario se verá incorrecta. Si volvemos a hacer clic en el jugador y hacemos clic en la base de jugadores. Por aquí, quiero agregar algo de longitud a la Primavera. Um, otra vez, igual que antes. La razón es que quiero ver mi animación de running y ver qué tan rápido están corriendo. Ya se puede ver que estamos corriendo. En realidad se ve bien. Se puede ver que está siguiendo el suelo. A veces tus animaciones para el personaje cuando estás corriendo, son demasiado rápidas y demasiado lentas. También hay que ajustar la velocidad de funcionamiento. En realidad se puede ver que aquí hay alguna colisión. Por alguna razón creo que es mi cielo. Si hago clic en este cielo de aquí y de hecho lo muevo, por alguna razón este tiene una colisión puesta. Pero esto es sólo el cielo aquí arriba y realmente no importa dónde esté, sólo vamos a ponerlo por aquí. Bien, para la velocidad de la animación, lo que necesitas hacer es ir a las animaciones. Y luego puedes establecer las animaciones dentro de los espacios de mezcla que creamos anteriormente. Permítanme comenzar con el espacio de mezcla de carrera. Y dentro de aquí, si solo bajas y puedes ver todas estas mezclas. Ahora todas estas animaciones que agregaste aquí como puntos, también las puedes ver por aquí. Ahora primero lo que quiero hacer, en realidad quiero aumentar mi velocidad de peso. Porque la velocidad del peso, recuerda, es el suavizado de las animaciones. Creo que a veces se está deslizando un poco demasiado. A lo mejor si lo vuelvo a aumentar a 6.5 en vez de 9.5. Recuerda igual que antes, cuando lo aumentas, aplica menos suavidad a la animación Yo solo quería lucir más natural. Voy a abrir el resto de ellos. Para el resto de ellos, también voy a establecer la velocidad del peso en 6.5. 6.5 para el paseo también. Voy a establecer la velocidad del peso a 6.5 Bien, eso está arreglado. Vamos a guardar todo. Bien, antes de que hagamos algo, también puedes subir aquí y recordar cambiar tu eje vertical. Valor máximo aquí. Recuerda que esta era la velocidad de movimiento para la carrera. La velocidad de movimiento en estos momentos para mi juego es de 750. Normalmente lo pongo a algún lugar alrededor de la mitad. Voy a poner éste a 350 en su lugar. puede ver cuando lo pone a algo más alto, ahora se aplica aquí, 350. Sin embargo, mis animaciones siguen funcionando a los 300, tengo que hacer clic aquí, arrastrar y mantener presionado Mayús, y solo ponerla aquí otra vez, hacer clic en mantener turno para volver a ajustarla y ponerla por aquí. Nada nuevo. Esto ya lo hemos hecho antes. Simplemente arrastra todas estas animaciones hasta 350, y ahora están funcionando a esa velocidad. Bien, así que hagámoslo con el resto de ellos. Vamos a abrir la agachada. Mi agachada era una velocidad de 200. Si abres al jugador y dentro de aquí en la base de jugadores la velocidad agachada, puse en 200, así puedo ir al agachado y puedo poner éste a algo No obstante, puedes ver si lo pongo a algo más bajo, me va a dar muchos errores y todas mis animaciones se han ido. Esto se debe a que está eliminando todas esas animaciones. Aquí arriba, voy a hacer clic en el control Z para traer todos esos de vuelta. Aquí están. Recuerda disminuir todos esos antes de que realmente empieces a jugar con estos números para que no se eliminen. Los puse aquí abajo. Permítanme disminuir este número a 100 ahora. Y ahora puedes tomar todos esos y sumarlos aquí arriba a la velocidad máxima. Desearía que hubiera una funcionalidad en la que realmente pudieras tomarlas todas y moverlas hacia arriba al mismo tiempo. No creo que los haya. En realidad ahora para la velocidad de caminata, se establece en 400. Voy a ponerla a 200, volviendo a la velocidad de animación, y en su lugar la voy a poner a 200, por la velocidad, voy a moverlos de nuevo hacia arriba. Bien, ahora que esto está arreglado, vamos a guardar todo. Volvamos a la carrera ahora por la velocidad de animación. Empecemos con la carrera hacia adelante. Voy a comenzar con la carrera hacia adelante. Y la razón por la que hago esto porque cuando esto es correcto, voy a aplicar al resto de ellos. El “running forward” es el primero aquí. Corre hacia adelante desarmado. Y puede hacer clic en la flecha pequeña para ver esos ajustes para la escala de tarifas. Si lo aumento a algo así como tres y todos ellos maximizados por alguna razón, esta es la carrera adelante Si lo configuro en tres y hago clic en reproducir, puedes ver que mi velocidad de animación es realmente, muy rápida. Ahora tienes que ajustar la velocidad de animación para que se ajuste a tu movimiento si yo ahora mismo, uno es el predeterminado. Si le dijera a 1.1 sólo un poco más rápido. Y si hago clic en play, y se puede ver cómo se ve, ahora, la carrera por los lados no está funcionando porque esto es sólo el run forward que hemos ajustado. Así es como se ve. Para mí. Creo que 1.1 en la escala de tarifas se ve bien. De hecho quiero aplicarlo al resto de ellos. Lo que puedes hacer es mantener el turno y hacer clic derecho. Esto copiará esto. O simplemente puede hacer clic derecho y copiar. Pero puedes ver Mayús y el botón derecho del ratón copiarán esto también. Entonces no quiero hacerlo para la animación ociosa. Las animaciones inactivas, solo quiero que sean una como de costumbre. Más problema para la animación en ejecución. La derecha delantera corriendo aquí. Voy a mantener la tecla shift y click izquierdo para pegarlo. De nuevo, puedes simplemente hacer clic derecho y pegarlo también. Pero puedes ver que el atajo es shift y click izquierdo. Voy a pegarlo también en todas las demás animaciones, así que se aplican así. Sigamos adelante y hagamos clic en Guardar. Vamos a hacer clic en Reproducir. Ahora también puedes ver cómo se ve para todos los demás lados. Se ve un poco mejor. Y la razón por la que lo aumentamos es para que no se vea un poco como antes. Bien, ahora que esto está hecho, déjame cerrarlo. También hay que hacerlo para el agachado. Tienes que jugar aquí. agacharte y trata de agacharte , mira cómo se ve Quizás de nuevo, necesitamos aumentar ligeramente la velocidad de animación porque puedes ver que parece que desliza porque la velocidad de animación es demasiado baja. Entonces hay que volver a entrar aquí, ir a la animación, agacharse Voy a ponerla a 1.1 otra vez, igual que mi carrera, solo para ver cómo se ve. Y si me agaché y trato de caminar hacia un lado, tal vez necesitemos un poco más aquí, 1.3 En su lugar, haga clic en jugar Intenta agacharte y ver cómo se ve. Ponlo a algo como 1.1 y luego puedes hacer click en Reproducir. Entonces puedes recordar, esto es sólo para el agachado No funciona si corres a los sitios o te agachas a los sitios agacharte hacia adelante, y puedo ver cómo se ve A lo mejor todavía se está deslizando ligeramente. Si lo pongo a 1.2 en su lugar, hago clic en play y me agacho Creo que esto se ve mucho mejor. Vamos a intentarlo, en realidad 1.2 Lo que voy a hacer es volver a copiar esto y pegarlo en todas mis otras animaciones que no estén inactivas. Las animaciones inactivas que no me importan. Los tengo a razón de uno. Eso está bien. Y para las demás animaciones, voy a ponerlo a 1.2 así como esto va a guardar. Y luego juguemos y veamos cómo se ve. Si también camino hacia los lados, se está deslizando todavía. De hecho necesito aumentarlo a 1.3 tal vez. Déjame ir de nuevo. Aquí se puede ver que lleva algún tiempo. Hay que probarlo. Si lo pongo a 1.3 lo copio y lo pego en todas las demás animaciones. Justo como antes. Sigo adelante y vuelvo a hacer clic en jugar. Déjame ver cómo se ve ahora. Ahora es mucho menos, puedes ver que se ve mucho mejor que antes. Podemos seguir adelante y seguir ajustando esas velocidades de movimiento y esas animaciones y ver cómo se ven. Cuando estés satisfecho, ahora puedes ir al paseo, hacer lo mismo, seguir adelante y hacer clic en Reproducir, Mantener turno, Intenta caminar por ahí. Te estás deslizando demasiado ahora mismo. Ir al movimiento hacia adelante. Déjame ver si la puedo encontrar aquí. Si voy al frente, éste de aquí, Animación. Caminar hacia adelante. Si lo pongo a 1.3 pincho en play y mantengo turno y trato de andar por ahí. Y sigue deslizándose ligeramente. Si lo pongo a 1.5 en su lugar, mantenga turno e intente caminar por ahí, se puede ver que caminar se ve mucho mejor. No me estoy deslizando por ahí. Puedes ajustar la velocidad de movimiento para caminar o puedes ajustar las animaciones para que se ajusten a la velocidad de movimiento. Creo que 1.5 está bien para mí. Voy a copiar esto en todas las demás animaciones que no estén inactivas, así y en la parte posterior también. Y ahora se puede ver que esto está inactivo, así que no voy a copiarlo aquí abajo. Bien, haz clic en jugar, y ahora puedes sostener turno y caminar e intentar caminar hacia un lado. Se ve mucho mejor. Si crees que esto es demasiado rápido, siempre puedes reducir la velocidad de movimiento o reducir la velocidad de animación. Eso está bien. De nuevo, realmente depende del juego que estés creando. Creo que para mí esto está bien. Y siempre puedo venir aquí y ajustarlo después si no estoy satisfecho. A veces cuando cierro mi juego y me conecto al día siguiente, a veces pienso que algo se ve estúpido y lo cambio, trato de cambiar la velocidad de movimiento y la velocidad de animación y así sucesivamente. Pero por ahora, me queda bien. Así que tengo que cerrarlo ahora y dejar que lo guardemos todo. Y pasemos a la siguiente lección. 54. 5.03 Arregla el recorte de pared de la cámara: Ahora tenemos que arreglar el problema de la cámara. Si vuelvo al jugador y pongo el resorte a la longitud del brazo de cero, solo para volver al modo en primera persona y juego el juego, puedes ver si me acerco a algo y lo miro hacia abajo, veces se corta a través de la pared así, como puedes ver aquí. Y puedo mirar a través de la pared, y la gente probablemente hará un mal uso de esto y hará trampa en el juego para ver qué hay detrás la pared con el fin de arreglar esto. Hay dos maneras. La primera forma es si vas al mercado y vas al jugador y encuentras el esqueleto para el jugador. Ahora depende aquí de tu socket. Primero, el socket que has agregado, puedes ver que he puesto mi valor Y a siete, si lo pones a cero, por ejemplo. Y haces clic en Reproducir, puedes ver que empujas hacia atrás la cámara. Y puedes ver más de tu cuerpo, así como así. Puedes intentar hacer retroceder tu cámara, tal vez en vez de cero, puedas hacerla menos cinco. Puedes ver cuánto puedes empujar tu cámara hacia atrás sin que se vea mal. Así se puede ver menos cinco. Empiezo a, se puede ver mi personaje cuello o cabeza, casi donde la cabeza ha desaparecido y realmente no se ve bien. Menos cinco es demasiado. Lo pondría de nuevo a cero, por ejemplo, e intentaría volver a jugar. El problema con este personaje es que tiene radio. Puedes ver la radio en el reproductor aquí. En realidad se está poniendo delante del personaje o la cámara así y un poco molesto. Ahora bien, si este fuera un personaje personalizado que has diseñado, podrías estabilizarlo un poco más para que en realidad no pase por la cámara. Y si ese fuera el caso, entonces esta posición para el socket en realidad sería mucho mejor. Porque se puede ver el cuerpo y se ve bien así. No obstante, la radio es un poco molesta para este personaje, así que voy a empujarla otra vez hacia adelante. Esta es la razón por la que en realidad la empujamos a siete, porque a las siete no podemos ver la radio y todo se ve genial. Bien, ¿cómo podemos arreglar esto ahora? Realmente ya no podemos jugar con el zócalo porque está colocado lo mejor que podemos. La otra cosa es que puedes ir a la base de jugadores y puedes ir a la ventana gráfica aquí en la base de jugadores, puedes hacer clic en el Componente Cápsula Componente Cápsula. Puedes ver si lo aumentas, el radio de la cápsula a algo extremo, por ejemplo, 150. Y haces clic en Play, puedes ver que tienes colisión mucho más rápido contra las paredes. Y no se puede ir hacia las paredes fácilmente. Se puede ver aquí. Ahora es imposible caminar y ver a través de las paredes. Sin embargo, es un poco poco realista si lo pones demasiado alto porque realmente no puedes acercarte a las paredes y te bloquean También te bloquearán aquí arriba. Si vas a esta rampa, creo que puedes ver que no puedes pasar por la rampa porque tu componente de cápsula está demasiado alto y no puedes pasar por él. Bien, aumenta este componente de cápsula. Un tamaño que realmente tiene sentido para ti y elimina el recorte de la pared, pero aún así es pequeño 70, por ejemplo. Vamos a probarlo. Pasemos por la pared aquí. Mira hacia abajo, mira a la talla. A lo mejor es lindo. Esto está funcionando en realidad, vamos a este. A veces puedo ver a través de las paredes. A veces si entro en él, tengo que aumentarlo ligeramente porque en realidad aún pasando por las paredes puede aumentarlo a 75. Y luego vuelve a probar y ver cómo se ve. Sí, quizá 75 esté funcionando en realidad. A veces está chocando un poco. Bien, entonces voy a poner un 280. Esa es mi decisión final aquí. Entonces vamos a compilar y ahora está a los 80. Sí, si miro hacia abajo, miro hacia arriba, miro a los lados. No puedo ver a través de la pared. Y aún así puedo acercarme a la pared. Y veamos si podemos subir las rampas aquí. Si subo por la rampa y funciona, aunque estoy cerca de la pared de la rampa aquí, todavía puedo subir por la rampa. Bien. Esta fue una solución fácil si vas aquí. Ahora aquí, es un poco problema porque el espacio es realmente estrecho. Lo que puedes hacer para arreglar esto ahora mismo es que siempre puedes entrar aquí y puedes poner el chasquido aquí arriba a tal vez algo como diez Y póntelo. Entonces en realidad la velocidad de mi cámara es demasiado alta. Voy a disminuirlo. hacer click sobre este objeto aquí y simplemente moverlo hacia un lado. Tal vez solo cambie un poco el diseño del mapa para que esto no se baje. Ahora bien, si necesitas un sistema de colisiones muy, muy complejo, esto en realidad requiere un trabajo demasiado avanzado para este curso. Aquí, podrías hacerlo con planos. No obstante, sí requiere mucho código para que funcione, y será realmente avanzado en comparación con este curso. Puedes volver a intentarlo para subir aquí y ver si funciona. A ver si todo está bien. Y se puede ver que todo está funcionando bien también. Bien, así es como arreglamos la cámara. Recortando de nuevo las paredes. Si alguna vez lo hace clip, siempre puedes entrar aquí A lo mejor recuperar la posición aquí para el zócalo, eso ayudará. O si puedes entrar aquí y aumentar ligeramente este componente de cápsula para que no se reserve. Pero ten cuidado de no aumentarlo demasiado. 55. 5.04 Arregla la posición de salto: Derecha. Ahora si juego el juego, puedes ver cuando salto, en realidad cuando salto y presiono mi botón agacharse al mismo tiempo, puedes ver que puedo spam aquí Cuando salto y sigo agachado, la cámara está recortando Puedes tenerlo como mecánico si quieres para tu juego. A algunas personas les gustan cosas como esta, por ejemplo. Se puede saltar, se puede tratar de hacer algo agachado y se puede mirar por encima de la pared que tal vez podría ser un mecánico Sin embargo, creo que es un poco demasiado y realmente no quiero a este mecánico aquí cuando se graba así. Si sigo agachado, volvamos al jugador, vamos a la base de jugadores dentro de aquí Bajemos a la lógica agachada. Éste de aquí. En la lógica agachada, quiero asegurarme de que el jugador no esté saltando No puedes agacharte cuando estás saltando. Si tomamos esta, recuerda que ya hicimos esta función no es saltar. Lo único que hicimos aquí es simplemente tomar el componente de movimiento del personaje y preguntar si el personaje está cayendo o no. Si el jugador no está cayendo, significa que no está en el aire, lo que significa que no están saltando. Bien, podemos tomar esto, podemos hacer una sucursal. Si el jugador no está saltando, entonces somos capaces de agacharnos Hay un pequeño problema ahora mismo si saltamos y presiono agacharme Porque ve, sólo puedo agacharme en el suelo. No obstante, si salto y me agaché, cuando aterrizo, no me agacharé Necesito realmente agacharme cada vez que salto y haga clic en agacharse, debería agacharse auto cuando Y tenemos que arreglar esto aquí. Voy a arrastrar de esto y retrasar el código por algo realmente, muy pequeño. Entonces tal vez 0.05 después del retraso, podemos volver atrás y volver a reproducir este código. Lo que esto está haciendo es simplemente si estás en el salto, no puedes agacharte, entonces será falso Seguirá adelante y retrasará el código y volverá a preguntar de nuevo si estás saltando o no. Sigue comprobando si estás saltando o no. Y cuando aterrizas en el suelo y todavía tienes pulsado el botón agacharse, realidad va a seguir adelante y Puedes probarlo, ver si funciona o algo así. Bichos, Puedes saltar aquí, agacharte, auto, agacharse, un ojo, aterrizar Eso realmente funciona. Ahora bien, si pones esto demasiado alto, parecerá un poco rezagado porque cuando saltas, lleva un poco de tiempo Antes de agacharte, puedes hacer que sea mucho mejor agacharte aquí Si lo haces mucho más bajo, el tiempo de respuesta será mucho mayor. Si saltas y haces clic y te agachas, puedes verlo agacharse No me gusta ponerlo demasiado abajo, porque recuerda cuanto más abajo pongas esto, más veces se va a ejecutar este código. Va a correr esto muchas veces por segundo tratando de comprobar si estás saltando o no. Para este, solo voy a ponerlo a 0.05 en su lugar. Para comprobar cuántas veces se ejecuta esto, siempre puedes tomar este navegador y decir 1/0 0.05 Entonces puedes ver este código ahora mismo, corre 20 veces por segundo Y se puede ver que sí se ejecuta muchas veces. Si lo pones a 0.01 entonces corre 100 veces por segundo. No me gusta ponerlo demasiado bajo. 0.05 es un buen número. Vamos a cerrar esto. Bien, ahora esto está funcionando. Ahora el problema está aquí. Para los agachados. En realidad va a ejecutar el código agachado a pesar de que ya no estoy agachado Se puede ver si arrastre aquí y digo print string y solo imprimo un simple mensaje a la pantalla para ver si este código se está ejecutando o no compilar. Vamos a hacer clic en Reproducir. Puedes ver si salto y aguardo, agacharme, y me voy a soltar. Entonces, cuando aterrice, en realidad va a agacharse. Salto, me agaché y lo solté. Va a ejecutar el código agachado aunque realmente no lo necesite, porque aún no me he agachado para hacer esto o Podemos tomar el estado de movimiento y podemos arrastrar de él y podemos decir contiene ítem. Si contiene el artículo agachado, entonces queremos seguir adelante y agacharnos Cuando soltemos el botón, vamos a golpear aquí. En realidad, solo arrástralo aquí abajo. Y hagamos una sucursal y la conectemos , así como así. Bien, organizo esto un poco, ¿de acuerdo? Entonces lo que estamos haciendo aquí es que estamos preguntando si estamos en el salto o no. Y si no estamos en el salto, podemos seguir adelante y agacharnos si estamos en el suelo No obstante, si estamos en el salto en el aire, va a seguir revisando cada vez que aterricemos Y cuando aterricemos va a pasar por este código y luego va a preguntar, ¿soltó el botón o presionó el botón? Si pulsas el botón, te vas a agachar Si sigues presionando el botón agacharse, si has soltado el botón, primero va a comprobar si realmente estás agachado, si esta matriz de estado de movimiento sí contiene el elemento agachado, y si no lo hace, entonces no hagas nada porque no hagas nada Tiene algún sentido para ejecutar este código. No obstante, si contiene el agachado, y vas a soltar el botón, se va a agachar Vamos a tratar de jugarlo ahora. Y vamos a saltar y hacer clic agacharse. Eso ayuda. Si salto y hago clic en agacharme y soltarlo, puedes ver que el código ya no se está ejecutando y está totalmente optimizado Vamos a compilar ahora. Todo está funcionando aquí. Cuando salto y spam mi botón de agacharse, no va a funcionar Sólo cuando aterrice aquí en el aire, no puedo spam a mi botón agachado 56. 5.05 Arregla los errores de Crouch restantes: Bien, lo último que quiero arreglar para el agachado es que puedes ver si voy a un borde o a una repisa Y me agaché aquí y voy a este borde aquí y simplemente me voy del Se puede ver que el personaje está bloqueado aquí en el aire. Se puede ver cada borde que realmente hace esto. Si voy aquí arriba, eso es demasiado alto. Voy hasta aquí y voy a agacharme y quiero caerme. Se puede ver que en realidad estoy aquí en el borde. Y si, se ve raro. Vamos a cerrarlo. Vamos a la base de jugadores. Y si haces clic en el componente de movimiento del personaje y buscas agacharte, tienes este llamado, Puede caminar fuera de las Al agacharse, haga clic en eso y continúe y compile y haga clic en reproducir Ahora puedes ver cuando hace eso, si te agachas aquí y si saltas, caerá de este borde Eso era lo único que teníamos que hacer, una solución muy, muy sencilla. Pasemos a la siguiente lección. 57. 5.06 Prepara los pasos en SFX: Ahora es el momento de agregar algunos pasos efectos de sonido para que el personaje suene mejor en el juego para que no sea demasiado silencioso Sigamos adelante y hagamos una nueva carpeta. Sigamos adelante aquí en la carpeta de contenido. Vamos a hacer clic derecho, ir a una nueva carpeta, llamarlo audio. Dentro de esta carpeta, voy a escribir click y hacer una nueva carpeta también. Voy a llamarlo efectos de sonido dentro de esta carpeta. Sigamos adelante e importemos los efectos de sonido ahora. Nuevamente, en los materiales de costo que he subido para ti en este sitio web, verás muchos más artículos. Por ejemplo, en la interfaz de usuario o en el audio, verás muchos más artículos de los que ves aquí porque sigo agregando cosas. Mientras desarrollo este curso. Quizás veas aún más cosas de las que estás viendo aquí ahora mismo. No te preocupes por ello, no te confundas demasiado, solo sigo agregando cosas mientras desarrollo este curso. Ahora mismo, lo que necesitamos usar son los pasos, el efecto de sonido de paso 1-6 Así que todos estos, puedes hacer clic y arrastrarlos al panel aquí, al navegador de contenido, y soltarlos, y se agregarán Lo que hay que hacer es que haga clic derecho ir y aquí en el audio, hacer una cola de sonido. Cuando haces un sonido que, puedes llamarlo, llamémoslo pasos Ahora otra forma de crear un sonido que es también puedes simplemente hacer clic derecho en uno de ellos y seguir adelante y hacer clic en Crear Que. La tercera opción es seleccionarlos todos y crear una sola que en realidad también los subirá a todos en una sola que, en realidad, es lo que queremos hacer. Pero también puedes simplemente hacer clic derecho e ir al audio y crear el sonido que. Tienes diferentes opciones. Vamos al interior de esta cola de sonido. Déjame hacerlo un poco más grande para que podamos ver. Lo podemos hacer ahora es que podamos llevarnos todos estos. Haga clic en el primero, turno completo, haga clic en el último y haga clic y arrástrelos a la señal de sonido que agregará todos los efectos de sonido de paso a la señal de sonido Ahora dentro de aquí, lo que puedes hacer es que queramos tocar estos pasos al azar Debe elegir al azar cuál jugar, solo para que tengamos alguna variedad. Lo que hay que hacer es escribir click y buscar al azar. Entonces encuentras esta nota aleatoria. Por cierto, para las señales de sonido, puedes escribir click. Y puedes ver que tienes estos nodos igual que en blueprint Sin embargo, no como en el plano. Puedes ver que no tienes muchos nodos, pero también puedes hacer cosas geniales con ellos, aunque no tengas muchos nodos. Ahora para este, vamos a usar el aleatorio, y va a reproducir uno de estos efectos de sonido al azar. Vamos a conectarlo. Arrastremos y conectemos estos hacia aquí. Y vamos a dar click sobre esto. Además un par de veces tenemos esos insumos, podemos conectarlos así como así. Enchufar todos ellos. La salida que enchufamos a la salida. Vamos a organizarlo un poco. Lo que podrías hacer ahora es que puedes hacer click en Pl Q para ver qué hace. Y se puede ver que reproduce un sonido al azar. Simplemente elige uno de ellos. Ahora creo que es demasiado tranquilo. Podemos ir al multiplicador de volumen y aumentar el efecto de sonido de paso para ponerlo a 1.2 por ejemplo O lo puedes poner a tres. Se ve que aumenta el sonido, a lo mejor 1.2 no quiero que sea demasiado alto para este curso porque también estoy hablando contigo y puedes escuchar mi voz. Si esto es demasiado ruidoso, probablemente será demasiado molesto. A lo mejor uno para mí, puedes aumentarlo un poco más alto. Uno todavía está quizá demasiado callado. Pero para este curso, me voy a quedar con uno. Creo que también me puedes escuchar cuando recuerdo el curso. Bien, tenemos este paso y está preparado. Y también puedes tocarlo aquí para ver cómo suena. Ahora bien, si también quieres más variedad, puedes usar algo llamado modulador. Si haces clic derecho y buscas modulador aquí, en realidad solo voy a usar un sonido para demostrártelo. Si tomo este sonido y lo conecto a la salida, puedes ver si tocas ahora, suena un poco diferente. Si haces clic en el modulador y tal vez disminuyes el tono a 0.9 y aumentas el tono máximo a 1.1 hay una gran diferencia. Va a hacer una variedad del sonido con diferentes tonos. Si haces clic en reproducir ahora puedes escuchar que suena un poco diferente cada vez que puedes usar un modulador para aumentar y disminuir el tono al azar. También puedes conectarlo aquí. Si acabo de conectar esto de nuevo, puedes conectarlo aquí para hacer un poco de variedad. Ahora en vez de 0.9 me voy a quedar con 0.95 Pero para el pitch max, puedo quedarme con uno Algo así. Obtienes un sonido diferente cada vez que tocas esto. Bien, vamos a guardar todo. Vamos a cerrarlo y pasemos a la siguiente lección. 58. 5.07 Temporizador por evento: Ahora para agregar el efecto de sonido de paso. Si ya has hecho esto antes, sabes que puedes ir a los assets y animaciones. Y dentro de una animación, por ejemplo, esta de aquí, cualquier animación aleatoria. En realidad la agachada es probablemente la carrera que necesitamos encontrar . Por ejemplo, éste. Sabes que puedes entrar aquí, hacer clic derecho, agregar en los notificadores, luego poner un efecto de sonido Cuando haces esto y seleccionas un efecto de sonido aquí en la cola de sonido, y simplemente haces clic en reproducir. Se puede ver que en realidad está funcionando. Y puedes copiar este efecto de sonido, pegarlo, tratar de armarlo con los pasos, así como así Algo así, por ejemplo. Así como así. Funcionará también en el juego cuando juegues el juego. No obstante, hice esto y quería grabarlo para ti. No obstante, sí se mueve un poco porque cuando corres, a veces coloca el sonido dos veces. Porque en la otra animación también tienes esto, tienes que poner esto en todas las animaciones de ejecución cuando cambias la animación de atrás a adelante o atrás de derecha a atrás izquierda. A veces en realidad coloca el sonido dos veces a la vez. Suena un poco buggy. Realmente no me gusta este método, así que probé otro. Así que cerremos esto y probemos algo llamado temporizador por evento. En esta lección, solo quiero explicarte qué es este temporizador por evento, porque en realidad lo vamos a usar más de una vez. Y es un concepto y función muy importante dentro del plano Vamos al jugador, vamos a la base de jugadores. Ahora para la carrera, solo quiero ponerlo tal vez aquí en el evento de movimiento que va a tener más sentido. Tomemos todo esto, y de hecho voy a empujarlo un poco hacia abajo para poder trabajar aquí sin ninguna restricción. Vayamos aquí al final del código de movimiento, y vamos a arrastrar desde aquí y escribir temporizador por evento. Y podemos seguir adelante y seleccionar este llamado temporizador por evento. También puedes escribir, y puedes ver lo que puedes hacer. Tienes temporizador por evento, temporizador por nombre de función. Esto es casi lo mismo que el evento, pero se puede ver lo que es esto. Después de haber entendido qué es el temporizador establecido por evento, seleccionemos establecer temporizador por evento. Ahora para este evento, tenemos que agregar un evento personalizado aquí. Puedes ver esta entrada que tienes que dirigir desde aquí y tienes que escribir eventos personalizados. Entonces tienes que llamar algo a tu evento personalizado. Por ejemplo, solo voy a llamarlo play steps, efectos de sonido, play footstep sound effect Ahora te pregunta aquí, ¿cuál es el tiempo que quieres hacer un bucle de esto? Por ejemplo, vamos a subir 0.5 Ahora voy a seleccionar aquí que este temporizador esté en bucle Y sólo voy a hacer click en esta flecha otra vez. Bien, Ahora es un temporizador de bucle. Y va a hacer un bucle cada 0.5 segundos. Si dirijo desde aquí e imprimo una cuerda, y puedo dar click en play aquí, deberías ver que corremos aquí. Y detengo mi código, se puede ver que se ejecuta cada 0.5 segundos. Se puede ver que en realidad imprime hola cada 0.5 segundos. Esto se puede ver mejor si sólo cambio el color. Por ejemplo, en la duración, en lugar de apenas 2 segundos, lo pongo a 50 segundos. Hago clic en play, y me muevo, y me detengo. Va a ejecutar el código. Ve cada 0.5 segundos, va a saludar. Si lo pones abajo, puedes ver cada 0.2 segundos que va a saludar, como puedes ver aquí. Así que podemos usar este temporizador para ejecutar algún código. En este caso, lo vamos a usar para hacer un bucle los efectos de sonido de paso cuando estés corriendo, va a reproducir los efectos de sonido Bien, para este temporizador, en algún momento tenemos que parar el temporizador. De lo contrario, va a hacer un bucle para siempre y tu código se estrellará en algún momento porque has generado demasiadas instancias de esto Entonces hagamos clic derecho y promocionemos esto a una variable. Llamemos a esto pasos de 1 Ft. Esto afecta el tiempo o el manejo. Se llama asa. Si sostienes el mouse sobre él, se llama estructura de manejador de tiempo. Normalmente solo lo llamo tiempo o manejo al final. Paso a Paso, sonido, efectos, tiempo o mango. Ahora tenemos esto más adelante, lo que podemos hacer es que podamos tomar esto y decir claro e invalidar temporizador Aquí es cuando queremos detener este temporizador. En algún momento, podemos seguir adelante y usar este temporizador claro e invalidar Pero lejos ahora solo vamos a eliminarlo. Sí, eso fue en realidad para esta lección. Permítanme cambiar éste a algo así como 0.5 para empezar. Porque recuerda, un temporizador ejecuta esta cantidad de segundos. Entonces, por ejemplo, si eres 0.1 va a correr diez veces por segundo. Te imaginas que no quieres poner esto a algo así, porque imagina cuántas veces va a correr esto. Si digo hola y hago clic en play y corro y me detengo, se puede ver que va a spam. Este código, puedes ver que mi juego en realidad se está estrellando y está muy rezagado No hagas esto, esto es realmente malo. Me gusta quedarme en el mínimo, valor mínimo. Si realmente tengo que ir muy bajo, es 0.3 o tal vez 0.2 en casos raros. Pero por lo general trato de quedarme en 0.50 0.40 0.6 Eso es si realmente necesito ejecutarlo Muchas veces, de nuevo, lo que dije antes, siempre puedes ir a tu navegador de Internet y puedes decir, por ejemplo, 1/0 0.01 Entonces puedes ver cuántas veces se ejecuta Normalmente no me gusta ir más de 60 veces por segundo. Yo escribo, por ejemplo, si escribes 0.03 corre 33 veces por segundo. Y a veces esto está bien, no te preocupes. A veces esto es necesario y sabrás cuándo lo necesitas. Cuando puedes quedarte así, eso es mucho mejor. Esto ejecuta el código 16 veces. Puedes ver 0.03 Ejecutas el código casi o en realidad duplica la cantidad de tiempo que 0.06 Intenta quedarte lo más alto que puedas aquí porque eso va a estar realmente optimizado para mí en este momento para los pasos Vamos a ejecutarlo como 0.5 segundos, dos veces por segundo. Y siempre podemos ajustarlo más tarde cuando lo necesitemos. Eliminemos esta . Compilemos todo y pasemos a la siguiente lección. 59. 5.08 Replicación de multidifusión: Bien, entonces aquí estamos otra vez. Ahora, muy importante estamos en multi jugador. No podemos simplemente entrar aquí y arrastrar desde aquí y decir play Sound por ejemplo. Sólo dices play Sound. Se puede reproducir el sonido dos D, que se utiliza generalmente para los elementos de la interfaz de usuario cuando se hace clic en un botón. Y puedes reproducir sonido en un lugar, por ejemplo, para pasos Y solo puedes seguir adelante y seleccionar el sonido. Y puedes ver si hago clic en Reproducir, corro, va a reproducir el sonido como puedes ver aquí. Ahora bien, esto realmente no funciona en el modo multijugador. El cliente no escuchará el sonido, porque de nuevo, recuerde que tenemos que replicar los ítems a los clientes de la lista de servidores Ahora bien esto funcionaría en un solo jugador, pero no multijugador. Ahora para el modo multijugador, necesitamos usar una multidifusión. Qué es una multidifusión, en realidad vamos a crearla aquí y te lo explicaré Hagamos clic derecho y hagamos un evento personalizado. Este evento personalizado, voy a llamar primero al servidor. Vamos a ejecutarlo a través del servidor. Pasos del servidor, efectos de sonido. Bien, vamos a hacer clic aquí en las réplicas, ejecutar el servidor y confiable Ahora hagamos clic derecho aquí abajo y hagamos un nuevo evento personalizado. Vamos a llamarlo MC para multidifusión. Y nuevamente, toca pasos, efectos de sonido para éste, hagamos clic en el Replicar Y ahora vamos a elegir multicast y confiable también Qué es una multidifusión, puedes imaginarlo, replica esto, lo que sea que escribas aquí a todos los clientes Cuesta todos estos artículos que escribes aquí a todos los clientes. Para multidifusión, solo puede ejecutarse a través del servidor. No se puede entrar aquí y decir multicast footstep efectos de sonido porque éste se puede ver, dice si el servidor este solo se ejecuta a través del servidor, no se puede multicast a través No podemos hacer eso. Es por ello que tenemos que arrastrar desde aquí y ejecutarlo primero por el servidor, efectos de sonido de paso Entonces desde el servidor podemos arrastrar y decir multicast footstep efectos de sonido Y eso va a funcionar perfectamente, por lo que primero hay que ejecutarlo a través del servidor, desde el servidor, luego puede multidifusión Bien, otra explicación también para la multidifusión que hay que entender es multidifusión se suele utilizar para efectos que son temporales Por ejemplo, si juegas un efecto de sonido porque recuerdas la multidifusión, si un jugador se conecta a tu juego y has escrito un código en multidifusión, el jugador conectado no podrá ver este Aquí es donde entra rep notify . Y eso vendrá después. No te preocupes por eso por ahora. Pero puedes ver aquí si hago clic en una variable, si realmente tengo una variable, si voy a ti agacharte por ejemplo, y hago clic en mi estado de movimiento Se puede ver en el replicado, también tengo algo llamado un representante notifique que vendrá después Pero si volvemos y volvemos aquí para la multidifusión, cualquier código que escribas aquí no será visto por el reproductor conectado a menos que vuelva a jugar Si solo me conecto al juego y solo tocó el efecto de sonido de ejecución, no puedo escucharlo a menos que el jugador se detenga y luego vuelva a correr. Y coloque este código mientras estoy conectado al servidor, entonces se reproducirá correctamente para la multidifusión Muy importante es que hagas algo que el jugador conectado realmente no necesita escuchar o ver a menos que se vuelva a tocar, por ejemplo. Ahora para este efecto de sonido de paso podemos tocar aquí, así como algunos efectos visuales, por ejemplo, algunos fuegos artificiales Y si abres un cofre y hay algunos efectos visuales dorados que salen de este cofre, entonces eso también necesita ejecutarse en una multidifusión El representante aquí, si hago clic en una de mis variables. debe usarse siempre que necesite el reproductor conectado para ver ese cambio. Digamos por ejemplo, si el jugador sostiene, por ejemplo, un AK o una pistola, un deagle Entonces esto es muy importante que el jugador conectado necesite ver el arma correcta en las manos del jugador. El arma que realmente no haces en una multidifusión porque el jugador conectado verá el arma equivocada en el jugador Algunos juegos tienen mucho dólares porque usan multidifusión para todo Nuevamente, por lo general para lo que lo uso son principalmente efectos de sonido y efectos visuales que no necesitan estar ahí todo el tiempo. Por ejemplo, puedes ver si tienes un semáforo que va de rojo, amarillo y verde. Este semáforo como ese color, probablemente lo haría dentro de un rep, notificar porque ese color necesita ser visible correctamente para el reproductor conectado. El jugador conectado necesita ver si es amarillo o rojo y no seguir viéndolo en verde hasta que vuelva a cambiar. Para efectos visuales temporales, por ejemplo, fuegos artificiales que desaparecen después de 3 segundos que se relacionan no necesitan estar en una notificación que necesita estar en una multidifusión Lo que sea temporal que el jugador conectado no necesite ver de inmediato, hay que hacerlo aquí. Recuerda, este código tiene que volver a ejecutarse antes de que el reproductor conectado pueda verlo. Bien, sigamos adelante y toquemos el sonido aquí. Arrastremos desde aquí y digamos reproducir sonido en el lugar. Así es como tocas un sonido. Tienes que especificar dónde quieres reproducir el sonido. Recuerda, estamos codificando dentro del jugador. Yo sólo puedo arrastrar de aquí y decir obtener ubicación actor. Estoy consiguiendo la ubicación de este jugador. Ahora este sonido va a sonar donde quiera que esté este reproductor. Ahora tenemos que seleccionar qué sonido. Vamos a seleccionar los pasos. Ahora si hago clic en play y corro por ahí, ahora me detengo. Se oye que los pasos están sonando También se puede escuchar aquí en el otro jugador. Si abro el otro reproductor, en realidad también puedo escuchar el sonido. Esto es del cliente. Ahora bien, esto está funcionando, ¿de acuerdo? Se oye que corre todo el tiempo, aunque yo no esté corriendo. Y también tenemos que arreglarlo en la siguiente lección. Pero por ahora, sabemos que en realidad se está reproduciendo este efecto de sonido. Nuevamente, la multidifusión solo se puede ejecutar a través del servidor. No se puede ejecutar una multidifusión a través del cliente, ejecutarlo a través del servidor, y desde el servidor puede multidifusión a efectos de sonido temporales o efectos visuales que no necesitan aparecer reproductor conectado. Por ejemplo, algunos fuegos artificiales o una bala que acabas de disparar y desaparecerá. Pero por ejemplo, qué arma sostiene el jugador es realmente importante para el jugador conectado. Para que vaya dentro de un representante, notifique. No te preocupes, lo haremos más adelante. Por ahora no tenemos mucho. Sólo tenemos el efecto de sonido. Pero vamos a tener muchos ejemplos a través de este curso. Bien, para detener el efecto de sonido cada vez que paremos por aquí en el completado. Esto es cada vez que soltamos las teclas de movimiento. Lo que podemos hacer es volver a dar los pasos aquí. Podemos borrar e invalidar el temporizador por asa. Esto impedirá que este temporizador funcione más. Podemos seguir adelante y conectarlo, así como así podemos compilar e intentemos jugarlo ahora. Si corremos y me detengo aquí, se oye nada cuando corres. La razón por la que no puedes escuchar todo esto es porque esto sigue funcionando así muy rápido. Nunca llega a este temporizador antes de que se ejecute el segundo movimiento. Sigue corriendo así. Le da un descanso para repasar y configurar este temporizador. Vamos a arreglar esto, pero puedes ver aquí cuando agregas esto, el temporizador en realidad ya no reproduce el efecto de sonido porque nos estamos deteniendo. Borra el temporizador solo para asegurarse de que no se baje. Siempre podemos tomar este mango de paso, podemos arrastrar y decir válido y podemos usar, este es temporizador válido Si es válido podemos hacer una sucursal y podemos borrar este temporizador así. ¿Bien? Asegurarse de que este temporizador sea válido y luego limpiarlo para que sea más limpio. Siempre puedes simplemente tomar otra instancia de esta variable y conectarla aquí. Y puedes seguir adelante y organizar este foso más. Y ahora tenemos este código. Bien, vamos a compilar y en la siguiente lección, hagamos esto menos pantanoso y ejecutemos este código cada vez que estemos ejecutando 60. Condiciones de SFX de 5.09 Footsteps: Bien, primero de lo que tengo que hacer es hacer un lingote, vamos a arrastrar esto. Y hagamos un nuevo lingote llamado Playing Footsteps Reproduciendo el efecto de sonido de los pasos. Y simplemente lo deletreé mal. Así como así, tocando el efecto de sonido de pasos, vamos a arrastrar esto y establecerlo true cada vez que estemos reproduciendo los efectos de sonido Antes de hacer esto, tomemos esto y hagamos una rama. Primero, vamos a preguntar si estamos tocando los efectos de sonido o no. Sólo para que sea más legible, voy a arrastrar de esto y escribir no lingotes, así como así Cuando no estamos reproduciendo los efectos de sonido, quiero seguir adelante y reproducir los efectos de sonido. No necesitamos ejecutar los efectos de sonido del pie cuando ya los estamos ejecutando. Si no estamos tocando los efectos de sonido de paso, entonces podemos seguir adelante y reproducir los efectos de sonido así como así Recuerda, hay que ponerla en fallas. En algún momento aquí, cuando paremos el temporizador y detengamos los efectos de sonido, voy a poner esto en falso. Vamos a componer, a ver si esto funciona, o si necesitamos hacer más. Ahora en realidad puedes ver que funciona cuando estás corriendo, funciona cuando estás parando, también se detiene. Bien, increíble. Ahora corre demasiado lento. Entonces tal vez necesites reducir este número a 0.5 o cuatro. Y puedes seguir adelante y volver a jugar. A lo mejor eso es demasiado rápido. En realidad, voy a escribir 0.42 creo que hay que tocarlo un par de veces Intenta probar tu juego. Creo que esto está bien. Siempre puedes ajustar esto más tarde si tienes un dólar con él. Pero creo que este número está bien para mí ahora mismo. Ahora bien, esto está funcionando correctamente. Sin embargo, tendrás algunos bichos. Verás si haces clic en Play y yo corro por ahí, puedes ver si te encuentras con algo. También coloque el efecto de sonido. Este es un pequeño error que debes corregir. Para este, puedes usar la velocidad del jugador, porque si acabo de golpear esto, alejemos todo esto aquí. Así que en realidad puedes tener algo de espacio para trabajar. Si haces clic derecho y dices obtener velocidad, esta es la velocidad del jugador y tomas esto y rompes, rompes este vector. Para que puedas volver a ver las X, Y y Z. También puede hacer clic con el botón derecho y dividir el pasador de estructura. Eso es lo mismo. No obstante, sí me gusta romper el vector solo para tenerlo aquí afuera. Ahora, sólo para verlo, vamos a imprimir una cuerda. Simplemente puedes imprimir la velocidad x, por ejemplo, y puedes ver lo que dice. Normalmente hago esto a veces cuando hago un nuevo mecánico. Yo uso mucho la cadena de impresión para ver lo que hace. Puedes hacer clic en W para moverte, y puedes ver los aumentos de velocidad. La velocidad de tu personaje aumenta cada vez que me muevo. Bien. Así como así. Y lo mismo con la X y la Y. Así podrás ver que aumenta cada vez que te mueves. Lo que podemos hacer para reproducir los efectos de sonido cuando entras en las cosas, no quiero tocar el sonido. Golpeemos de esto y digamos si esta velocidad es mayor que, por ejemplo, 100 o si es inferior a 100. Porque recuerda, si caminas de regreso, será un número menos si también es inferior a 100. O hagamos esto por la y también. Vamos a copiar y pegar esto y solo conectarlo aquí. Si es inferior o superior, o inferior a 100 aquí. Vamos a arrastrar de esto. No necesitamos usar lingotes porque n significa que todo esto tiene que ser cierto Podemos arrastrar de esto y usar un lingote O si uno de ellos es cierto, no queremos tocar el sonido porque somos demasiado lentos Hagamos clic en el plus aquí y agreguemos todos ellos. Lo que estamos diciendo es si la velocidad para la x es superior a 100, o si es inferior a 100, o si es esto, o si es eso, entonces queremos reproducir el sonido que podamos arrastrar desde aquí y escribir una rama. Entonces desde esta sucursal podemos seguir adelante y conectarlo. Así como así, podemos conectar el código. Ahora el código sólo va a reproducirse cuando nos movemos a esta velocidad. Vamos a hacer clic en play. Y me muevo. Me detengo y me muevo a algo aquí. Ver que sigue jugando. Y creo que es porque esto de aquí no es lo suficientemente alto. Si escribimos, por ejemplo, en realidad esto es porque éste es, el inferior también está equivocado. En realidad vamos a hacerlo más alto primero, vamos a hacer 250. Y aquí tengo que escribir más bajo -250 Eso fue un error de mi parte. Déjame solo escribir 250 y es inferior a -250 En realidad sigue reproduciendo el sonido si entro en las cosas y es porque no lo he puesto aquí en lo falso Cuando es falso, puedes ver si es verdad, va a reproducir el efecto de sonido. Pero si sigo presionando el botón y será falso. Realmente no hacemos nada. Esto solo detendrá el efecto de sonido cada vez que suelte el botón. Lo que tenemos que hacer es que tenemos que arrastrar esto aquí abajo. Y tenemos que enchufar este falso en aquí también. Por lo que detiene el temporizador cada vez que es falso. Vamos a hacer clic en jugar ahora y entrar en las cosas. Y ya se puede ver que no reproduce el sonido. Cuando camino un poco, se ve que empieza a tocar el sonido. Siempre se puede ajustar este número. Si lo haces más bajo, va a reproducir el sonido mucho más rápido cuando entres en las cosas. Pero por ahora, esto está bien para mí. Y siempre puedes seguir adelante y organizar esto un poco más, ¿de acuerdo? Entonces algo así. Acabo de poner las notas de ruta leídas solo para que sea un poco más legible. Así como así, bien. Ahora lo que tenemos que hacer, hay otros factores. Ahora el siguiente factor es, puedes ver si voy aquí arriba, déjame saltar de aquí arriba y salto, también está reproduciendo el sonido en el aire. Lo que tenemos que hacer es que tenemos que tomar, éste no es saltar, así que nos estamos asegurando de que el jugador no esté saltando. De lo contrario no queremos reproducir los efectos de sonido. Vamos a golpearlo desde el remos y el lingote derecho. Si es cierto, si no estás saltando, entonces podemos seguir adelante y reproducir los efectos de sonido. Esto también tiene que ser una condición. En realidad, vamos a golpearles. Sí, un poco aquí atrás. Déjame arrastrar todo esto más lejos. Ahora el salto está funcionando. Lo segundo es que también queremos asegurarnos de que en realidad estamos corriendo y no caminando. Y puedes ver aquí, si juego la carrera primero y camino, en realidad va a jugar también, correr. No sé si tengo eso, no lo sé, en realidad. Podemos tomar este estado de movimiento y podemos arrastrar desde aquí y decir obtener una copia de nuevo. Podemos intentar comprobar cuál es el último índice. Si está corriendo, significa que estamos presionando el botón de correr en este momento y no caminar ni agacharse Si esto es igual a correr, entonces podemos seguir adelante y hacer este código así como así. Podemos hacerlo así. Ahora para hacerlo más limpio, voy a seleccionar todo clic derecho y contraer esto a una función a la que voy a llamar a esta, la función se está ejecutando. Esto es solo verificar si el jugador está corriendo o no. Lo estoy convirtiendo en una función pura. Entremos aquí y solo organicemos esto un poco más dentro de la función, así como así. Aquí simplemente estamos comprobando si el jugador está corriendo o no. Entonces este está corriendo, así que nos estamos asegurando que el jugador esté funcionando, lo contrario no queremos tocar los efectos de sonido de paso Bien, sigamos adelante y juguemos aquí. Y vuelve a intentarlo. Ahora estoy jugando. Me detengo. Si corro, si sostengo turno para caminar, no voy a jugar. Si lo dejo ir, increíble. Ahora funciona, bien. Hay un pequeño problema en estos momentos. Puedes ver si corro un poco, realmente no va a reproducir el efecto de sonido a menos que corra un poco más. Lo que necesitas saber aquí para el temporizador por evento es el tiempo que aquí necesitas para correr antes que realmente reproduzca este código encaja cinco, por ejemplo. Y hago clic en Play. No va a reproducir este código al instante. Va a esperar 5 segundos antes de que se ejecute. La primera instancia de este código ahí va 5 segundos antes de que realmente comience a reproducir los efectos de sonido del paso Como puedes ver aquí acaba de tocar, el efecto de sonido de paso es de 0.42 Necesitamos reproducir el efecto de sonido justo antes de que reproduzca esto, solo una vez Esto lo podemos hacer aquí. Siempre que vamos a empezar a tocar los efectos de sonido. Puedo seguir adelante y recordar, no se puede ejecutar el multi cast directamente desde el cliente. También hay que ejecutarlo a través del servidor. Es por eso que puedo conducir desde aquí y escribir primero los efectos de sonido de paso de juego Y luego va a reproducir la multidifusión. Después de eso voy a tocar el efecto de sonido de paso de inmediato cuando corra después de 0.42 segundos, va a comenzar a hacer un ciclo de este código. Porque si no hago esto, va a esperar a 0.42 segundos antes de que empiece a correr todo eso Es por ello que tenemos un pequeño retraso. Si haces clic, puedes jugar ahora puedes ver que se reproduce de inmediato , así que es mucho mejor. Ahora también lo que puedes hacer si no quieres reproducirlo de inmediato, Si quieres tener un ligero retraso en tu efecto de sonido, qué puedes hacer, también puedes hacer click aquí y tomar estos segundos transcurridos o activar segundos Ambos funcionan. Déjame en realidad solo usar el que se llama trigger seconds. Lo que puedes hacer es arrastrar desde aquí, en realidad vamos a imprimir una cuerda. Me gusta imprimir cuerdas para que veas lo que estamos haciendo. Conectemos esta cadena de impresión al código y solo conectemos este disparador segundos para imprimir la cadena. Juguemos. Se puede ver cuando sostengo mi llave, solo cuenta segundos de cuanto tiempo llevo sosteniendo mi llave. Por ejemplo, no sólo mi llave, en realidad todo mi movimiento puede decir que me estoy moviendo, cuenta. Si dejo ir mi movimiento, empieza desde el principio. Solo cuenta segundos de cuánto tiempo llevas presionando los botones de movimiento. Pero lo que puedes hacer es rastrear a partir de esto y decir si los segundos gatillo son mayores que, por ejemplo, 0.3 entonces queremos seguir adelante y correr. Déjame agregar otra condición aquí. Tenemos mucho estado uno aquí. Al final tenemos muchas condiciones. Vamos a conectarlo, y vamos a hacer clic en Reproducir. Funciona, pero ahora después de 0.3 segundos va a reproducir el código. Ahora bien, si lo haces más alto, lo va a jugar mucho después. Después de 2 segundos, si haces clic en Reproducir y ejecutar después de 2 segundos, va a reproducir el código. Esto es si quieres retrasarlo un poco. Si no quieres reproducir el efecto de sonido corriendo instantáneamente, puedes tener un pequeño retraso, tal vez 0.4 en lugar de 0.5 así, y se reproducirá mucho más rápido. Puedes ver que no reproduce el efecto de sonido cada vez que solo haces esto. Si solo haces clic en la tecla rápido, pero si haces clic en ella un poco más, va a reproducir el efecto de sonido. Creo que lo voy a poner a 0.3 creo que lo está jugando demasiado tarde. Si haces esto, no va a jugar. No obstante, si lo presionas un poco más, va a reproducir el efecto de sonido. Bien. Ahora funciona perfectamente. Adelante y organiza el código. Si quieres quitar uno de los pines del O, por ejemplo, puedes escribir click y quitar el pin. Adelante y organiza el código. Ahora todo está organizado y puedes ver el código aquí, si acaso te has perdido algo. También he subido este proyecto final para ti también, para que puedas seguir. Sigamos adelante y compilemos. Vamos a guardar todo, y pasemos a la siguiente lección. 61. 6.01 Coloca los puntos de aparición: Bien, entonces ahora que tenemos el movimiento terminado, por supuesto todavía necesitamos el movimiento para la pistola y el movimiento para el rifle, pero nos centraremos en eso más adelante. Por ahora, continuemos con el desove del jugador para el desove del jugador, comencemos a colocar algunos puntos de generación para el jugador aquí en la carpeta Hagamos clic derecho en hacer una nueva carpeta. Llamemos a este Span Points Again, hagamos clic derecho en esta carpeta. Voy a ponerle el color a éste. Nuevamente, dentro de esta carpeta. Hagamos clic derecho ahora para hacer los puntos de generación, necesitamos que los jugadores comiencen para que el jugador pueda comenzar realmente en el nivel No obstante, en lugar de tenerlo creado a partir de aquí, porque este ahora mismo se acaba de crear a partir de esto, comienzan los jugadores. Sin embargo, necesitamos los puntos de generación que en realidad son planos En lugar de hacer esto , eliminemos esto. Los jugadores empiezan desde el nivel si quieres asegurarte de que no tienes más aperturas de jugador en tu nivel, siempre puedes simplemente subir aquí en el outliner y comenzar la búsqueda de jugadores Y se puede ver que aquí no hay nada. Voy a dar click en la X aquí arriba para hacer una nueva. Vamos a hacer clic derecho ir a clase Blueprint ahora en lugar de seleccionar uno de esos aquí, puedes hacer click sobre esta pequeña flecha, realidad puedes ver, puedes hacer planos de casi cualquier cosa Una cámara, follaje, e incluso el jugador arranca y así sucesivamente. Así podrás ver que tienes 682 elementos que puedes buscar, por ejemplo, un juego guardado, cuando vas a crear un juego donde guardes, descargues y así sucesivamente Entonces tienes muchas cosas dentro de aquí. Por ahora, solo necesitamos que los jugadores comiencen. Si buscas un inicio de jugador, puedes verlo aquí. Este llamado Players Start. Seleccione éste. Adelante y haz clic en Seleccionar. Llamémoslo engendros BP. Ir a auto guardar por alguna razón. Vamos a llamarlo BP base de punto de generación. Tenemos, tenemos un plano base igual que el jugador. Si vuelves al jugador tenemos una base de jugadores. Y a partir de ese jugador creamos estos dos. Ahora no he explicado realmente para qué se utilizan estos porque realmente no tenemos nada dentro de los planos terroristas y antiterroristas Y ésta la tenemos que corregir más adelante. Pero ahora puedes ver aquí están vacíos, los hijos de la base de jugadores. Recuerda, estos son los planos hijos de la base de jugadores También puedes ver que si mantienes el mouse sobre ellos, puedes ver que la clase padre es la base de jugadores. Lo vamos a explicar en esta sección cómo se utilizan para ellos. Ahora volvamos a la suma de puntos. Y ahora que tenemos un punto de generación base, hagamos clic derecho en él. Crear una clase de plano infantil. Llamemos a este punto de generación terrorista BP. Volvamos a hacer clic derecho en esta base de punto de sierra y crear otra cláusula de blueprint hijo Llamemos a este punto de generación terrorista BP. Bien, tenemos un punto de generación antiterrorista y tenemos un punto de generación terrorista. Ahora vamos a seguir adelante y colocarlos dentro del nivel. Tomemos primero al antiterrorista y lo coloquemos al nivel en alguna parte, por ejemplo, aquí. Y puedes volver a hacer clic en E para rotar y puedes girarlo alrededor. Así como así. Puedes ver que tienes esta flecha azul y aquí es donde está buscando el jugador. Porque puedes ver si hago clic en play, ahora el jugador está mirando en esa dirección. Si lo giro de esta manera y juego, el jugador está girando en esta dirección. Entonces, para asegurarnos de que están mirando la dirección correcta, sigamos adelante y hagamos que apunte hacia esa dirección así. ¿Bien? Ahora siempre se pueden ajustar los puntos de enlace más adelante, pero por ahora sólo voy a colocarlos donde creo que serían los más óptimos. Entonces por ejemplo, la terraza del mostrador aquí, siempre se puede sostener Alt y arrastrar para copiarlo. Y puedes colocar este aquí por ejemplo. Y por lo general los pongo detrás de la defensa aquí, porque si los pones aquí afuera, simplemente pueden matarse entre sí de inmediato. Normalmente los pongo detrás de la pared para que no los maten enseguida. Simplemente puedes colocar un par de ellos. Esta es una tercera y esta es la cuarta. ¿Bien? Así como así. Incluso puedes colocar uno aquí arriba, pero no quiero engendrar a nadie aquí, en realidad Yo sólo quiero engendrarlos aquí abajo. Otra vez, para tu juego, todo depende de ti. Puedes elegir dónde quieres engendrar a tus jugadores hasta ti Bien, los tengo engendrados aquí. Déjame hacer lo mismo ahora por aquí por el terrorista. Déjame tomar esto a punto y colocarlo en algún lugar aquí. De nuevo, estoy tratando de colocarlos lo mejor que pueda detrás de la pared. Sostén alton, arrastra para copiar y voy a colocar uno por aquí Ahora dice, oh, tengo el recogedor de color. Por alguna razón en realidad no tengo idea de lo que acabo de presionar. Pulsando aquí y arrastrándolo aquí de nuevo. Mantenga lugar en algún lugar de aquí y sostenga el Alt. Arrastre y coloque el último por aquí. Sólo voy a echar un vistazo al costado, ver cómo se ven. Puedo seleccionarlos todos manteniendo el control y haciendo clic en ellos. Sólo puedo acercarlos un poco más a la pared. Esto se debe a que en realidad quiero colocar armas detrás de esos jugadores o detrás de esos engendros Bien. Algo así. Creo que se ve bien. Puedes ajustar esos puntos de generación como desees, pero creo que esto se ve genial Entonces ahora tenemos los puntos de desove terrorista colocados, y también tenemos los puntos de desove antiterrorista puntos de desove antiterrorista Así que sigamos adelante y guardemos todo y sigamos adelante. 62. 6.02 Almacena información de puntos de aparición: Ahora que hemos colocado todos estos puntos hijo, repasemos y almacenemos toda la información. Ahora suelo hacer esto dentro del modo de juego porque el modo de juego elige las reglas para el juego. Ahora muy importante ahora que estás trabajando en multijugador, es muy importante saber que el código que escribes aquí dentro del modo de juego, solo se está ejecutando en el servidor si eres el jugador y digamos dentro del jugador, intentas aquí desde el movimiento porque recuerda cuando inicias el movimiento aquí estás disparando el código como jugador o como cliente. Y como servidor, siempre puedes ver como cuál estás disparando. Si solo arrastras desde aquí y escribes una cadena de impresión. Ahora recuerda que una cadena de impresión es realmente poderosa de usar. Y si compilas y haces clic en Reproducir. Y ahora cuando me muevo, se puede ver que ahora está diciendo servidor. Y cuando me mudo como mi cliente, es el cliente que está diciendo hola. Esto significa que este código aquí se está ejecutando a través del servidor y el cliente y no solo el servidor. Ahora déjame conectarlo. Déjenme tomar otro ejemplo. Algo que sólo se ejecuta a través del servidor. Por ejemplo, si voy al agachado y lo juego aquí desde la autoridad por ejemplo, puedo compilar Da click en play, y cuando camino como servidor, nada está imprimiendo. Y esto es en realidad, ahora cuando hago clic en play, camino como el servidor. En realidad me agacharé. Esta es la clave agachada Si me agaché, puedes decir hola. No obstante, si juego como el cliente y me agaché, se puede ver que el servidor está diciendo hola No es el cliente el que está diciendo hola porque este código solo se ejecuta en el servidor. Ahora, para el modo de juego, no puedes acceder al código aquí desde un cliente. No tiene acceso al modo de juego. Si quieres escribir aquí algún código al que necesitas acceder desde el cliente, esto no es posible, entonces no debes escribirlo dentro del modo de juego. Puntos de desove. Muy importante saber, siempre es el servidor el que genera las cosas en el mundo Esto se debe a que estamos tratando de evitar hacer trampa. Siempre dejamos que el servidor se encargue del desove. Por ejemplo, engendrar a los jugadores desovar un arma al nivel cuando el jugador la deja caer del inventario y cosas así El desove siempre se maneja a través del modo de juego. Para los puntos de desove, podemos escribirlos dentro de aquí. Eliminemos todo esto por ahora. Escribamos click dentro de los eventos. Si haces clic en un evento, por ejemplo, y haces clic en juego, puedes ver algo llamado post login. También puedes simplemente escribir click y escribir post login. Y este evento en jugadas multijugador. Siempre que el jugador se conecte a tu mapa, se conecta a tu servidor. El inicio de sesión de Unpost es como una jugada de inicio. Siempre que el jugador se conecta a tu servidor, sucede algo. ¿Bien? Entonces lo que queremos hacer generalmente aquí es que queremos hacer una nueva variable. Hacer una nueva variable, se puede ver la entrada del nuevo jugador. Aquí hay un controlador de reproductor, por lo que en realidad puedes almacenar el controlador del jugador cuando se conectan y puedes usarlo más adelante. Esta es una información muy útil. Escribamos reproductores conectados y el tipo es controlador de reproductor, luego seleccione este, Referencia de objeto controlador de jugador . Y vamos a compilar. Como queremos almacenar todos los controles del jugador cuando se conectan, tenemos que convertir esto en una matriz. Recuerda que esta es una sola variable, solo puedes almacenar una pieza de información. Sin embargo, en una matriz, es como una caja. Puedes poner todos los controles del jugador dentro de esta caja y podrás usarla más adelante. Tomemos este, rastreemos desde aquí y digamos Ad. Podemos agregar este controlador de jugador a esta caja aquí con todo el control del jugador con los jugadores conectados aquí. En lugar de usar este anuncio, solo evita la casilla que suelo golpear desde aquí y usar esta llamada add unique. Solo puedes tener una instancia de ese controlador de jugador dentro de aquí, acaso el jugador se vuelve a conectar o cosas así No tenemos dos de los controladores de reproductor de este tipo dentro de la matriz. Agregar Único. Solo agrega una instancia de ese controlador de reproductor dentro de aquí. Y luego almacenar la información para los puntos de enlace. Ahora para conseguir cualquier cosa, esto es muy, muy importante. Cuando usualmente programas a través de mis cursos, quiero que pongas atención a las herramientas que estoy usando. A veces es importante que estemos programando un shooter en primera persona o un juego de dos D. A veces es más importante prestar atención a los nodos que estoy usando. E imagina de qué otra manera puedes usarlo en un juego de rol cuando saqueas monedas y así sucesivamente Para almacenar o para obtener cualquier cosa que esté dentro de tu nivel, que exista dentro de tu nivel, tenemos que usar un nodo llamado Get Actor de clase. Si tienes razón haz clic aquí y di Get Actor de clase, puedes ver ahora puedes conseguir cualquier cosa aquí que esté dentro de tu nivel. Por ejemplo, los jugadores empiezan que estamos usando. Si buscas jugadores empiezan, puedes ver eso. Lo puedes ver aquí también, ya que no se llama inicio de jugadores, esto no está mal. Sin embargo, también puedes obtener, si vas a los puntos de generación, puedes obtener la base de puntos de generación, ahora que la tenemos en blueprint, si solo buscas base de punto punto, puedes verla aquí Consigue actor de clase. Obtiene solo uno de ellos aquí desde el nivel. También tenemos otro nodo llamado get all actors of class. No solo estamos obteniendo un punto, en realidad estamos obteniendo todos los puntos de generación. En realidad, sólo quiero separarlos. Simplemente puedes buscar base de punto span y puedes agregarlo y llamarlo puntos España. No obstante, en realidad voy a separarlos ya de aquí. Voy a buscar los puntos de generación de terroristas de Cada Punto de desove. Asegúrate de que es el punto de generación que seleccionas aquí. Voy a hacer click derecho aquí, promoverlo a una variable y llamarlo Cada puntos de generación terrorista Ahora los tengo dentro de esta variable array. Bien, a continuación podemos volver a decir obtener todos los actores de clase, Podemos conseguir los puntos de engendro terrorista Ahora bien, si puedes encontrar un punto de spa terrorista, déjanos conectarlo aquí de nuevo. Permítanme hacer clic derecho en éste, promoverlo a una variable, y llamarlo puntos de generación terroristas . Se está consiguiendo a todos los actores de clase de puntos de engendro en terrazas, que son todos los que están aquí Está recibiendo los cuatro y ahora lo estamos almacenando dentro de esta matriz. Bien, ahora que tenemos esto almacenado, de nuevo, siempre puedes intentar imprimir una cadena si quieres, haz clic derecho en imprimir una cadena así como esta. Se puede tratar de obtener este por ejemplo, derecho obtener y obtener una copia de este. Nuevamente, si no recuerdas las funciones para una matriz, solo puedes buscar array y puedes ver todas las funciones que puedes usar aquí. Por ejemplo, puedes decir get, si puedo encontrarlo aquí, este de aquí y puedes conectarlo. Ahora estás consiguiendo el punto de España en el índice cero. Y si juegas puedes ver que se llama punto de giro terrorista así. Si obtienes el punto de giro en el índice uno en esta matriz, se llama spin 0.2 Si obtienes el uno en el índice dos, se llama Spin 0.3 Puedes ver esta matriz realmente contiene todos los puntos de España. Muy útiles, de nuevo para usar cadenas Pin cuando quieras depurar tu juego, solo te interesa ver qué es lo que esta variable, por ejemplo, está almacenando realmente. Sigamos adelante y compilemos, guardemos todo, y sigamos adelante. 63. 6.03 Importa los Assets de interfaz de usuario: Ahora que tenemos almacenada la información del punto de España, en realidad estamos listos para crear alguna interfaz de usuario antes de terminar el desove Así que sigamos adelante e importemos la interfaz de usuario en los materiales de costo que te he dado dentro de este sitio web, puedes ir a y descargarlo de nuevo. Si aún no lo tienes descargado, puedes entrar dentro de la carpeta UI. Aquí tengo botones para ti y tengo los íconos y también tengo imágenes. Ahora bien, si haces clic en los botones, déjame entrar en el motor en realidad primero. Y déjame crear una carpeta de interfaz de usuario. Hagamos clic derecho en la carpeta de contenido. Voy a hacer una nueva carpeta llamada I dentro de aquí. Hagamos clic derecho y hagamos una nueva carpeta. Y voy a llamarlo, por ejemplo, botones. Voy a hacer uno nuevo llamado íconos. Voy a hacer una nueva llamada Images. Empecemos por la carpeta de botones. Déjame entrar en los materiales de mi curso. Toma todos los botones aquí y haz clic y arrástralos a tu navegador de punt Así como así, puedes ver todos ellos importados Awesome. Ahora para estos aquí, si solo abres uno de ellos, puedes ver que son importantes y todo es correcto. Para mejorarlos un poco y no hacerlos borrosos ni errores dentro del juego, que cambiar el grupo de texturas a UI También hay que cambiar la configuración de compresión a la interfaz de usuario dos D. Entonces realmente sabe que es un elemento de la interfaz y no tenemos nada que sea borroso o alguna línea blanca detrás de esta interfaz de usuario y así sucesivamente Y en realidad tienes que hacer esto por todos ellos. Ahora te voy a mostrar un truco. Ya hemos usado esto antes. Y si solo seleccionas todas ellas, puedes escribir Click Ir a Acciones de Activos y Edición Masiva vía Matriz de Propiedades. Ahora lo hemos hecho con las animaciones. Si recuerdas, también puedes hacer esto con los elementos de la interfaz de usuario dentro de aquí. Vamos a hacer clic en compresión aquí. Asegúrese de que en la configuración de compresión conviértelos en una interfaz de usuario. Dos D, déjame ver realmente cuál es el otro, creo que está en el nivel de detalle aquí. Un grupo selecciona este y lo convierte en UI. Ahora en realidad lo has cambiado para todos ellos y no necesitamos hacerlo para todos y cada uno. Ahora puedes ver si haces clic en uno de ellos, por ejemplo, puedes ver que es UI e interfaz de usuario dos, impresionante. Todo se ve bien. Sigamos adelante y hagamos clic en Archivo y Guardar. Volvamos a los materiales del curso. Volvamos a los íconos Ahora, posible que veas más íconos que lo que puedes ver aquí en mi pantalla. Nuevamente, esto se debe a que suelo poner íconos a medida que desarrollo este curso. Más adelante agregaré más íconos, pero en tu ejemplo o en tus materiales de contenido del curso, probablemente verás más íconos. No te confundas, los vamos a usar más tarde. Pero por ahora solo tengo estos dos. Y voy a ir a mis íconos y los voy a arrastrar hasta aquí. Y nuevamente, igual que antes, da click en él, conviértalo en una interfaz de usuario y en una interfaz de usuario dos D. También lo voy a hacer para el otro, interfaz de usuario dos D. Bien, entonces estos están listos. Pasemos de nuevo a las imágenes ahora. Y déjame abrir mis materiales de costo. Volvamos a las imágenes. Déjame importarlos todos aquí. Y a veces en realidad los va a convertir en un mapa normal como puedes ver aquí. Estos fueron importados como mapas normales y no quiero eso. Y da click en Revertir, Revertir y revertir no los hará en un mapa normal, así que adelante y da click en el primero de nuevo, selecciona el último, haz clic derecho Ir a Acciones de Activos y Edición Masiva a través de la matriz de propiedades. Abra la selección de compresión aquí en los ajustes de compresión. Seleccione la interfaz de usuario, dos D en el nivel de detalle en el grupo de texturas, seleccione la interfaz de usuario. Cerremos todo y guardemos todo. Ahora que todo está listo, pasemos a la siguiente lección. 64. 6.04 Importa una fuente personalizada: Bien, así que ahora que tenemos la interfaz de usuario agregada, en realidad también necesitamos algún fondo que podamos usar. Algún texto, texto personalizado, Y lo puedes encontrar si escribes fondos de Google, esto es muy agradable de usar porque son gratuitos y tienen muchos fondos geniales. Si vas a los fondos de Google y haces clic en él, esto está fuera de aquí, uno de los fondos que quieres usar en tu juego. Lo que suelo hacer es aquí en categorías, suelo quitar la pantalla, escritura a mano y monoespacio De nuevo, depende del estilo que quieras para tu juego. En cuanto a la cantidad de estilos, por lo general me gustan los fondos que tienen muchos estilos porque sé que se ven bien dentro del juego. Por ejemplo, podemos usar Roboto o Open Sense. O también puedes usar, por ejemplo, algo así como Rubic. Creo que voy a volver a usar Rubic. Elige lo que quieras, no importa. Voy a elegir Rubic y después dar clic en Descargar Familia Se lo va a descargar para ti. Puedo darle click y abrirlo. Y aquí puedes ver todos los fondos estáticos, haciendo clic en los estáticos, y aquí están todos los fondos, ¿bien? Lo que voy a hacer es que voy a minimizar todos los que están aquí en mi escritorio. Voy a ponerlos aquí primero porque esta es una carpeta y primero hay que extraerla. Porque si intentas importar cosas de una carpeta Sip, no te va a permitir, te va a dar este error aquí. De nuevo, voy a minimizar esto. Por lo general, en realidad no necesitas fondos muy ligeros como este. Luz róbica, porque es muy difícil de ver en el juego, por lo general solo me llevo las muy atrevidas. Rúbrica, negrita, extra audaz. Escojamos también el semi audaz, hay un medio regular. Tomaré el mediano y simplemente haga clic y los arrastraré a su escritorio para extraerlos. Ahora voy a cerrar esto. Así que ahora que tenemos esos fondos, podemos volver a Unreal Engine y dejarme hacer una nueva carpeta realmente aquí en la carpeta UI Déjame hacer clic derecho y hacer una nueva carpeta llamada fondos Entra fuera de aquí. Y los voy a arrastrar a mi carpeta de fondos. Y le voy a preguntar, ¿ le gustaría crear un nuevo activo de fondo utilizando estos fondos importados? Voy a dar click y aplicar a todos los D. Sí, quiero que hagas esto. Se va a crear un fondo para ti. Adelante y guarda todo. Y ahora realmente puedes usar este fondo si vas a alguna interfaz de usuario que estemos creando en el futuro. Puedes cambiar el fondo a uno de estos para que veas una manera muy, muy fácil de agregar esto. ¿Bien? Entonces ahora que hemos agregado fondos al motor, sigamos adelante y te presentaré los planos de Widegit 65. 6.05 Introducción a los planos de widgets: Ahora sigamos adelante y hagamos un plano de widget. Los planos de widgets son básicamente la interfaz de usuario aquí dentro de Unreal Engine Entonces, si haces clic derecho, ve a Interfaz de usuario y crea un blueprint de widget Pero luego créelo y selecciónelo. Aquí, aquí arriba, el widget de usuario. Y vamos a llamarlo WB. Y lo voy a llamar selección de equipos, porque estamos creando la selección de equipo donde se puede seleccionar para ser ya sea el terrorista o el antiterrorista Vamos a abrir este widget, blueprint. Dentro de este widget. Casi se parece al visor de planos con el que hemos estado trabajando Puedes escribir, dar click dentro de aquí y desplazarte alrededor a la izquierda. Puedes ver todos los elementos dentro de la paleta que puedes agregar. Por ejemplo, podemos agregar imágenes, botones, bordes, deslizadores, texto, etc. Estaremos trabajando mucho con todo esto. También hay una jerarquía. Por ejemplo, si haces clic y arrastras este botón a esta jerarquía, aquí puedes ver que tenemos este botón agregado. Se ve muy raro ahora mismo, Pero tenemos un botón agregado a nuestra selección de vapor, Widegit Ahora de nuevo, puedes compilar para asegurarte de que no tienes ningún error, al igual que en Blueprint Y puedes jugar el juego en la prueba y ver tu juego. Sin embargo, realmente no hemos mostrado esta interfaz de usuario en el nivel, así que no puedes ver nada en el juego, bien. Y a la derecha tienes un panel de detalles. Si haces clic en el botón por ejemplo, puedes ver que puedes cambiar las cosas sobre este botón. Puedes cambiar el estilo, puedes cambiar el color, y también puedes cambiar otros ajustes. Vamos a estar trabajando con esos ahora. El plano Wiga se divide en dos secciones. Tienes el diseñador ahora mismo, estás diseñando la interfaz de usuario. Y luego tienes la gráfica donde codificas los botones y así sucesivamente. Aquí está todo el código, el plano o la interfaz de usuario. Por ejemplo, aquí en la gráfica puedes codificar, por ejemplo, si haces clic en este botón, ¿qué debería pasar? Esto se hace aquí en el código aquí diseñas, aquí codificas la funcionalidad de la interfaz de usuario. Bien, sigamos adelante y eliminemos esto. Y la razón por la que se ve tan raro es porque en realidad necesitas agregar algo llamado lienzo primero. Si buscas lienzo, puedes hacer clic y arrastrarlo primero a la jerarquía. Y ahora puedes ver que tienes un lienzo. Cuando ya tienes un lienzo, puedes agregarle elementos. Ahora normalmente no hago clic en estas listas, pero si eres muy nuevo aquí, puedes dar click en todas ellas. Intenta leer lo que realmente puedes hacer dentro de aquí. Eso es realmente bueno. Sin embargo, si eres nuevo aquí, normalmente solo busco elementos. Te vas a acostumbrar mucho porque en realidad vamos a trabajar mucho con esto, Los mismos elementos que seguimos usando una y otra vez, te vas a familiarizar mucho con ello. Por ejemplo, puedes buscar un botón y puedes hacer clic y arrastrarlo al lienzo. Y puedes ver cuando lo agregas al lienzo, también se agrega en la jerarquía. Lo que sea que veas dentro de esta jerarquía, también está dentro de tu diseñador. Aquí en el lienzo, por ejemplo, puedes hacer clic en este botón y puedes redimensionarlo. O aquí en el panel de detalles, también puedes redimensionarlo aquí en el tamaño x y el tamaño Y también Por ejemplo, puedes buscar una imagen, puedes arrastrar una imagen a aquí también. Se puede cambiar el tamaño. Haga clic en la imagen, haga clic en el pincel, y podrá cambiar esta imagen. Por ejemplo, puedes cambiarlo en, vamos a importar algunos íconos. Si busco ICO y selecciono uno de los iconos, y puedes ver aquí tenemos el icono importado y puedes jugar con él. También puede hacer clic en Tamaño al contenido. Esto realmente lo dimensionará a cualquier tamaño que tenga aquí en el tamaño de la imagen. Se puede aumentar y disminuir esto también. Por lo general, cuando haces clic en estas pequeñas flechas, las pone por defecto a cualquier resolución que hayas importado Por alguna razón, no me está funcionando en estos momentos. No sé si es un error en motor real o lo que sea, pero generalmente funciona sin embargo en realidad debería cambiarlo de tamaño a cualquier tamaño que hayas importado como Y como se puede ver, las dimensiones para este icono es de 256 por 256. Entonces debería hacer que sea 256 como esta. Presiono aquí, pero por alguna razón no lo hace. Pero este es en realidad el tamaño original de esta imagen aquí, y si haces clic en Tamaño para Consentimiento, realidad la redimensiona a esta de aquí Bien, así que solo puedes jugar por ahí. Tenemos el botón, tenemos una imagen, y también puedes simplemente hacer clic en todos esos. En realidad, no importa si simplemente metes todo dentro de aquí. Simplemente haz clic en él, intenta ver si le agregas un valor. Mira que en realidad puedes mover este deslizador. Y puedes dar click en, por ejemplo, Editor Input. Por ejemplo, Texto editable. Puedes colocarlo aquí y ver qué pasa. Puedes escribir algo dentro de este texto y simplemente jugar por aquí. De hecho, es muy divertido echar un vistazo a lo que hay dentro de aquí. Y voy a dar click y dar click en mi botón Eliminar y borrar todo por ahora. Y también voy a borrar el panel del lienzo. Adelante y compilar, guardar todo. Y pasemos a la siguiente lección. 66. 6.06 Muestra la interfaz de usuario de selección de equipos: ahora y mostremos la interfaz de usuario antes de que realmente la diseñemos para mostrar la interfaz de usuario. Por lo general, cuando trabajamos con UI, lo hacemos dentro del controlador del reproductor. Aquí es donde controlamos la interfaz de usuario que va dentro del controlador del reproductor. Vayamos al gráfico de eventos aquí. Lo que solemos hacer en un solo jugador, tomamos esto y decimos crear widgets, así como así. Crea el widget, y luego seleccionas el widget, por ejemplo, Selección de equipo WB. Y luego solemos agregar esto a la ventana, así como así Y luego podemos hacer clic en play, y estamos contentos de que deberíamos poder ver la interfaz de usuario. Y cuando hago clic en Escape, ya ves que me sale una era. Y esto se debe a que ahora estamos en multijugador fin de mostrar la interfaz de usuario y en realidad podemos ver algo. Primero volvamos a entrar en la interfaz de usuario. Déjame solo agregar un lienzo de nuevo, déjame agregar una imagen aleatoria porque en realidad quiero ver si se agrega a la ventana gráfica o no Así que solo voy a agregar esta imagen rara aquí a mi UI. Y hago clic en Reproducir, Y se puede ver que en realidad se está mostrando en mi pantalla, tanto en el cliente como en el servidor. En realidad estoy mostrando la interfaz de usuario en este momento. Sin embargo, si hago clic aquí, si hago clic en Escape, se puede ver que solo se pueden asignar controladores de reproductor locales a los widgets. Recuerda, cuando estamos trabajando con UI, realmente no necesitamos ejecutarlo a través del servidor. Esto se debe a que cada jugador tiene su propia interfaz de usuario. No es como un arma que tienes en juego donde tienes que ejecutarla a través del servidor y luego el servidor necesita replicar esa información a los clientes y decirles que tienes un arma aquí tirada en el suelo Es diferente para la interfaz de usuario, cada jugador tiene su propia interfaz de usuario. No es como que se esté ejecutando a través del servidor y luego el servidor esté actualizando su interfaz de usuario. No es como está sucediendo. Está sucediendo solo por cada jugador como su propia interfaz de usuario. No se está ejecutando a través del servidor. Cuando trabajas con UI, tienes que ejecutarlo a través del cliente. Recuerda, cada vez que tienes UI, tienes que ejecutarlo a través del cliente. Borremos todo esto por ahora. Lo que voy a hacer es hacer clic derecho y hacer un nuevo evento personalizado aquí dentro del controlador del reproductor. Llamemos a este widget de ocultar show. Básicamente, lo que este widget o este evento va a hacer es mostrar u ocultar el widget, dependiendo de lo que le digas que haga. Ahora tenemos que darle dos parámetros. ¿Qué widget va a mostrar u ocultar? ¿Y lo va a mostrar u ocultar? Aquí, permítanme solo este toro de nombre para demostrar que esto o bien será verdadero o falso. Si es falso, va a ocultar la interfaz de usuario. Si es cierto, va a mostrar la interfaz de usuario. Podemos usar este toro aquí. No obstante, para el segundo, tenemos que decirle de qué widget estamos hablando. Tenemos que hacer una enumeración. Vamos a minimizar esto. Ir a la carpeta de planos a enumeraciones. Recuerden, antes hicimos este llamado estados de movimiento. Ahora hagamos clic derecho y hagamos uno nuevo. Ir a plano y enumeración. Llamemos a esto widgets de juego. Podemos hacer una lista de todos los Widgets del juego que tenemos. Para este, permítanme agregar un nuevo enumerador, un ítem de lista. Déjame llamarlo selección de equipo, porque ahora mismo queremos hacer el widget de selección de equipos. También podrás hacer uno más adelante. Por ejemplo, el Mau I, que en realidad es el principal con tu salud y así sucesivamente También puedes hacer uno nuevo llamado Menú Escape cuando tengas uno y así sucesivamente, pero por ahora los voy a eliminar. Solo tengo la selección del equipo. Ahorremos ahora dentro de nuestra ley de control de jugadores. Volvamos a hacer clic en nuestro Evento. Cambiemos este tipo a E. Lo llamamos widgets de juego. Y es ésta, esta enumeración. Adelante y llámalo Widgets. Y aquí lo tenemos. Así que vamos a compilar ahora. Como pueden ver, si escribo, comienzo, juego, y hago el evento start play. Si arrastro desde aquí y llamo a este evento, mostrar ocultar widget. Mostrar ocultar widget, puedes ver ahora puedo seleccionar qué widget o de qué widget estoy hablando. Y luego puedo seleccionar si quiero ocultarlo, es decir, el espectáculo es falso. O si quiero mostrar la interfaz de usuario. Y podemos pasar el código por aquí. Bien, así que muy, muy genial. Ahora continuemos con el código. Te dije que esto necesita ejecutarse en el cliente, así que toda la interfaz de usuario que crees necesita correr a través del cliente. Así que hagamos clic derecho y hagamos un nuevo evento personalizado. Vamos a llamarlo CL para cliente, mostrar ocultar widgets. Y vamos a ejecutar esto a través del cliente y confiable, igual que el de aquí arriba, necesitamos las dos entradas. Vamos a crear las dos entradas. El primero se llama widgets y ya ha seleccionado éste. El segundo se llama show the lingotes. Mostrar u ocultar. Y seleccionemos el lingote como el tipo. Tenemos que pasarlo por aquí. Elija el CL, muestre, oculte widgets aquí también. Entonces estamos conectando el evento del cliente aquí arriba. Y seguir adelante y conectarlo juntos. Bien, entonces lo que está pasando ahora mismo está en el Begin Play, cuando empieces a empezar a jugar el juego, voy a mostrar la IU de selección de equipo al instante. Entonces voy a marcar esto y voy a mostrar la IU de selección de equipo. Cuando haga esto aquí en la jugada de inicio, el código va a correr por aquí. Entonces va a poner esta información en la del cliente. Y ahora esta información sale aquí y podemos usarla como queramos. Ahora voy a arrastrar a este toro y escribir una rama porque quiero saber, voy a mostrar la interfaz de usuario o voy a ocultar la UI? ¿Esto es falso o es cierto? Esto es lo que estoy preguntando ahora mismo. Ahora si lo es, hagamos una nueva función. Hagamos esta función llamada show widgets. Hagamos otro llamado Hyde widgets. Nuevamente, da click sobre ellos y agrega una nueva entrada del tipo A widgit La enumeración que hicimos antes y la llamamos widget, nuevamente compilamos porque necesitamos saber qué Widgit estamos hablando en el Haz una nueva entrada y llámalo widget. De nuevo, asegúrate de que ese tipo sea widget de juego también. Bien, volvamos a la gráfica. Arrastremos esas funciones que acabamos de hacer. Siguen vacíos. No hay nada dentro de ellos. Pero por ahora, vamos a agregarlos aquí. Bien, mostrar ocultar widget. Si es cierto, necesitamos mostrar el widget. Este, puedo conectarlo. Si es falso, necesitamos ocultar el widget, y podemos seleccionarlo aquí. Ahora bien, ¿de qué ancho estamos hablando? Esta información la tenemos aquí, porque la hemos configurado aquí, podemos conectarlas a las entradas que acabamos de hacer para los de aquí. Ahora esta información va dentro de la función. Ahora tenemos esto aquí, y podemos hacer lo que queramos. ¿Cuál es nuestro objetivo aquí? Para mostrar un widget, necesitamos usar el nodo llamado create widgit. Tenemos que usar este de aquí. Entonces tenemos que seleccionar de qué widgit estamos hablando. Éste por ejemplo, aquí, como pueden ver para la enumeración, podríamos tener muchos artículos Necesitamos saber cuál es el valor de esta enumeración. Lo hacemos simplemente arrastrando desde aquí y buscando Switch Y tenemos este llamado Switch on enumeration. Adelante y selecciónelo. Y ahora te va a dar un pin de ejecución, dependiendo de qué elementos de lista tengas. Por ejemplo, si vuelvo a mi enumeración y digamos que tengo un MenUI y tengo un menú de escape, así como así, por ejemplo Adelante y guárdala. Y volvamos al controlador del reproductor. Ahora puedes ver que obtengo pines de ejecución, dependiendo de mis elementos de lista, lo que sea que configures aquí. Entonces si vuelvo, lo que sea que selecciones aquí va a pasar por este evento, ponlo dentro del cliente uno y va a continuar el código, ponerlo dentro de la función. Ahora sabe que estás hablando la selección del equipo porque la has seleccionado aquí. Entonces va a ejecutar el código dentro de la selección del jugador. No va a ejecutar el código que aquí está escrito. Y no va a ejecutar el código que aquí está escrito. Sólo se va a ejecutar el código que se escribe aquí porque se ha establecido el valor a la selección del equipo. Sólo va a pasarlo por ese pin de ejecución ahora mismo. Así es como lo hacemos. De hecho, solo eliminemos esos por ahora. Realmente no los necesitamos, solo necesitamos la selección del equipo. Adelante, guarda y compile esto también. Bien, para crear o mostrar un widget, continúe y cree el widget. Selecciona cuál quieres mostrar. Entonces hagamos clic derecho en él y promocionémoslo en una variable. Debido a que es realmente útil con la variable, podemos usarla más adelante para ejecutar eventos. A este lo voy a llamar Selección WB . Ahora que has creado la interfaz de usuario, ahora si haces clic en Reproducir, realidad no va a mostrar nada. Esto se debe a que no es suficiente simplemente crear la interfaz de usuario. También hay que arrastrar desde aquí y decir Agregar a la ventana. Ahora se agrega a la Viewport. Ahora si haces clic en Reproducir, puedes ver ahora que se agrega a la ventana gráfica y no tienes ningún error al hacer clic en el botón Escape Bien, esto se ve bien. Ahora para asegurarme de que no sigas agregando esto a tu ventana gráfica sin ningún motivo, déjame realmente desconectarme aquí y alejar esto. Déjame tomar esta variable, arrastrarla hasta aquí, hacer clic derecho y convertirla en una get validada, adelante y conectarla Ahora si esta variable no es válida, decir que aún no hemos creado esta variable, el programa o motor irreal realmente no sabe de qué estás hablando con esta variable porque no has puesto ninguna información dentro de ella Esto significa que aún no hemos corrido este código. Si no es válido, siga adelante y cree la interfaz de usuario. No obstante, si es válida, si esta variable ya contiene el widget. Entonces ya hemos corrido este código antes. Realmente no queremos volver a ejecutarlo, solo queremos seguir adelante y agregarlo a la ventana gráfica, así como así, ¿de acuerdo? Así que esto evita que creamos la interfaz de usuario una y otra vez. Si no es válido, siga adelante y cree la IU y luego agregarla al viewpoort es válida. No obstante, sigue adelante y solo agrégalo a la ventana Sigamos adelante y compilemos y guardemos todo. Ahora para el widget hide aquí, lo mismo. Ataquemos desde aquí y digamos que encienda la enumeración. Tomemos esta variable, ahora que la hemos creado, hagamos clic derecho en convertir en un get validado. Adelante y conéctalo. Ahora bien, si es válido, es decir, en realidad queremos ocultarlo. Ahora vamos a golpear desde aquí y decir eliminar de Padre. Así es como eliminas la interfaz de usuario de tu Viewport. Eliminar de padre, si es válido, adelante y retírelo, porque queremos ocultarlo. Ahora, si compilas y haces clic en Reproducir, podrás ver la ventana En la ventana gráfica, ha agregado la interfaz de usuario. Si sigues adelante en el gráfico de eventos de control del jugador, si solo eliminas el programa, porque ahora es en realidad, cuando es falso, va a correr por aquí y va a correr por aquí. Y va a mostrar falso porque lo has puesto en falso. Lo que significa que seguirá adelante y ocultará la interfaz de usuario, el widget. Y sabe de qué widget estás hablando, porque está alimentando esa información aquí. Y va a ocultar la IU de selección de equipo. Como puedes ver aquí cuando juego, no veo la IU de selección de equipos. Pero por ahora, en realidad queremos mostrar la interfaz de usuario por delante para la selección del equipo, continúe y haga clic en Mostrar. Ahora debería funcionar perfectamente. Ahora bien, si quieres que esto sea más organizado, siempre puedes click y hacer pines de ejecución, o puedes seguir adelante y seleccionarlos todos. Da clic en C en tu teclado y llámalo, por ejemplo, Mostrar Ocultar UI y así sucesivamente. Así que solo sigue adelante y mantente organizado. Pero por ahora, sigamos adelante y compilemos, guardemos todo, y sigamos adelante. 67. 6.07 Tamaño de interfaz de usuario dinámica para todos los tamaños de pantalla: Ahora, antes de empezar a diseñar la interfaz de usuario, es muy importante saber cómo se ve la interfaz de usuario en otras pantallas, no solo tu pantalla, sino mi pantalla. Si diseñas tu juego, tienes que saber cómo se ve en mi pantalla, que es un monitor de resolución de cuatro K. Y también en la pantalla de un portátil y así sucesivamente. Entonces hay que redimensionarlo correctamente. De hecho, aprendamos esto antes de que diseñemos, porque será un futuro si lo diseñas de manera incorrecta. Por ejemplo, entremos en el plano del widget. Sigamos adelante y agreguemos algo de texto. Esta será la forma más fácil de verlo. Añadiendo alguna pantalla de texto y digamos que estoy redimensionando algo así, lo que sea. Ahora que tienes eso dentro de la interfaz de usuario, sigamos adelante y compilemos. Y siga adelante y haga clic en Placa. Ahora bien, así es como se ve en mi pantalla. Y por lo general solo tomo mi plano de widget y tomo mi juego aquí Y por lo general solo trato de compararlo. Adelante, abre tu juego aquí. Voy a minimizarlo un poco, y trato de ver cómo se ve en el juego. Así es como se ve realmente. Si lo comparo con aquí, aquí se ve un poco más grande, en realidad se ve así. Cuando acerco y alejo, en realidad puedes ver el zoom hacia arriba aquí. este momento he hecho zoom más tres, y ahora se ve correcto Al zoom más tres, se ve correcto. Ahora bien, esto podría parecer un poco raro para arreglar esto. Ahora sube aquí en el tamaño de pantalla. Por lo general lo que quieres hacer es querer, en la interfaz de usuario a la pantalla más pequeña posible. Si quieres diseñarlo para juegos móviles, tienes que hacer clic en el tamaño de pantalla, Ir a teléfonos y luego seleccionar el teléfono. Quieres diseñarlo para la pantalla más pequeña. Ahora mismo, solo quiero hacer un juego de computadora. Voy a dar click aquí arriba. Por lo general lo diseño para laptops. Estos portátiles genéricos de 14, 15 pulgadas. No voy a hacerlo ahora mismo. Tengo un monitor de cuatro K. Puedo seleccionar esto y simplemente diseñarlo aquí. Sin embargo, tal vez se vea así en tu pantalla si tienes un monitor one K y así sucesivamente. Muy importante diseñarlo correctamente. Primero, hagamos clic en el tamaño de la pantalla. Y voy a seleccionar el tamaño genérico del portátil. Ahora mismo, si me acerco y es uno a uno así aquí en el tamaño del portátil, ahora mismo, en realidad lo estoy mirando y viendo cómo se ve. Si abro este juego ahora mismo en mi laptop, este es el tamaño del texto, Por ejemplo, en laptop, hagamos clic en este fondo. Da click en el fondo, y hago el tamaño, por ejemplo, 30. Esto es ahora lo que se ve en la computadora portátil. Pero si juego, ahora así es como se ve. En mi monitor de cuatro K, se puede ver que hay una diferencia. Esta es la laptop. Este soy yo. Lo veo mucho más grande en la mía que la computadora portátil. Si no te gusta eso, si a veces la interfaz de usuario se vuelve demasiado grande en los monitores más grandes, puedes hacer clic en este botón de aquí abajo. Aquí puedes ver el escalado de la interfaz de usuario. Los portátiles genéricos están aquí abajo. Como pueden ver, esta es la resolución. Lo estoy diseñando para estas laptops. Ahora mismo tengo un monitor de cuatro K, y en realidad está por aquí. Se puede ver en un monitor de cuatro K, lo estoy escalando por 3.8 Es 3.8 más grande que lo que es una computadora portátil. Ahora bien, si no quieres escalarlo tanto, puedes seleccionar en esta , esta resolución. En lugar de escalar a ocho, voy a escalarlo a cuatro, por ejemplo. Ahora se puede ver que no va a escalar tanto en comparación con antes. Ahora bien, si hago clic en Reproducir, realidad es más pequeño de lo que era antes. Si vuelvo, en realidad haga clic aquí, permítanme aumentarlo a algo así como 18, para que en realidad puedan ver algo extremo. Si hago clic en Play, puedes verlo ahora es muy grande. Normalmente lo que me gusta, si estoy satisfecho con el tamaño para el portátil, trato de escalarlo. Por lo que también estoy satisfecho con mi monitor de cuatro K. Por lo general es alrededor de 2.5 en el escalado. No me gusta ir demasiado. Puede hacer clic en estos botones. Eso, es a tu pantalla así. Sólo voy a alejar un poco. A lo mejor solo haga clic en, voy a alejar un poco, así se ve mejor. Déjame simplemente hacer clic en jugar Ahora, creo que esto se ve bien. Si necesito dimensionarlo más, voy a redimensionarlo. Pero creo que esto se ve bien. Se puede comparar ahora, y casi se ve igual. Voy a tratar de diseñarlo con la escala de 2.5 pero de nuevo, sólo tienes que seguir adelante y jugar con él. Simplemente escale esto hacia arriba y hacia abajo, dependiendo de lo que se vea en su monitor en comparación con el monitor de la computadora portátil. Bien, cuando estés satisfecho, cerremos todo y guardemos todo. Pasemos a la siguiente lección. 68. 6.08 Diseña la interfaz de usuario de selección de equipos: Ahora que estamos mostrando la UI a la pantalla y tenemos el tamaño correcto, sigamos adelante y diseñemos la IU. Vamos a cerrar el juego. Pasemos a la carpeta UI. Y aquí, dentro del widget de selección de equipos, plano. Ahora vamos a eliminar esto aquí. Lo único que tenemos en estos momentos es el panel de lona. Nuevamente, si aún no lo has agregado, sigue adelante en la paleta y busca lienzo. Y sigue adelante y agrégalo a tu widget, blueprint. El lienzo es muy importante. Tienes que agregar esto antes de hacer nada. Lo que queremos diseñar es la selección del equipo. Esto es de mi otro proyecto. Me gustaría mostrarte la interfaz de usuario para que sepas lo que estás diseñando. Esto es lo que queremos diseñar. Siempre que empieces a diseñar UI, tienes que imaginarte lo que quieres diseñar porque te será mucho más fácil. Esto es lo que vamos a diseñar. Vayamos por aquí. Lo primero que queremos hacer, queremos descomponer la interfaz de usuario. Si vuelvo a tomar esto aquí por ti, tienes que descomponerlo. Como puedes ver aquí, tenemos un fondo y tenemos algo de texto encima. Cuando tienes dos cosas una encima de la otra, tienes que usar esta llamada superposición. Cuando la superposición superpone elementos uno encima del otro, cuando tienes algo encima de algo, piensa en una superposición arrastrándola hacia aquí, y busquemos una imagen, para el fondo, y colocarla aquí también, dentro de la superposición. Así como así. Vamos a arrastrar esto a la mitad del lienzo para que podamos ver lo que estamos haciendo simplemente redimensionando esta superposición para llenar esta imagen. Se puede ver que es muy pequeña. Para llenar esta imagen a toda la pantalla, que aquí en la alineación horizontal y vertical, clic aquí para rellenar, horizontal y verticalmente, llena toda la superposición. No importa cuán grande sea tu superposición, tu imagen va a llenar todo el asunto. Queremos llenarlo con el fondo. Ahora el fondo, puedes dar click aquí para la imagen, y en el pincel aquí, haz clic en la imagen y podrás buscar, creo que lo llamé panel. Y este un panel azul. Nuevamente, depende de ti lo que quieras usar. Puedes usar otro color, pero yo sólo voy con el azul. Y aquí está. Bien. Motor Neral, para que las cosas no sean borrosas así y para que se estiren correctamente, hay que cambiar esto en lugar de una imagen, hay que cambiarla en una caja Ahora, antes de hacer esto, déjame mostrarte cómo funciona. Si voy a las imágenes de la interfaz de usuario y busco el panel, puedes ver si sostengo el mouse sobre él, en realidad es una imagen muy pequeña. Es de 68 píxeles por 68 píxeles. Si lo abres, esto es realmente lo grande que es cuando lo diseñé en Photoshop. Este lo puedes hacer muy grande y aún así quedar bien en Unreal Engine Si solo agregas la imagen, pintas los sorteos en una caja y luego cambias el margen a 0.5 como si hicieras clic en esta. Aquí se eliminan estas líneas discontinuas. Me gustaría hacer eso para ver mi UI sin que nada me distraiga Y esto es lo que parece que puedes ver, pesar de que es una imagen pequeña ahora solo puedes hacer clic en la superposición y estirarla y hacer algo más de ella sin que sea borrosa Característica realmente genial en Unreal Engine. No tienes que diseñar cada botón, puedes simplemente diseñar la base, y luego puedes diseñar los botones ellos mismos dentro de aquí. Este es nuestro antecedente para la selección del equipo. Ahora para la selección del equipo, nosotros también, si arrastro esto aquí, nuevo, tenemos algún texto debajo de él. Tenemos estos botones. Tenemos algo que se llama caja vertical. Si vas por aquí y buscas vertical, ves este cuadro vertical. Voy a agregarlo a la superposición. Ahora en el cuadro vertical, tenemos algún texto en la parte superior como título. Como puedes ver aquí, también tenemos estos botones. Antes de agregar estos botones, también hay que descomponer esto. En realidad tienes una caja horizontal. Estos están alineados horizontalmente entre sí. Si busco una caja horizontal, esta caja horizontal, hay que colocarla en la caja vertical. Tenemos el título, aquí tenemos el título. Y luego tenemos la caja horizontal donde agregamos los dos botones. Bien, este de aquí. El título en realidad necesita ir en el medio. Voy a dar click en el texto, alinearlo aquí horizontalmente a la mitad. Y se ve que no pasa nada cuando lo alineo al medio. A veces, cuando haces esto dentro de una interfaz de usuario, no te confundas, también tienes que mirar al padre. No importa si el texto está alineado así o si el cuadro vertical tampoco está alineado. Se puede ver el cuadro vertical al hacer clic en uno de ellos. Aquí puedes ver que la caja vertical es en realidad solo esta sección. No es así, si alineas este texto aquí, aquí, y aquí, solo tienes el espacio. No está llenando todo el asunto. Al hacer clic en el cuadro vertical, tengo que llenarlo aquí sobre esta superposición haciendo clic en la alineación horizontal y la alineación vertical. Ahora se puede ver que es. Rellenar horizontal y verticalmente. Bien, Ahora cuando alinee el texto, debería funcionar. Siempre presta atención al padre aquí arriba, cómo está alineado. Porque si está alineado así, este texto nunca va a ir aquí. Adelante y alinearlos horizontalmente así. Ahora para darle más espacio a los bordes, podemos dar click en el cuadro vertical y podemos empujarlo aquí abajo en el relleno o la izquierda. En realidad, también puedes escribir un número aquí arriba, por ejemplo, 50 o 102030 Se puede ver que se puede empujar desde los bordes 50, 60, y así sucesivamente. Y si se quiere empujar específicamente en direcciones, por ejemplo, la izquierda voy a poner a 55, y la parte superior voy a poner a 45. No tanto como la izquierda y la derecha. La derecha es 55 y la parte inferior también es 45. Algo así. Recuerda, estoy en zoom más dos. El tamaño real se ve así. Solo presta atención al zoom en el que estás porque es posible que te acerques demasiado Así es como se ve realmente en estos momentos. Creo que el espaciado a los bordes está bien ahora mismo. Lo que puedes hacer es seguir adelante y continuar con nuestro diseño. Y entonces podemos seguir adelante y estilizar todo. Vamos a hacer clic en el cuadro horizontal. Ahora para la caja horizontal, tenemos estos dos botones. Ahora de nuevo, estamos superponiendo un botón. Encima de ella hay una imagen y también tenemos algún texto. Nuevamente, tienes que usar una superposición, lo contrario no puedes superponer cosas una encima de la otra. Dentro de la caja horizontal, tenemos una superposición. Dentro de esa superposición, tenemos un botón, y luego tenemos una imagen, que es el icono del botón. También tenemos algún texto. Si busco texto y lo agrego aquí, tenemos el botón, la imagen y algún texto. click sobre esta superposición, en realidad, esta caja horizontal, nuevamente, tenemos que llenarla aquí. Así se puede ver, aunque lo estoy alineando horizontal y verticalmente, no está alineando verticalmente. Y esto es porque hay que hacer clic en Rellenar, y va a llenar todo el asunto. Al hacer clic en este botón, sigamos adelante y agreguemos algo a este botón. Haga clic en el botón, vaya al Estilo, haga clic en Normal aquí arriba, y seleccione el botón. Voy a seleccionar el botón rojo. Y por lo general llamo botones BTN. Puedes intentar buscar qué botón quieres usar. Nuevamente, es opcional, depende de ti. No obstante, lo que quiero usar es este llamado Botón Rojo, creo, o Botón Cuadrado rojo, así. Y voy a elegirlo aquí. Lo que puedes hacer es, de nuevo, vamos a teñir. Voy a dar click en el tinte, y voy a ponerlo en blanco, porque no quiero ningún tinte gris en mi botón. Este es en realidad el color real. Si lo pones a blanco aquí, la caja redondeada, la voy a cambiar a una caja, una caja normal. Nuevamente, el margen, lo que le dije antes, lo puso en 0.5 y se verá normal. Ahora veamos si tenemos otras cosas que cambiar y no, si quieres copiar esta configuración al hovert, no tienes que hacer todo esto De nuevo, mantenga presionada la tecla Mayús y haga clic con el botón derecho. O de nuevo puedes simplemente hacer clic derecho y copiar. Pero puedes mantener presionada la tecla shift y el botón derecho del ratón para copiarlo, y shift y el botón izquierdo del ratón para pegarlo también para estos dos. Recuerda hacer clic en el hoverd. Y recuerda también cambiar el hoverd por el acaparamiento Y da click en la presionada a la, presionada esta. Bien. También necesitamos quizá ajustar el tamaño de la imagen, pero hagámoslo más adelante. Por ahora, en esta se puede ver que está muy estirada. Entonces lo que voy a hacer, voy a hacer click en la superposición, y voy a dar click en Rellenar. Entonces llena todo el asunto. Entonces déjame copiarlo de nuevo. click sobre esta superposición, voy a dar click en Control D, y eso copiará el otro botón. Así que en realidad puedo ver cómo se ve si tengo dos botones. Entonces ahora tengo estas dos superposiciones, y pongamos un espaciador entre ellas, Buscar espaciador y agregarlas entre estas dos superposiciones Y luego agreguemos algo de espacio entre estas dos superposiciones. Este es el eje x, y este es el eje Y. Y necesitamos espacio en el eje x. Déjame escribir algo así como 50. Y ahora se puede ver que hay algo de espacio. Ahora para este texto. Quiero que esté en la parte inferior de este botón de aquí. Al hacer clic en el texto, voy a alinearlo al botón aquí y también en el medio. Y lo mismo con esta alineación inferior y en el medio horizontalmente. Bien, ahora para los botones. No quiero que se estiren así. Al hacer clic en uno de los botones, en lugar de alinearlo verticalmente, voy a dar click en la parte inferior aquí. Lo mismo aquí. Haga clic en la parte inferior. Alinear verticalmente, así. En lugar de alinearlo verticalmente, vamos a controlarlo nosotros mismos. Haga clic en el botón, puede hacer clic en el Tamaño de imagen. Aquí, esta es la Y aumentando hacia arriba y hacia abajo. Puedes aumentar la Y para el botón, y puedes elegir qué tan grande debe ser para este y este , algo así como 160. Por ahora, 160. De hecho, agreguemos los íconos antes de que podamos decidir qué tamaño debería ser. Voy a hacer de nuevo por la imagen, es alinearla en el medio. De hecho, hagámoslo por ambos. Vamos a hacer clic en ambos. Haga clic en un control antiguo, haga clic en el siguiente. Vamos a alinearlos en el medio y en la parte inferior otra vez. Para volver a empujarlos hacia arriba, podemos usar el acolchado, empujándolos de abajo hacia arriba. Entonces puedes empujarlos, por ejemplo, 40, algo así, 50, 60. Ya ves puedes empujarlos hacia arriba algo así como 40. Déjame en realidad solo cambiar el icono primero. Haga clic en la imagen y cambiemos el icono. Si buscas ICO para este voy a seleccionar el contador o el terrorista para este voy a elegir el antiterrorista. Aquí podemos ver que son muy pequeños por alguna razón. Nuevamente, estos botones no funcionan, así que tengo que agregar el tamaño manualmente. Si solo vas por aquí en realidad, y haces clic si bajo a la interfaz de usuario a los íconos, si mantienes el mouse sobre estos íconos, puedes ver las dimensiones. El tamaño verdadero es de 256 píxeles por 256 píxeles. Si puedes hacer click en él, si escribes 256 por 256, este es en realidad el tamaño verdadero del icono. Sin embargo, esto es demasiado grande. Pero solo ten en cuenta que si lo aumentas más que el tamaño máximo que tiene, en realidad será borroso. No repases eso. Lo que voy a hacer es a lo mejor voy a hacer que sea como 150 por 150. Y lo mismo para el antiterrorista, el tamaño 150 por 150. Bien. Algo así. Ahora, para controlar qué tan arriba y abajo están estos botones, puedes hacer clic en el cuadro vertical, realidad la superposición misma. Y luego solo puedes cambiar el tamaño de la caja vertical. Y luego elige qué tan arriba y abajo deberían compararse estos botones con el título. Dando clic también en este texto. Quiero estilizar estos textos. Recuerda que agregamos algunos fondos de los fondos de Google, The Rubic one Siempre podemos hacer clic en el texto, hacer clic en la familia de fuentes, y luego elegir uno de los estilos rubic Para este, sólo voy a elegir el rubic bold. Y entonces voy a establecer el tamaño a un poco más pequeño, tal vez algo así como 22. En cambio, voy a agregar algún esquema al texto. Si solo vuelve a seleccionar ambos, vaya a Configuración de esquema. Voy a poner el tamaño en algo así como, puedes probar 1234, creo que algo así como tres está bien aquí. Y luego también cambiar el color. Voy a cambiar el color haciendo clic en el color del contorno y luego tomando el seleccionador de color Entonces voy a elegir color oscuro, lo mejor este de aquí. Adelante y da click en él y escogerá ese color. Usted acaba de seleccionar. Bien, para el texto, si quieres empujarlo hacia abajo, siempre puedes probar este fondo aquí, por ejemplo. Menos dos, menos cinco. Se puede ver que los puede arrastrar hacia abajo. Si escribes un número más, en realidad los empujas hacia arriba. Algo así. También puedes usar este de aquí abajo, el traducir, si lo encuentro aquí abajo, el transform. Y luego traducción, puedes traducirla en la y. Si escribes dos aquí, por ejemplo 56, también puedes empujarla hacia arriba y hacia abajo en la traducción para esta puede ser algo, dos está bien. Simplemente lo empujamos ligeramente hacia abajo. Bien. Yo también voy a estilizar este texto Haga clic en él. Sigue adelante y selecciona el Ruby negrita. Este hice 22. Este estoy haciendo 24 porque es un título. Y luego seguir adelante y seleccionar los ajustes de contorno. Voy a ponérselo a tres, igual que los otros. Para el color del contorno, voy a tal vez este color oscuro o este, voy a escoger este color oscuro y seguir adelante y dar click en. Bien. Ahora solo puedes seguir adelante y cambiar el texto. Por ejemplo, seleccione un equipo para éste. Voy a escribir Terri para el otro, voy a escribir terrorista Bien, para el daterrist. En realidad quiero cambiar el botón. Puedes hacer click en él, cambiar este botón. Voy a cambiar a cuadrado, creo cuadrado verde. Y adelante y selecciona cuadrado verde. Así como así. Otra vez, igual que antes. Puedes copiar esto encima de los otros, puedes dar click en el texto, click en el Color de Contorno. Toma el seleccionador de color y selecciona éste en su lugar. Bien, creo que esto se ve mucho mejor que antes. Bien, ahora veamos qué está mal. Ahora bien, si haces clic en Reproducir, siempre es agradable compilar. Haga clic en Reproducir y vea lo que está sucediendo. este momento puedes ver el, la interfaz de usuario o el widget de selección de Steam en realidad está en la parte superior de la imagen y no en el medio. Puedes ver si haces clic en el lienzo, realidad está por aquí. Si solo arrastras esta superposición aquí abajo, por ejemplo, en la parte inferior derecha, y haces clic en Reproducir, en realidad puedes ver que está en el medio. Eso realmente no tiene sentido. Debería estar aquí abajo, porque lo acabo de colocar aquí. Este es un concepto muy importante que hay que entender estos puntos de anclaje. Son muy importantes en estos momentos. Lo que está pasando es que tienes el punto de anclaje aquí arriba. Si hago clic en reproducir, trato de maximizar la pantalla aquí, puedes ver que esta interfaz de usuario se está poniendo. Hacia ese extremo de la pantalla aquí arriba, va a ser empujado aquí arriba. Esto se debe a que su punto de anclaje está ahí arriba. No va a quedar aquí abajo como quieras. Hay que cambiar el punto de anclaje. Recuerda hacerlo siempre por tu UI. Al hacer clic en la superposición, hay que cambiar el punto de anclaje haciendo clic aquí arriba. Como puedes ver aquí, solo el padre tiene un punto de anclaje. Todos los demás no tienen puntos de anclaje, solo el padre. Al hacer clic en esa, continúe y haga clic en Anclajes y luego seleccione donde desee alinearlo. Para esta interfaz de usuario. Quiero alinearlo en el medio, seleccionando el punto de anclaje medio al centro de la pantalla así. Entonces para el puesto, voy a escribir 00 para alinearlo en el centro. Pero como puedes ver, no está alineándose con el centro. En realidad es un hasta ese punto por aquí. Aquí es donde hay que jugar con la alineación. Si solo aumentas este, puedes ver ahora lo estás incrementando correctamente. Está en el medio, en la posición 00. Ahora para este, hay que escribir el número exacto en su lugar. 0.50 0.5 Puedes ver aquí, si escribes cero en la alineación, esta es la alineación x Se va a alinear de esta manera. Si escribes 0.5 está en el medio. Si escribes uno, va al otro lado la alineación. Puedes escribir 00 punto 5.1 Tienes estas opciones. Voy a escribir 0.5 por 0.5 porque alineará esto en el medio y en la posición 00. Ahora se puede ver que está directamente en el medio. Y si compilo y juego, debería estar en el medio. No importa qué tamaño de pantalla tenga, va a pegarse a la mitad de la pantalla. Bien. El siguiente tema que tenemos ahora mismo es que el ratón no aparece realmente, y lo vamos a hacer más adelante. Vamos a arreglarlo. Sin embargo, si trato de pasar el mouse sobre los botones, en realidad están molestando Y tengo que arreglarlo. Esto se debe a que si haces clic en el botón y haces clic en la normal, has establecido el tamaño de la imagen en 32 por 160. No obstante, para el hovert, el tamaño de la imagen sigue siendo muy bajo Hay que copiar el tamaño de la imagen del normal, basándolo tanto en el hovert como en el prensado todos ellos. Y haz lo mismo por el verde. Copia esto, basándolo en el tamaño de la imagen hovert y también en el tamaño de la imagen prensada Sigamos adelante y compilemos, bien. Haga clic en jugar. Ahora, de nuevo, si pongo el mouse sobre él, en realidad puedes ver que puedo pasar el mouse sobre el Sin embargo, cuando pongo el mouse sobre la imagen, realmente no puedo sobre el botón, y la imagen y el texto en realidad están bloqueando el botón. Vamos a arreglar eso. Da click en las imágenes, todas ellas aquí. Y el texto también. Hay que encontrar este llamado visibilidad. Y hay que configurarlo en no hit comprobable. Y lo que eso significa es las imágenes y los textos son solo decoración. No quiero que mi ratón interactúe con ellos. Elijo este no comprobable, y eso asegurará que estos no estén interactuando con mi mouse Ahora cuando hago clic en reproducir y trato de pasar el botón, se puede ver que también se cierne aunque esté pasando el cursor sobre el icono y el texto Bien, así que eso fue todo para el CI. Lo último que quiero hacer es que también quiero que el fondo sea borroso porque como pueden ver, todo se ve bien No obstante, también me gusta que mis antecedentes sean borrosos. Ahora es opcional. A lo mejor voy a quitarlo más tarde. Pero por ahora, busquemos desenfoque y pongámoslo aquí en el fondo, así sobre la superposición fuera de todo. Ahora para éste, de nuevo, recuerda cambiar el punto de anclaje. Quiero que este desenfoque llene toda la pantalla. Como puedes ver, para este desenfoque, puedes cambiar la fuerza de desenfoque. Entonces algo así como 50 como puedes ver aquí. Pero quiero que llene toda la pantalla. Lo que hay que hacer es volver a hacer clic en el punto de anclaje y seguir adelante y llenar toda la pantalla. Así como así. Y cambiar el offset a 0000, así como así. Ahora va a llenar toda esta pantalla. Y si haces clic en Reproducir, la pantalla queda borrosa. Ahora para la cantidad de desenfoque, en realidad voy a reducirla a algo tal vez como diez. Esto se debe a que también puedes ver el fondo, efecto realmente genial mientras seleccionas al equipo. Cuando te unes al juego, puedes ver los otros jugadores están jugando mientras seleccionas el equipo. Bien, entonces ahora que hemos terminado, adelante y guarda todo y pasemos a la siguiente lección. 69. 6.09 Efectos de sonido de Button: Ahora sigamos adelante y agreguemos algunos efectos de sonido a los botones. Y para ello, pasemos al costo de los materiales. Y dentro de aquí, vayamos al audio. Y tengo esos efectos de sonido para ti. El botón pasa el cursor y el botón pulsado. Pasemos también a la carpeta de audio, y al motor y a los efectos de sonido. Y vamos a arrastrarlos al navegador de contenido. Ahora vamos a hacer clic derecho sobre el botón, flotar, Crear. Y voy a llamarlo, así que botón hover. Para el otro, el presionado, vamos a hacer clic derecho en Crear Q y llamarlo Botón de Sonido presione. Vamos dentro de ambos. El hover y el prensado. Déjame bajar el sonido a tal vez 0.25 Eso suena bien para la prensa. Déjame ponerlo a 0.4 tal vez. Sí, eso suena bien. Bien, vamos a guardar todo de nuevo. Como ya te dije antes, podemos ver si tocas el sonido. Si quieres que esto sea diferente. Cada vez que puedas agregar un modulador y conectarlo aquí, puedes. Me gustaría cambiar el tono de 0.9 a 1.1 Suena diferente cada vez que puedes hacer lo mismo aquí. Voy a copiar el modulador. Voy a pegarlo aquí y conectarlo aquí también. Ahora bien, esto suena diferente cada vez también, cuando pasas el cursor sobre los botones Bien, increíble. Adelante y guarda todo Ahora para agregar los efectos de sonido, volvamos a la interfaz de usuario. Abra el widget, plano, haga clic en el botón. Entonces aquí abajo se ven opciones presionadas. Sonido Puedes seguir adelante y cambiarlo a la pulsación de botón para el hoverd Sonido Puedes cambiarlo al botón, flotar. Lo mismo para el otro. Puede cambiar el pulsado por el botón presionado y el que se ciernen al botón hover . Adelante y compilar. Y ahora cuando haces clic en Reproducir, y pasas el mouse sobre ellos, si presionas bien, ahora puedes ver que funciona Sin embargo se puede ver que en realidad tengo un dólar aquí, así que necesito cambiar el verde. Verde flotaba y verde prensado. En realidad quiero usar el otro, el tal uno. Creo que tengo una tal. Este es mucho mejor para mí. De hecho voy a copiar esto. Elija la versión flotada y prensada de esto. Voy a dar click en el texto y seleccionar el seleccionador de color Y seleccione éste en su lugar. Creo que se ve mucho mejor. Bien, para el sonido, en realidad necesito reducir el efecto de sonido para el hover, creo que es un poco molesto Déjame cambiarlo a 0.15 en su lugar. Jugar. Y ahora vamos a probarlo. Aquí funciona. Bien, ahora funcionan. Y también tienes algunos sonidos en los botones. 70. 6.10 Cómo engendrar actores: Ahora sigamos adelante y engendremos al jugador. Y antes de hacer esto, repasemos en la medida de los escenarios mundiales. Vamos a ir a los planos. Haga clic en el modo de juego para el modo de juego. Recuerda que en los valores predeterminados de clase, establecemos el valor por defecto en clase para engendrar como el antiterrorista Sigamos adelante y aclaremos esto por ahora. Y vamos, antes de que haga otra cosa también, vayamos a los planos y abramos el antiterrorista para asegurarnos de que sea correcto Si abro la ventana gráfica aquí, solo asegurándome de que la malla de tercera persona sea la misma la malla y creo que hay un bicho en el terrorista Entonces si lo abro y se ve que hay un bicho, la malla es el terrorista. Eso es correcto. Y la malla de tercera persona, tenemos que cambiarla al terrorista masculino así como esta malla de aquí. Bien. Solo asegurándome también de que la cámara esté equivocada por alguna razón y eso es en realidad porque necesitamos el zócalo para la cámara también aquí y el enchufe principal. Porque recuerden que el terrorista está usando otro esqueleto. Si voy al mercado, éste, el personaje plateado está usando este esqueleto, lo hacen los militares, El terrorista está usando este esqueleto. Voy a abrir este esqueleto para el terrorista. Ve a la cabeza. Voy a hacer click derecho y agregar un socket para este también. Voy a cambiar el nombre a cámara, igual que la otra que voy a salvar. Y ahora necesitamos posicionarlo de la misma manera que el otro. Voy a abrir el personaje esqueleto plateado. Voy a hacer click en ese socket. Solo voy a mantener el turno y hacer clic derecho para copiar estos ajustes. Y luego voy a repasar al terrorista y mantener turno y click izquierdo sobre ese y eso lo colocará en el mismo, adelante y lo guardaré todo. Y ahora deberías ver si vuelves al terrorista, automáticamente ha colocado la cámara aquí arriba porque el brazo de resorte está realmente unido a la cámara socket. Bien, vamos a guardar todo. Ahora bien, esto se ve correcto. Otra vez para el modo de juego. En los valores predeterminados de clase, necesitamos eliminar el pan por defecto, establecerlo en non, porque ahora es el jugador quien va a seleccionar si quiere engendrar como el terrorista o antiterrorista Bien, vamos a cerrarlo. También asegúrese en la configuración del mundo, si hace clic aquí que esta clase de panorámica predeterminada también está establecida en non. Bien, ahora si haces clic en jugar, puedes ver que desoves en un área aleatoria Y eso está bien. Esto es intencional. Entonces ahora no estamos desove como ningún personaje. Tenemos que seleccionarlo nosotros mismos. Bien, para engendrar jugadores, tenemos que hacer esto dentro del Controlador de Jugador, el Controlador de Jugador, dentro de aquí Hacemos la interfaz de usuario como hicimos aquí, pero también hacemos la generación de elementos y personajes y así sucesivamente Cada vez que generas algo, tienes que entrar en la interfaz de usuario del controlador de jugador y el desove está dentro del controlador de jugador Vamos a abrir el controlador de jugador. Y dentro de aquí, en realidad, esta vez quiero trabajar al revés porque lo entenderás mucho mejor para el desove. Muy, muy importante. Queremos ejecutar un evento, y no tiene que estar dentro del controlador del jugador. Puedes ejecutar el evento desde el jugador o desde cualquier otro lugar. Entonces tienes un evento inicial que quieres ejecutar. Entonces ese evento necesita pasar por el modo de juego. Porque recuerda que el modo de juego solo se ejecuta en el servidor. El cliente no puede comunicarse con el modo de juego. Entonces el desove de artículos y jugadores. De hecho, corremos por el modo de juego para asegurarnos de que el cliente no esté haciendo trampa. Entonces el servidor siempre está comprobando si lo que estás haciendo es legal o no. Y luego desde ese modo de juego, si todo está bien, vas a ir al Controlador del Jugador y generar ese ítem o personaje El desove final siempre está dentro del Controlador. Como no tenemos un personaje en este momento y realmente queremos generar el personaje, comencemos este evento desde el controlador del jugador En realidad quiero trabajar al revés. El evento final al que queremos llegar es si escribes click y escribes un evento personalizado y haces Saw player, llamamos a ese evento personalizado spawn player Arrastras de aquí y dices engendrar actor de clase. Esta es la función que se utiliza para engendrar cosas al mundo Ahora para esta, en lugar de solo seleccionar lo que queremos engendrar, vamos a dejar que el jugador decida, voy a simplemente arrastrar esta entrada o este pin aquí al evento y automáticamente creará esta variable para mí Y voy a hacer lo mismo por la transformación de spawn Ahora para esta clase, solo voy a seleccionar equipo o llamarlo equipo porque es o antiterrorista o terrorista lo que va a engendrar El jugador selecciona al equipo, luego va a generar en algún momento aquí para la colisión, tengo que configurarlo para tratar de ajustar la ubicación, pero solo asegúrate de que siempre engendras a este Bien. Siempre es agradable tener una variable de este jugador. Vamos a hacer clic derecho, promocionar una variable y llamarla peón jugador, ¿bien? Este es el paso final al que queremos llegar. Queremos, por ejemplo, ejecutar un evento que se llama Select Team. Y entonces ese equipo selecto va a pasar por el modo de juego. Y el modo de juego va a volver al controlador Player y ejecutar este jugador spawn si todo está bien y vamos a engendrar al mundo Bien, vamos a guardar todo ahora pasemos al modo de juego. Dentro del modo de juego, queremos ejecutar este jugador spawn De hecho estoy trabajando al revés, ahora mismo estoy trabajando al revés. Este jugador de spawn tiene que ser corrido dentro de aquí. Para ello, hagamos realmente un nuevo evento personalizado. Y llamemos a este jugador de generación de una solicitud, estamos solicitando engendrar al jugador para este Nuevamente, quiero dirigir este evento. Realmente no tenemos una referencia a nuestro controlador Player. De hecho, agreguémoslo a éste. Simplemente hago clic en el y busco mi PC. Creo que se llama contraataque de PC. Éste. Sigue adelante y selecciona tu controlador de reproductor. Y lo voy a llamar Controlador de jugador, ya podemos arrastrar desde aquí. Y entonces cómo lo llamamos, Jugador de Spawn. Arrastre de aquí y digo Spawn player y seguir adelante y seleccionarlo. Bien, entonces ahora estás manejando esto. Ahora podemos ver que tienes que establecer el equipo y la transformación de spawn Ahora para el equipo, nuevamente, se va a determinar el equipo cada vez que el jugador presione este botón. Entonces este va a ir todo el camino de regreso a la pulsación de botones. Así que solo voy a hacer clic y arrastrar esto a aquí también. Entonces ahora para la transformación de spawn, tenemos que determinar en del mundo queremos engendrar a los jugadores, y está encima de esos puntos de spawn que creamos antes Entonces, sigamos adelante en la siguiente lección y escribamos la lógica para eso. 71. Ubicación de aparición de jugadores 6.11: Bien, así que ahora tenemos que determinar dónde queremos engendrar a los jugadores Y recuerden que ya colocamos aquí los puntos de engendro para el terrorista y el antiterrorista, y ya almacenamos esos puntos de generación dentro de esos arreglos Sigamos adelante y tomemos los puntos de generación antiterrorista y los puntos de desove terrorista Golpeemos desde aquí y escribamos al azar. Así que tenemos una función llamada random array item, así que solo vamos a engendrar al jugador en uno de esos puntos de España por azar, seguir adelante y seleccionando uno de estos puntos de España por azar Y entonces vamos a tomar punto España y decir get act transform. Bien, haz lo mismo aquí. Vamos a escribir al azar y luego conseguir transformar. Ahora tenemos la ubicación de los actores, rotación y la escala. Puedes ver que si haces clic derecho aquí y divides la estructura, puedes ver ese punto de generación que ha seleccionado al azar Tienes la ubicación de ese punto de sierra, tienes la rotación de la misma y también tienes la escala de la misma. Voy a recombinar el pin struct porque en realidad quiero transformarme Ahora lo que puedes hacer, muy genial aquí, es que puedes arrastrar de este equipo, y ahora puedes decir igual así y seleccionarlo aquí. Si este equipo seleccionado es igual a, por ejemplo, antiterrorista, seleccionemos este BP counter Terrorist. Si el jugador seleccionó al antiterrorista, lo que podemos hacer aquí es que podemos arrastrar desde aquí y decir seleccionar, usar este. En realidad, usemos este llamado select transform. Pero también puedes usar este llamado select. Y entonces puedes simplemente colocar esto aquí y usar este falso o correcto. Por cierto, esto es lo mismo, la transformación selecta. Ya nos da un lingote. En realidad, solo usemos este. Sigamos adelante y conectémoslo. Ahora lo que está diciendo aquí, vamos a conectarlo aquí. Lo que está diciendo es si el equipo aquí que ha sido seleccionado es igual a antiterrorista, si es cierto, adelante y elige A. Si es falso, adelante y elige B. Eso es lo que está diciendo. Si es cierto que seleccioné a antiterrorista, tengo que tomar aquí los puntos antiterroristas y luego tengo que enchufar eso a A. Porque es cierto, he seleccionado al antiterrorista. Voy a tomar los puntos antiterroristas y enchufar la transformación aquí. No obstante, si es falso, es el terrorista que el jugador ha seleccionado y lo ha puesto aquí. Si tienes varios equipos para tu tirador, tienes que usar este llamado select porque este en realidad solo te da la opción de dos. Este te da la opción de más de dos, tal como viste antes. Si enchufa una enumeración aquí, le dará las opciones de todas las enumeraciones para las que haya seleccionado Ahora, vamos a eliminar éste. Centrémonos en eso para el equipo, voy a reconectarlo aquí arriba No sé por qué se desconectó. Y sigamos adelante y organicemos las cosas un poco más. Bien, entonces ahora va a seguir adelante y engendrar a ese jugador al azar a uno de esos puntos dependiendo de si el jugador selecciona antiterrorista o terrorista Como puedes notar aquí, para esos eventos nunca vuelvo a seleccionar ejecutar en servidor, recuerda que el modo de juego solo se ejecuta en el servidor. No es necesario ejecutar esto en el servidor o en el cliente. Y por cierto, nunca se puede ejecutar en el cliente en el modo de juego, porque nuevamente solo se ejecuta en el servidor. Realmente no hace falta replicarlo aquí. Se ejecutará automáticamente en el servidor así como aquí en el control del jugador. Se puede ver aquí. O fíjate que no ejecuté esto en el servidor también. Recuerda lo que dije antes, siempre es el servidor el que genera las cosas en el mundo De manera realista, debería ser una ejecución en servidor. Sin embargo, recuerda, vienes del modo de juego. El modo de juego solo se ejecuta en el servidor y ejecuta este jugador spawn Esto está automáticamente todavía en el servidor. Esto nunca corre del cliente. Esto viene del modo de juego que se ejecuta desde el servidor. Entonces este siempre se ejecutará en el servidor, así que en realidad no es necesario replicar eso también Bien, ahora si vuelvo al modo de juego, así que ahora tenemos esta petición spawn player Y esto en realidad viene del controlador de reproducción. Entonces, si vuelvo aquí, hago clic derecho y hago un evento personalizado. Y llamémosle a éste Seleccionar Equipo. Ya casi terminamos. Seleccione Equipo. Y también quiero hacer que otro se ejecute en el servidor llamado Server Select Team. Y éste se ejecuta en servidor confiable. Bien, entonces ahora vamos a seleccionar un equipo. Cuando estamos dando clic en la interfaz de usuario, para este equipo selecto, quiero ejecutar el servidor select team. Entonces ahora se va a ejecutar a través del servidor. Para este voy a ejecutar el modo juego. Uno llamado Request Spawn Player. Ahora no puedo ejecutar el jugador de spawn request porque como puedes ver aquí, no tengo una interfaz de blueprint para mi modo de juego y no tengo ninguna referencia al Así que sigamos adelante en la siguiente lección y creemos una interfaz de plano para el modo de juego 72. 6.12 Interfaz de Blueprint para el modo de juego: Bien, así que sigamos adelante y creamos una interfaz de plano para el modo de juego Ahora puedes hacerlo tú mismo porque nosotros lo hemos hecho tantas veces. Ahora bien, si no te acuerdas, sólo tienes que seguir adelante y sígueme aquí en esta lección. Sigamos adelante en la carpeta de interfaces de blueprint. Vamos a hacer clic derecho, ir a Blueprint y seleccionar la interfaz de blueprint Adelante, llámalo y voy a modo. Entra dentro de esta interfaz de blueprint. Llamemos a esta función, obtener referencia del modo de juego dentro de aquí. Vamos a crear una salida. Tienes que seleccionar a lo que intentas hacer referencia. Estoy tratando de hacer referencia a mi modo de juego llamado GM, creo. Counterstrike. Si vuelvo a hacer clic aquí arriba, a la derecha, contraataque Selecciona mi modo de juego y luego llámalo modo de juego. Bien, ahora terminamos aquí. Recuerda compilar todo. Volvamos a nuestro modo de juego en el modo de juego Blueprint Dentro de aquí, hagamos clic en la configuración de clase, vayamos a las interfaces y luego seleccionemos la interfaz que acabas de hacer esta en modo juego. Ahora vamos a hacer doble clic en la interfaz. Y dentro de aquí, escribamos autorreferencia. Ahora hemos definido este modo de juego. Adelante, compilar y guardar todo. Ahora podemos ir al controlador del jugador y puedo aquí en mi inicio Play. En realidad sigamos adelante y digamos y haga clic derecho aquí digamos obtener modo de juego. Ahora a partir de esto podemos decir obtener referencia del modo de juego que acabamos de hacer. Y es mensaje porque viene de una interfaz de blueprint Y seguir adelante y conectado. Ahora para este, ahora puedes hacer clic derecho y promoverlo a una variable y llamarlo modo de juego. Ahora tenemos una referencia a nuestro modo de juego. Ahora que tenemos una referencia a nuestro modo de juego, lo que podemos hacer ahora es que podamos tomar este modo de juego y decir si vuelvo a mi modo de juego y recuerdo cómo lo llamé en realidad, y volver aquí, lo llamamos Request Spawn Player Así que ahora podemos dirigir desde este modo de juego y decir Request Spawn Player, así como así Bien, así que ahora podemos usarlo en la siguiente lección. Sigamos adelante y compilemos y guardemos todo, y sigamos adelante. 73. 6.13 Termina la lógica de selección de equipos: Bien, ahora sigamos adelante y terminemos la lógica. Ahora sigamos adelante y conectemos esta solicitud, evento spawn player desde el modo de juego nos permite conectarlo al servidor uno Ahora bien, si conectas este de aquí arriba, en realidad también obtendrás una era si la conectas aquí. Y luego para este modo de juego, digamos que conectaste este objetivo a aquí Esta es la referencia del modo de juego. Si haces esto aquí, si lo ejecutas, esta es la referencia del modo de juego. Si lo ejecutas desde aquí, en realidad consigue una era donde dice que esta variable de modo de juego no existe. No sé de qué estás hablando. Esto sucede si ejecutas esto en el cliente. Recuerda, el modo de juego solo puede comunicarse con el servidor. Si intentas ejecutar la variable modo juego a través del cliente, te va a dar una época y te va a decir, no sé qué es esta variable. Recuerda ejecutar este modo de juego a través del servidor también. Eliminemos esta variable. Déjame volver a conectar mi modo de juego, así como así. Ahora tengo que conectar mi player controller select. Recuerda que ya estamos en el controlador jugador arrastra desde aquí y escríbeme el equipo que tienes que seleccionar. Nuevamente, queremos hacerlo a través de la interfaz de usuario aquí. Lo que voy a hacer es simplemente arrastrar esto al evento, y arrastrar esto al evento también, y compilar. Ahora lo que podemos hacer ahora, puedes tomar este evento y ejecutarlo a través de la interfaz de usuario. Si abro mi widget, blueprint, hago clic en mi botón Para este, vamos a cambiar el nombre del mismo Si haces clic en el botón, y yo lo llamaré BTN Terrace. sea a variable, porque si no tienes esto como variable en la gráfica, cuando vas a codificar la funcionalidad para este botón. Se puede ver que no tiene ninguna variable. Si le pones esto a, ahora puedes verlo como una variable por aquí. Y puedes hacer eventos a través de él. Asegúrese de marcar es variable. Haz lo mismo por el antiterrorista. Llamémoslo BT N terrorista. Hagamos que sea variable. Adelante, compile y guarde todo. Pasemos ahora a la gráfica para ésta voy a borrar todo esto. Por ahora, voy a dar click en el Terris primero, por ejemplo Y ahora tenemos estos eventos. Podemos seleccionar este clic. ¿Qué debería pasar cuando haga clic en el botón Terris? Lo que quiero hacer es cuando hago clic, quiero ejecutar este Select Team. Necesito una referencia al controlador Player. Entonces la forma en que haces esto muy, muy fácil dentro de la interfaz de usuario, puedes escribir, hacer clic y decir get owning. Y puedes ver que tienes dos cosas aquí. Usted puede hacer conseguir el jugador dueño y esto conseguirá el controlador del jugador para el jugador Y sí puedes conseguir ser dueño del jugador Pon. Esto conseguirá el jugador P en lugar del controlador del jugador. Ahora mismo necesitamos el controlador del reproductor. Voy a hacer el get dueño jugador. Ahora de nuevo ya recordamos tener una interfaz de blueprint para el controlador del reproductor donde podemos arrastrar de este y decir obtener referencia del controlador del jugador Adelante y conectado. Ahora podemos ejecutar ese evento llamado Select Team y seguir adelante y seleccionarlo. Ahora hay que especificar cuál es el equipo. Es el terrorista porque hemos hecho clic en el botón terrorista Adelante, busca al terrorista BP y compilar para el antiterrorista. Adelante y da click en él. Adelante y haz clic aquí. Sólo voy a copiar y pegar todo esto. Puedes escribirlo de nuevo si quieres más práctica. Ahora vamos a seleccionar el contador en su lugar o éste. Sigamos adelante y compilemos. Ahora solo para explicarte lo que realmente está pasando es si hago clic en el botón terrorista. Ahora va a pasar por los controles del jugador seleccione Evento de equipo. Va a correr por aquí. Recuerda que este se está ejecutando tanto en el cliente como en el servidor. Lo ejecutamos a través del cliente aquí y luego ejecutamos primero en el servidor. Cuando lo ejecutamos en el servidor, ahora nos estamos comunicando con el modo de juego. Vamos a pasar por el modo de juego y preguntar por el modo de juego, ¿ realmente se nos permite generar esto Y vamos a pasar por todo esto y generar el control del jugador Va a ir aquí abajo. Recuerda que sabe qué engendrar porque los hemos establecido aquí en la interfaz de usuario, aquí hemos puesto al equipo Va a llevar este valor al equipo selecto, lo va a llevar por aquí, enchufarlo aquí, iniciar sesión aquí, ejecutarlo por el modo de juego aquí. Y luego lo va a ejecutar en el reproductor de spawn aquí. Y sabe cuál es el valor porque le hemos dicho qué es y también sabe dónde engendrar al jugador Bien, ahora sigamos adelante y hagamos clic en play. Y si selecciono uno de ellos, por ejemplo, el terrorista, ya se ve que no pasa nada. De hecho, vayamos a la siguiente lección y terminemos esto. 74. 6.14 Desvela al jugador: Bien, entonces hay una cosa final para engendrar al jugador. Y tenemos que poseer al jugador. Si realmente haces clic en esto, realidad estás engendrando al jugador Pero no se puede ver al jugador en el nivel porque también hay que poseer al jugador. Si arrastras desde display pon, recuerda que ya hicimos una interfaz para la base de jugadores, que puedas arrastrar desde display y decir get player reference. Ya hicimos esa interfaz de blueprint, y ahora puedes arrastrar desde el reproductor Tienes que poseer al jugador para poder controlar a ese jugador. Adelante y compile todo ahora, y hagamos clic en Reproducir. Si haces clic en el terrorista ahora puedes ver que en realidad puedes poseer este antiterrorista. No obstante, todavía hay la interfaz de usuario frente a nosotros y tenemos que eliminarla. La interfaz de usuario se ejecuta a través del cliente. Cuando trabajas con UI, estás trabajando dentro del cliente. Ahora, en lugar de hacerlo aquí, hagamos clic derecho y hagamos un nuevo evento personalizado. Y ejecutarlo a través del cliente. Spawn player, solo voy a llamarlo cliente spawn Sé que está conectado a éste. Voy a hacer click en él. Siga adelante y ejecute en ser dueño del cliente confiable. Pongámoslo también por aquí. Cl spawn jugador para este de aquí abajo en este momento Solo quiero recordar que lo llamamos show hide widget. Así podemos bajar aquí y decir mostrar ocultar widget y seleccionarlo aquí. Ahora podemos seleccionar la selección del equipo, y esta sin marcar Ahora va a ocultar la interfaz de usuario para los jugadores. Sigamos adelante y compilemos y hagamos clic en Reproducir. Y seleccionemos, por ejemplo, el Counter Terrist Ahora puedes ver que estamos dentro de aquí. Ahora puedes ver aquí, no puedo mover a mi personaje. Y también puedo ver la cabeza de mi personaje. Recuerda que en realidad nos quitamos la cabeza. Esto es un error. Si vamos al jugador, y solo quiero verificar mi código si haces clic en la base de jugadores, si vas a la gráfica del evento, está mostrando mi cabeza. Recuerda en la jugada de inicio, quitamos la cabeza, tampoco podemos controlar al jugador. Tengo la sospecha de que este código aquí, el código de movimiento y el esconder la cabeza no está corriendo. Porque si juego y hago clic, puedes ver que puedo ver mi cabeza, este código no se está ejecutando. Este también no está corriendo porque realmente no puedo mover a mi personaje. Creo que es porque en realidad puedes simplemente imprimir una cadena aquí. Imprimir cadena de nuevo, imprimir una cuerda es realmente potente. Debería decir hola aquí. Si hace eso, sé que mi código se está ejecutando aquí. Si hago clic en mis gallinas, se puede ver que no es decir hola Pero si lo conecto a la no válida. Entonces si solo lo desconecto, ponlo a no válido, así como así. Y puedo volver a conectar esto. Doy click en play, y ahora dice hola. En realidad es decir que esto no es válido. Ahora, en el modo multijugador, tienes que saber que tienes que darle un poco de tiempo al jugador para que genere porque no es como un solo jugador Toman algún tiempo para generar en el servidor o conectarse al servidor Entonces hay que arrastrar de esto y digamos retraso. A veces eso realmente soluciona el problema. Si acabo de agregar delay y no realmente uno grande, solo por 0.01 así que muy, muy bajo y compilar. Y ahora si hago clic en Reproducir, Seleccione el Counter Terrorist. Ahora puedes ver que puedo mover mi personaje y mi cabeza también se me ha ido. En realidad, lo único que necesitábamos aquí es agregar este retraso. Porque cuando te conectas a la red en el servidor, tienes que tener un retraso muy pequeño para que el reproductor realmente conecte y luego ejecute este código. Bien, así que ahora como puedes ver aquí, todo está funcionando muy bien. No obstante, se puede ver que el ratón está desapareciendo cada vez que hago clic en la pantalla Y es molesto, tengo que seleccionar mi otra pantalla antes poder hacer clic en los botones. Y tengo que hacer click aquí antes de poder jugar. Para que veas tengo que hacer click, o en realidad minimizar esto. Y ahora puedo dar click en la interfaz de usuario. Y tengo que volver a hacer clic en la pantalla antes de poder mover mi personaje con el ratón. Entonces tenemos que arreglarlo. Y en realidad tenemos que hacer eso en la siguiente lección con algo llamado modo de entrada que tenemos que establecer. Pasemos a la siguiente lección. 75. 6.15 Establece el modo de entrada: Bien, ahora sigamos adelante y abramos nuestro controlador de reproductor. Entonces si abres el Player Controller, ahora mismo como puedes ver cuando hago clic en play, no puedo ver mi mouse y no puedo presionar nada. Si voy al controlador del jugador y hago clic en los valores predeterminados de clase, puedo seleccionar este llamado zapatos Si compilo y juego, ahora puedes ver que puedo ver el cursor de mi mouse. Sin embargo, a veces cuando entro al juego, no puedo pasar el cursor sobre mis botones Y aquí es donde entra en juego el modo de entrada establecido. Por aquí en el controlador del reproductor. Golpeemos desde aquí, desde el principio. Juega y digamos que establece el modo de entrada. Tienes estos diferentes tipos. Puedes configurar el modo de entrada solo en la interfaz de usuario, solo juego o en el juego y la interfaz de usuario. Ahora mismo cuando nos conectamos al servidor, solo lo queremos a la interfaz de usuario solamente. Porque solo queremos enfocarnos en la selección de nuestro equipo y seleccionar al equipo. No nos importa el juego en este momento, U será suficiente. Entonces tenemos que especificar el controlador del reproductor. Recuerden, ya estamos dentro del control del jugador, así que voy a arrastrar desde aquí y decir yo mismo. Entonces para que el widget se concentre, aquí no tenemos que hacer nada. Y todo se ve bien. Entonces sigamos adelante y compilemos. Y ahora cuando hago clic en Jugar, realidad no se está enfocando en mi juego. Y puedo seguir adelante y hacer todo esto. Ahora cuando el jugador genera, también hay que cambiar el modo de entrada Porque cuando entramos en el juego, puedes ver que ya no puedo moverme porque ahora mismo tu modo de entrada está configurado solo en UI, así que tienes que cambiar eso también. Vayamos aquí abajo. Y recuerda , en realidad, si vas aquí arriba y ves el ícono, puedes sostener el mouse sobre él, puedes ver que éste en la parte superior, puedes verlo dice cliente solamente. Sólo se ejecuta en el cliente. Vayamos aquí abajo. Cuando engendramos al jugador, vamos a ejecutarlo al cliente. Jugador de engendrar. Arrastremos desde aquí y digamos establecer el modo de entrada. Ahora mismo necesitamos el juego sólo porque ahora estamos en juego. Queremos movernos. No nos importa la interfaz de usuario, el controlador del reproductor, vamos a arrastrar y decir yo mismo, igual que antes. Eso debería ser. Vamos a compilar y jugar. Ahora selecciono Counter Terrace, por ejemplo, y ahora estoy dentro de aquí. Pero como pueden ver, puedo ver mi ratón todavía. Arrastremos de aquí y digamos ratón. Tienes este evento aquí abajo. El lingote llamado set show mouseursa. Voy a configurarlo para que caiga aquí arriba. Siempre puedes configurarlo en true por defecto, si quieres, puedes copiarlo. Y puedes pegarlo por aquí y enchufarlo y configurarlo en true. Ahora, ya lo hemos hecho configurándolo en true por defecto, Pero solo para asegurarnos de que sea visible, si acaso haces algo en el futuro, puedes tener eso. Pero por ahora en realidad no es necesario. Pero en realidad dejemos que esté aquí. Vamos a hacer clic en Play by Select, No terrorista. Se ve que mi mouse desaparece y todo está funcionando perfectamente. Bien, así que vamos a cerrar todo. Recuerda guardar tu juego y sigamos adelante. 76. 6.16 Coloca una cámara de espectador: Ahora mismo al hacer clic en Reproducir, puedes ver que comienza en un punto aleatorio. Y en realidad quiero comenzar como un lugar genial donde puedas ver a todos los jugadores justo cuando te conectes. Eso va a ser muy agradable. Lo que puedes hacer es simplemente configurar una cámara aquí arriba, por ejemplo. Déjame colocar primero mi cámara. Por ejemplo, quiero colocar mi cámara así aquí y puedo ver todo el nivel y también a los jugadores. Ahora cuando estés satisfecho con la posición de tu cámara, puedes hacer clic aquí arriba en la Vista y luego hacer clic en esta Crea Cámara aquí y selecciona Cámara. Esto creará un actor de cámara automáticamente. Ahora si hago clic en la Cámara, se ha creado aquí. Para asegurarme de que no muevo la cámara aquí por error, voy a escribir click y transformar y luego seleccionar Bloquear Movimiento seleccionado. Ahora ahora cuando haces clic en él y seleccionas la herramienta de movimiento, puedes ver que no está ahí. Realmente no puedo mover esto por error. Ahora ha bloqueado el movimiento para éste. Bien, voy a renombrarle este y llamarlo cámara de espectador. Vamos a ahorrar. Cada ahora lo que podemos hacer es ir al controlador del jugador y recordar lo que dije antes. Si quieres una referencia a cualquier cosa dentro del mundo, trata de recordar qué función usamos realmente. Te voy a dar solo un pequeño segundo para pensar qué función podemos usar dentro de aquí para obtener la referencia para esta cámara aquí. Pasemos ahora al controlador del jugador. Lo que podemos hacer es que queremos establecer esta vista cada vez que el jugador se conecte. De hecho lo voy a hacer aquí en el start Play. Lo que puedes hacer es que yo solo lo voy a hacer aquí después del modo, voy a arrastrar esto lejos. Y luego de aquí y decir acto de clase en Floss. Esta es la función que tienes que usar. Después selecciona la cámara. Si busco cámara, entonces puedes seguir adelante y seleccionar la cámara. Esta es una cámara, estamos recibiendo la cámara de nuestro nivel. Ahora lo que podemos hacer es que podemos usar esta función llamada Set View Target, Blend. Establecer objetivo de vista con mezcla va a establecer la vista para tu cámara cuando te conectes. Ahora te pregunta ¿ cuál es la vista? La vista es solo esta cámara que hemos creado. Adelante y conéctate. Eso fue en realidad. Vamos a elegirlas aquí. Adelante y compilar, guardar todo. Vamos a hacer clic en Reproducir. Y ahora puedes ver que arrancamos aquí. Y puedo ver este nivel. Se ve genial si los jugadores están jugando y puedo seleccionar a mi equipo, así como ver a los jugadores de fondo. Cuando haces clic en terrorista, por ejemplo, sigues adelante y engendras dentro del nivel Y todo está funcionando bien para el otro. Si sigo adelante y engendro como antiterrorista, y voy por encima y puedes ver que se pueden ver. Ahora mismo, se puede ver que hay un bicho. De hecho, arreglemos eso. Con la cabeza desapareciendo cuando veo al cliente como el servidor, si dejo aquí, en realidad me muestra una era y podría ser por esta Dice eje no tratando de leer esta era aquí, puedes intentar arreglarlo tú mismo ahora antes de seguirme solo para practicar. Axis non significa que intenta leer este valor llamado get local player subsistema. Si hago clic aquí, este es el subsistema get local player. Está tratando de leer este valor pero dice acceso ninguno, lo que significa que no puedo obtener ninguna información de este. Vamos a tachar esto. Siempre agradable de hacer es simplemente golpear de esto y decir que es válido solo cuando es válido. Vamos a ejecutar este código, vamos a conectarlo aquí también. Siempre que el controlador del reproductor sea válido así como esta entrada mejorada, es válida, entonces queremos volver a ejecutar el código. Simplemente haga doble clic aquí en el nodo de reencaminar. Adelante y haz esta compilación organizada. Vamos a hacer clic en play y ver qué hace. Ahora adelante y selecciona terroristas para éste por ejemplo. Vamos a ir al medio y seleccionar para el otro. Seleccionemos al antiterrorista. Déjame ver al otro tipo de aquí y ver si se ven. Y ahora se puede ver que está arreglado. Fue solo un problema con esa época que teníamos antes. Ahora si quieres probarlo, puedes jugarlo como clientes. Se puede jugar como, por ejemplo, tres jugadores. Abramos a todos estos tres jugadores. Sólo voy a minimizar este grande por ahora y hacer esos un poco más grandes. Así como así para éste, vamos a engendrar un antiterrorista Y para el otro, engendremos antiterrorista. Para el tercero, engendremos a un terrorista. Déjame ir al medio aquí. Para éste también voy a ir al medio. Y para el otro también. Ahora puedes ver que están funcionando a la perfección. Todos pueden ver a todos. Y las animaciones, se les puede ver la agachada, ésta también, los efectos de sonido funcionando, Y todo está bien para ir Sigamos adelante y guardemos todo, y sigamos adelante. 77. Espacios de mezcla de 7.01 pistola: Ahora en realidad estamos listos para trabajar con las armas y colocarlas en el nivel también. No obstante, antes de hacer eso, hagamos realmente las animaciones de rifle y pistola porque las estamos perdiendo ahora mismo. Terminemos esos antes de trabajar con las armas, porque en ese momento tendremos todas las animaciones y todo será mucho más fácil para nosotros. Así que volvamos a la carpeta de planos, clic en el reproductor y volvamos a la carpeta de animaciones aquí Lo que quiero hacer es para esta lección, crear los espacios de mezcla de pistola. Al igual que esos, pero los de pistola ahora si quieres crearlo tú mismo. Entonces es un buen ejercicio y luego puedes ver lo que estoy haciendo. Pero ya deberías saber cómo hacer esto. Porque en realidad es lo mismo que esos agachados desarmados y corren desarmados, y caminan desarmados y caminan Si quieres seguir, vamos a hacer clic derecho aquí. Vamos aquí en la animación y seleccionemos el espacio de mezcla para éste. Nuevamente, selecciona nuestro estilo esqueleto, uno masculino y llámalo blend space. Llamemos a esta pistola agachada. Vamos a crear ese primero. Vamos a hacer doble clic aquí. Para el eje horizontal, esta es la dirección de movimiento para el eje vertical, esta es la velocidad de movimiento. Para la dirección del movimiento, va de menos 180 a 180. Y entonces tenemos ocho déficits porque tenemos un movimiento de ocho vías En cuanto a la velocidad de movimiento ahora, depende de si estamos agachados o si estamos caminando o corriendo Ahora volvamos a, en realidad puedo hacerlo aquí, por encima a la derecha. Volvamos a la agachada para los desarmados. Quiero ver cuál era la velocidad de movimiento. Ahí están 100, así que voy a ponerla igual aquí para la pistola, 100. Y lo último aquí para la velocidad del peso, lo ponemos a 6.5 Si recuerdas, si no lo haces, puedes dar click en el agachado, puedes bajar Y entonces se puede ver la velocidad del peso, nosotros la configuramos en 6.5. Haz lo mismo por éste, entonces son lo mismo. Y antes de hacer nada, voy a guardar esto y voy a hacer click derecho en esto y duplicarlo. Esto es porque no tengo que hacer todo esto una y otra vez. Y a esta se le llama pistola de carrera. Y entonces voy a duplicar esto otra vez y esto va a llamarse pistola S walk. Voy a abrir la pistola de correr. Ahora solo necesitamos cambiar la velocidad de movimiento. Creo que son 350 y si no te acuerdas de nuevo, clic en el desarmado Para la carrera, ya ves que son 350. En la agachada o en realidad la agachada, la pistola de correr, hay que ponerla a 350 también Bien. Y vamos a revisar la pistola. Este creo que son 200 en el arte. Sí, son 200. Entonces pongamos el paseo uno a 200 también y guardemos todo. Entonces ahora puedes ver cuando lo dupliqué, no tengo que hacer todo esto una y otra vez. Entonces ahora están todos listos. Bien. Empecemos con el de pistola uno. Busquemos el agachado o en realidad puedo simplemente buscar pistola Eso es mucho más fácil. Y entonces puedo echar un vistazo a la agachada de aquí Justo como antes. Primero hay que tener el ocioso. Veamos, agacharse al ralentí, éste otra vez, mantén el turno y conéctalos a aquí abajo. Así como así. Y lo mismo del otro lado, así como así. Bien, aquí arriba está el movimiento hacia adelante así como puedes ver aquí. Y luego tienes el frente izquierdo hasta aquí, y luego el frente a la derecha hasta aquí. Entonces tienes la izquierda por aquí y tienes la derecha por aquí. Y luego tienes la espalda izquierda y la trasera derecha, y luego tienes la espalda en ambos lados. Y puedo habilitar las etiquetas para que también puedan ver cómo las coloco. Pero puedes sostener el botón de control y mover el mouse solo para comprobar si todo está bien. Todo se ve bien. Voy a guardarlo y cerrarlo. Y ahora puedo abrir la pistola de correr. Voy a buscar el inactivo y voy a usar esta llamada pistola ociosa Y seguir adelante y colocarla de nuevo. Mantenga el turno y colóquelos todos. Ahora cuando los hayas colocado, busquemos pistola y yo voy a encontrar los de carrera. Ejecuta esta, las pistolas ahora necesitamos, si puedo encontrarla aquí, la delantera Entonces necesitamos la parte delantera izquierda y luego la delantera derecha. Entonces necesitamos la izquierda, la derecha, y necesitamos la parte posterior izquierda, atrás derecha. También necesitamos la espalda por aquí a ambos lados. Nuevamente, mantén el control solo para ver cómo se ve. Todo se ve bien. Bien. Podemos cerrarlo. Ahora abramos la final , la pistola walk. De nuevo, voy a encontrar al ocioso. Toma la pistola ociosa y vuelve a colocarla aquí abajo. Entonces busquemos una pistola. Ahora necesitamos encontrar el paseo en este paseo frente, colocarlo aquí así. Y entonces necesitamos a la izquierda, al frente, a la derecha. Entonces necesitamos la izquierda y la derecha por aquí, atrás a la izquierda, caminar hacia atrás a la derecha. Y luego necesitamos en ambos sitios. Nuevamente, puedo habilitar esas etiquetas para que pueda ver y pueda tener el control. Mueve mi mouse solo para ver cómo se ve y todo se ve bien. Así que ahora podemos guardarlo todo. Y eso fue todo por la pistola una vez. Pasemos a la siguiente lección y hagamos el rifle. 78. Espacios de mezcla de rifle 7.02: Para el rifle. Nuevamente, puedes intentar hacerlo tú mismo ahora que también hicimos la pistola. Pero sigamos adelante y hagámoslo juntos si aún tienes alguna dificultad con ello. Vamos a hacer clic derecho aquí. Vamos a Animación. Vamos a Blend Space y seleccionemos nuestro esqueleto. De nuevo, llama a éste S. Vamos a llamarlo Rifle. Vamos a entrar en esta. Llama al horizontal. Dirección de movimiento. El eje vertical. Velocidad de movimiento. El sentido va de menos 180 a 180. Con ocho divisiones de rejilla, la velocidad del peso es 6.5 En cuanto a la velocidad de movimiento, esta es la agachada Por lo que se establece en 100. Eso es correcto. Vamos a cerrarlo otra vez. Voy a duplicar esto y llamar a este rifle de la ONU. Y voy a duplicar esto otra vez. Llamemos a este rifle de paseo. Voy a abrir el rifle de carrera y cambiar la velocidad de movimiento a 350. Sí, no necesitamos cambiar nada más. Abramos el rifle de paseo por aquí. Cambiemos la velocidad de movimiento a 200 como las demás. Y vamos a guardar todo y cerrarlo. Bien, para el rifle. Empecemos de nuevo con la agachada. Para el agachado, voy a buscar rifle y luego voy a encontrar el rifle inactivo agachado y colocarlo Y adelante y colóquelos de nuevo, todo el camino hasta aquí abajo. Bien, cuando eso esté hecho, ahora encuentra el rifle agachado hacia adelante y colóquelo aquí abajo. A veces solo estoy manteniendo el control para comprobar si esta animación que he importado para ti es correcta. Normalmente solo tengo el control y solo comprobando si esto es correcto. No me equivoco aquí en este curso. Ahora tenemos este frente. Bien, entonces tenemos la parte delantera izquierda, tenemos delantera derecha, luego tenemos la izquierda agachada a la izquierda y agacharse izquierda y Entonces tenemos la espalda izquierda y la trasera derecha. Entonces tenemos ida y vuelta también. Vaya, necesito volver a copiar esto así otra vez. Mantenga el control, verifique si todo es correcto, todo parece estar correcto. Vamos a cerrar esto. Volvamos a pasar al rifle . Busco ocioso. Y cojo este rifle inactivo y lo coloco aquí abajo. Y colóquelo de nuevo, todo el camino hasta aquí abajo. Cuando eso esté hecho, siga adelante y busque rifle. Y ahora encuentro la carrera una vez y encuentro el rifle de carrera hacia adelante y eso está buscando correcto. Y pongámoslo al frente, a la izquierda, al frente, a la derecha. Y luego tenemos la izquierda y la derecha. Y tenemos la parte trasera izquierda y trasera derecha, y tenemos la espalda en ambos lados. Y voy a tener el control, comprobando si todo está buscando correcto. Se ve correcto. Vamos a cerrarlo. El último es el rifle a pie. De nuevo, voy a buscar al inactivo, arrastrarlo por el rifle y colocarlo abajo hasta aquí abajo. Nuevamente, sigamos adelante y busquemos rifle. Y ahora necesitamos el caminar uno. Vamos a la caminata hacia adelante. Colóquelo aquí abajo y vamos a comprobarlo. Eso es correcto. Después al frente, a la izquierda. Frente a la derecha, y tenemos la izquierda. Tenemos los derechos. Entonces tenemos los Bccrights También tenemos de vuelta en ambos lados. Voy a controlar, de nuevo, solo para comprobar si todo se ve correcto y todo parece estar correcto. Vamos a guardar todo. Vamos a cerrarlo. Y ahora el rifle y las pistolas están terminadas. Pasemos a la siguiente lección y hagamos el desplazamiento de puntería. 79. 7.03 Compensaciones de puntería de pistola: Ahora sigamos adelante y hagamos el desplazamiento de objetivo. Ahora ya lo has hecho antes. De nuevo, trata de hacer esto sin mí. Esa es una buena práctica. Y si no recuerdas, sigamos adelante y hagamos esto juntos. Hagamos clic derecho aquí, vaya a Animación y vaya a Legado. Y seleccionarlos, Desplazar una D, vamos a seleccionar el carácter. Llamémoslo O para una compensación. Y vamos a hacer la agachada. Y llamemos a ésta una pistola. Y vamos a hacer doble clic en él. Para este, el eje horizontal es la dirección. También puedes simplemente dar click sobre el otro solo para ver lo que has hecho. Entonces haces lo mismo. No es realmente bueno hacer cosas diferentes en tu mismo juego. Así que siempre es agradable solo hacer lo mismo. Si lo has llamado dirección aquí, trata de llamarlo dirección aquí también, en lugar de moverte dirección y así sucesivamente. Entonces trata de hacer lo mismo. Entonces tienes consistencia en tu juego -90 Y creo que los deficientes simplemente se quedan igual Todo se ve bien. La velocidad de peso que he puesto a 5.5 voy a dar click en la pistola y poner la velocidad de peso a 5.5 también. Voy a guardar todo ahora. Busquemos el offset de la pistola agachada. Si busco pistola y bajo a la compensación Am y estas son las agachadas El centro voy a sostener y mantener turno y colocarlo aquí abajo. Entonces tenemos el up y voy a tener el control para ver si todo se ve correcto. Eso está bien. Vamos a cerrarlo. Voy a hacer clic derecho en Animación Legado Am. Desplazamiento uno. D. Selecciona tu esqueleto y llama a esta pistola de 10 soportes. Volvamos a abrirlo. Llámala dirección yendo de -90 a 95.5 en la velocidad de peso Y volvamos a buscar pistola. Esta vez es la pistola de soporte, la central la voy a poner en el centro. Entonces tenemos el abajo, y luego tenemos el arriba. Y puedes ver la etiqueta aquí también. Tenemos el abajo, tenemos el arriba. Todo se ve bien. Vamos a guardar todo, y pasemos a la siguiente lección. 80. 7.04 desplazamientos de puntería de rifle: Bien, entonces ahora sólo nos falta el rifle. Objetivo compensado de nuevo, trata de hacer esto solo para la práctica. Y si no te acuerdas de nuevo, sigamos adelante y hagámoslo juntos. Hagamos clic derecho en Animación. Selecciona Legado y objetivo compensado uno D. Y vamos a seleccionar nuestro esqueleto y llamémoslo, llamémoslo rifle agachado Para este voy a hacer doble clic, Llámalo dirección para el valor mínimo -90 Para el valor máximo es 90 La velocidad de peso es 5.5 Busquemos rifle esta vez para ellos compensados. Este es el agachado. Necesitamos el offset agachado. Voy a golpear este centro y ponerlo aquí. Entonces tenemos el abajo, luego tenemos el arriba. Esto de aquí se ve bien. Ahora, la animación en sí se ve rara. Es decir, está muy doblado y eso se ve muy raro. Pero estas son solo las animaciones como si no fuera tu culpa, no estamos haciendo nada malo. Es solo la animación que se hace así. Ahora bien, si tuviera mejores animaciones, te la daría. Desafortunadamente, realmente no tengo mejores animaciones. A lo mejor en el futuro voy a que alguien haga todo por encargo. Pero por ahora, esto es lo mejor que podemos hacer. Todo se ve bien. Ahora vamos a cerrarlo. Y vamos a hacer clic derecho de nuevo. Ir a Animación y legado aquí estoy dicho seleccionar el esqueleto. Llámalo AO rifle de pie. Vamos a hacer doble clic aquí y llamarlo dirección. Entonces para el valor mínimo -90 para el máximo 90, para el peso, velocidad 5.5 Y busquemos rifle y luego ya podemos seleccionar el rifle de soporte, este es el centro Entonces tenemos el abajo. Y entonces tenemos el viejo control para comprobar si todo es correcto y todo se ve bien. Bien, vamos a guardar todo. Vamos a cerrarlo. Y ahora también tenemos el objetivo compensado. Sigamos adelante en la siguiente lección. 81. 7.05 Mezcla poses de Bool: Ahora estamos listos para volver al plano de animación y hacer algo de trabajo ahí Hagamos clic en la carpeta del reproductor Animaciones, y abramos el plano de animación Ahora dentro de aquí, quiero que den click en la gráfica de animación. Entonces estamos dentro de aquí. Como puedes notar, anteriormente hemos utilizado el offset para el stand. Sin embargo, hemos utilizado el otro, el desplazamiento del objetivo, para el agachado también Solo hemos utilizado el para el stand. Cuando estamos agachados, no estamos usando el desplazamiento de puntería correcto. Para ello. Hagamos clic derecho y busquemos agacharse. Este jugador offset, ahora mismo estamos en el, sólo voy a copiarles dirección. Y copia esta a medida que la enchufamos. Ahora tenemos eso. Pero el problema es ahora mismo es que no puedo enchufar esto aquí, porque como pueden ver, solo una entrada. Tenemos que conseguir algo que ponga estas dos cosas juntas. La forma en que podemos hacer esto es si haces clic derecho y buscas poses de mezcla. Se puede ver que podemos mezclar estas dos poses por muchos factores. Se pueden ver todos esos. Sin embargo, lo que necesitamos es mezclar poses por, se puede ver que hay algo llamado blend poses por toro. Esto hace posible que mezcles las poses a través de un lingote Si tienes un lingote eso es cierto, va a usar esta pose Si es falso, va a usar esta pose. Tenemos que darle un lingote. El lingote que queremos usar es que queremos comprobar si el jugador está agachado o Si el jugador está agachado, vamos a usar el desplazamiento de puntería para el Si el jugador no está agachado, vamos a usar el offset para el stand Sigamos adelante y encontremos el lingote de aquí, si ya lo hemos hecho ahora, está agachado y está Recuerda que los borramos previamente de aquí. En realidad no se usan en este momento y se equivocan. Eliminemos el Está agachado y está caminando. Recuerden que los cambiamos con el estado de movimiento aquí. Golpeemos a éste. Y arrastremos de aquí y digamos que consigue y consigue una copia. Y ahora puedes arrastrar desde aquí y decir último índice, y luego podemos enchufar eso. Estamos comprobando si el jugador está presionando actualmente el botón agacharse Podemos arrastrar desde aquí y decir igual si el último índice es igual a agacharse, es decir, el jugador está ahora mismo presionando el botón agacharse, entonces podemos seguir adelante Ahora vamos a enchufarlo si es cierto, es decir, el jugador está agachado, queremos usar este donde el desplazamiento de puntería es No obstante, si el jugador no está agachado, queremos usar este con el estrado Adelante, compile y conéctelos aquí. Compilar todo. Y yo sólo voy a mover todo aquí y organizarlos. Bien, así que ahora todo está organizado. Ahora puedes intentar verificar si esto está funcionando. Para que puedas dar click en el estado de movimiento. Puede agregar una matriz aquí, agregar un elemento a la matriz. Y solo puedes configurarlo para agacharse. Y se puede ver cómo se ve. Entonces ahora en realidad se puede ver que está funcionando. Porque si lo pongo a agacharse, entonces está agachado. Si lo pongo a otra cosa, entonces cambia a la otra. Ahora puedes ver que se enciende, eso está funcionando correctamente. Recordemos seguir adelante y eliminar esto por ahora. Bien. Entonces eso está funcionando correctamente. Así es como mezclas poses a través de esta llamada blend poses por bullying. Bien. Entonces tenemos otro que necesitamos usar más adelante porque éste es solo el movimiento desarmado También necesitamos el movimiento para la pistola y el movimiento para el fusil. Para que veas que se vuelve un poco más complejo porque necesitamos crear todo esto para la pistola y el rifle. Necesitamos otra llamada poses de mezcla por enumeración. Pero por ahora, saltemos a la siguiente lección y aprendamos sobre el tema. 82. 7.06 Blend Poses de Enum: Bien, aquí estamos otra vez. Esta vez queremos usar esta llamada poses de mezcla por enumeración. Si escribes, haces clic y escribes pose de mezcla o poses de mezcla, verás todas las que comienzan con una E. Comenzando con una E, eso es en realidad una enumeración Y esas son solo enumeraciones que se crean en Unreal engine por defecto Ahora vamos a crear nuestra propia enumeración en su lugar, permítanme minimizar todo esto Vayamos a los Enos. Déjame hacer clic derecho en esta carpeta, ir a Blueprint y crear una nueva lista de enumeraciones. Pero llamémoslo tipo de arma. Sigamos adelante y entremos en la enumeración. Y ahora puedes agregar qué tipos de armas tenemos. Tenemos la pistola y el fusil, pero también tenemos el desarmado porque necesito el movimiento desarmado también Entonces voy a hacer el desarmado para empezar. Y podemos hacer uno para la pistola y podemos hacer uno para el rifle. Nuevamente, no importa en qué secuencia se encuentren. Si es así, los has creado o así, no importa. Eso es, en realidad no significa nada. Bien. Sólo voy a hacerlo como pistola desarmada, rifle Adelante y ahorra, estas son las armas que tenemos. Si tienes más armas, puedes seguir adelante y agregarlas. Pero por ahora, vamos a guardar todo. Vamos a entrar aquí. Ahora podemos hacer clic derecho y podemos buscar poses de mezcla. Y luego puedes buscar la enumeración que acabas de hacer, El tipo de arma, podemos buscar el tipo de arma Y aquí está. Y ahora puedes seleccionarlo. Ahora lo tienes aquí. Ahora puedes mezclar poses a través de esta enumeración. Podemos hacer clic derecho en esta pose predeterminada y luego puede seleccionar y agregar un pin para lo desarmado y cosa. Clic derecho, seleccionar pistola, clic derecho, seleccionar rifle. Ahora tienes alfileres para todos los movimientos que tengas, así podrás enchufar el movimiento desarmado, el movimiento de la pistola y el movimiento del rifle Y hay que enchufar la enumeración para poder cambiar en consecuencia Bien, adelante y guarda todo. Ahora lo que tenemos que hacer aquí es, déjame volver con el jugador, porque ahora en realidad necesitamos saber qué está equipando el jugador ahora mismo Porque si estás equipando un rifle, necesitamos cambiar tu pose por un rifle Si voy a la base de jugadores y solo agrego una nueva variable que usaremos más adelante, y voy a llamar a esta arma equipada. Voy a convertir este tipo de variable en el tipo de arma. Vamos a usar esta arma equipada más adelante cuando pongamos qué arma ha equipado el jugador. Y vamos a guardar todo. Creo que éste será replicado más adelante. Ahora hagámoslo replicado para que los demás puedan ver realmente qué arma tienes equipada Y volvamos al plano de animación. Ve a la gráfica par dentro de aquí. Recuerda que ya tenemos la referencia para el jugador, así que podemos arrastrar desde aquí y buscar arma equipada y obtener esa variable. Ahora lo que podemos hacer es que podemos acertar flick promover esto a una variable, llamar a esta arma equipada también Adelante y conéctalo. Voy a hacer clic aquí para hacer un nodo de re ruta, sólo para hacer las cosas un poco más organizadas. Bien, ahora que tenemos esto, adelante y compile. Volvamos ahora al gráfico de animación. Ahora podemos enchufar esta arma equipada aquí mismo, y vamos a compilar. Ahora para la pose predeterminada, hay que tener una pose predeterminada. Normalmente lo que hago es enchufar el movimiento desarmado dentro de la pose predeterminada Para los desarmados, hay que enchufar lo mismo. Sin embargo, realmente no se puede enchufar esto dos veces así. De hecho hay que copiar y pegar esto. Ahora para que esto sea más organizado, en realidad quiero desconectarme. Y por eso es tan agradable hacer las notas de caché porque no tienes que copiar y pegar todo esto. Lo que podemos hacer es simplemente colocarlo aquí. Y entonces voy a renombrarle este Caché de Movimiento Desarmado Yo sólo voy a llamarlo Máquina Estatal Desarmada. Caché de Máquina de Estado Desarmado. Recuerde que esta se llamaba una máquina de estado, Máquina estado desarmada en caché Están enchufados aquí correctamente. Para este en realidad voy a arrastrar y decir caché y nueva pose de guardar caché Para esta en realidad voy a llamarlo desarmado porque este es ahora el movimiento desarmado que incluye también los desplazamientos de puntería Este ahora solo podemos tomar aquí y usarlo aquí si buscas movimiento de brazo, no la máquina del Estado movimiento desarmado en caché Y ahora puedes ver lo fácil que es y lo organizado que es. Realmente no necesitamos copiar todo esto y enchufarlo aquí una y otra vez. Ahora solo podemos copiar y pegar esto y usarlo como la pose desarmada también Ahora para la pistola y el rifle, tenemos que hacerlos. Vamos a arrastrar esto, enchufarlo aquí, Adelante y compilarlo. Entonces aquí lo que puedo hacer ahora es que puedo dar click en el arma de equipar. Y digamos que en el juego cogí un rifle. Para que veas que está cambiando. Sin embargo, realmente no hemos enchufado nada. Y esto es lo que dice esta nota. Es decir que la pose de pistola y rifle ha sido ignorada porque aquí no tenemos nada enchufado Pero como puedes ver, en realidad está funcionando. Y si lo vuelves a cambiar a desarmado, vuelve al movimiento desarmado Entonces ahora lo que nos falta es que aquí nos faltan las máquinas estatales de pistola y fusil. Así que saltemos a la siguiente lección y hagamos los planos de animación de pistola 83. Blueprint de animación de pistola 7.07: Hola y bienvenidos de nuevo. Ahora estamos listos para hacer la máquina estatal de pistola. Entonces ahora tenemos a los desarmados. Voy a copiar esto. Adelante, da clic en Copiar y controlar C y controlar V nuevamente. Y ahora tenemos esto. Voy a presionar en F dos para cambiar el nombre de esto y voy a llamar a este movimiento de pistola. Ahora voy a entrar en esta máquina de estado ahora y recordar cambiar todo el movimiento para la carrera inactiva. Sigamos adelante y cambiemos esto por éste. Si solo buscas pistola, en realidad no necesitas buscar ya. Téngalos aquí abajo en la parte inferior. Y tenemos la pistola de correr. Arrastra esto aquí. Adelante y borra esta. Y enchufa la dirección y velocidad del movimiento. Y seguir adelante y enchufarlo. Regresa a la caminata ahora la caminata. Vamos a borrarlo. Busquemos aquí la pistola walk. Solo asegúrate de arrastrar en el espacio de mezcla correcto que hayas creado y compilado. Ahora volvamos y vayamos a la agachada ahora. Adelante y borra esta y para la pistola agachada arrástrala y enchufa la dirección y velocidad del movimiento Adelante y enchufa esto también. Compilar, vuelve ahora tenemos todos esos. No creo que tengamos que cambiar nada con las reglas de transición y en realidad no lo hacemos. Ahora todo es correcto. Ahora para el salto, tenemos que seguir adelante aquí. Ahora para los arranques del salto, busquemos el salto. Necesito usar el de la pistola. Esta es la pistola de arranque en salto. Adelante, borra este y conéctalo. Vamos al aire y este es el salto una pistola delelete esta , enchufa la pistola El último es la pistola de extremo de salto y extremo de salto, esta de aquí y enchufarla también. Ahora recuerda cambiar la regla de transición para esta porque sigue diciendo salto inicio desarmado Tenemos que buscar la relación de tiempo y seleccionar la de la pistola. Y automáticamente sabe que es la pistola porque hemos encerrado en la animación en la otra. Lo hemos corregido. Así que adelante y selecciona éste, ratio y pistola. Y sigue adelante y borra este y enchufa este en su lugar. Recuerda que también lo tenemos aquí abajo. Haga doble clic en esta otra vez, busque la relación de tiempo restante para la pistola de extremo de salto. Elimine este y agregue este. Ahora, compilar, guardar todo. Déjanos aquí, solo revisa y mira si hay algo que nos hemos perdido. Creo que ya no tenemos nada aquí. Ahora tenemos el movimiento de la pistola y que podemos hacer es que podamos arrastrar desde aquí y volver a decir caché. Podemos llamar a éste Pistol State Machine hash, así como así Y ahora tenemos el movimiento de la pistola. 84. Plan de animación de rifle 7.08: Derecha. Entonces lo último que nos falta es el movimiento del fusil. Entonces sigamos adelante y copiemos la pistola, Ted aquí. Y cambiemos el nombre de esto a Rifle Movements. Déjame entrar de nuevo aquí. Haga doble clic en el inactivo para esta pistola de una carrera en su lugar. Permítanme simplemente borrar todo esto. Baje, en realidad sólo voy a buscar un rifle que va a ser mucho más fácil ir aquí abajo. Solo vemos los espacios de mezcla de fusil. Este es el rifle de la ONU. Adelante, enchufa la dirección y velocidad del movimiento y enchufa esto también. Volvamos a la caminata. Y déjame borrar esta. Enchufe el espacio de mezcla para la caminata, para el rifle. Encierra esos. Así como así. Lo mismo para el agachado Adelante y toma el agachado. Encierra esos en Otra vez, así. Lo mismo para el salto. Jump start, voy a buscar el salto y encontrar el del rifle. Rifle de arranque en salto, éste. Eliminar el anterior. Coloca esta nueva. Ahora lo mismo para el salto. A, selecciona el salto, un rifle. Enchufe eso. Lo mismo para el extremo del salto. Toma rifle de punta de salto y borra este. Enchufe esto. Recuerda cambiar de nuevo la regla de transición aquí para la relación de tiempo de inicio de salto restante para el rifle de arranque en salto. Adelante y borra el anterior. Selecciona éste, y lo mismo para éste. Regla de transición de fin de salto, relación de tiempo restante para el rifle de extremo de salto. Eliminar el anterior. Coloca éste en su lugar. Adelante y compilar, guardar todo. Y creo que hemos terminado con éste también. Sólo comprobando rápido, creo que todo está bien. Volvamos al gráfico de animación. Y dentro de aquí, vamos a golpear y decir caché de nuevo. Y cámbiale este a Rifle State Machine. Bien, puedes organizar esto un poco más si lo deseas, pero por ahora todo está terminado. Sigamos adelante y guardemos todo. Recuerda compilar también y sigamos adelante. 85. 7.09 Finaliza el plan de animación: Bien, ahora es el momento de terminar esto. No nos queda mucho, así que sigamos adelante y terminemos todo esto. Lo que tenemos que hacer ahora es añadir también las compensaciones de puntería Empecemos con el de pistola uno. Sólo voy a arrastrar esto. Toma la pistola aquí. Ahora necesitamos usar esta pose de caché. Hagamos clic derecho y busquemos caché de pistola. Toma esta, máquina de estado de pistola en caché y usa esta. Ahora tenemos que hacer lo mismo aquí. Necesitamos hacer clic derecho y buscar AO Rauch. Busca el que tiene la pistola Am jugador offset agacharse Adelante y conéctelo aquí para la dirección de puntería también. Sólo puedo copiar y pegar esta variable. Esto es ahora correcto. Voy a usar para ellos pistola de soporte offset. Llévate el uno con el jugador offset Am. Enchufe la dirección de puntería, siga adelante y tome la misma pose en caché y conéctela a aquí también Ahora tienes la para la agachada y otra para la pistola de soporte, igual que antes Usa esta mezcla de poses de Bool. En realidad sólo voy a copiar todo esto. Realmente no necesitamos escribirlo una y otra vez. Así que adelante y toma esto. Pongamos este a agacharse, eso en realidad sigue siendo correcto Vamos a enchufar el verdadero. Si estamos agachados, vamos a usar esta. Si no estamos agachados, vamos a usar esta. Adelante y compilar. Y ahora sólo voy a organizar esto un poco más tarde. Ahora mismo, solo quiero enchufar esto porque estos se van a hacer un poco más grandes, igual que este de aquí. Lo que voy a hacer es que voy a tomar esto y guardar una nueva pose en caché, igual que antes de llamarla unun movimiento A éste lo voy a llamar movimiento de pistola, así como así. Y adelante y conéctalos aquí. Ahora voy a organizar esto igual que antes. Bien. Por lo que ahora está organizado. Yo solo intenté organizarlo todo. Y ahora tenemos el rifle por aquí. Podemos simplemente moverlo hacia abajo por ahora. De hecho voy a mover el movimiento desarmado por encima de la pistola, uno así Intenta estar lo más organizado posible porque cuando estés creando un juego grande, va a ser muy desordenado porque vas a tener tantas cosas pasando Y siempre es agradable tratar de mantenerse organizado para el último aquí para la pistola o el rifle. Volvamos a nosotros, igual que antes, voy a dar click derecho y buscar AO Rauch y elegir el del rifle Y otra vez ponte de pie y elige de nuevo el del rifle. Ahora podemos seguir adelante y tomar el fusil de máquina estatal, máquina de estado en caché, enchufarlo a aquí, tomar la dirección y enchufarlo hacia aquí Ahora podemos pegar esto aquí abajo también. Enchufarlo a esas entradas. Ahora todo se ve bien. De nuevo, igual que antes, voy a copiar todos esos. La mezcla bulling a los que están aquí también. Adelante y pegarlo. Conecta el agachado, Si estás agachado, estás Si no estás agachado, estás haciendo esto, eso es correcto Y podemos arrastrar desde aquí y volver a decir Caché. Podemos guardar una nueva pose de caché y llamar a este movimiento de rifle en caché así Bien, todo se ve correcto. Y vamos a compilar. Y voy a organizar esto otra vez igual que antes. Ahora está organizado. Y voy a tomar todo esto y moverlo justo debajo de la de la pistola, justo así aquí. ¿Bien? Intenta hacerlo lo mejor posible. Ahora lo tenemos aquí. Tenemos el de los desarmados, tenemos el de la pistola, y también tenemos el para el rifle Lo que podemos hacer ahora es que podemos compilar y guardar todo solo para asegurarnos nada se estrelle para la pistola. Ahora podemos arrastrar y dice que podemos usar el ahora este solo está usando el movimiento porque a partir del movimiento determinamos si debemos usar el agachado o el soporte De esta búsqueda de caché y recuerde seleccionar el movimiento de pistola en caché, no el movimiento de la máquina de estado en caché Entonces para el rifle, podemos arrastrar y buscar de nuevo el caché. Y elige el único movimiento de rifle en caché. Adelante y organiza esto lo mejor que puedas. También voy a arrastrar esto un poco hacia abajo. Se ve un poco mejor, tal vez algo así. Y ahora vamos a compilar. Y ahora se puede ver que la nota se ha ido porque hemos enchufado todo Y si hago clic en el arma brotada y cambio a pistola, está funcionando Si lo cambio a rifle, está funcionando. Si lo vuelvo a cambiar a desarmado , también está funcionando. Ahora, también puedes cambiar el tiempo de mezcla si lo deseas. Entonces podemos ver si aumentas todos esos e intentas cambiarlos Ahora lo que puedes hacer es si te cambias a la pistola y al rifle, puedes ver que cambia instantáneamente. Lo que puedes hacer, también puedes aumentar esta vez. Por ejemplo, puedo aumentarlo a dos. De hecho, se mezclará mucho más lento. Recuerdo compilar de otra manera no va a funcionar. Compilar y luego cambiar a pistola. Ya puedes ver que lleva mucho tiempo antes de que cambie a esas poses. Puedes intentar jugar con esto. Por ejemplo, 0.0 0.3 tal vez dos a extremo. Vamos a compilar y seleccionemos fusil de pistola. A lo mejor eso es mucho mejor. Creo que sigue siendo demasiado lento. 0.20 0.20 0.2 Vamos a compilar. Seleccionemos la pistola de fusil desarmada. Simplemente compilando, asegurándose de que esté funcionando correctamente. Creo que eso es mucho mejor. 0.2 en lugar de 0.1 es mucho mejor. Ahora ya se puede ver que hemos terminado con el movimiento, y tal vez podamos colocar este de aquí en el medio. Esta es la última. Y ahora todo está funcionando. Así que siempre podremos cambiar esta arma equipada más adelante en nuestra base de jugadores cuando estemos saqueando armas Y automáticamente, en el gráfico de eventos, establecerá esa variable aquí y cambiará en el gráfico de animación. Pero por ahora, para el arma equipada, sólo voy a ponerla a un armado por defecto, compilar todo, guardar todo, y ya estamos listos para seguir adelante. 86. 8.01 importa los Assets de armas: Sigamos ahora e importemos los activos de armas. Para eso, vuelve al lanzador de Epic Games. Y dentro de aquí, vayamos al mercado. En el marketplace, vamos a Navegar y vamos a Weapons In Weapons, tienes que hacer clic en los gratuitos para que podamos obtener algunos activos gratuitos que podamos usar para el curso. He descargado este llamado FPS Weapon Bundle. Si da clic en él, continúe y haga clic en Descargar. Si aún no lo has descargado, puedes hacer clic en Agregar al proyecto. Una vez que se haya descargado de nuevo, haga clic en Mostrar todos los proyectos, y luego seleccione nuestro propio proyecto, Counterstrike Y adelante y selecciona la versión que sea compatible con la última versión, esta. Realmente no importa que sea esta versión con la que sea compatible, no nos va a dar ningún problema. Adelante, selecciónala y ve a Agregar al proyecto. Se va a sumar esto a un proyecto. Y podría llevar algún tiempo. Si es la primera vez que lo haces, voy a volver aquí. Voy a descargar este también porque este pack aquí no contiene ninguna pistola. Y yo también quiero hacer una pistola, claro. Entonces ya sabes disparar con pistolas y así sucesivamente Entonces no son sólo rifles. Vamos a dar click en éste. Y volvamos a descargar este. Armas militares Doc. Adelante y descárgalo. También puedes usar esta, plata militar en su lugar, pero yo solo voy a usar esta. Sigue adelante y descárgalo y vuelve a Agregar al Proyecto, haz clic en Mostrar Todos los Proyectos, Selecciona nuestro Proyecto y selecciona la última versión. Y Agregar al Proyecto también. Entonces puedes ver una vez esto haya terminado y yo pueda cerrarlo, puedes ver dentro de nuestro proyecto ahora tenemos el paquete de armas FPS y también tenemos el arma militar doc. Y antes de hacer algo, voy a seleccionar ambos y luego arrastrarlos a la carpeta Marketplace. Y selecciona Mover aquí. Y esta va a tomar algún tiempo, así que saltaré adelante hasta que termine. Todo bien. Entonces ahora se han movido, y como pueden ver, la carpeta Marketplace, ahora tengo el muelle de Arma Militar y el paquete de armas FPS también. Pero como pueden ver afuera, todavía tengo esta carpeta de paquetes de armas FPS. Y esto podría pasarte a ti también. Puedes ver que están vacíos y si golpeo eliminar en mi teclado y selecciono Eliminar, no se eliminará. Y esto sucede a veces en el motor real. Entonces lo que hago, normalmente solo guardo el proyecto y sigo adelante y lo cierro. Entonces abro el archivo del proyecto, así que está dentro de aquí, el contraataque. Y luego abro la carpeta de contenido y después borro este paquete FPS. Así que solo asegúrate de que ya esté dentro del marketplace, todos los archivos. Entonces puedes ver aquí, el paquete FPS, está vacío y no hay nada dentro de él. No sé por qué no está borrando por alguna razón. Así que sigamos adelante y eliminemos esta carpeta. Y luego puedo seguir adelante en la biblioteca y volver a ejecutar mi proyecto. Y debería borrarse ahora, como pueden ver aquí, una vez que vuelva a estar dentro de mi proyecto, la carpeta se ha ido porque acabamos de borrarla. Y en la carpeta Marketplace tenemos el paquete de armas FPS y el arma militar doc. 87. 8.02 Configura el arma: Ahora que importamos las armas, sigamos adelante y pongámoslas. Hagamos clic derecho aquí en la carpeta Blueprint. Y hagamos una nueva carpeta, y llamemos a ésta armas. Vamos a hacer clic derecho en este y establecer un nuevo color para esta carpeta. Nuevamente, abramos esta carpeta, haga clic derecho, vaya a la clase Blueprint Para éste, sólo vamos a crear un acto sencillo. Porque un arma es sólo un Ta estático que está ahí en el mundo. No es un peón o un personaje que puedas controlar. Y tampoco es uno de esos, es sólo un actor. Llamemos a este BP Arma Base. De nuevo, voy a crear una clase Base. Y a partir de esa podemos escribir, dar clic y seleccionar Crear Clase de Blueprint Infantil Para éste vamos, voy a hacer un AK 47, así podemos llamarlo PK 47. Entonces puede hacer clic derecho nuevamente y crear una clase de blueprint hijo para esta Vamos a llamarlo BP M41. Ahí está la otra arma. El último es una pistola. Podemos hacer clic derecho Crear clase de plano infantil y llamarlo pistola BP Solo sigamos adelante y guardemos todo. Primero abramos la base de armas porque tenemos que hacer algún trabajo dentro de aquí Primero. Aquí necesitamos un nuevo componente. El componente que necesitamos es una malla estática o una malla esquelética, porque necesitamos agregar el modelo tres D para el arma Ahora bien, si haces clic en esto y buscas malla, tenemos ya sea la malla esquelética y la malla estática Si no sabes la diferencia es que la malla estática es solo un modelo estático de tres D sin ninguna animación. Y tenemos una malla esquelética que es un modelo de tres D con animaciones Si regresas, en realidad tenemos que comprobarlo aquí para las armas del mercado, lo que vienen como si abres el paquete de armas FPS, abres las armas y abres mallas Y abramos esta K por siete. Y se puede ver que es una malla esquelética. Si ves esta línea rosa o también puedes mirar aquí abajo, dice malla esquelética En realidad tenemos que agregarlo como una malla esquelética. También podemos revisar la otra carpeta solo para asegurarnos de que el documento de armas militares abra armas y también viene como mallas esqueléticas Puedes ver aquí que tienen animaciones. Tienen animaciones de recarga, animaciones disparo y así sucesivamente Estas armas tienen animaciones. Si volvemos a la base de armas dentro de aquí, hagamos clic en Ad, y busquemos malla esquelética Y selecciónala aquí. Y llamémoslo arma. Ahora para esta arma aquí, también necesitamos una esfera de colisión. Porque necesitamos interactuar con el arma. Por ejemplo, si está en el suelo, tenemos que ir a esa arma y saquearla Es por ello que necesitamos una esfera de colisión para poder chocar con ella y hacer algunas acciones Si solo busca colisión, podemos ver que podemos hacer una colisión de caja, una colisión cápsula o una colisión de esfera. Ahora son iguales, es solo la forma que es diferente. Entonces solo voy a seleccionar una colisión de esfera para esta. Y voy a hacer este radio de esfera un poco más grande. Ahora, ya no importa porque vamos a ajustarlo después. Cuando probamos las armas dentro del nivel, entonces podemos hacer el radio de lo lejos que puede el jugador saquear el arma y así sucesivamente Así es como lo controlas aquí. Pero por ahora, sólo voy a ponerlo a un número aleatorio y seguir adelante y guardar todo. Ahora cerremos la base de armas y vayamos a los planos infantiles Si abres armas. Y abramos aquí el AK 47. Ahora para el arma, si haces clic en ella, seleccionemos la malla esquelética Si solo buscas, no sé por qué se llama KA 47, pero puedes buscarlo y puedes encontrarlo y seleccionar éste. Y abramos el segundo. Y puedes dar click en arma, abrir esta de aquí y buscar R cuatro. Puedes seleccionarlo aquí, luego abrir la última, la pistola, hacer clic en el arma y luego seleccionar o simplemente buscar pistola y seleccionar esta de aquí. Ahora se puede ver que todas las armas están ahora dentro de aquí. Adelante y compile o todos los planos. Pero como puedes ver aquí, todos están girando de esta manera. Esa es en realidad la dirección equivocada, porque en el motor Unreal, el eje X es el eje delantero Y puedes ver aquí, el punto de pivote rojo aquí es el eje delantero. Las armas tienen que girar de esta manera. Aquí todos están girando de manera equivocada. Como pueden ver, tenemos que voltearlos a todos en lugar de simplemente girarlos uno por uno así. Y tenemos que ir aquí y darle la vuelta también. De hecho hagamos otra cosa. Recuerde que tenemos una base de armas que es la clase de planos padres Cualquier cosa que hagas dentro de aquí se aplicará a todos los niños. Si haces clic en el arma y tomas la herramienta de rotación y la giras -90 grados, vas adelante y compilas Ahora echa un vistazo a la pistola M cuatro, la AK. Todos están girando la manera correcta ahora que es la forma correcta en que deben girar. Adelante y guarda todo. Creo que eso fue todo para todo. Ahora que tenemos eso, solo arrastrémoslos al nivel y echemos un vistazo a cómo se ven. Sólo voy a separarlos un poco. Voy a seleccionarlos a todos y luego moverlos aquí en el nivel. Nuevamente, puedes hacer clic en G para ocultar todos los íconos, y puedes echarles un vistazo y todo queda bien. Por ahora, adelante y guarda todo, y sigamos adelante. 88. 8.03 Física habilitadora: Como pueden ver aquí, cuando hago clic en play, todas las armas están flotando. Si voy en realidad están del lado terrorista. Si hago clic en play y selecciono terroristas, podemos ver que todas las armas están flotando por ahí. Queremos que caigan al suelo. En lugar de tenerlos a flotar así. Necesitamos habilitar la física. Si volvemos al plano y antes de hacer eso, en realidad voy a reducir la cantidad de jugadores que espío servidor de lecciones Bien, vamos a las armas, abrimos la base de armas. Dentro de aquí haces clic en el arma. Puedes ver algo llamado Simular Física aquí bajo Física Simular Física. No obstante, por alguna razón no puedo seleccionar y no tengo idea de por qué. Pero lo que puedes hacer es simplemente eliminar esos eventos por ahora. En el Begin Play, hagámoslo aquí. Tomemos el arma. Vamos a arrastrar desde aquí. Si solo escribes el mismo nombre que puedes ver aquí, das clic en Arma. Se llama Simular Física. Si arrastras desde aquí y solo escribes Simular, puedes ver que es este llamado Set Simulate Physics. Si solo lo seleccionas aquí y lo conectas y solo lo configuras en true para que simule la física y siga adelante y compile Ahora no funciona todavía porque la colisión está mal Si haces clic en el arma y bajas a la colisión, puedes ver que no tiene colisión. Si haces clic en jugar ahora mismo y seleccionas al terrorista, puedes ver que aún no se están cayendo. Siguen volando en el aire. Vamos a cerrarlo y para la colisión, cambiémoslo a la costumbre. Por ahora, solo voy a dar click en Ignorar la Colisión va a ignorar todo por ahora. Voy aquí por la no colisión. Adelante y selecciona solo la física. Nosotros solo queremos física. Qué significa consulta. Significa que si podemos interactuar con el arma o no. Realmente no necesitamos eso porque nuestra esfera de colisión es en realidad solo una consulta. Esto es como si estuviéramos colisionando aquí. Estamos haciendo algo de acción con esta esfera de colisión. Esto es una colisión y puedes interactuar con ella sin tener física. Pero para el arma, no quiero eso porque ya tenemos la esfera de colisión para esta, solo queremos que la física esté habilitada. Entonces voy a ignorar todo. No obstante, hay que bloquear la estática del mundo y la dinámica mundial porque ahora es el piso. Si ignoras todo, puedes ver si hago clic en jugar ahora y selecciono al terrorista, las armas se han ido. Esto es porque no has bloqueado el suelo. Están cayendo por el suelo. Tenemos que bloquear el suelo, el mundo estático y dinámico. Adelante y compile y haga clic en jugar y seleccione terroristas. De nuevo, en realidad voy a tomar todos esos y solo tenerlos aquí en cambio así. Sólo tienes que tenerlos en el medio para que pueda verlas más rápido si hago clic en jugar, voy a terrorista, puedes ver que ahora están siendo bloqueados por el suelo y están cayendo al suelo, bien. Ahora también se puede ver si entro en ellos como el terrorista o como el peón, nada está pasando realmente y esto es porque no estoy colisionando con Ahora bien, si quieres que el peón choque con ellos, no lo voy a hacer dentro de este proyecto Sin embargo, si quieres eso, también puedes seleccionar que tu estanque que estás controlando también los bloqueará. Y eso significa que ahora puedes interactuar con ellos como el peón para que podamos entrar en ellos y la colisión también está funcionando También puedes hacerlo si así lo deseas. No obstante, para este proyecto, realidad no voy a hacer eso, voy a ignorar esto por ahora. Entonces ahora tenemos habilitada la física, y estamos simulando la física para todas las armas Así que sigamos adelante y compilemos y guardemos todo, y sigamos adelante. 89. 8.04 actores de replicación: Anteriormente replicábamos variables, pero también se pueden replicar actores de planos Y tenemos que hacer eso para que se muestren correctamente para todos los clientes. Si abres la base de armas y aquí en la clase por defecto, puedes ver que también se llama réplicas Y hay que seleccionar eso si quieres mostrar la información correcta del servidor a todos los clientes que muestran estas armas, así como el movimiento para las armas y así sucesivamente. Entonces hay que presionar réplicas. Entonces funciona en multiplicador. También hay que replicar el movimiento también, para asegurarse de que el movimiento de ellos no esté tapando también Esto era lo único que tienes que hacer a veces, si te olvidas de esto, a veces haces algún código y puedes ver que no está funcionando para los clientes y te confundes por qué es. Entonces, pero es porque también hay que ir en un actor que creas, por ejemplo, esta es la base de armas. Y hay que seleccionar réplicas así como replicar movimiento. Funciona para multijugador. Adelante y guarda todo. Como puede ver, como es el plano padre, también se replica ahora para todos los niños también Adelante, guarda todo, y sigamos adelante. 90. 8.05 Superposición de armas: Ahora estamos listos para hacer algunos eventos para cuando nos superpongamos con el arma. Para verlo mejor, puedes abrir la base de armas por ahora, si haces clic en la esfera, puedes hacer click en este juego de ocultación Se puede quitar. Y si compilas, puedes ver la esfera de colisión en el juego. Es agradable ver aquí. Se puede ver a qué distancia se puede interactuar con el arma. Siempre puedes hacerlo más grande o más pequeño dependiendo de tu juego que estés creando. Pero siempre es agradable ver dentro de aquí. Hagamos algunos eventos de interacción. Lo que queremos hacer aquí en la base de armas, queremos hacer clic en la colisión Esfera en la parte inferior. Si vas aquí en el panel de detalles, puedes ver este llamado Componente Comenzar Superposición. Si haces clic en el signo más, éste creará el evento para ti. Ahora dice ¿qué debería pasar cada vez que te superpongas con esta colisión de esfera? Para éste, primero tengo que comprobar si es el jugador el que está colisionando con él. Porque si tienes enemigos corriendo por ahí o algo más chocando con él, en realidad disparará este código Quiero asegurarme de que sea solo el jugador quien pueda interactuar con éste. El otro actor es el actor que está interactuando con esta esfera de colisión. Puedo dirigir de este otro actor y decir actor tiene etiqueta y luego puedo seleccionar esta función aquí. Y lo que esta función está diciendo es que si el actor que está interactuando con esta colisión de esfera tiene esta etiqueta específica, puedo seguir adelante y disparar el código. Puedo hacer una sucursal aquí. Si eso es cierto, el jugador tiene esta etiqueta que estamos a punto de escribir. Los eventos pueden disparar aquí la etiqueta que necesitamos escribir aquí. Tenemos que asignar una etiqueta para el jugador. Si solo vuelves a abrir al jugador, base de jugadores aquí, dentro de aquí en la clase por defecto. Si buscas etiqueta en el panel de detalles, puedes ver esta debajo de actor. No está debajo de las etiquetas. Tienes que asegurarte de que está bajo actor. Y se pueden ver las etiquetas. Se llama actor tiene etiqueta. Tiene que estar bajo el actor. Si haces clic en la cláusula, y solo puedo llamar a este jugador. Ahora agregamos una etiqueta aquí para esta cláusula blueprint. Agregamos el tag player. Lo que podemos hacer es ir a la base de armas y solo preguntar, ¿este actor tiene el tag player? Si eso es cierto, podemos despedir estas funciones. Ahora, sólo es cierto para los jugadores de la base de jugadores. Tienen el tag player. Y esto se aplicará tanto al terrorista como al antiterrorista, porque de nuevo, esta es la cláusula del plano matriz Vamos a abrir aquí. Ahora para colisiones aquí, para la superposición de componentes, siempre hay que asegurarse de que lo ejecuta a través del servidor para evitar trampas A partir de aquí, arrastra y di que el switch tiene autoridad y luego podemos escribir el código de esta autoridad aquí, que es el servidor siempre asegúrate de que ejecutes este código a través del servidor. Porque si no lo haces, digamos que el cliente está parado aquí y de alguna manera están haciendo trampa, tienen algún software descargado, en realidad pueden interactuar con el arma aunque estén aquí parados haciéndola correr por el servidor. El servidor comprueba si el jugador está realmente interactuando con él o no. Bien, de este otro actor, lo que podemos hacer es que podamos arrastrar también. Ahora sabemos que es el jugador y ahora lo ejecutamos a través del servidor. Podemos arrastrar desde aquí y decir obtener referencia del jugador porque recuerda que es el jugador quien está interactuando con él. Y también hicimos esto obtener el jugador F desde la interfaz. Antes tenemos la referencia de los jugadores, así podemos seguir adelante y conectarlo. Haga doble clic aquí para hacer notas de reencaminamiento y hacerlo más limpio Así como así, Dios y compilar. Y ahora realmente podemos interactuar con él. Ahora para ver si esto es correcto, puedes arrastrar desde aquí y escribir una cadena de impresión. Tal vez puedas conectar este jugador a él. Adelante y mira si esta fuera. Si haces clic en play y en realidad vamos a seleccionar al terrorista, entonces no estamos del otro lado del mapa. Ahora bien, si voy hasta aquí e interactúo con él, deberían ver que aquí dice, terrorista BP. Ahora en realidad es correcto, estamos interactuando con él. Todo está funcionando, así que adelante y borra esto por ahora, compile y sigamos adelante. 91. 8.06 Establece el tipo de arma: Aunque, antes de continuar, necesito agregar el tipo de arma a cada arma. Y esto es agradable de usar más adelante porque siempre es bueno saber si el arma que estás saqueando es un rifle o una pistola Lo necesitamos más adelante para el inventario, así que no saqueamos múltiples rifles, múltiples pistolas, y así sucesivamente Por supuesto, puedes hacerlo en tu propio juego, pero también revisando, por ejemplo, no puedes saquear tres rifles y cosas así Entonces tienes que saber si es un rifle o una pistola lo que estás saqueando, porque ahora mismo no tenemos idea de lo que estamos saqueando, solo estamos interactuando con estos artículos Lo que podemos hacer es aquí en la base de armas. En realidad, antes de hacer eso, vayamos a las enumeraciones. Y ya tenemos esta llamada tipo arma, en realidad ya tenemos esta. Volvamos a la base de armas y agreguémosla aquí. Haga clic en el más en las variables y simplemente escriba el tipo de arma aquí. Para el tipo de variable se puede buscar el tipo de arma, esta es nuestra enumeración. Salga y selecciónelo, y haga clic y compile y guarde todo. Ahora lo genial de esto es que lo has agregado a la base de armas que es la clase padre de estos planos de armas Realmente agradable es si abres el AK 47 ahora y haces clic en los valores predeterminados de clase, ahora puedes ver el tipo de arma variable y puedes seleccionar qué tipo de arma es esta Si agrega variables a la clase padre, son utilizables en las clases infantiles. Ya puedes ver si abro el 44 o la pistola, hago clic en los valores predeterminados de Clase, puedo ver las variables de la clase padre Lo que sea que agregues aquí también se puede aplicar a todos los niños. Ahora haciendo clic en el AK, ahora puedo seleccionar el tipo de arma para que sea un rifle. Ya puedo compilar. Puedo ir a los cuatro seleccionar el tipo de arma para ser un rifle también. Si abro la pistola, voy a los valores por defecto de clase y hago clic aquí arriba y selecciono pistola para el tipo de arma Adelante y compile para todos esos planos. Y ahora podemos salvarlos. Sí, ahora sabemos cuál es el tipo de arma para todos ellos. Esto es una pistola, esto es un rifle. Y esto también es un rifle. Y tenemos que hacer eso para que sepamos lo que estamos saqueando. 92. 8.07 Comprueba si el jugador tiene el arma: Ahora vamos a crear algunos, un inventario de armas para el jugador y verificar si el jugador ya tiene el arma. Porque lo que estoy tratando de hacer es si el jugador interactúa con el arma, que verificar si el jugador ya tiene el arma o no Si el jugador ya tiene el arma, no puede saquear el arma Sólo va a saquear el rifle si no tienen ya un rifle Y van a saquear la pistola si no tienen ya una pistola Sigamos adelante en la base de jugadores y dentro de aquí, hagamos clic en el más. Voy a hacer una nueva variable llamada Inventario de Armas. Aquí solo buscamos el tipo de arma o la base de armas, porque necesitamos agregar las armas a ese inventario, tienen que ser el tipo de base de armas. Y sigue adelante y selecciona la referencia del objeto. Ahora, ya que ahora es un inventario, permítanme seguir adelante y dar click en la X aquí. Al ser un inventario, tenemos que cambiarlo de una sola variable a una matriz. Recuerda, una matriz es como una caja donde le agregas cosas. Tenemos que sumar las diferentes armas que has saqueado Se puede ver si hago clic en el más. Ahora aquí no puedo seleccionar porque es la clase padre. Y en realidad no podemos simplemente agregar cosas aquí automáticamente. Pero puedes ver que puedes agregar el rifle y la pistola durante el juego. Puedes agregar múltiples armas dentro de este inventario. Pero para nosotros, queremos agregar, por ejemplo, un rifle y una pistola. Y puedes tener una escopeta y así sucesivamente para tu juego. Pero por ahora solo tenemos el rifle y la pistola. Adelante y solo borránela por ahora. Esto fue sólo por ejemplo. Volvamos a la base de jugadores. Ahora desde la base de jugadores, como ya tenemos la referencia, podemos arrastrar desde aquí y buscar inventario de armas y podemos obtener esa matriz. Ahora para esta matriz, queremos recorrer todo este inventario y verificar si el jugador tiene un rifle que podamos arrastrar desde aquí y decir por cada bucle con freno. Y puedes seguir adelante y seleccionar eso. Ahora puedes ver las armas a través de este giro, si sostienes el ratón sobre ella. Ahora es un solo elemento. Es la base de armas BP. Va a tomar cada arma dentro de aquí y recorrer el código, recorrer esta matriz, y puedes hacer algo con ella. Ahora lo que estamos tratando de hacer es que estamos tratando de verificar si el jugador ya tiene esta arma con la que están tratando de interactuar. Lo que tenemos que hacer es tomar cada una de las armas del inventario que necesitamos arrastrar de aquí y verificar su tipo de arma. Recuerda, acabas de hacer este tipo de arma, así puedes llamarla aquí. Ahora está recorriendo cada uno de ellos. Estás tomando el tipo de arma, solo estás preguntando aquí, arrastrando y diciendo igual, si este tipo de arma dentro de tu inventario es igual a este tipo de arma que estás tratando de saquear Y podemos hacer una rama, si eso es correcto, entonces no puedes saquear el arma Tenemos que hacerlo más adelante para que no puedas saquear el arma. No obstante, si es falso, en realidad podemos saquearlo. Así es como lo haces. Ahora necesitamos hacer este replicado porque el cliente también necesita ver esta información, qué tipo de arma tienes Voy a seleccionar replicarlo. Adelante, compilar y guardar todo. Ahora puedes ver aquí estamos tomando el inventario de armas. Estamos tratando de verificar si el jugador ya tiene el arma. Estamos tomando el tipo de arma con el arma dentro del inventario. Y estamos comprobando si este tipo de arma es igual a la que estamos tratando de saquear Si eso es correcto, no podemos saquear el arma porque ya tenemos el arma en el inventario Si es falso, podemos saquear el arma. Bien, este con descanso, podemos usarlo más tarde. Puedo explicar lo que eso significa, pero por ahora, ahora podemos guardar todo y podemos pasar a la siguiente lección. 93. 8.08 Saquea el arma: Ahora sigamos adelante y hagamos posible que el jugador saquee el arma Entonces ahora comprobamos que el arma está en el inventario. Si esto es cierto, sigamos primero en la base de jugadores y hagamos un nuevo lingote, y voy a llamarlo arma de botín Voy a cambiarlo en lingotes. Vamos a cambiarlo a una sola variable en lugar de una matriz. Vamos a compilar. Ahora éste va a ser cierto si el jugador puede saquear el arma Y va a ser falso si el jugador no puede. Lo que voy a hacer es que lo voy a poner por defecto. Por lo que el jugador puede saquear el arma por defecto, a menos que encontremos aquí en el inventario que el jugador ya tiene un arma por defecto Adelante y configúrelo en verdad. Salvemos todo y vayamos ahora a la base de armas. Ahora lo que podemos hacer es romper de nuevo con este jugador y buscar esto puede mucho lingotes de armas Lo vamos a poner aquí. Si encontramos esta arma que estamos tratando de saquear, si la encontramos en el inventario, vamos a poner en fallas Es cierto por defecto, pero vamos a ponerle a fallas que el jugador no pueda saquear el arma si realmente la encontramos en el inventario Este bucle de aquí no lo encuentra en el inventario para el jugador, solo va a ser culpa de todos los artículos por los que está buscando. Al final, cuando se completa el bucle, éste sigue siendo cierto. Si no encontramos ninguna arma, sigue siendo cierto. Para que podamos seguir adelante y saquear el arma que podamos arrastrar de ésta Ahora otra vez, y puedo buscar puede saquear arma. Dependiendo de si esto es verdadero o falso, podemos hacer alguna acción aquí cuando esté completa. Primero solo va a recorrer los artículos. Y después de eso vamos a comprobar si esto puede saquear arma ahora es falsa o cierta Ahora voy a organizar esto un poco. Va a agregar un nodo de roca trasera aquí y enchufarlo aquí. En cambio, si esto es cierto, si el jugador realmente puede saquear el arma, sigamos adelante en la base de jugadores y bajemos aquí Voy a escribir click y hacer un nuevo evento personalizado. Llamemos de nuevo a esto un lote arma. Sólo voy a ejecutarlo a través del servidor. Solo asegurándome de que ahora ya se esté ejecutando a través del servidor. Porque recuerdas que lo estás pasando por la autoridad. Ya se está ejecutando a través del servidor. Sin embargo, solo me gustaría hacerlo esta manera así me mantengo consistente. Simplemente puedes escribir este servidor uno de inmediato. No tienes que hacer esto porque ya estamos corriendo por el servidor por ti. Solo puedes usar este si lo deseas, pero solo me gusta mantenerme consistente con mi código. Voy a ejecutarlo a través del servidor aquí. De nuevo, voy a arrastrar de éste y ejecutar éste a través del servidor así. Entonces voy a escribir mi código por aquí. Ahora de nuevo, puedes simplemente escribir un código por aquí si lo deseas, pero en el futuro, si no lo estás ejecutando a través del servidor, tienes que ejecutarlo por aquí. Ahora tenemos esto escrito. Ahora lo que queremos hacer cuando saqueamos el arma, solo queremos agregar esta arma saqueada al inventario Estamos tomando este inventario de armas y estamos diciendo set array element. Porque queremos agregarlo al inventario, te pregunta, ¿a qué índice quieres agregarlo? Solo quiero agregarlo a cualquier índice que esté disponible. Entonces voy a dirigir desde aquí y decir longitud, entonces voy a agregarlo aquí. Ahora recuerden, las matrices parten del índice de cero y luego van a 123 y así sucesivamente. Si arrastras desde aquí y dices, último índice en este momento, el último índice es tres, o esta matriz aquí. Si estás tomando este último índice y enchufándolo aquí, en realidad vas a sobrescribir cualquier arma que esté en el índice de tres Si quieres usar el último índice, tienes que tomar el último índice y decir más uno. Estás encontrando el último índice y luego en realidad estás agregando la nueva arma aquí en el índice cuatro, que puedes enchufar aquí. Ahora un mejor método para hacerlo es simplemente encontrar la longitud. La longitud es 1234. En realidad lo va a sumar al índice de cuatro. No tenemos que hacer esto aquí. Es por ello que uso la longitud. Se va a dar salida cuatro. Y también puedes ver esto si solo escribes una cadena de impresión y conectas esto a aquí, siempre es bueno agregar cadenas de impresión. Si quieres verificar valores por lo que estás haciendo, voy a agregarlo a este índice. Ahora bien, ¿qué artículo queremos agregar? Es el arma que queremos agregar. Ahora bien, en realidad no tenemos ninguna referencia al arma. Hagámoslo. Vamos a hacer clic en Pérdida en este evento aquí. Y busquemos base de armas. Y vamos a seleccionarlo aquí y llamarlo arma. También puedes llamarlo arma saqueada si deseas arma. Y entonces voy a tomarlo de aquí y conectarlo a este evento. Y ahora podemos usarlo por aquí en la base de armas. Si mucho arma es verdad, entonces queremos tomarla aquí desde la base de jugadores y buscar mucho arma. Así es como lo llamamos. Adelante y selecciónala y ya puedes conectarla aquí de nuevo, voy a hacer click para hacer notas re escritas para que sea un poco más legible. Así como así. Ahora te va a preguntar, ¿ cuál es el arma? ¿Cuál es la variable para ello? Ahora la forma en que definas esto es, recuerda que estás dentro de la base de armas si solo golpeas y escribes a ti mismo porque es el arma con la que estás interactuando. Si interactúas con este de aquí, sabe que es el 41 porque es con el que estás interactuando. Y si escribes yo como referencia, sabe que esta arma es en realidad la cláusula de un plano aquí abajo Si se dice que arma es falsa, puede saquear arma. Entonces significa que no puedes saquear el arma porque en algún momento realmente encontró el arma en el inventario y no puedes saquear el Ahora bien, si encuentra el arma en el inventario en digamos por ejemplo, el primer índice, en realidad encontró el arma. Y no tiene sentido recorrer todas las demás armas porque ya encontró el arma y no se puede saquearla En fin, esto es lo que es esto, lo que significa esta ruptura. Quiero romper el lazo. Ya no quiero recorrer esta matriz. Cuando encuentre el arma a través del inventario y pueda poner el arma de botín de lata a caídas De hecho quiero arrastrar esto y configurarlo para que se rompa. Ahora puedo hacer doble clic y hacer algunas notas traseras para que sea más fácil de leer. Lo que digo es, es cuando encuentres esta arma en el inventario, adelante y rompas el bucle. Porque no tiene sentido recorrer todos los artículos cuando ya encontré el artículo y no puedo saquearlo de todos modos Entonces se va a romper y esto puede saquear, arma está puesta a caídas Entonces no vas a saquear nada porque aquí no tenemos ningún código Pero recuerda, hay que volver a poner ésta en verdad porque es verdad. Por defecto tiene que ser cierto. Esto va a fallar la próxima vez que vayas a interactuar con un arma. Va a ser falso por defecto porque no te acordaste de establecerlo en true. Por defecto va a ser falso. Y aunque puedas saquear un arma, aunque no haya encontrado nada, ésta será falsa La próxima vez que saquees un arma. Recuerda arrastrar de esto otra vez y buscar de nuevo para lata mucho un arma y set y luego recuerda ponerla en verdad otra vez. Por defecto, cada vez que vuelvas a interactuar con un arma en el futuro puedes establecer, pero en realidad puedes saquear el arma si no la tienes en el inventario También puedo simplemente hacer clic y arrastrar esto aquí en realidad va a verse mucho mejor. Algo así. Entonces ahora debería ser cierto, puedes seguir adelante y compilar todo de nuevo. Recuerda si lo hiciste como yo, adelante en la base de jugadores y en el inventario, voy a eliminar todos los aquí que acabo de hacer para demostrar el inventario de armas por defecto no debería tener nada. Adelante y guarda todo. Y ahora para esta arma aquí, tomémosla aquí arriba, organízala un poco mejor. Y ahora lo que puedes hacer ahora, puedes conectar esta arma porque aquí la hemos definido como la autorreferencia. Ahora puedes tomar, esta arma va a correr por aquí y se va a agregar al inventario. Nuevamente, haga doble clic para hacer notas de ruta trasera. Ahora lo estás saqueando al inventario. Y sigue adelante y selecciona el tamaño que mejor se ajuste. Se va a asegurar de agregarlo a esa matriz. Adelante y compilar. Y ahora debería funcionar correctamente para probarlo. Para asegurarte, sigue adelante y arrastra desde aquí y escribe una cadena de impresión. Y siempre puedes tomar este, vamos a pegarlo aquí. Y vamos a arrastrar y decir consigue y consigue una copia. Y siempre podemos obtener el índice cero porque esto es, recuerda en arrays empieza con el índice cero. Estamos obteniendo el índice cero y asegurándonos de que en realidad estamos saqueando el arma Esto. Y agrégalo a la cuerda para que sepa el nombre del arma. Entonces ahora vamos a imprimir el nombre del arma en la pantalla que hemos saqueado, ir a compilar y guardar todo Y asegurémonos de que todo esté funcionando. Vamos a hacer clic en play. Selecciona Terroristas Y si entro aquí va a decir AK 47 como puedes ver aquí. Ahora el uno realmente no importa, es solo el número para este plano Podemos tomar esta. Ahora puedes ver que no puedo interactuar con él porque ya tengo un rifle en mi inventario. Entonces ahora si vuelvo a jugar y selecciono al terrorista y paso por el 41, imprime el 41 en la pantalla de aquí arriba. Ahora bien, si paso por la pistola, porque la puedes ver para la K, no imprime nada porque ya tengo un rifle que está funcionando correctamente. Ahora bien, si paso por la pistola, debería imprimirla. Y se puede ver que está imprimiendo sin embargo está imprimiendo el nombre equivocado. Y recuerda para la cadena de impresión, solo estamos imprimiendo el índice cero, así que solo está imprimiendo el 41. Nosotros solo fuerte siempre puede configurarlo para indexar uno y va a imprimir la pistola. Ahora bien, si quieres imprimir todo dentro de este inventario para ver qué hay dentro de él, siempre arrastra desde aquí y di por cada bucle ahora vas a recorrer toda esta matriz y podrás conectar el bucle. Y luego puedes seleccionar cada uno del nombre único del ítem que está dentro de aquí y puedes imprimirlo como una cadena. Puedo seguir adelante y recoger el AK por ejemplo. Entonces puedes ver que lo imprime en la pantalla. Puedo ir a la pistola y ahora va a imprimir tanto el AK como la pistola a la pantalla. Está funcionando como se supone que debe hacerlo. Guardemos todo y pasemos al siguiente. 94. 8.09 Crea el zócalo de arma: Antes de que podamos unir el arma a las manos del jugador, tenemos que crear un socket. Recuerda, antes creamos un socket. Cuando creamos la cámara del jugador y colocamos esa cámara a la cabeza del jugador, necesitamos agregar otro socket donde adjuntamos el arma a la mano del jugador. Vamos a la carpeta Marketplace y vayamos al personaje militar Silva para adentrarnos aquí en ese esqueleto. Recuerda que esta es la cámara, esta es la toma para la cámara que agregamos anteriormente. Ahora lo que tenemos que hacer es añadir un socket para la mano del jugador para que pueda sostener el arma para la mano, ¿verdad? Aquí es donde usualmente sostienes un arma. Tenerlo en tu mano derecha. Para la mano, derecha, puedo hacer click derecho y agregar un socket aquí. Voy a dar click sobre dos para cambiarle el nombre. Y lo voy a llamar Rifle. Ahora voy a agregar una toma para un rifle y una toma para la pistola. Ahora, antes intenté solo agregar uno para el arma. Arma y podría agregarle la pistola y el rifle. Sin embargo, la posición en la mano son diferentes. Es mucho mejor agregar uno para el rifle y otro para la pistola. Se ve mucho mejor seleccionando rifle S. Sigamos adelante y agreguemos una animación previa para que podamos ver realmente cómo se ve si solo busco rifle y busco uno de ellos. Por ejemplo, el rifle inactivo de animación. Voy a pausar esta animación al primer fotograma solo para que esté quieta y no se mueva. Y puedo ajustar el zócalo. Al hacer clic en el rifle de toma, puedo hacer click derecho ahora para agregar vista previa D. Vamos a seguir adelante y agregar, por ejemplo, el 41, o se llama R cuatro, en realidad por aquí y seleccionarlo. Ahora podemos previsualizar y podemos ajustar el socket. Así que adelante y da clic en el zócalo. Y sigue adelante y selecciona la herramienta de rotación. Y ahora puedes girarlo 90 grados de esta manera. Y solo estoy tratando de ajustarlo a la mano para que se vea mejor. Voy a reducir la velocidad de mi cámara. Es demasiado rápido. Ahora puedes ver el único error aquí, puedes intentar ajustar el socket. Ahora mismo, el único error para este personaje es que en realidad sostiene el rifle así. Se ve raro porque va a disparar hacia adelante aquí abajo. Si estoy parado frente a él, en realidad está disparando al aire cuando se supone que me va a disparar . Eso está un poco mal en el lado de la animación. Realmente no se puede hacer nada al respecto. Intentemos hacerlo lo mejor que podamos. Esta rotación en realidad debería ser como, esto debería estar disparando hacia adelante. Vamos a quitar el chasquido para la rotación. Y estoy tratando de que apunte hacia adelante lo mejor posible. También puedes ir a la vista correcta. En realidad ir a la vista frontal. Para la vista frontal, puedes de nuevo, simplemente rotar el arma lo mejor que puedas. Aquí está. Tal vez mejor para ver cómo está apuntando así hacia adelante. Puedes volver a la perspectiva y echarle un vistazo, asegurarte de que esté apuntando hacia adelante y todo se vea genial, tal vez, algo así. Entonces puedes seguir adelante y moverlo hacia arriba, tratar de colocarlo en la mano del personaje, Algo así. Sólo intenta lo mejor posible para colocarlo correctamente en la mano del personaje. Por ejemplo, tener este gatillo por aquí, asegurándose de que no le pase por los dedos así aquí. Tratando de moverlo un poco hacia adelante, pero aún tenerlo en la mano del jugador. Ahora realmente no puedes hacerlo perfecto. Si se trataba de un proyecto serio, los personajes se diseñarían de tal manera que estén sujetando correctamente esta arma. El arma y el personaje encajan entre sí. Por ejemplo, en contraataque, lo están diseñando así Sin embargo, aquí para este, es solo un personaje aleatorio, animación aleatoria. Con armas aleatorias. No se puede esperar que esto sea 100% factible. Sólo estamos tratando de encajarlo lo mejor que podamos. Ahora bien, esta se ve bien. Todo se ve genial. Sólo puedo intentar arrastrarlo un poco atrás, así como así. Todo se ve genial. Ahora sostiene el arma. Y puedes ver si lo animo, va a quedar así. Luce increíble. Ahora hay que probarlo con el otro rifle. Solo para asegurarme, voy a hacer clic derecho en este y eliminar todos los activos adjuntos. Voy a hacer click derecho de nuevo en la reseña. Ahora déjenme agregar el KA para siete. Déjame agregar el AK. Se puede ver el AK está recortando ligeramente Lo que voy a hacer es que lo voy a mover hacia arriba tanto como pueda sin hacer que reserve algo así. Ahora va a recortarse ligeramente por aquí, pero lo que sea, como que en realidad no podemos hacer mucho al respecto. Estas armas no están diseñadas para estas animaciones. No podemos ser 100% precisos. Pero algo así aquí. Y otra vez, puedo seleccionar el rifle, chuparlo bien Para moverlo hacia abajo tanto como puedas sin que parezca buggy, algo así. A lo mejor es lo mejor que puedo hacer. Si solo haces clic derecho, elimina el activo adjunto, haz clic con el botón derecho de nuevo. Agrega el AR four como vista previa solo para asegurarte de cómo se ve. Es un poco más hacia arriba. Pero esto es lo mejor que podemos hacer por esta arma. Como que realmente no podemos colocarlo mejor porque también va a faltar para el AK. Ahora podemos mirar a través del hielo de este personaje y asegurarnos de que la rotación sea correcta. Creo que se ha girado un poco del lado equivocado. Voy a hacer click en el zócalo de nuevo y voy a sostenerlo y luego girarlo en esta dirección aquí. Creo que está un poco inclinado, tal vez. Algo así. Y se ve mucho mejor. Bien, esto fue todo. Eso sí, todo se ve bien. Ahora, solo para asegurarme, voy a hacer clic derecho en esto de nuevo. Retirarlo. Voy a hacer click derecho en el AA 47 igual que la última vez solo para asegurarme de que todo esté correcto. Ahora lo que podemos hacer es que siempre lo podemos arrastrar un poco más de esta manera. No está molestando aquí a través del mango. Algo como esto. Bien, ahora se ve mejor, todo se ve bien. Ahora siempre se puede ajustar ligeramente hacia arriba y hacia abajo. Creo que se ve bien. Ahora vamos a guardar todo. Ahora hay que recordar agregar esto también al otro esqueleto, pero primero agreguemos la pistola. Antes de hacer eso, pasemos ahora a la vista previa. O no las previsualizaciones. Animación de vista previa. Y busquemos pistola ahora, tomemos una de las animaciones de pistola. Y yo sólo voy a seleccionar a este ídolo de pistola de aquí. Pongámoslo en la primera animación. Ahora para éste, voy a retirar todos los activos adjuntos. Hagamos clic derecho en la mano y agreguemos un nuevo socket. Y voy a llamar a esta pistola. En realidad pistola. Sabemos que es una toma de corriente. Ahora para este, hagamos clic derecho y agreguemos la pistola como activo adjunto. Si solo agregamos nuestra pistola igual que antes, giremos el zócalo. Voy a agregar esta herramienta de broches girada 90 grados nuevamente para girarla de esta manera así está apuntando hacia adelante, siempre puedes volver a la vista frontal Adelante y acerque. Seleccione la pistola o el casquillo aquí y retire el chasquido Voy a girarlo ligeramente hacia abajo para que apunte correctamente. Y vaya a la vista en perspectiva. Comprueba si todo está bien. Intenta lo mejor que puedas para que apunte hacia adelante. Y siempre podemos ajustarlo después. Ahora vamos a moverlo a la mano del jugador. Así, de esta manera, tal vez de esta manera. Nuevamente, trata de colocar el dedo en el gatillo lo mejor que puedas. Entonces algo como esto, nuevo, siempre podemos ajustarlo después. No es realmente un problema. Si algo está un poco estropeado, puede ver que la rotación está un poco estropeada. Está demasiado inclinado Voy a, otra vez, rotarlo de esta manera, para que no esté inclinado así. Creo que esto es bueno. Siempre podemos ajustarlo después. Ahora intentemos moverlo lo mejor que podamos en manos del jugador. Creo que algo así se ve bien. Creo que lo voy a mover un poco hacia arriba, así como así. Bien, ahora sostiene el arma y la está disparando hacia adelante. Siempre podemos intentar previsualizarlo. Puedes intentar previsualizar con otras animaciones si así lo deseas. Por ejemplo, si busco pistola y tomo el fuego de pistola, se puede ver cómo se ve. Se ve bien. Ahora sigamos adelante y guardemos todo. Ahora hay que copiarlos. Hagamos clic derecho y eliminemos todos los activos adjuntos. También hay que copiarlos al otro esqueleto. Entonces voy a tomar este socket, voy a hacer click derecho aquí y copiar socket seleccionado. O bien, puede dar click en el control C. Ir al otro esqueleto, el doc. militar. Da click en la mano derecha y controla V para pegarlo. Vayamos también al otro esqueleto. Copia el rifle uno y haz clic en el control V para pegarlo aquí también. Este también lo tiene. Ahora, tanto el antiterrorista el terrorista deberían funcionar ahora. Bien, así que eso fue todo para los enchufes. Pasemos a la siguiente lección. 95. 8.10 Crea los sockets restantes: Ahora vamos a crear los zócalos restantes. Entonces volvamos al esqueleto para el personaje plateado. Quiero agregar el rifle a la parte posterior del personaje si el personaje ya está sujetando la pistola. Por lo que no queremos agregar la pistola a la mano del personaje ya está sosteniendo un arma. Vamos. Digamos por ejemplo la animación de pistola. Sólo tienes que seleccionar uno de ellos. Solo seleccionemos esta. Una vez más ociosa. Voy a hacer una pausa en el primer fotograma. Voy a agregar una toma aquí en la parte de atrás para el rifle. Voy a agregar el rifle en la parte posterior si no lo están sujetando. Yo solo voy a hacerlo, si no estás seguro de qué hueso usar, siempre puedes hacer click en Character Bones y luego mostrar toda la jerarquía. Y luego puedes intentar elegir el mejor hueso que puedas ver aquí en el jugador que le quede bien. Por ejemplo, puedes elegir el lomo dos o puedes elegir el lomo tres. Creo que voy a elegir la columna tres. Se puede elegir el lomo tres. Haga clic derecho. Agrega una toma. Voy a llamar a esto es arma. El arma va a estar aquí en la parte de atrás. Hagamos clic derecho de nuevo, agreguemos una malla de vista previa y vamos agregar simplemente las K se llaman KA 47. En realidad vamos a seleccionar éste. Simplemente rotemos esta arma. Voy a sostener o seleccionar esta herramienta de chasquido y voy a rotar 90 grados. De esta manera voy a moverlo hacia afuera y solo tratar de colocar el arma como quieras Realmente no hay una respuesta para lo que es correcto o no. Sea cual sea el juego que intentes hacer, trata de hacerlo a tu manera, a tu estilo. Siempre puedes arrastrarlo a la parte posterior del personaje si lo deseas. Siempre puedes inclinarlo así para que se vea mejor y simplemente colocarlo en la parte posterior del personaje lo mejor que puedas. Y tal vez algo así. Creo que eso se ve bien. Puedo moverlo un poco hacia arriba. Creo que esto se ve bien si solo tocas una animación para asegurarte de que todo esté bien y que todo esté chasqueando Si solo haces una animación de carrera, por ejemplo, frontal derecha, desarmada, puedes salir y reproducir la animación Y puedo dar click en los huesos del personaje. Y seleccionarlo solo para quitar todos los huesos para que pueda ver cómo se ve realmente. Y así se ve. Bien, Todo se ve correcto. El arma también se mueve con el cuerpo. También puedo seleccionar Quitar adjunto. Y puedo seleccionar el AR Four solo para ver cómo se verá si en su lugar están sosteniendo eso. Bien, todo se ve bien. Sí, eso está apegado al jugador. Ahora podemos hacer clic derecho y eliminar todos los adjuntos. Lo segundo que quiero agregar ahora volvamos al ídolo y seleccionemos uno de ellos. Por ejemplo, el ídolo de pistola que voy a postular en el frontal Lo que quiero hacer es agregar la pistola al costado del personaje cuando están sujetando el rifle. Este era para el rifle, el otro aquí es para la pistola. Pero esta otra vez, puedes dar click sobre los huesos del personaje toda la jerarquía y puedes seleccionar aquí un hueso que encaje. Por ejemplo, éste. Este es el muslo. Vamos a crearlo aquí, el muslo, clic derecho, agregar un socket y llamar a éste es arma así como así. Adelante y haz clic derecho en éste. Adjunte un activo de vista previa y seleccione la pistola. Esta igual que antes, voy a agregar la herramienta de ajuste y la voy a rotar de esta manera Por ejemplo, permítame que lo haga avanzar también. La pistola cuando de manera realista la coloca aquí, va a estar realmente en el lado opuesto, algo así En cambio, voy a rotarlo si lo deseas, puedes rotarlo de alguna manera e intentar colocarlo lo mejor que puedas. Ahora de manera realista, si fuera un jugador diseñado para este juego, no colocaría este aquí Así que en realidad podríamos colocar la pistola aquí. Pero podemos intentar colocarla debajo de esta bolsa lo mejor que podamos e intentar moverla un poco hacia afuera. También podemos moverlo o rotar esta dirección e intentar colocarlo lo mejor que puedas en el muslo del personaje. Creo que esto se ve bien. Ahora bien, si solo guardas todo y vamos a intentar que vuelva a tener la animación de ejecución. Seleccione uno de ellos, por ejemplo, correr pistola delantera. Y si solo lo tocas ahora, lo puedes ver aquí. Ahora personaje, voy a seleccionar huesos. Seleccione sólo para que pueda quitar los huesos. Y aquí está la pistola cuando corres con ella. Bien. Eso está pegado al muslo. Ya podemos detener esta animación. Y puedo hacer clic derecho u otra pistola, la del muslo. Si lo encuentro aquí, éste de aquí abajo, puedo dar click derecho. Eliminar todos los activos adjuntos. Y recuerda copiar esto también para el otro esqueleto. Si solo hago doble clic aquí y abro el doc del personaje, también abro el esqueleto. Vamos a copiar la toma del muslo. Y voy a encontrar el muslo aquí mismo. Si puedo encontrarla. Este controla V para pegarlo. Voy a regresar y voy a encontrar el zócalo trasero Por aquí hay arma atrás. Voy a copiar esta. Y para el lomo tres otra vez, voy a pegarlo y va a ser correcto para éste también. Vamos a guardar todo y pasemos a la siguiente lección. 96. 8.11 Adjunta un arma a la mano: Ahora que hemos creado estos zócalos, podemos seguir adelante y sujetar el arma a la mano. Volvamos a la base de jugadores. En la base de jugadores anteriormente, si recuerdas, ya hicimos la lógica del arma de botín aquí De hecho ya podemos hacer que el jugador equipe el arma. Lo que podemos hacer es que necesitamos usar algo llamado adjuntar si solo buscas adjuntar, así puedes usar uno de esos, por ejemplo, adjuntar a actor, o actor a componente y así sucesivamente. Así que solo puedes seleccionar uno de ellos para ver de qué se trata. Básicamente estás aquí para esto, por ejemplo, estás adjuntando a un actor a un componente. Por ejemplo, estás uniendo el actor de arma al componente de malla donde seleccionas a qué socket quieres agregarlo. Por ejemplo, la pistola. Y luego puedes chasquearlo hasta ahí y puedes sujetarlo a la mano. Ahora en lugar de hacer esto, recuerda que estamos dentro de un juego multijugador. Esto no es un solo jugador. Si esto fuera un jugador, podríamos hacerlo aquí arriba sin todo este servidor y así sucesivamente, y funcionaría. Sin embargo, como estamos en un juego multijugador, necesitamos replicar información del servidor al cliente Para cambios visuales como este, hay que usar algo llamado rep notify. Y aún no lo hemos usado antes. Si solo haces clic derecho sobre esta arma y la promocionas a una variable, y yo sólo voy a llamarla arma saqueada Ahora cuatro variables. Ahora primero recopilemos o conectemos éste. Déjame hacer doble clic, en realidad ya tenemos un nodo de ruta trasero por aquí, así que lo voy a arrastrar aquí abajo. Haga doble clic en éste. Ahora tenemos esta variable. Y si haces clic en él ahora, en lugar de configurarlo para replicarlo, tienes algo llamado rep notify Y donde rep notify es si tienes algún cambio visual en tu juego que necesita ser enviado a todos los clientes, necesitas usar una réplica de notificación de representante Sólo se utiliza para información como números que van a ser enviados al cliente. Anteriormente tenemos esta llamada arma equipada, por ejemplo. Éste lo dijimos replicó. Porque el cliente necesita saber si esta información variable, qué se establece, si está configurado pistola o rifle desarmado No obstante, para esta voy a hacer un cambio visual. No es solo número e información como texto. Tengo que actualizar el arma. Por lo que se le pegan las manos del jugador, en realidad es una actualización visual. Esta arma va a teletransportarse a las manos del jugador y se va a quedar ahí Entonces tengo un cambio visual que tengo que hacer, y aquí es donde selecciona un representante notificar. Ahora si recuerdas, también usamos una multidifusión. Entonces, si vuelvo a los pasos, usamos este llamado multidifusión Multicast también envía información a todos los clientes. ¿por qué estamos usando algo llamado Sin embargo, ¿por qué estamos usando algo llamado una notificación de representante en lugar de una multidifusión?, se usa una notificación de representante para si tiene cambios visuales que deben mostrarse a todos los jugadores, incluso aquellos que aún no están conectados al servidor. Digamos que alguien se conecta al servidor, como yo voy aquí y saqueo el 44 o 41 Alguien se conecta a mi servidor 2 minutos después. Si hago este código dentro de una multidifusión, el reproductor conectado no podrá ver que estoy sosteniendo este 44 La multidifusión sólo es utilizable para cosas temporales. Por ejemplo, pasos aquí y ahora. O si juego algunos efectos visuales de fuegos artificiales que desaparecerán después de 2 segundos. Los jugadores conectados no, el jugador que se está conectando en este momento realmente no necesita saber de esto. Porque probablemente ya desapareció en el nivel. Por ejemplo, el efecto visual para un rep, se utiliza para cambios visuales que también necesita ser visto por alguien que se va a conectar a tu juego. de 2 minutos, quiero ver jugadores que se conectan a mi juego. Quiero que vean que ahora estoy sosteniendo el 41. Vamos por aquí. Y vamos a darle un click sobre él. Y hagamos clic en Rep, Notify. Adelante y compilar. Y puedes verlo ya creado como una función para ti. Esto se va a llamar, así que vas a saquear el arma Y éste se va a fijar. Siempre que esto se va a establecer y cambiar de valor, va a ejecutar automáticamente esta función. Así que ahora podemos escribir el código dentro de esta función. Y lo que sea que escribamos dentro de aquí, esto será notificado a todos los clientes. Bien, entonces primero antes de adjuntar algo, quiero tomar esta arma saqueada que acabamos de saquear y golpeemos aquí y busquemos la malla del arma Entonces si voy al fondo y selecciono arma. Recuerda, esta arma de aquí. Si vuelvo a las armas y selecciono la base del arma, esta es la malla del esqueleto del arma. Voy a seleccionar la malla esqueleto porque recuerden que estamos simulando la física Realmente no necesitamos simular la física. Siempre que esta arma aquí esté en manos del jugador, necesitamos eliminar la física. Lo que tengo que hacer es primero tengo que arrastrar desde aquí y decir set simular física. Sigamos adelante y conectémoslo. Pongámoslo para que sea falso. Realmente no necesitamos simular la física cuando está en manos del jugador. Lo siguiente es que también necesito quitar colisión, porque cuando está en manos del jugador, realmente no necesitamos chocar con nada De nuevo, arrastra de esta arma y di Set Collision y selecciona esta. Configura la opción Collision habilitada y déjanos conectarla sin colisiones. Ahora el arma no tiene ninguna colisión. Realmente no lo necesitamos cuando el jugador lo tiene en las manos. Ahora recuerda en la base de armas también tienes la esfera aquí. También es necesario eliminar la colisión de esto. De lo contrario, otros jugadores pueden entrar en ti cuando tienes el arma y pueden saquear el arma de tu mano Ahora puedes tenerlo como característica en el juego, pero para este, vamos a eliminarlo. Tomemos de nuevo el arma saqueada. Y voy a arrastrar desde aquí y buscar mi esfera de colisión. Y está en la parte inferior aquí. Y en realidad se llama colisión acaba de llamarse esfera. Y voy a renombrarlo en realidad a polígonosfera, solo para que sea más obvio Esfera de colisión. Adelante y compilar. Volvamos aquí y busquemos ahora la esfera de la polísura. Y déjame ir al fondo y seleccionarlo aquí. Bien, igual que antes, arrástralo aquí y di set collision habilitado este de aquí y déjanos configurarlo a ninguna colisión. Ahora cuando otros jugadores están entrando en esta esfera de colisión, no están interactuando con ella porque ahora no tiene ninguna colisión aquí. Voy a recordar hacer esto falso porque no necesitamos simular ninguna física. Las colisiones de arma y las colisiones para la esfera de colisión también Ahora cuando usamos la función attach the, en realidad necesitamos hacer algo antes. Porque cuando estaba haciendo esto antes, había un bicho. Estaba jugando aquí. Y le pegué el arma a la mano. Siempre que entraba en estas armas por alguna razón, aunque las pegué a mi mano, seguían estando en el suelo y no entendía. La razón está aquí para la simulación de la física. Se puede ver aquí en la parte inferior dice, Tenga en cuenta que si este componente está actualmente unido a algo, iniciar la simulación lo separará Esto significa que cuando simule la física aquí, en realidad separará esta arma de la raíz de escena predeterminada Ahora mismo, es como si estos dos no están apegados, esto es separado de éste. En realidad tengo que volver a unir el arma a la raíz de escena predeterminada. Hagamos eso en realidad. Tomemos el arma saqueada si arrastro desde aquí y busco la raíz de escena predeterminada, el mismo nombre aquí en la parte inferior, y la seleccionamos Ahora lo que quiero usar es que quiero adjuntar un componente a un componente. Recuerda, estos son componentes si arrastra desde aquí y Seach y puedes seleccionar este componente adjunto al componente que estoy tratando de adjuntar realidad no esta. Estoy tratando colocar el arma aquí. El fi acaba de trapar y buscar arma e ir al fondo otra vez, seleccionar la variable Estoy tratando de adjuntar el arma a la ruta de escena predeterminada. Se ve así otra vez. Sigamos adelante y lo conectemos. Ahora tenemos que seleccionar el socket. El zócalo, realmente no tenemos nada. Solo estamos conectando el arma con la ruta de escena predeterminada. Este está bien para la regla de ubicación. Todos estos deben ser chasquidos al blanco. Se le encaja así así, y ahora es broches correctos Sigamos adelante y compilemos. Y ahora todo debería estar funcionando correctamente. Ahora si tratamos de adjuntar el arma a la mano del jugador, así podremos arrastrar desde aquí. Ahora para el adjunto, estamos tratando de adjuntar a un actor, esta base de armas. Estoy tratando de adjuntar a un actor a esta malla de aquí, que es un componente. Tenemos que adjuntar un actor a un componente. Si me arrastre de aquí y digo adjuntar y se puede buscar de actor a componente, estoy tratando de adjuntar al actor arma saqueada Si acabo de copiar pegado aquí a la malla de aquí, que es un componente, el zócalo al que estamos tratando de agregarlo ahora mismo es digamos por ejemplo lo llamamos rifle. Probemos primero por el rifle, y siempre podremos hacer la pistola después. De nuevo, chasquear al blanco para todos esos. Sigamos adelante y compilemos y guardemos todo. Veamos cómo funciona si hago clic en Compilar ahora o Reproducir ahora y selecciono al terrorista. Ahora bien, si entro en el rifle, se puede ver que en realidad está en mis manos. Se puede ver aquí en la sombra. En realidad está en mis manos. Ahora la razón por la que no estoy sosteniendo la animación del rifle es porque también necesitamos actualizar el equipo, el arma equipada. Recuerden, si vuelvo al plano de animación, ya es algún tiempo que lo hicimos Si voy al jugador, animaciones y plano de animación Recuerda que aquí estamos cambiando estas animaciones dependiendo de lo que sea esta enumeración de armas equipadas Este viene del arma equipada con el jugador. Necesitamos cambiar esta para que las animaciones cambien. Lo que tenemos que hacer aquí es hacerlo rápidamente. Si volvemos a la gráfica de la camioneta, puedo hacer clic derecho y hacer un nuevo evento personalizado. Puedo llamar a esto un conjunto arma equipada. De nuevo, voy a copiar este nombre click derecho, hacer un nuevo evento personalizado, ejecutarlo a través del servidor. Este se ejecuta en servidor confiable. Voy a ejecutar el servidor uno a través de esta arma normal de conjunto de eventos . Ahora para esta, lo único que está haciendo es poner aquí esta arma equipada. Si lo acabas de conectar así. Y si lo conectamos así, nuevamente, lo único que está haciendo este evento es que está configurando esta variable aquí a lo que queramos establecerla, y vamos a usar esta más tarde. Compilemos ahora. Recuerda, solo puedes establecer variables y replicarlas cuando se están ejecutando a través del servidor No puedes usar esta de aquí arriba. Tienes que ejecutarlo a través del servidor antes de poder configurarlo y replicarlo a todos los clientes Bien, ahora esto está hecho. Vamos a hacer doble clic en esta variable. De nuevo, puedes abrir la función aquí o simplemente puedes hacer doble clic aquí y te hará entrar hasta aquí. Ahora recuerda que necesitamos configurar el arma equipada para que la animación se actualice. Si arrastras desde aquí y buscas el conjunto equipado arma que acabamos de hacer, entonces tenemos que seleccionar a qué es lo que queremos configurarlo. Lo que queremos fijarlo es lo que sea que hayas saqueado Recuerda en el arma que hiciste, este tipo de arma. Si tomas esta arma saqueada arrastras desde aquí y buscas el tipo de arma Ahora ya sabes si es un rifle o una pistola por ejemplo, y sabe qué animación usar. Si lo conectas aquí, compile. Vamos a hacer clic en play. Si seleccionas al terrorista, solo así engendramos junto a él. Y si entro en este AK por ejemplo, ahora va a cambiar la animación a la correcta. Ahora bien, si abro el cliente también, solo para asegurarme de que todo esté funcionando. Si juego como servidor aquí, y voy a minimizar esto, y también estoy jugando como cliente. Entonces abro el antiterrorista para éste, y estoy abriendo al terrorista para éste. Voy a caminar con el antiterrorista y sólo para ver si todo está funcionando correctamente. Si trabajo en este cuatro, puede ver que lo he saqueado. Si me acerco al jugador, no está interactuando con mi esfera de colisión porque he puesto en ninguna colisión. Y ahora para el otro, si entro en este AK, puede ver que también es saqueado Creo que voy a reducir el tamaño AK. A lo mejor el arma se ve muy grande. Se puede ver ahora solo es saquear el rifle porque ahora si entro en la pistola, también lo va a poner en el zócalo para el rifle Y así se ve raro. Y tenemos que cambiar esto más tarde. Entonces hagámoslo en la siguiente lección. Por ahora, en realidad lo adjuntamos y podemos hacer esto un poco más complejo. Por lo que también está trabajando para la pistola. 97. 8.12 Adjunta armas a la espalda: Bien, así que hagamos que este código sea un poco más complejo en lugar de simplemente adjuntarlo directamente. Ahora tengo que preguntar si el jugador ya está sosteniendo un arma o no. Si el jugador ya está sosteniendo un arma, quiero adjuntar esta arma a la parte posterior del personaje porque ya está sosteniendo un arma, así que no queremos atarla a la mano. Lo que quiero hacer es tomar esta arma equipada y arrastrar de aquí y decir, ¿es igual, igual a un arte? Ahora mismo, ¿no tienes armas? Si ese es el caso, como si no estuvieras sosteniendo ninguna arma, en realidad quiero adjuntarla a la mano del jugador. Lo que puedo hacer es conectarlo aquí, aquí. En lugar de simplemente sujetarlo a la toma del rifle, tal vez sea una pistola. Lo que puedo hacer es que puedo arrastrar desde aquí y decir seleccionar éste. hemos usado este antes, pero ahora podemos ver otro ejemplo de ello. Ahora tenemos que seleccionar dependiendo de cuál sea el tipo de arma. Si es una pistola, va a usar la pistola de toma. Si es un rifle, va a usar rifle de toma. Voy a copiar de nuevo este tipo de arma y la voy a conectar aquí. O si el tipo de arma es igual a desarmado, realmente no necesitamos hacer nada Si es pistola, quiero fijarla a pistola. Eso es lo que llamamos el socket. Si es un rifle, queremos fijarlo al rifle. Ahora sabe qué socket usar, dependiendo de cuál sea el tipo de arma y todo lo demás es correcto. Ahora vamos a moverlo por aquí. No obstante, si no estás desarmado, significa que ya tienes un arma en la mano Copiemos todo esto otra vez y ahora, en vez de depender ahora de cuál sea el tipo de arma, yo tampoco, si es una pistola, voy a agregarla al muslo de arma. Recuerda que así es lo que llamamos el zócalo para el arma del muslo. Si es un rifle ahora se lo va a poner a esos también. Esto va a estar conectado aquí. Si es falso, sólo voy a acercar todo esto. Ahora está más organizado y podemos salir y compilar y guardar todo. Solo queremos colocar el arma equipada siempre que no tengamos nada en la mano. Porque si tenemos algo en la mano, solo queremos agregar el arma al dorso del personaje. Vamos a guardar todo y vamos a hacer clic en play. Y si selecciono Terrorista aquí, y camino hasta aquí, permítanme realmente abrir permítanme realmente abrir éste para que podamos ver si está funcionando para este personaje si solo maximizo esto un poco. Entonces puedes ver si ahora entro en el rifle, puedes ver que lo sostengo en mi mano. Si entro en la pistola ahora mismo, realidad se puede ver que la pistola ha caído por el suelo. De hecho quiero arreglar esto. Y creo que es esta malla de aquí. Es muy delgada, así que está cayendo por el suelo. De hecho, arreglemos eso. Déjame llevarme la caja aquí, si voy, déjame recordar dónde la guardé, la carpeta super grid, el paquete stata, y las mallas. Y usemos la caja de súper cuadrícula para el suelo en lugar del avión. Voy a tomar esta caja. De hecho voy a cortarlo a 100 aquí para el movimiento. Primero voy a poner esta caja a algo así como aquí. Y volvamos a moverlo al suelo. Y lo voy a hacer retroceder igual que donde está este terreno, sólo voy a moverlo así, creo. Y aquí. Bien, ahora está en el suelo. Ahora voy a escalarlo igual que la báscula para el suelo. Sólo voy a intentar lo mejor que pueda. Déjame en realidad solo escalarlo primero. Déjame escalarlo aquí al 1010 para la Z. realmente no lo necesitamos. Déjame simplemente dar click sobre este candado. Y déjame escribir uno aquí. Voy a hacer click en el suelo, en realidad está más abajo así aquí. Y voy a quebrarlo por aquí y por el otro lado. Bien, ahora brota en el suelo. Y voy a hacer click en el suelo. Voy a mantener turno y clic derecho para copiar esto. 80, 81. Voy a dar click en mi casilla aquí. Voy a mantener la tecla shift y click izquierdo para pegarlo. Y ahora debería ser correcto. Ahora si voy al otro lado solo para comprobar si cubre el suelo y lo hace, bien. Ahora lo que voy a hacer es que voy a seleccionar el avión. Simplemente hago clic un par de veces aquí. Se va a seleccionar el plano de súper rejilla. Voy a borrar, y voy a copiar este material para que vuelva a guardarlo. Desplazar a la derecha, haga clic en la oreja, haga clic a la izquierda para pegar este suelo aquí. Y se ve igual que antes. Bien, vamos a guardar todo. Y ahora si hacemos clic en Play, no debería caer por el suelo. El suelo estaba bastante delgado y tengo sospecha de que es blanco está cayendo por el suelo. Permítame nuevamente maximizar esto un poco. Ahora si juego como este jugador, y diluyo una M cuatro y diluyo un arma, debería agregarla al muslo. Se puede ver del lado de mi personaje, ahora puedo ver el arma. Impresionante. Ahora para esta K, puedo saquear tan bien como el otro jugador Ahora mismo ha desaparecido. Se puede ver que el cliente no puede verlo en el servidor. Se puede ver que se ve correcto porque recuerda, el servidor tiene la autoridad y puede hacer cualquier cosa. No obstante, para el jugador, está en la parte posterior. Como se puede ver aquí en la sombra, hay algunos, un problema de replicación, algún valor que no va por encima. Lo único que se me ocurre esta arma equipada desarmada, porque ésta elige si pone el arma en el dorso o en la mano La forma en que solucionas este problema donde no puedes ver el arma cuando la saqueas es De hecho, hagamos esto de otra manera, el arma equipada con set. La razón es que no es realmente saber este valor porque a veces cuando juego como cliente, pone esta arma en la parte posterior del personaje. Se puede ver aquí, en lugar de saquearlo a la mano. La razón por la que lo vuelve a poner en la parte posterior del personaje es un problema de replicación. Por alguna razón esta equipada nosotros, esta es la que controla deberíamos estar en tu mano o el arma debería estar en tu espalda. Por alguna razón es ver que este valor de arma equipada no está armada como si ya tuvieras un arma y pone en el dorso del personaje en lugar de en tu mano. Esto en realidad se debe a que estamos ejecutando este a través de la notificación de representante. No hace falta que hagamos eso porque va a desbaratar el juego. Voy a quitar esto. Vayamos al gráfico de eventos en su lugar. Vamos a ejecutarlo aquí en el servidor. Porque tenemos que establecer valores a través del servidor en lugar de a través del representante, notificar, en lugar de simplemente cambiarlo directamente. Recuerda, solo quieres colocar el arma equipada siempre que estés aquí en el desarmado Siempre que estés desarmado, quieres colocar el arma equipada porque no quieres cambiarla cada vez que pongas esa arma en la espalda En cambio, para ésta, tenemos que llevarnos el arma equipada. Y nuevamente, tenemos que preguntar si es igual a desarmado. Y déjeme simplemente alejar esto. Asegúrate de preguntar, ¿estás desarmado o no? Porque solo queremos ejecutar este código si estás desarmado. Si estás desarmado, sí. Sigamos adelante y voy a poner un retraso en el código antes de que realmente hagamos esto. Y la razón por la que hago esto es que estoy dando una oportunidad para que este representante, notifique para que se quede sin este código. Recuerda que va a usar esta variable de arma equipada para verificar si estás desarmado o no Y esto va a tener errores Si instantáneamente pones esta arma equipada y cambias este tipo de arma, nos aseguramos de retrasarla un poco Asegúrate de que este código se ejecute antes de que realmente cambiemos el tipo de arma o el arma equipada aquí. Este retraso tiene que ser lo más bajo posible porque se verá raro si estás corriendo sin que se aplique la animación. Pero probémoslo así antes de que hagamos algo. Entonces déjenme dar click en jugar aquí como el terrorista. Ahora puedo dar click en play y puedo entrar en el arma y ver si está funcionando. Ahora puedes ver que está funcionando. Tengo que hacerlo un par de veces solo para asegurarme de que realmente está funcionando, y ahora se puede ver que no se está molestando. Creo que esto solucionó el problema. No obstante, en el futuro, si todavía tenemos un problema con esto, trataremos de solucionarlo. Pero creo que en realidad ya está arreglado y no tenemos ningún problema con ello. Bien. Ahora intentemos reducir este número, 0.05 algo muy bajo. Y podemos intentar jugar y tratar de reducirlo, pero aún así va a funcionar. Ahora se puede ver que sigue funcionando. Si lo reduce demasiado, entra en el riesgo de que el código en el representante notifique no poder llegar en este punto. Antes de que realmente hagas esto, asegúrate de que sea lento pero no demasiado bajo. Te encontrarás con problemas, pero como puedes ver aquí, todo está funcionando. Y solo asegúrate de comentar este retraso porque si vuelves tres meses después, no tienes idea de por qué hiciste esto. Asegúrate de mantener presionado, haz clic en C en tu teclado para agregar un comentario. Por ejemplo, puedes para este comentario, asegurarte de que el arma esté adherida a la mano antes de cambiar el estado equipado del jugador. Así como así. Incluso puedes escribir que estás esperando que el representante notificado se aplique. Adelante, compilar y guardar todo. Y eso debería funcionar si haces clic en play. Ahora si entras en la pistola ahora, puedes ver que está cambiando. Si entras en este te está poniendo en la espalda y puedo ver que todo está funcionando ahora mismo. Otro dólar que tenemos, el último ojalá, es cuando colocas dos armas una encima de la otra, va a estar un poco confusa porque estás superponiendo dos esferas y no sé cuál saquear y va a fallar si te quejes ahora Y aquí está el cliente. Entro en los dos, trato de encontrarme con los dos así. Se puede ver que en realidad está sujetando la pistola y los cuatro al mismo tiempo y está un poco confuso. Tenemos que arreglar ese dólar también. Hagámoslo en la siguiente lección. 98. 8.13 Superposición de dos armas a la vez: El problema que estamos enfrentando ahora mismo es que si me meto en dos armas a la vez, se va a desfilar porque ahora se ve que sostengo la pistola y el rifle al mismo tiempo. Entonces este es un error que tenemos en estos momentos y tenemos que arreglarlo de alguna manera. Tenemos que verificar ambos solapamientos de armas y no solo uno Porque ahora mismo solo estamos comprobando si hay una superposición de arma y no estamos comprobando si hay dos armas que se superponen al mismo tiempo. Para arreglar esto, vayamos al jugador y abramos la base de jugadores dentro de aquí. Ahora mismo tenemos esta arma de botín. En lugar de solo saquear el arma, necesito hacer una nueva matriz donde reúna todos los elementos de superposición Y luego de esos actores superpuestos seguirá adelante y saqueará las armas en lugar de saquear directamente el Tomemos todo esto y lo empujemos aquí abajo, y hagamos clic derecho y hagamos un nuevo evento personalizado. Voy a llamar a este evento un ítem solapado. Bien, con ese, de nuevo, voy a ejecutarlo a través del servidor, servidor personalizado, y agregar elemento solapado Y luego recuerda ejecutarlo en el servidor y confiable también. Y voy a ejecutar ese servidor uno aquí arriba en el evento normal, agregar ítem solapado, así como así Lo que tenemos que hacer es que voy a crear una nueva matriz llamada elementos superpuestos Nuevamente, esta es una base de armas que en realidad no se solapan con elementos Probablemente sea más preciso llamarlo armas superpuestas Y luego haga clic derecho, o simplemente haga clic aquí y busque la base de armas. Adelante y selecciónelo. Sigamos adelante y seleccionemos esta matriz nuevamente. Ahora bien, en lugar de objeto superpuesto, probablemente sea mejor llamarlo un arma superpuesta que sea más precisa para que no cambiemos nuestro estilo. Un arma solapada así como esa. Y adelante y toma esta matriz. Lo que podemos hacer aquí, siempre que superpongamos un objeto o un arma, podemos seguir adelante y agregar esa arma a esta matriz. Ahora necesitamos saber qué arma estamos superponiendo de nuevo. Adelante y agrega una variable, busca base de arma. Solo llama a esta arma y sigue adelante y conéctalo aquí arriba también. Va a partir de aquí cada vez que nos superponemos y luego la información está aquí. Justo como antes, lo que hicimos aquí. Sigue adelante y toma esto y di set array element y conéctalo. Este es el ítem que queremos agregar al índice. De nuevo, justo lo que te dije antes. Usemos la longitud. Toma de esta búsqueda de longitud y automáticamente encontrará el índice correcto. Lo agregará para seguir adelante y organizar esto. Bien, lo que simplemente estamos haciendo es en lugar de saquear instantáneamente el arma desde el suelo, estamos agregando esa arma superpuesta a esta matriz Y luego de esta matriz podemos seguir adelante y saquear las armas Nos aseguramos de que todas las armas superpuestas sean saqueadas desde aquí Cuando superponga un arma, recuerde volver a ejecutar esta arma de botín porque de lo contrario no la ejecutará De hecho volvamos primero. Volvamos a la base de armas en lugar de a la base de armas ahora, en lugar de aquí con el código que escribimos, en lugar de saquear el arma instantáneamente cuando sepas que puedes saquear el arma, sigue adelante y agrégala a las armas superpuestas Déjame quitar esto. Busquemos aquí desde el jugador. Recuerda que este es el jugador de pines. Tomemos esto y busquemos el arma solapada del anuncio. Adelante y agrégalo aquí. El arma es auto así así y compilar ahora. va a agregar esa arma superpuesta Aquí va a agregar esa arma superpuesta a la matriz primero. Sigamos adelante y ejecutemos el arma del lote. Golpeemos desde aquí y busquemos mucho arma. El arma aquí. En realidad, no lo necesitamos porque recuerda ahora lo agregamos a esta matriz. En lugar de simplemente tomarlo de aquí a aquí, ahora podemos usar esta matriz aquí abajo. En realidad no necesitamos este pin. Si haces clic en este pin, quítalo. También da click aquí arriba y retírela, así como así. Y para que este lo elimine, mantenga pulsada la tecla Alt y haga clic en ella y se eliminará, o bien puede dar mantenga pulsada la tecla Alt y haga clic en ella y se eliminará, click aquí arriba y refrescar todos los nodos que también eliminarán estos pines de la era roja. Ahora estás saqueando el arma. Va a pasar por aquí. Ahora, antes de agregarlo directamente, primero revisemos algo. Tomemos estas armas superpuestas Primero, preguntemos si esto está vacío o no Porque si está vacío, no queremos saquear. Golpeemos desde aquí y digamos que está vacío. Digamos que no está vacío. Si no está vacío, vamos a O. Podemos arrastrar de aquí. Y escribir una sucursal y salir y conectar. Ahora si no está vacío, vamos a saquear. Bien, cual es el arma que estamos saqueando, podemos arrastrar de aquí y decir consigue y toma esta Simplemente estamos obteniendo el primer elemento que está dentro de la matriz de armas superpuestas, Obteniendo solo el uno en el índice, cero. Entonces la primera arma que está dentro de aquí, vamos a conectarla con el arma solapada. Ahora estamos agregando esta arma al inventario. Entonces va a ir aquí, agregarlo al inventario, va a colocarlo en el arma de botín Vamos a comprobar si estamos desarmados, si lo estamos, vamos a poner el arma equipada Ahora recuerda quitar el arma solapada, la que estás agregando ahora mismo. Recuerda quitarlo de la matriz, lo contrario se quedará aquí para siempre. Tienes que tomar esta matriz ahora. Entonces después de hacer esto, tal vez podamos tomar las armas superpuestas. Podemos decir quitar artículo y seguir adelante y conectarlo. Entonces recuerda llevarte este que acabas de agregar. Puedes seguir adelante y conectarlo aquí arriba en su lugar. Nuevamente, haga doble clic para hacer un nodo de ruta posterior y simplemente convertirlo en otro nivel con los demás. Ahora estamos recordando quitarlo de la matriz. Se quedará aquí para siempre y tendrás caja en tu juego. Bien, entonces ahora estamos quitando ese elemento de superposición de la matriz porque ahora lo agregamos al inventario y todo está terminado, así que lo eliminamos. Ahora recuerda esta función aquí, este evento aquí, solo se ejecuta una vez, siempre que te superpongas. Está ejecutando el evento de armas del lote como puedes ver aquí. Cuando terminemos, detenemos el código. ¿Y si en realidad tienes diez armas en las armas superpuestas Necesitas seguir corriendo esta arma de lote hasta que esté vacía. Y cuando está vacío no va a hacer nada. Tienes que seguir ejecutando este evento para verificar si tienes más artículos superpuestos Porque sigue comprobando si está vacío o no para ejecutarlo. De nuevo, aquí arriba, hagamos un nuevo evento. Y voy a llamarlo, vamos a atacar desde aquí, un evento personalizado. Llamemos a esto, a verificar si hay armas superpuestas. Va a verificar si hay más armas superpuestas. Esta la podemos tomar y correr aquí abajo. Verifique si hay armas superpuestas. Cuando terminemos de agregar el arma, estamos tomando esta comprobación por armas superpuestas y la estamos ejecutando de nuevo Y entonces el código aquí se ejecutará de nuevo y comprobará si este está vacío o no. Si no está vacía, va de nuevo a llevarse esa nueva arma. Sigue agregándolos al inventario como podamos. No obstante, si está vacío, vamos a hacer nada. Bien, un problema que tenemos ahora mismo es ¿y si el jugador se solapa con múltiples armas Porque cada vez que choques con un arma y la puedas saquear, se va a sumar a esta arma solapada Y en realidad va a ejecutar esto nuevo a pesar de que estamos en medio del código y esto molestará el juego cada vez que te superpongas con algo. Esto ejecutará todo y en realidad también activará todo esto. En cambio, pongamos a algunos una barrera. Esto sólo se ejecuta una vez. Y lo que puedes hacer es arrastrar desde aquí y decir hacer una vez. Este nodo se asegura de que esto solo se ejecute una vez, pesar de que me superponga con múltiples armas. Aquí no va a repetir este código. En realidad va a repetir este código, se va a sumar a esto. Pero esta parte del código no se va a repetir. En realidad lo va a hacer una sola vez. Y podemos controlar cuándo debería volver a hacerlo. Solo queremos hacer esto una vez, aunque nos superpongamos con tal vez como 100 armas. Solo hacemos esto una vez porque recuerden que estamos haciendo como un bucle infinito hasta que esto ya no esté vacío y detenemos el código. Realmente no necesitamos amarla desde aquí también. Bien, hazlo una vez. ¿Cuándo podemos restablecer esto? El reset significa que solo voy a hacer este código una vez. Me dices cuándo puedo restablecer, así puedo volver a ejecutar este código. El reinicio, vamos a arrastrar desde aquí y hacer un nuevo evento personalizado. Vamos a llamarlo puede mucho arma otra vez. Puedo saquear el arma de nuevo cada vez que deje de saquear por aquí Cuando esta está vacía, el arma solapada. Siempre que esto esté vacío, podemos arrastrar desde aquí y decir que puede volver a saquear arma. Podemos volver a ejecutar este código porque se ha detenido. Y voy a arrastrar un poco de aquí y hacer algo de espacio y organizar esto. Bien, entonces ahora esto está más organizado. Entonces entremos, compilemos, y recopilemos también aquí, guardemos todo. Intentemos ahora hacer click en play y ver qué pasa. Seleccione Terrorista. De hecho, me dejo copiar estas armas a todos estos puntos puntuales para no tener que seguir corriendo a ese lugar otra vez. Simplemente copiando un par de veces y colocándolos alrededor. Selecciona terrorista y vamos a entrar en él ahora no pasa nada. Probablemente ganamos un dólar aquí está, superponiéndose, probablemente. Pero como puedes hacerlo es que puedes arrastrar desde uno de ellos, por ejemplo, este servidor se superpone, y escribir cadena de impresión. Así es como depuras tu código si tienes un error. No quiero quitar esto del video porque quiero mostrarte también como depurar. Conecta esta cadena de impresión y haces clic en Reproducir. Siempre que imprime la cuerda, como puedes ver, en realidad está imprimiendo la cuerda. Esto significa que esta parte del código está funcionando. Aquí no hay nada malo. Está pasando. Sí, creo que está aquí. Olvidé hacer esta talla para que quepa. A lo mejor intentemos volver a jugarlo y probarlo. Y ese era el problema. Yo no hice esta talla para que quepa. Y lo que eso significa es porque para array, cuando los creas, en realidad tienes que arrastrar desde aquí y decir redimensionar Y entonces hay que decirle al motor qué tamaño es esta matriz. Por ejemplo, le voy a dar 20 ranuras. Ahora con estas 20 ranuras, ya puedo agregar artículos. Tienes que hacer esto, por ejemplo, en la obra Begin o algo así. Sin embargo, con el tamaño a caber, le dice que se puede crear automáticamente una nueva ranura. Eso está bien. No me importa cuanto tiempo sea esta matriz. Que lo que estás haciendo aquí, tamaño para encajar era el problema. Ahora si tienes problemas, otra vez, arrastra desde aquí, escribe una cadena de impresión, mira si la cadena se imprime en la pantalla. Si lo hace, probablemente haya algo más mal. Nuevamente, recuerde, también puede imprimir valores para ver si realmente se agrega a esta matriz de armas superpuestas y así sucesivamente Pero por ahora, parece funcionar. Vamos a hacer clic en Reproducir. Si quieres comprobarlo mejor, también puedes hacer clic en el resorte, hacerlo, por ejemplo, 600. Sólo para poder ver a mi personaje. Intentemos hacer mucho de nuevo. Ahora puedes ver que está en mi arma o en mi mano y dorso. Solo voy a hacer esto un par de veces solo para asegurarme de que todo esté funcionando correctamente y parece que funciona. Entonces puedes ver que arregla el problema, porque ahora mismo sigue recorriendo todo esto Se asegura de que pase por la matriz de armas superpuestas antes de que se detenga y podamos volver a saquear las armas Entonces es asegurarse de que todo sea saqueado. Y como pueden ver, aunque me superponga con múltiples armas a la vez, está funcionando correctamente. El rifle está en mi mano y la pistola está a un costado de mi pierna. ¿Verdad? Entonces ahora que hemos terminado con esta lógica, adelante y guarda todo, y pasemos a la siguiente. 99. 8.14 Crea la estructura de armas: Bien, con este juego, quiero mostrarte todo lo que hacemos cuando desarrollamos un juego, aunque esté avanzado. En esta lección, vamos a crear una estructura de armas. Es mucho mejor que seguir creando variables para las armas. Antes de que esto se vuelva demasiado grande, comencemos a crear la estructura. Ahora puedo intentar mostrarte y entenderás mucho en los planos Hagamos clic derecho y hagamos una nueva carpeta. Llamemos a éste Estructuras. Y haz click derecho otra vez, establece el color a este color aquí, igual que antes Dentro de esta carpeta. Hagamos clic derecho y vayamos a Blueprint. Tenemos algo que se llama una estructura. Da click en él y voy a llamarlo ST como prefijo para estructura. Vamos a llamarlo información de armas. Esta estructura contiene la información de las armas. Ahora cuando abres una estructura, lo único que haces dentro de aquí es agregar variables. Si agrega una variable, puede elegir cómo debe llamarse esta variable. Puedes elegir el tipo, igual que aquí en el blueprint donde creas una nueva variable Lo mismo. Ahora dentro de la estructura, puedes tener información de armas todas juntas aquí. Puedes agregar múltiples variables dentro de aquí y puedes tener toda la información del arma dentro de aquí. Por ejemplo, qué tan rápido puede disparar el arma, cuál es el nombre del arma, y todas estas cosas que quieras. Por ejemplo, la miniatura del arma cuando la agregas al inventario, ¿cuánto debería costar en la tienda cuando compras el arma Puedes tener un valor de moneda o un valor de $1 y así sucesivamente. Toda la información del arma puede estar dentro de. Aquí puedes ver que puedes reunir todas las variables dentro de una estructura. No tiene que hacer 100 variables dentro de este plano, en realidad lo están conteniendo dentro de la estructura Sigamos adelante y comencemos a hacer uno. Voy a borrarlos a todos. Al primero de aquí voy a llamar nombre. Necesito un nombre para mi arma. Y voy a cambiarlo al tipo de cadena porque string es solo algo de un texto que podemos escribir. Ahora muy importante, la diferencia entre una cadena y en un texto puede ser localizada o traducida a diferentes idiomas. Por ejemplo, si quiero que mi juego sea alemán o japonés, o chino, en el futuro tengo que seleccionar texto. Por ejemplo, si quiero traducir el nombre del arma, si eliges String, no puedes traducirla en el futuro. Asegúrate si quieres un juego que pueda traducirse porque quieres traducirlo en el futuro. Adelante y selecciona texto. No obstante, voy a seleccionar nombres de armas de cuerda como un AK 47 o 44. A pesar de que lo cambie a diferentes idiomas, realidad no va a traducir. Es decir, ¿cómo se llama AK 47 en diferentes idiomas? Es el mismo nombre. Por eso elijo una cadena en lugar de un texto, aunque quiero traducir mi juego en la futura cadena para el nombre. Entonces recuerda que también agregamos este tipo de arma. Este tipo de arma también podemos tener dentro de la estructura. Yo solo puedo llamarlo tipo, puedes llamarlo tipo de arma, eso está bien. Llámalo como quieras para que sea más visible para ti por aquí. Cambiémoslo a tipo de arma. Recuerden, hicimos ese tipo de arma de enumeración por ejemplo También podemos agregar uno nuevo y llamar a clase. Una clase es si buscas base de armas y la tomas aquí, selecciona esta clase, referencia Una clase es que puedes generar una nueva arma a partir de esta A lo mejor lo necesitamos, quizá no. Siempre es agradable tener una clase para cualquier juego que hagas, porque tal vez en el futuro necesites volver a engendrar esa arma al mundo Siempre es bueno tener esta clase aquí. Ahora tenemos una estructura. Es pequeño, pero es bonito y creamos uno más adelante. Se puede agregar, por ejemplo, velocidad de disparo para esa arma. Y luego puedes seleccionar un flotador por el número de qué tan rápido puede disparar. Posteriormente se puede decir velocidad de recarga y así sucesivamente. Para que veas puedes agregar mucha información sobre esta arma. Tal vez quieras agregar como un valor de tienda o quieres agregar descripción similar, o quieres agregar una miniatura para el inventario Se pueden agregar muchas cosas. Pero por ahora, solo agreguemos estos. Y voy a añadir más a la estructura más adelante cuando la necesitemos. Ahora que hemos creado esta estructura, podemos pasar a crear una tabla de datos. Te diré en la siguiente lección qué es una tabla de datos, pero por ahora, increíble, creaste una estructura, y sigamos adelante. 100. 8.15 Crea la tabla de datos de armas: En esta lección, vamos a crear una tabla de datos de armas. Para crear una tabla de datos, tienes que estar en Google Drive o Google Sheets, o si tienes Excel puedes usar eso también. Estoy usando Google Sheets. Adelante y crea una cuenta de Google si no tienes una. Y luego dentro de aquí estamos dando click aquí arriba y yendo a mi unidad. Dentro de su unidad, acabo de hacer una carpeta dentro de aquí para mantenerme estructurada dentro de aquí. Cuando estés dentro de Google, puedes escribir, hacer clic, hacer una nueva hoja de Google. Da click aquí, y luego va a hacer uno, y voy a llamar a este de aquí arriba, tablas de datos. Voy a hacer un espacio aquí, dentro de aquí. Sólo voy a organizar esto un poco. Voy a hacer clic en Control A para seleccionarlo todo. Voy a dar click aquí arriba, Alinear su centro. Haz clic aquí arriba, Alinea su centro. Haga clic aquí arriba, seleccione el envoltorio de texto. Entonces voy a cambiar el teléfono a éste. Aquí arriba para esta fila, voy a dar click en esta negrita. Nuevamente, controla para seleccionarlo todo. Simplemente voy a hacer todo más amplio así, y esto es solo preferencia. Bien, ahora estamos dentro de las hojas de Google. Y lo que es una tabla de datos, es que podemos escribir todos esos valores desde una estructura dentro de una tabla de datos. Entonces, las personas que no pueden programar, en realidad pueden usar esta tabla de datos y pueden modificar información sobre tu juego, por ejemplo. Empecemos por aquí y ya puedes ver a lo que me refiero. Creamos esta estructura aquí con la variable name. Lo que podemos hacer dentro de esta tabla de datos para escribir, hay que escribir esas variables exactamente como lo que las ha escrito. Dentro de una estructura. Para el nombre, podemos escribir nombre, y luego tenemos el tipo, y luego tenemos la clase. Esto es lo que tenemos dentro de una estructura ahora mismo, recuerda escribirla exactamente como la escribiste aquí dentro de la estructura. De lo contrario obtendrá caja, escríbala aquí para el nombre del artículo. Por ejemplo, el primero tenemos un AK 47 K 47. El siguiente tenemos uno si ves aquí en el arma de planos, esto es lo que tienes Y entonces tienes una pistola. También se le puede dar un nombre. No obstante, mi pistola se llama pistola. Realmente no tengo nombre para ello. Ahora hay que escribir el tipo de esta arma. Recuerda dentro de la enumeración que hiciste este tipo de arma Dentro de la estructura, también puedes ver qué tipo de arma seleccionaste. Ahora para este tipo de arma, tienes que escribirla exactamente como los tipos de armas que has escrito aquí. De lo contrario obtendrá caja dentro de una tabla de datos. Tienes que escribir las cosas exactamente como lo que hiciste dentro de aquí. Para el tipo de arma, podemos tener un rifle. Este AK es un rifle, el cuatro es un fusil. La pistola es simplemente el tipo de pistola así. Para la clase, tenemos que hacer otra cosa. Vamos a crear la tabla de datos primero porque esta no puedo obtener una referencia a menos que realmente tenga la tabla de datos dentro de los planos Hagamos una nueva carpeta. Llamemos a éste Tablas de datos dentro de esta carpeta. Nuevamente, hagamos clic derecho en Establecer el Color dentro de esta carpeta. Hagamos clic derecho, creo que está dentro de Michelaneo, no plano Aquí está, la tabla de datos. Adelante y creado. Ahora te dice, ¿a partir de qué estructura quieres crearlo? Quiero crearlo a partir del arma Info. Adelante y haz clic. Bien. Ahora vamos a llamarlo mesa DT, y de nuevo llamarlo Información de Armas. Normalmente solo lo llamo igual que la estructura. Sin embargo, DT para prefijo, porque esta es una tabla de datos. Si abro esta tabla de datos, se puede ver que está vacía ahora mismo. Si haces clic en el plus, un puro, agregas una nueva entrada para la tabla de datos. Se puede ver aquí, se le puede dar un nombre. Por ejemplo, AK 47. Puedo convertirlo en un rifle y la clase es este BPAK 47 que creamos Aquí puedes ver que tenemos la información ahora en lugar de una tabla de datos, en realidad podemos extraer esta información y usarla en nuestro juego. Hagamos esto desde nuestra tabla de datos aquí desde Google Sheet. Voy a dar click en esta, esta entrada que creaste ahora mismo, y simplemente seleccionar una de esas por azar. Por ejemplo, este PPK 47. Entonces puedes escribir, dar click ahora en esta y decir copia, porque ahora estás copiando esta referencia. Aquí puedes ver así es como realmente necesitamos escribirlo dentro de tu hoja de Google. Ya hicimos esto. Escribimos el nombre aquí correctamente, así. Escribimos el tipo como este rifle, por ejemplo. Para la clase, hay que escribirla así también si solo controlo V dentro de aquí. Recuerda escribir, Pulsa por aquí, cópialo, controla V. Dentro de aquí. Sólo voy a hacer que se registre para poder ver realmente lo que estoy haciendo. Así como esto. Bien, aquí adentro, así es como lo haces. Ahora copias este y lo pegas a los otros. Recuerda, en lugar de un AK 47, esto es 44. Entonces hay que escribirlo exactamente como referencia. Estoy haciendo referencia a este PP 44. Puedo volver aquí. Estas son las carpetas, planos, armas correctas. Y solo necesito cambiar este 1141. La última es la pistola llamada pistola BP. Yo escribo P pistola pistola aquí también. Bien. Ahora tengo esa información correctamente. Lo que tengo que hacer ahora es hacer clic en el archivo para descargar y seleccionar CSV. Este es el formato que necesitamos usar. Ahora si abro mi carpeta de descargas por aquí, llamémosla T para tabla de datos. Voy a llamarlo con el mismo nombre que dentro de aquí, así se puede importar. Recuerda llamar al mismo nombre, ET Weapon Info. Ahora puedes pinchar y arrastrarlo hasta aquí. Si haces clic y lo arrastras hacia aquí, dice Columna esperada Nombre no encontrado. No estoy seguro de cómo lo llamo. Yo lo llamé de nombre. Esto se debe a que en realidad necesitamos columna aquí. Necesitamos hacer clic derecho y agregar una columna a la izquierda y llamarla ID. Por alguna razón crea una identificación, necesitamos eso también. Lo que suelo hacer es simplemente copiar todos los nombres y pegarlos dentro de aquí. En realidad va a extraer información de la identificación. Y cuando extraes, por ejemplo, este ID aquí, conoce el nombre, el tipo, esta clase, y así sucesivamente. Por lo que conoce toda esta información. En realidad primero necesitas una identificación. Bien, así que intentemos ahora volver a descargarlo como CSV. Volvamos a aquí. Voy a copiar este nombre. Voy a borrar el viejo. Y para el nuevo voy a renombrarlo así. Y ahora puedo arrastrarlo hasta aquí. Ahora puedes ver que funciona correctamente. Entonces necesitamos esa identificación. Ahora puedes ver cuando importo mi tabla de datos, automáticamente rellena toda la información. Entonces yo, hago clic en el primero, se puede ver que tiene el AK 47 el rifle y está configurado con el plano correcto Y el otro, por ejemplo en cuatro un uno también se puede ver la información correcta está aquí también. que veas lo realmente agradable que es para las personas que no pueden programar. De hecho, pueden simplemente entrar aquí, cambiar el tipo de arma, o pueden cambiar el nombre del arma. Y lo único que tienes que hacer ahora es simplemente hacer clic en el archivo. Descarga esa carpeta o archivo y simplemente arrástralo a tu juego. Y va a cambiar todos los valores. Dentro de aquí, puedes imaginar que puedes tener un valor de tienda y puedes tener monedas que cuestan por el arma si la compras en la tienda. Y el diseñador del juego puede venir aquí y editar todos esos valores dentro de la hoja de Excel. Incluso puedes hacer fórmulas dentro de aquí y calcular. Entonces puedes simplemente hacer clic en Descargar y puedes simplemente arrastrarlo aquí y cambiará todos los valores de las monedas dentro de aquí. No tienes que hacerlo dentro del motor. Realmente agradable usar una tabla de datos, especialmente para personas que no pueden programar. Pueden entrar aquí y cambiarlo de la tabla de datos, ahora lo tenemos dentro de aquí. Lo siguiente es que necesitamos usar una biblioteca de funciones. Hagámoslo en la siguiente lección. 101. 8.16 Usa la biblioteca de funciones: El paso final antes de que podamos usar esta tabla de datos es si creamos una biblioteca de funciones. Una biblioteca de funciones simplemente como el nombre dice una biblioteca y dentro de ella hay funciones. Vamos a hacer clic derecho aquí de nuevo, hacer una nueva carpeta. Déjame llamarlo bibliotecas. Y cambiemos el color de la misma dentro de esta carpeta. Hagamos clic derecho en Ir a Blueprints y utilicemos esta llamada biblioteca de funciones de blueprint Se puede ver que ya hemos usado un plano de vaca. Estamos usando la biblioteca de planos. Se utilizó la interfaz de blueprint. La biblioteca de macros es igual que la biblioteca de funciones. Hemos usado la enumeración y también hemos usado la estructura Se puede ver que en realidad hemos pasado por la mayoría de estas clases de planos Realmente agradable que hayas pasado por todo esto y estés obteniendo la experiencia. Vamos a crear una biblioteca de funciones de blueprint. Y déjame llamarlo biblioteca de funciones BP porque solo tengo una en mi juego. Vamos a abrir esta biblioteca de funciones dentro de una biblioteca de funciones. Puedes hacer funciones y puedes hacerlas aquí. Lo bueno de una biblioteca de funciones es que puedes usar las funciones globalmente. Si hago una función aquí, vamos, déjame llamarla, por ejemplo, aleatoria si compilo. Ahora si voy a mi plano de jugador por ejemplo. Y escribo click y digo al azar, así es como lo llamé. Puedes ver, ahora puedo ver funciones desde una biblioteca de funciones. No importa donde escriba esto. Si abro el modo de juego y escribo, déjame salir de éste, en realidad, déjame llegar al gráfico de eventos y decir al azar. Se puede ver, puedo ver la función dentro de la biblioteca de funciones. Cualquiera que sea la función que hagas dentro de aquí se puede ver globalmente a través de todos los planos Solo ten en cuenta, no solo funciones dentro de aquí sin ningún motivo, porque ocupa rendimiento. Si esta biblioteca es enorme, lo único para lo que debes usarla es si tienes una función que se usa en muchos blueprints Por ejemplo, estás obteniendo la información del arma, podrías usar eso en la base de jugadores. Podrías usar eso en el modo de juego. Podrías usar eso en el controlador de reproducción. Si tienes una función que vas a usar a través de múltiples blueprints, entonces sigue adelante y hazla dentro de una biblioteca de funciones para que no tengas que hacer la misma función y otra vez en cada blueprint Pero las funciones específicas no las crean dentro de una biblioteca de funciones. Esto solo está pensado para funciones que vas a usar muchas veces a través de planos Por ejemplo, para éste lo vamos a llamar Obtener información. Estamos recibiendo la información de las armas. También voy a marcar puro, puro solo hace que sea esa función verde. Si compila y puedes ver si voy a la base de jugadores por ejemplo y digo obtener información de arma, puedes ver que se puso verde. Y la razón por la que se puso verde es porque hice clic en puro. Y aquí lo puedes ver. En realidad se pone como esas funciones verdes si has creado una. Este por ejemplo, para este estamos obteniendo el controlador, puedes ver que es verde porque simplemente está obteniendo información. Si estableces información entonces necesitas estos pines aquí y son azules. Estas son funciones establecidas y estas son funciones get. Simplemente están obteniendo información sin modificar nada. Esto es lo que queremos hacer. Queremos obtener nuestra información de armas. Lo pusimos en puro porque no estamos modificando nada dentro de aquí. La función principal que necesitamos usar dentro de aquí, si hace clic derecho en ella, aún es la fila de tabla de datos. Este de aquí abajo, sin embargo, fila de tabla de datos. Esta es la función principal que necesitamos usar. Y tenemos que seleccionar nuestra tabla de datos. Entonces necesitamos obtener información de la información del arma T. Ahora tienes que decirle ¿qué información quieres obtener de ella? Ahora esto tiene que ser dinámico, dependiendo de lo que estés haciendo dentro del juego. Vamos a hacerlo, y puedo explicarlo más tarde para la información del arma. Ahora vamos a crear una variable y llamémosle nombre de arma. Y voy a convertirlo en una cuerda. Voy a tomar esto y decir reemplace. Y usa esta función llamada replace. Ahora la razón por la que uso esto es si estás dentro de tu tabla de datos aquí, digamos que tienes un nombre, por ejemplo, digamos que tienes un arma llamada cuatro en uno. Vamos a fingir que esto es un arma. Tienes espacios entre tu nombre para la identificación. Ahora, cuando creas algo dentro de una tabla de datos, en realidad elimina los espacios. Si abres la tabla de datos, digamos que importas esta en el espacio uno a. Si importas eso a aquí, en realidad eliminaría el espacio y solo escribiría una A sin espacio. Lo que suelo hacer aquí para quitar todos los espacios de aquí, cuando los subes, tomo el nombre del arma aquí en el de. Presiono espacio, asegúrate de agregar un espacio. Los dos simplemente pueden estar vacíos. Nada dentro de aquí, eso es todo. Lo que esto simplemente está haciendo es tomar todos los espacios de estos nombres. Digamos que es éste. Está tomando el espacio y lo está reemplazando por nada, lo que significa que en realidad estás borrando el espacio así. Después encontrará el ID correcto dentro de esta tabla de datos. Porque esta tabla de datos elimina automáticamente estos espacios al importarlos. Cuando busques un nombre como con este espacio , te dará una época. Estamos quitando todos los espacios, y ahora vamos a enchufar eso aquí. Automáticamente va a convertir la cadena en una variable de nombre. Entonces podemos justo desde aquí y decir regreso. Puedes conectar esta salida a la devolución y puedes llamar a esta información de arma. Bien, ahora hemos terminado y necesito explicarte todo el proceso porque esto puede ser un poco confuso. Lo que estamos haciendo aquí ahora es que ahora podemos decir, por ejemplo, aquí dentro de la base de jugadores podemos decir obtener información de armas. Y podemos llamar a esa función que hicimos en la biblioteca de funciones. Estamos recibiendo esa información. Ahora necesitamos enchufar un nombre de arma. Digamos por ejemplo, vamos a hacer eso en la siguiente lección. Pero digamos por ejemplo, enchufé el nombre AK 47 Va a tomar ese nombre. Va a ir dentro de esta función a la biblioteca de funciones. Va a tomar el nombre aquí, va a eliminar todos los espacios, si los hay. Va a poner ese AK 47 que escribí aquí en el nombre de la fila, lo que significa que se ve aquí en el nombre, busca el AK 47, busca éste. Ahora sabe que estamos hablando de esta fila. Conoce el nombre, el tipo, la clase, y así sucesivamente. Para que puedas arrastrar desde aquí y decir break, puedes romper estructuras. Y ahora se pueden ver todas las variables ya que toma la información de esta tabla de datos, ahora conoce el nombre del AK 47, sabe qué tipo de arma es, qué clase es, porque está tomando toda esa información de esta tabla de datos. Así es como lo usas y ahora necesitamos realmente hacer esos nombres de armas. Enumere esto por ahora. Compilemos y guardemos, y sigamos adelante. 102. 8.17 Añade el nombre del arma: Ahora lo que tenemos que hacer, cerremos todo. Volvamos a las armas, y vamos a la base de armas. Ahora dentro de aquí, hagamos una nueva variable llamada, llamémosla nombre de arma. Démosle el tipo de cadena. Entonces es sólo un texto. Y si compilas, puedes ver, puedes escribir algo aquí ahora para el nombre del arma. Desde que crea esta variable, recuerde que ya que creó dentro de la clase de blueprint padre, todos los hijos heredarán esta Si abres la Q 47, puedes ver en los valores predeterminados de clase que ahora puedes escribir un nombre de arma Puedes hacerlo específico para cada arma. Ahora agregas la variable dentro de la base del arma y luego puedes editar esta variable para que sea algo específico para cada niño. El nombre del arma para el AK 47 es apenas K 47 para los cuatro. Lo puedo ver aquí. No tengo que hacer click aquí arriba. El nombre del arma para los cuatro es 41. Vamos a cerrar eso también. Para la pistola, es sólo pistola. De hecho voy a recordar compilar aquí así como así. Guarde todo. Ahora has escrito el nombre del arma para cada uno de ellos. Necesitamos ese nombre de arma, extraemos la información correcta de la tabla de datos porque si el nombre del arma es pistola, vamos a enchufar ese nombre de arma y va a extraer toda esta información de aquí. Bien, vamos a cerrarlo ahora. Ahora lo que podemos hacer, por ejemplo, es que podemos ir al jugador. Vayamos al jugador. Sólo voy a mostrarte que en realidad no deberías seguir aquí. En realidad solo quiero darte un ejemplo. Tenemos por ejemplo, esta arma saqueada. Esta arma saqueada la puedo arrastrar de aquí. Y ahora puedo decir nombre y tomar esta variable de nombre de arma. De eso puedo decir aún información de armas. Esa es la biblioteca de funciones. Ahora en realidad podemos enchufar eso. Digamos que pasé por encima de un AK 47. Lo pasé por encima y ahora realmente puedo extraer la información de él si solo imprimo una cadena mi pantalla y la conecto aquí abajo. Tomemos esto y digamos romper esta estructura. Vamos a imprimir el nombre de esta arma. Si solo acecho, me acerco, en realidad tengo que elegir, así que si elijo terroristas y paso por encima de esta pistola, va a imprimir pistola Si paso por encima de esto en cuatro, va a imprimirse en 41. Entonces puedes ver que ahora está extrayendo información correctamente dependiendo de cuál sea el nombre del arma. Permítanme borrar esto por ahora. Recuerda muy importante cuando añades esta variable a la clase padre, recuerda que tienes que entrar en cada uno de los hijos y cambiar el valor de esta. Bien, adelante y guarda todo y sigamos adelante. 103. 8.18 Reemplaza la variable WeaponType: Bien, en esta lección voy a sustituir la variable tipo de arma. Si vamos a la base de armas, recuerda que hicimos este tipo de arma y la estamos usando aquí para verificar si el jugador ya tiene el arma en el inventario. Este tipo de arma, ya hicimos esto dentro de la estructura. Si vas a la estructura, recuerda que hicimos este tipo. Ahora no necesitamos que estas variables extra estén por ahí. De hecho, podemos simplemente usar nuestra estructura para reemplazar esto. Lo que podemos hacer ahora, en lugar de todo esto, en lugar de tomar el tipo de arma así, ahora podemos decir obtener información de arma. Podemos tomar esto aquí, enchufar el nombre así. Recuerda que estamos dentro de la base de armas. Ya tenemos el nombre aquí. Ahora para obtener el tipo de arma, tenemos que arrastrar y decir romper y podemos romper esto. Lo que puedes hacer, también puedes escribir click aquí y decir split struct Y puedes conseguir esos así. Sin embargo me gusta simplemente escribir break y tenerlos aquí afuera en su lugar. Ahora esa es solo la preferencia. Ahora puedo tomar este tipo, este es el tipo de arma, y puedo enchufarlo aquí. Ahora se puede ver que esto es lo mismo. Ahora en realidad puedo eliminar esta variable de tipo de arma para ocultar esos pines que no estás usando. Para que se vea mejor, puede hacer clic en él y presionar ocultar pines desconectados. Se ve así. Bien, tengo que organizar esto un poco más tarde, pero dejemos que esté aquí para este tipo de arma. Aquí estoy arrastrando de esto y volviendo a decir nombre. Obtener el nombre del arma, obtener información del arma. Y entonces puedes romper esto. Entonces puedes enchufar el tipo por aquí, en cambio, podemos eliminar esto también. Ahora puedes ver que ya no estamos usando esta variable. Tenemos toda la información del arma dentro de ésta. Bien, voy a organizar esto un poco. Bien, ahora es un poco más organizado ahora para echarle un vistazo si tienes otras referencias de este tipo de arma. En lugar de buscarlo, conozco un hecho que también lo usamos en la base de jugadores. Pero si no recuerdas, digamos que entraste aquí un mes después y no recuerdas dónde lo usaste. En otra parte, puedes ver si intentas eliminarlo ahora, dice que ya se usa el tipo de arma variable . ¿ Quieres eliminarlo? Estoy presionando no, porque todavía lo estamos usando. Haga clic derecho aquí y diga encontrar referencias. Ahora bien, esto aquí abajo sólo está encontrando las referencias dentro de este plano Pero si haces clic en este pequeño icono, lo va a encontrar en todos los planos Va a buscar en todos los planos. Y puedes ver que se usa en la base de jugadores de BP. Si haces doble clic en la variable aquí, nos lleva a y la usamos aquí en el arma de botín donde establecemos el tipo de arma equipada En lugar de volver a hacer esto, tomemos esta arma saqueada Digamos meter el arma. En realidad consigue información sobre armas. Obtener nombre, obtener nombre de arma. En lugar de hacer todo esto una y otra vez, en realidad sólo voy a ir a la base de armas y voy a copiar esto y esto aquí. Entonces la información del arma Git y la estructura del freno. Así que solo puedo pegarlo aquí y puedo enchufar esto aquí, es un poco más rápido. Y ahora puedes enchufar el tipo aquí. Y puedes volver a eliminar esto solo para intentar que sea lo más organizado posible. Pero se puede ver que ahora es muy largo comparado con antes. No obstante, de nuevo, tienes toda la información contenida dentro de esta estructura, por lo que va a ser mucho más limpia para ti. Bien, entonces ahora tenemos eso y volvamos a abrir mis referencias. Voy a hacer doble clic en éste ahora. Y lo estoy usando aquí cuando quiero cambiar o adjuntar el actor a mi componente mesh. Otra vez, igual que antes. Vamos a copiar todo esto porque en realidad solo estábamos usando esta arma saqueada De nuevo, voy a volver aquí, rep saqueado y voy a borrar esto y hacer espacio más allá de esto y luego conectarlo aquí Y luego simplemente empujarlos hacia atrás. Lo mismo aquí abajo. Eliminarlos y conectarlo. Así como así. Bien, ahora lo tienes compilar, guarda todo. Y eso debería ser todo lo que puedas ver. No tienes más referencias. Esto fueron todos ellos. Si vuelves ahora a la base de armas y presionas eliminar, la va a eliminar automáticamente porque ya no la estás usando. Ahora se puede ver que reemplazamos a todos ellos. Los planos se están volviendo más limpios en el futuro. No tenemos como diez variables para el arma. Los tenemos todos dentro de nuestra función función, nuestra estructura. Y de esa estructura, está tomando esta información de la tabla de datos. Y siempre podremos hacerlo más largo más adelante. Pero por ahora, esta es toda la información que necesitamos. Ahora guardemos todo y sigamos adelante. 104. 8.19 Acción de entrada de arma suelta: Bien, antes hacemos la funcionalidad Lot, como cuando pulsas un botón, por ejemplo. Si presiono E sobre un arma en el suelo y la toco, creo que es mucho mejor comenzar con un arma de caída. Porque si estás sosteniendo un arma en la mano, necesitas soltarla también cuando saqueas la otra Empecemos por dejar caer primero un arma antes de que la lotemos con una tecla en el teclado. Vamos a la entrada aquí en la carpeta del reproductor. Vaya a Entrada clic derecho. En realidad, puedes intentar hacerlo tú mismo si quieres. Este es un buen momento para hacer ejercicio. Ya hemos hecho muchos de esos. Deberías ser capaz de hacerlo tú mismo. Intenta hacerlo tú mismo. Si es posible, intenta crear una acción de entrada o soltar un arma. Y agrégalo al contexto de mapeo de entrada. Y también agregar el evento a la base de jugadores también. Ahora hagámoslo juntos aquí. Vamos a la derecha a Entrada y seleccione Acción de entrada. Llamemos a esto un arma. Vamos a abrirla. En realidad, no necesitamos cambiar nada dentro de aquí. Pasemos al contexto de mapeo. Agreguemos un nuevo mapeo. Seleccionemos el arma de caída. Voy a soltar el arma con la tecla G en mi teclado, igual que en contraataque Ahora puedes usar cualquier otra cosa que esté bien para el modificador. Voy a dar click en Presionado, porque hay que presionar el botón y éste reproducirá el código una vez que no abarque esto. Bien, ahora tenemos esto. Vamos a cerrarlo. Vamos al jugador, base de jugadores. Y dentro de aquí, vayamos al gráfico de eventos. Aquí abajo puedes hacer click derecho y volver a escribir el nombre, igual que lo que hiciste con la entrada o el arma de soltar. El clic derecho y decir un arma de caída y aquí está el evento que necesitas usar. Ahora podemos codificar en la lógica del arma de caída, guardemos todo y pasemos a la siguiente. 105. Lógica de armas 8.20: Bien, así que vayamos aquí con la lógica del arma de caída. Ahora necesitamos saber qué arma quieres dejar caer del inventario. Ahora vamos a ejecutarlo a través del servidor. Nuevamente, necesitamos ejecutarlo a través del servidor para evitar hacer trampa. Entonces voy a hacer un nuevo evento personalizado llamado SRV Weapon Ejecutemos esto en el servidor y confiable. Ejecutemos el servidor uno dentro de aquí. Bien, entonces cuando presione la tecla G para soltar mi arma, va a pasar por este evento personalizado. Ahora necesitamos saber qué arma estamos soltando. Estamos dejando caer el arma que tenemos en nuestras manos. Necesitamos saber qué arma es la que tenemos en nuestras manos. Ahora mismo, en realidad es este tipo de arma equipada. Se sabe si estamos sosteniendo un rifle, pistola o si estamos desarmados para esta arma equipada De hecho voy a renombrarlo para que suene mejor. No es arma equipada, es tipo arma equipada. También necesitamos cambiar el nombre aquí. En realidad, establecer arma equipada. Se establece tipo de arma equipada. También lo voy a hacer aquí abajo, Establecer tipo de arma equipada. Y lo mismo aquí para las variables. Se les llama tipo arma equipada y tipo de arma equipada. Tipo de arma equipada. Es más correcto que antes. Ahora ya sabemos cuál es el tipo de arma equipada. Tenemos que encontrar esto en el inventario. Tenemos que tomar el inventario de armas. Y podemos ahorrar para cada bucle con break. Y volvamos a conectarlo aquí. Recuerda que hicimos el nombre en la última lección. Tomemos esto y digamos variable de nombre y tomemos este nombre de arma get. Ahora estamos recibiendo el nombre del arma del artículo en este momento. El arma aquí. Entonces a partir de este nombre de arma vuelve a obtener información de arma. La estructura aquí, vamos a romperla. Lo que nos interesa es que nos interesa obtener el tipo de arma ahora mismo del inventario que estamos recorriendo, si este tipo que estamos viendo actualmente en el inventario es igual, igual enumeración, si es igual al tipo de arma equipada, esto quiere decir que tenemos esta arma en el inventario y es la que estamos sosteniendo derecha ahora. Si ese es el caso, queremos dejar caer esta arma ahora mismo. Bien, si es el hecho que el arma que estoy buscando ahora mismo en mi inventario es la misma que el tipo de arma equipada en este momento. Esto quiere decir que esta arma aquí es en realidad la que queremos eliminar del inventario. Si eso es correcto, hagamos clic derecho aquí y promocionemos esto a una variable. Voy a llamar a esta arma para que caiga. Y ahora podemos conectarlo a aquí. Al igual que antes hiciste este donde, veamos si lo podemos encontrar. Hiciste esta única arma de botín. Cuando saqueas el arma, eliminas la colisión aquí de la función de notificación Lo mismo que en realidad tenemos que hacer aquí abajo con el arma de caída, porque tenemos que habilitar de nuevo la física, recuerden que teníamos simular la física en las armas desde el principio. En realidad tenemos que hacer lo mismo aquí para éste. Agreguemos algunas notas de ruta trasera para que caiga esta arma. Vamos a darle click y digamos, vamos a compilar. Hagamos esa función en la siguiente lección. Pero por ahora, sigamos aquí, nos estamos soltando el arma. Y también recuerda sacarlo del inventario. Voy a tomar este inventario aquí y voy a pegarlo aquí y decir quitar artículo. Digamos quitar el artículo así. Ahora vamos a seleccionar el artículo que queremos eliminar. Es este artículo de arma o artículo de inventario. Ahora lo estamos retirando del inventario porque si no haces eso, en realidad sigue en el inventario. Si lo dejas caer al suelo, entonces tenemos que recordar actualizar también el tipo de arma equipada. Arrastra desde aquí y di set equip tipo de arma. Por ahora, solo pongámoslo a desarmado. Podemos modificarlo más adelante si tienes una pistola o lo que sea que tengas ahora mismo cuando sueltes el arma, solo vamos a ponerla a desarmada Y eso fue todo. Ahora en realidad te estás soltando el arma. Ahora ya terminamos con éste. Sin embargo, todavía necesitamos hacer esta función rep, notify. Hagámoslo en la siguiente lección. 106. 8.21 Notifica a representante de arma de caída: Bien, abramos el arma para soltar rep, notifíquelo. Si no recuerdas lo que hicimos, siempre puedes volver al arma aludida Y aquí lo que hiciste es quitar la física de simulación, eliminaste la colisión para el arma porque ahora la estás sosteniendo en tu mano y eliminaste también la colisión de esfera de colisión. opuesto a esto, si volvemos a nuestra arma caída, primero tenemos que separar el arma de la mano Porque recuerda en las armas saqueadas, le pegaste esto al personaje Lo que tenemos que hacer primero es tomar esta arma para que caiga. Tenemos que decir desprenderse. Y puedes seleccionar éste. Despegarse del actor. Ahora estás despegando esta cosa de aquí, esta arma para que le caiga a este actor Mantengamos la ubicación, rotación y la báscula para mantener el mundo donde sea que esté ahora mismo en el mundo. Simplemente mantiene la ubicación y así sucesivamente. Justo al contrario de las armas saqueadas. Tomemos esto y digamos primero fijemos colisión porque no podemos simular la física. Si en realidad no configuras la colisión correctamente, pongamos la colisión habilitada, en realidad es el arma. Si regresas, si no te acuerdas, siempre regresa a la base de armas, revisa qué necesita colisión. Recuerda que es el arma la que necesita esta colisión aquí. En realidad necesitamos tomar esto y tomar primero el arma, la variable arma, obtener eso. Entonces podemos decir establecer colisión habilitada aquí. Vamos a conectarlo. La colisión, recuerda fue solo física. No necesitamos consulta para esta malla aquí, solo física. Y también necesitamos simular la física. Y eso lo hacemos en el arma. Recuerda, si regresas y haces clic en el arma, es aquí donde simulas la física. No está en los valores predeterminados de clase. Hay que arrastrar del arma y decir simular la física. Y seleccione ese Dios y conéctelo y habilite la física. Adelante y haz algunas notas de reencaminamiento para que sea más agradable. Bien, ahora simulamos física encendida y también tenemos algunas colisiones habilitadas. Ahora recuerda que también desactivaste la colisión. Si vuelvo al arma saqueada, también desactivaste la colisión para la esfera de colisión, necesitas tomar esta y necesitas tomar la variable esfera de colisión Se baja en la parte inferior aquí, toma la esfera de colisión y luego vuelve a establecer una colisión habilitada y salir y seleccionar. Y sí, así como así. Ahora hay que establecer la colisión para que consulte solo porque la colisión es en realidad consulta solo para la esfera de colisión. Se puede ver aquí. Solo consulta, necesitamos configurarlo para consulta solamente. Creo que eso es lo único que teníamos que hacer. Vamos a probarlo. A ver si todo funciona. Si tenemos alguna caja necesitamos arreglarlos, juguemos como el terrorista. Ahora bien, si ruidoso, por ejemplo el AK y hago clic en G, suelte el arma, se ve que se le cae al suelo. Así como así. Impresionante. Juguemos en realidad como primera persona, para que pueda verlo mejor. Voy a hacer clic en mi brazo de resorte para la base de jugadores y ponerla a cero. Juguemos como primera persona. Ahora tomemos esta K. Ahora la estoy sosteniendo, presiono para dejarla caer. Ahora se puede ver que está en el suelo. Impresionante. Tratemos de tomar este de aquí y dejarlo caer al suelo. Ahora puedes ver que tenemos un dólar. No creo que sea invisible porque no se puede ver en mi espalda. Me pregunto qué está pasando. Tomemos la primavera. Voy a ponerla 600 para ver qué está pasando. Y en realidad es sólo la M cuatro. Para que veas que la pistola funciona correctamente. La K también está funcionando correctamente. No pasa nada más que la M cuatro. Lo estoy cargando correctamente la primera vez. Sin embargo, si lo dejo caer y entro en él, oh, en realidad está debajo de mí. Lo puedes ver en mis pies. Ahí está. De hecho, arreglemos eso rápidamente. Creo que necesitamos restablecer la ubicación. Si acudes al representante notifique por el arma saqueada. Siempre que saqueas un arma, tienes que reiniciar, transformar. Hagámoslo aquí después adjuntar el componente al componente raíz. Lo que puedo hacer aquí es que puedo tomar el arma y solo puedo decir reset. Y se puede ver algo llamado reset, relativo transform. Va a restablecer la transformación de esta arma aquí dentro del plano Debido a que no es suficiente que lo volvamos a unir al componente raíz, también tenemos que restablecer la transformación del mismo Vamos a compilar y jugar y ver si eso soluciona nuestro problema. Yo los tomo cuatro, lo dejo caer. Vuelvo a tomarlos cuatro, y ahora se puede ver que está funcionando correctamente. Si vuelvo con mi brazo de resorte, ponlo a cero. Juega ahora como terrorista. Ahora puedo tomar esto en cuatro y puedo dejarlo caer. Puede tomarlo de nuevo. Se lo puedo dejar caer. Ya puedes ver que está funcionando correctamente. Es un buen mecánico que en realidad necesitamos salir primero de la esfera de colisión antes de que podamos volver a saquear Porque te puedes imaginar si lo dejas caer y no tienes esta funcionalidad, sigues saqueando el arma Cuando la dejas caer debajo de ti, tienes que salir y volver a entrar y todo está funcionando perfectamente, bien. Lo último que realmente olvidamos también, o lo olvidé, es romper el bucle. Porque si encuentras el arma aquí, en realidad necesitamos romper el lazo. Tenemos que tomar esto y ejecutarlo todo el camino de regreso para romper. Y hagamos doble clic para hacer redirigir los nodos para que se vea mejor. Porque ahora si encontramos el arma, tenemos que detener el bucle. No necesitamos recorrer más porque ya encontramos los resultados. Tenemos que romperlo aquí a través del bucle. Eso lo hará más optimizado. Ahora vamos a compilar y hagamos clic en Reproducir. Y toca la chara solo para probar si todo está funcionando correctamente Ahora podemos ver que todo está funcionando bien con la pistola también. Todo está funcionando bien también. Ahora a veces te sale un error si dejas caer el arma y en realidad no tienes nada por aquí. En lugar de simplemente seguir soltando el arma, tenemos que verificar si realmente tienes un arma o no. Tenemos que tomar este tipo de arma equipada y tenemos que decir, ¿es igual a desarmada En realidad, podemos decir ¿no es igual? Eso va a ser mucho mejor. Si no es igual a desarmado, puedes seguir adelante y soltar el arma Si está desarmado, no tienes nada en la mano y no tiene sentido dejar caer el arma Si no está desarmado, puedes seguir adelante y soltar el arma, y eso la hará mucho mejor Y también quita alguna caja que podrías tener más adelante si dejas caer el arma. Y ya se puede ver que todo está funcionando como se supone que debe hacerlo. No obstante, no te engañen demasiado porque ahora intentemos jugarlo como el cliente Ahora si jugaba como cliente como terrorista, ahora si entro en un arma, puede ver que está loteada correctamente Y si hago clic en G para soltar el arma, bien, todo está bien. No obstante, si voy a saquearlo de nuevo, se puede ver que sostengo algo y en realidad sostengo el arma No obstante, sigue en el suelo. ¿Qué está pasando? Este error está ocurriendo porque rep notifica Si voy a la base de jugadores, rep notifica solo ser llamado si el valor cambia Por ejemplo, aquí, si mucho el arma aquí, digamos que aludido al arma. Bien, bien. Pongo esta variable, este representante notifica que está configurado en pistola. Ahora si lo dejo caer, volvamos al juego. Si lo dejo caer aquí, si le asigno los cuatro, bien, bonito déjelo caer. Si voy a la pistola funciona bien. Ya ves que puedo hacer esto. No obstante, no puedo cargar la misma arma dos veces. Se va a, Pero entro en ello, se puede ver que se está molestando y algo es raro. Esto se debe a si es el mismo valor al que se está alimentando aquí que la última vez, realidad no va a llamar a una función de notificación de representante. No se llamará a la función rep notify si es el mismo valor exacto al que ha conectado aquí Y esto va con todo. Por ejemplo, digamos que tenías una variable vectorial y estás configurando alguna, Digamos que estableces la ubicación del arma. Digamos que estás configurando la ubicación del arma y en realidad la estás ejecutando a través de una notificación de representante. Digamos que la ubicación del arma tiene que ser 000 y la enchufaste aquí Ahora la próxima vez que ejecutes esto y la ubicación del arma es exactamente lo mismo, en realidad no va a ejecutar esta función de notificación de representante. La función de notificación de representante solo ejecutará si está cambiando el valor. Eliminemos este de aquí. Eliminemos esto en la ubicación del arma rep que acabamos de hacer. Lo que tenemos que hacer aquí es que tenemos que cambiar esto. Hagámoslo realmente en la siguiente lección. 107. 8.22 Restablece el valor de Rep Notify: Bien, así que ahora reiniciemos la función rep notify para que funcione correctamente. Entonces, qué podemos hacer aquí ahora estás manejando esta arma de caída. Lo estás ejecutando correctamente. Ahora vamos a restablecerlo aquí. Cuando el bucle esté completo y todo esto esté terminado, sigamos adelante y restablecemos este valor. Entonces la próxima vez que lo establecemos, aunque sea el mismo valor, va a ejecutar esta notificación, porque la hemos restablecido antes de eso. Aquí abajo lo que tengo que hacer es que dejemos caer esta arma. Tomemos eso aquí. Es aquí abajo, el arma para caer. Vamos a sacarlo aquí. Conectémonos a lo completo. En realidad, eso es lo único que hay que hacer si no enchufa nada a este valor, va a tirar toda la información que hay dentro de él, y eso restablecerá esta variable aquí. Lo que podemos hacer ahora, habrá un pequeño bicho, y probablemente lo verás también. Ahora si hacemos clic en Play, tomo esto, lo dejo caer, ya se ve que está ahora en el aire. Lo estamos recogiendo correctamente. No obstante, todavía está en el aire. Esto es, déjame cerrar esto. Esto se debe a que en realidad todavía estás ejecutando esta función aquí. Y al mismo tiempo estás reiniciando esta variable. Necesitamos realmente darle un pequeño retraso para darle la oportunidad de jugar esta función de notificación. Antes lo restablecemos. Permítanme simplemente retrasar por algo muy pequeño como 0.1 y luego podemos restablecer esta variable. Vamos a compilar, juguemos y veamos qué pasa. Ahora bien, si juego como terrorista, lo recojo y lo dejo caer. Ver que funciona correctamente. Si lo recojo de nuevo. Ahora todavía hay un error aquí y tenemos que hacer lo mismo por el arma del laúd Ahora dice X no tratando de leer el arma de propiedad para dejar caer desprendido del actor. Ahora lo que tenemos que hacer aquí porque cuando ejecutamos esto, recuerda cuando ejecutas una función rep notify, estás cambiando el valor aunque estés poniendo cero en esto. A pesar de que si estás vaciando, sigues cambiando el valor Y en realidad va a ejecutar todo esto. Nuevamente, la forma en que podemos hacer esto es que podemos hacer clic derecho sobre esta arma para soltarla y podemos convertirla en un get validado y podemos conectarla aquí siempre que sea válida. Podemos seguir adelante y conectarnos y ejecutar este código siempre que no sea válido. Es decir esto aquí, siempre que no conectemos nada aquí, esto hará que esto no sea válido y no hagamos nada si no es válido. Vamos a compilar y ver si eso realmente soluciona los problemas. Antes de continuar, lo puedo dejar caer aquí, entrar en él, y se puede ver que sigue siendo invisible y tenemos que vaciar la otra variable. No obstante, se puede ver que no obtenemos ningún error, por lo que estos están arreglados. Volvamos. Ahora, subamos a las armas saqueadas. Este también tenemos que resetear. Recuerda, esto también se establece en la misma variable porque estás saqueando la pistola una y otra vez Ahora para éste, lo que podemos hacer aquí, recuerda que tenemos, esto no está vacío, así que estamos comprobando si la matriz de armas superpuestas está vacía o no. Si está vacía, volvemos a colocar el arma de botín, por aquí Nuevamente, puedo decir retraso de 0.1 segundos para darle a esto una oportunidad de jugar. Siempre que se haga eso, puedo tomar esta arma saqueada y ponerla así y vaciar los valores dentro de aquí Ahora recuerda entrar en esto nuevamente y asegúrate que esto sea válido siempre que lo hagas, hagamos clic derecho en convertir a un get validado, al igual que antes. Sólo cuando sea válido. Queremos ejecutar el código porque si no es válido, no queremos hacer nada. Compilemos, guardemos todo. Déjame hacer clic en jugar ahora, y eso debería funcionar. Si juego como terrorista, se me cae el arma, vuelvo a saquear. Se puede ver que está saqueado correctamente. Si lo vuelvo a dejar caer mucho, ya se puede ver que está funcionando perfectamente. Es correcto. Ahora funciona como el cliente. Y si juego el juego escucho servidor. Entonces si juego como servidor y como cliente también. Ahora aquí está mi servidor. Voy a engendrar. Y aquí está mi cliente. Yo también voy a desovar. Yo aludió a la pistola como mi cliente y se puede ver aquí en el servidor, y si el servidor mucho K por ejemplo, se puede ver también Si me lo dejo caer aludió, se puede ver lo puede ver tanto en las pantallas aquí como el cliente, puedo dejar caer este lote, todo está funcionando correctamente Si aludiera a la info , también mucho correctamente Bien. Todo es correcto, luciendo bien. Ahora, hay un pequeño problema. Si voy al jugador y el jugador deja caer el arma, se ve que ahora sostengo el arma. No obstante, como jugador, como cliente no puedo ver nada. Pero como el servidor se puede ver, puedo ver el K. Ahora, ¿qué está pasando? Podrías estar pensando que esto podría ser un problema de replicación, porque como servidor puedo ver la información correcta, pero como cliente no puedo ver la información correcta. Esto podría ser un problema de replicación. Porque se puede ver en el suelo, realidad puedo ver el arma. Hay algo mal. Ahora bien, no sospecharía de un problema de replicación. De hecho puedo ver el arma en el suelo. Si se trataba de un problema de replicación, el arma debería estar en mi espalda. Porque entonces piensa que ya tengo algo en la mano y me pondría mi Ak en la espalda. Pero por alguna extraña razón, el arma está en realidad en el suelo y aquí está en mi mano. El problema es muy probable que estés saqueando el arma Como el otro jugador, en realidad estás saqueando el arma antes haber tenido la oportunidad de jugar todo este código en el arma de lanzamiento Hagámoslo realmente en la siguiente lección. Arreglemos este problema. 108. 8.23 Booleano de interacción con armas: Para asegurarnos de que no podemos interactuar con esta arma hasta que ésta haya pasado a través y esta haya sido reiniciada. Entonces en realidad queremos interactuar con el arma porque ahora mismo los jugadores están interactuando con ella demasiado rápido. Vamos a la base de armas. Y dentro de aquí voy a hacer una nueva variable. Vamos a llamarlo, puede ser interactuado. Hagámoslo sólo en lingotes. Ahora vamos a la base de jugadores. De hecho, hagamos por defecto que puedas interactuar con él. Si solo hacemos clic en este lingote, lo voy a establecer en true default. Lo que podemos hacer ahora es ir al jugador Ahora, no quiero que interactúen con él. Una vez que hayamos encontrado realmente esta arma y queramos soltarla, sólo voy a arrastrar esto. Ahora tenemos esta arma. Yo sólo voy a duplicar aquí. Y puedo tomar de aquí y decir y ser interactuado con y podemos configurarlo para que sea falso Ahora no necesitamos replicar esto y la razón es que solo lo estamos ejecutando a través del servidor A veces piensas que a veces estás replicando cosas, a veces no estás replicando Qué necesito realmente para replicar Si necesitas algunas variables que en realidad solo estás usando durante las funciones del servidor, estas no necesitan ser replicadas Estás configurando si esto puede ser interactuado o no. Si solo estás usando esta información dentro de las funciones del servidor para hacer algo de lógica y los otros jugadores no necesitan saberlo, en realidad no necesitas replicarla No obstante, si quieres otras cosas, por ejemplo, qué arma estás equipando si la estás usando aquí puedes ver el tipo de arma equipada En realidad lo estoy usando aquí donde el cliente también ejecuta el código. Ahora bien, si esto no se replica, entonces esto le dará una era para el cliente No obstante, puede ser si lo uso aquí arriba donde está el cliente también, tengo que replicarlo Pero como solo lo estoy usando en la lógica del servidor, entonces en realidad no necesito replicarlo Es como una cosa interna. Ya puedes guardarla. Ahora no puedo interactuar con el arma aquí abajo. Siempre que se complete, quiero establecer mi puede ser interactuado con para que sea verdad Ahora necesitamos configurarlo antes de éste, porque recuerda que estás borrando la variable. Antes de eliminar la variable, necesitamos usarla. Tomemos esto y digamos que se puede interactuar con. Y voy a establecerlo true porque ahora podemos interactuar con él y luego queremos eliminar esta variable. No quieres hacer esto aquí porque eliminas la variable, por lo que esta sería inválida. Ahora eso es borrarlo. Ahora lo que tenemos que hacer, tenemos que ir a la base de armas aquí. También necesitamos escribir aquí que si no puedes interactuar con él, no hagas nada después de la autoridad. Vamos a atacar desde aquí. Recuerde, no replicamos esta variable. Si escribimos algo aquí, nos va a dar una época ya que lo estamos escribiendo, después de que el switch tenga autoridad, así que solo lo estamos usando dentro del servidor, entonces va a estar bien, no necesitamos replicarlo Tomemos, esto puede ser interactuado y hagamos una rama Digamos, ¿se puede interactuar con esto? Si puede, siga adelante y ejecute el código. Si no puede, voy a retrasar el código por, digamos 0.1 segundos. Y luego voy a ejecutar esto otra vez. Así que sigo recorriendo este código. De hecho voy a organizar esto un poco más. Entonces, esencialmente, lo que estoy haciendo aquí es que sigo recorriendo el código para asegurarme de que pueda interactuar con mi arma antes de hacer algún código de interacción Entonces déjame solo tratar de organizar esto aquí, déjame empujarlo hacia abajo. Entonces ahora lo que básicamente estoy diciendo es seguir adelante y echar un vistazo y ver si se puede interactuar con esto Si puede, bonito adelante ejecuta el código. Si no puede, voy a hacer un bucle o retrasar el código 0.1 segundo. Y luego voy a regresar y comprobar si esto puede ser interactuado con Sigo recordándolo y estoy esperando esto sea cierto porque cada vez que sueltes el arma, esto será cierto muy rápido Así que ni siquiera te darás cuenta de éste. No te preocupes, esto no es pesado en el rendimiento porque esto va a hacer un bucle muy rápido. Y no va a correr muchas veces, porque esta va a ser verdad muy rápido. Entonces esta en realidad no está funcionando muchas veces. Así que no te preocupes por eso. Intentemos hacer click en play ahora y veamos qué pasa si juego como el terrorista maximizarlo. Saqueo algo y hago clic en, se puede ver que en realidad lo estoy saqueando instantáneamente. Y este es el problema que tenemos ahora mismo. Si me cae el arma muy rápido, sigo saqueando porque en realidad va aquí y comprobando si puedo interactuar con ella, aunque sea el mismo jugador, el mismo jugador que el arma puede interactuar con ella Entonces esto es algo que tenemos que arreglar. No obstante, ahora mismo el código está funcionando. Solo podemos interactuar con él siempre que esto haya pasado por alto. Así que no obtenemos ninguna caja de que sea invisible. Entonces pasemos a la siguiente lección. 109. 8.24 Elimina la interacción del jugador que deja caer: Bien, entonces ahora necesitamos escribir bastante código aquí antes de que esto pueda funcionar. Porque queremos asegurarnos de que el jugador que suelta el arma ahora mismo, queremos asegurarnos de que el jugador que suelta esta información no saquea esta información Nuevamente, solo queremos que el otro tipo saquee la información. No queremos interactuar con él de inmediato, de lo contrario sigues saqueándolo. Tenemos que definir el arma caída. Déjame seguir adelante y hacer un nuevo evento para clientes. Y vamos a llamar a este conjunto arma caída. Y volvamos a ejecutarlo por el servidor. Se ha caído el conjunto de servidores. Entonces tenemos que ejecutar esto en el servidor y ser confiables y tenemos que ejecutarlo a través del evento normal aquí, establecer arma caída. Bien, aquí abajo, simplemente necesitamos establecer esta variable. Voy a simplemente dar click aquí, agregar una nueva variable. Es solo la base del arma porque necesitamos el arma. Llamemos a esta arma caída. Vamos a conectarlo aquí arriba también. Para este, vamos a promoverlo a una variable y digamos arma caída. Ahora bien, no creo que necesitemos replicarlo, porque creo que solo necesitamos ejecutarlo a través del servidor Pero realmente no puedo determinar esto por ahora mismo. Hagamos el código y más adelante, si realmente usamos esto dentro del cliente también, necesitamos replicarlo Por ahora, dejemos que no se replique. Me gusta que las cosas no se repliquen cuando no necesitan ser replicadas Porque recuerda, cuanta más información repliques, más lento será tu juego Porque estás enviando información desde el servidor al cliente. Cuanta más información envíes, menos rendimiento. Solo mantén las cosas sin replicar siempre que puedas. Ahora tenemos esta arma caída. Ahora, cuando saqueas cosas aquí, cuando estás interactuando con ellas en la base de armas, tenemos que asegurarnos de que no saqueas el arma lanzada Lo que tengo que hacer es aquí del jugador, antes de hacer todo esto, puedo arrastrarlo lejos. Antes de hacer todo esto, puedo tomar esto y decir caído. Tomamos esto aquí. Si el arma caída es igual a uno mismo, esta arma, estoy tratando de saquear ahora mismo Si es igual, no hagas nada. Si no es igual, en realidad solo eliminemos esto y déjenme decir que no es igual. Eso será mejor para la legibilidad. Si el arma caída no es igual al arma en este momento con la que estoy tratando de interactuar, entonces podemos seguir adelante y saquearla No obstante, si es lo mismo, entonces no hagas nada. Ahora mismo, no hemos definido el arma caída. Hagamos eso en realidad. Déjenme decir esto. Déjame volver a la base de jugadores de aquí arriba. Siempre que soltemos el arma, pongamos el arma y la definamos. Déjenme llamar a este evento aquí abajo. Establecer arma caída, déjame llamarlo aquí. Y el arma caída es simplemente ésta. Simplemente puedes llamar a este aquí. Y acerquemos todo, igual que antes. Vamos a compilar y guardar todo. Bien, ahora podemos probarlo. Vamos a hacer clic en Jugar y jugar como terrorista. Ahora bien, si saqueo algo y lo hago, se puede ver que no estoy interactuando con él. El problema como esta arma caída sigue siendo el mismo. Así que en realidad nunca podré volver a cargar esta arma. Tenemos que quitarlo cuando sea. Puedes ver aquí, cada vez que lo cargo y lo dejo caer, vuelvo a entrar aquí, ya ves que no puedo cargarlo. No obstante, cada vez que salimos de esta esfera de colisión, necesito restablecer esta variable de arma caída. Podemos volver a hacerlo en la base de armas. Recuerde que usamos el componente on begin overlap. Ahora lo que podemos usar si vuelves a hacer clic en la esfera de colisión y bajas, puedes usar esta en superposición de colisiones. Ahora puedes usar eso para eliminar la definición del arma caída. Ahora lo que podemos hacer es como antes, vamos a copiar Este actor tiene jugador tecnológico porque queremos asegurarnos sea el jugador que sale de esta esfera de colisión. Volvamos a conectar eso. Switch tiene porque queremos asegurarnos de que es el servidor el que maneja todo eso para evitar trampas. Lo único que queremos hacer es que queremos establecer el arma caída para que al igual que resetear la variable. Toma esto y di obtener información del jugador. O consigue la referencia del jugador. En realidad, no info, consigue referencia del jugador. Vamos a conectarlo. Vamos a llamar al set arma caída y ponerla en nada. Sólo estamos reiniciando la variable. Bien, aquí está. Vamos a compilar y guardar todo. Y vamos a darle una oportunidad de pelear. Da click en play y coloco al terrorista. Ahora me encuentro con el. En cuatro, lo dejo caer, me quedo sin él, me encuentro con él. Ahora puedes ver que está funcionando perfectamente. No lo saqueo al instante, solo lo saqueo cada vez que dejo esta esfera de interacción Y vuelvo a entrar en ella. Puedo saquear el arma. Ahora intentemos hacer click en play. Y jugar como dos jugadores. Ahora bien, si minimizo este cliente, en realidad este es el servidor. Juguemos tanto como el cliente como el cliente. Puedo saquear el en cuatro. El servidor toma una mirada que se ve bien. Se lo puedo dejar caer. Parece correcto. Puedo saquearlo otra vez. Parece correcto. Bien. Puedo tratar de darte esta arma aquí. Voy a dejarla caer. Este tipo ahora la saquea. Se lo puedo dejar caer a este tipo. Ahora en realidad no puedo saquearla. A veces se baña, se puede ver a veces cuando lo dejo caer en realidad bichos. No lo hago mucho al instante. Esa es la esfera de colisión, se puede ver aquí. Ya no puedo saquearla. Estoy tratando de entrar en él. No puedo saquearla aquí como servidor. Esto se debe a que el otro jugador realidad está parado sobre él y le está quitando la colisión a ese otro jugador que está parado sobre él. Siempre que el nuevo jugador intenta conectarse con él o interactuar con él, en realidad no está haciendo nada. El problema ahora mismo con esta superposición inicial es que solo está comprobando por un jugador. Si hay varios jugadores superpuestos a esta esfera de colisión, en realidad está molestando un poco. Tenemos que arreglar esto también. Se puede ver que tenemos muchas cosas que arreglar y esa es simplemente la naturaleza de los juegos. Sigues teniendo problemas que necesitas arreglar, pero es muy agradable cuando todo está funcionando y todo está escrito. Ahora pasemos a la siguiente lección y sigamos mejorando el código. 110. Mejora la interacción con el jugador de armas 8.25: Bien, bienvenido de nuevo. Ahora vamos a mejorar este código para asegurarnos de que aunque varios jugadores estén interactuando con la esfera de colisión, es tomarlo en cuenta ahora cuando nos aseguramos de que podamos interactuar con esta arma. Ahora bien, en lugar de simplemente hacer esto aquí, déjame arrastrar este código. Déjame arrastrar esto hacia abajo, y déjame arrastrar esto de esta manera para que tengamos un poco más de espacio para trabajar. La forma en que interactúas con múltiples cosas es si escribes clic y dices obtener actores superpuestos. Ahora obtienes todos los actores superpuestos. Puedo conseguir a todos los jugadores que se superponen. Esto de aquí, quien se superpone, Es la base de jugadores. Es la base de jugadores, es decir, son todos los jugadores aquí para éste. Ahora puedo preguntar si el largo es más de uno o si el largo es realmente uno. Puedo tomar de esto y decir longitud. Puedo preguntar si esto es más grande que uno. Porque si no es mayor que uno, significa que es solo un jugador interactuando con él. Esa es información crucial. Si es más grande que uno, puedo hacer algo. No obstante, si no es mayor que uno, puedo tomar esto y obtener, obtener el primer índice, es decir, solo este jugador, este jugador. Y ahora puedo conectarlo a éste. En lugar de quitárselo a este otro actor, ahora puedo tomarlo de este jugador superpuesto. Y puedo conectarlo aquí Si es menor o no mayor que uno, es decir, es solo un jugador que está interactuando con esta esfera de colisión. Puedo conseguir este jugador de aquí desde el índice cero, y puedo conectar a ese jugador aquí. Bien, entonces eso está funcionando a la perfección. No obstante, ¿y si tenemos múltiples jugadores? Ahora mismo, sólo estoy comprobando si es un jugador. Entonces, si tienes varios jugadores superpuestos a esta esfera de colisión, necesito mirar a través de esos. Puedo tomar todos esos actores superpuestos, puedo decir. O cada bucle con break. Quiero asegurarme de que quien haya caído el arma no debería estar interactuando con esta arma que tengo en el suelo. Puedo conectar esto Ahora puedo tomar de aquí y decir obtener referencia del jugador. Ahora para cada uno de esos jugadores, lo que puedo hacer ahora es llevarme el arma caída. Puedo preguntar, es esta arma caída para este jugador que estoy recorriendo ahora mismo, ¿no es igual? En realidad estamos escribiendo el mismo código que aquí abajo. Si no es igual al arma que estoy tratando de saquear ahora mismo, entonces puedo seguir adelante y saquear el Estoy recorriendo cada jugador. Estoy tratando de encontrar al jugador que aún no ha caído el arma. Si es cierto, permítanme simplemente lamer aquí y promoverlos a una variable. Y llamar a este jugador que interactúa. Déjame ponerla aquí. Adelante y ponlo a hacer algunas notas de reencaminamiento para que se vea mucho mejor Ahora cuando hayamos establecido esta variable, lo que podemos hacer ahora es ahora aquí en el completo, cuando encuentre a mi jugador que interactúa, quiero tomar esto y romper el bucle. Recuerda, siempre rompa el bucle para que no tengas ninguna caja aquí. Tu código también estará mucho más optimizado porque no recorres todo. Rompo el código, rompo el bucle. Ahora tengo al jugador que interactúa. Lo que puedo hacer ahora. Ahora tenemos que revisar el inventario. Porque no necesitamos ejecutar todo esto aquí. Ya lo hicimos aquí arriba. Por lo tanto, tenemos que revisar directamente el inventario para el jugador que interactúa. En lugar de tomarlo de aquí, en realidad solo puede tomar al jugador que interactúa ahora corre a través de esto aquí arriba, un jugador y tú corres por esto aquí. Lo que puedes hacer es simplemente dar clic derecho sobre éste y promocionarlo. O simplemente llévala aquí. Este es el jugador que interactúa. Ahora bien, si es solo un jugador y va a pasar por esto y ejecutar esto correctamente, puedes hacerlo. En lugar de hacer todo eso, siempre puedes simplemente tomarlo de aquí ahora y conectarlo a aquí para que pueda mover mi código un poco para que no esté demasiado estropeado Así como así. Ahora solo estoy usando este jugador que interactúa. Puedes tomar esto y enchufarlo aquí. En realidad, no así. No sé por qué lo configuré, lo arrastro, lo enchufé aquí. En vez de ir directamente de esto, ahora solo estamos usando esta, esta variable que establecemos. De hecho voy a borrar este y solo conectarlo a cada uno de ellos. Así como así. O lo que puedes hacer. De hecho voy a usarlo varias veces. Voy a usar el jugador que interactúa aquí. También voy a copiarlo aquí abajo en este caso. Y no necesitas este. Sólo puedo enchufarlo directamente, así como así. También puedo enchufarlo aquí. Solo estoy reemplazando esas notas de arte traseras que se vea mucho mejor para que se vea mucho mejor porque esta va a esta de aquí. Voy a eliminar las notas de arte traseras. Y solo enchufarlo aquí, eso se ve mucho mejor que antes Ahora estamos recorriendo esto. Estamos configurando al jugador que interactúa, y ahora estamos recorriendo el inventario Bien, así que ahora lo he organizado. Ahora como puedes ver, estamos tomando la variable player interactuando y la estamos ejecutando a través del código. Nos estamos asegurando de que sea el jugador que interactúa el que puede interactuar con todo esto. Probemos este código. Vamos a hacer clic en play. Y juguemos como terroristas, por ejemplo. Déjame jugar como el cliente. Nuevamente, seleccione Terrorista. Déjame simplemente mucho algo. Déjame saquear esta pistola. Voy al jugador, lo voy a dejar caer al jugador. El jugador debería saquearlo. Voy a dejarla caer de nuevo. Ahora puedes ver a este jugador lo saquea. Voy a dejarla caer de nuevo. Este jugador lo saquea, lo voy a dejar caer de nuevo. Ahora puedes ver que ahora está funcionando y todo está funcionando bien. Si lo dejo aquí, no puedo interactuar con él a menos que salga de esta esfera y vuelva a tropezar con ella. No obstante, aunque esté frente a mí, este tipo puede saquearlo sin ningún problema Ahora puedes ver que todo está funcionando correctamente ahora. Impresionante. Ahora en realidad se ve más de un juego en lugar de sólo un prototipo. Nos estamos acercando más a nuestro objetivo y puedes ver que todo se ve bien Es muy divertido jugar y será mucho más divertido ahora cuando agreguemos el rodaje y la recarga y así sucesivamente Como puedes ver, todo está funcionando bien. Si de alguna manera noto alguna caja en el futuro, voy a hacer algunos videos para eliminarlos. O siempre puedes visitar Pixel Helmet.com o puedes visitar mi servidor de Discord Si encuentras alguna caja de alguna manera que no me di cuenta, siempre estoy arreglando esas y mostrándote cómo arreglarlas, pero por ahora realmente no podemos ver ninguna caja. Todo parece funcionar perfectamente. Voy a mejorar el juego más adelante. Por ejemplo, podemos mejorar lo que pensemos que se ve mal. Parece principiante como que siempre podemos arreglarlos. Aquí lo estoy probando como servidor y clientes. También se lo puedo dejar caer al cliente. Pueden dejarlo caer de un lado a otro. Lo puedo dejar caer al suelo. El otro jugador puede entrar dentro de él, saquearlo. Puedo dejarlo aquí como el servidor. El cliente también puede toparse con él y saquearlo. Se puede ver que en realidad no tenemos ninguna caja en este momento y todo está funcionando perfectamente en el futuro. Nuevamente, puedes volver a visitar mi sitio web o servidor de Discord, Pixel Helmet.com y me aseguraré de que si hay alguna caja de alguna manera que aparezca durante el desarrollo del juego, siempre podamos arreglarlas Pero por ahora, todo está funcionando. Todo está bien. Pasemos a la siguiente lección. 111. 8.26 Arma de saqueo con clave de teclado: Ahora sigamos adelante y agreguemos algunas teclas del teclado para saquear las armas Antes de hacer eso, quiero aumentar mi tamaño de UI. Alguien me dijo que es difícil de seguir cuando mi UIize es pequeña Si también quieres aumentar el tuyo, puedes hacer clic en Herramientas y luego depurar y luego reflector widgit Voy a aumentarlo a 1.2 Tal vez sea más fácil para ti seguirlo. Puedes ver que mi interfaz de usuario es más grande ahora avísame si esto ayuda o si debo volverla a una. Con eso hecho, sigamos con la entrada y hagamos una nueva acción de entrada, ¿verdad? Nuevamente, puedes hacerlo tú mismo si así lo deseas. Ya hicimos muchos de ellos. Hagamos clic derecho y vayamos a Entrada y vayamos a la acción de entrada. Llamemos a esto un lote arma. Entonces para esta, sigamos adelante dentro de la acción de mapeo de entrada. Voy a hacer clic en el plus aquí arriba y bajando aquí y agregando este lote acción de entrada de arma. Voy a presionar a mi Ekey para saquear el arma otra vez. Por aquí para los disparadores, voy a configurarlo para que presione, siga adelante y ahorre, ciérrelo. Volvamos al jugador. Bien, dentro de aquí. Por cierto, vamos a limpiar todo esto muy pronto en un par de lecciones. Porque se puede ver que hemos hecho mucho y también necesitamos organizarnos un poco antes de continuar. Antes de hacer esto, bajemos aquí y hagamos clic derecho y busquemos el arma A lot. Y elige ese evento. Bien. Lo que quiero hacer es cuando presiono mi EK, quiero lanzar cualquier arma que esté debajo de mí. Lo que tenemos que hacer es hacer una nueva función porque ya tenemos una aquí. Déjame ver aquí. Ya tenemos esta llamada Lot arma. Este lote arma. Recuerda que agregamos un arma solapada de aquella que llamamos el arma de botín Básicamente no es saquear arma directamente. Es más como si estuviéramos solicitando saquear un arma si encontramos un arma superpuesta Si puedo volver a encontrarlo aquí, si encuentro un arma superpuesta, entonces puedo seguir adelante y saquearla Hagamos un nuevo evento personalizado. Y a esta la vamos a llamar pedir mucho arma. Y vamos a ejecutarlo a través del servidor y confiable. Y vamos a llamarlo aquí cuando presionemos sobre el Ekey. Llamemos SRV solicitar mucho arma. Bien, entonces primero vamos a comprobar si estamos superponiendo alguna arma porque no queremos reproducir el código. Si estamos aquí parados y no tenemos armas debajo de nosotros, eso no tendría ningún sentido. Vamos a hacer clic derecho y decirlo. Actores superpuestos. Y cambiemos éste a base de armas. Nos estamos asegurando de que nos superpongamos con un arma. Golpeemos desde aquí y digamos que no está vacío. Esto solo comprueba que en realidad nos estamos superponiendo con un arma. Por lo menos. Vamos a golpear aquí y hacer una rama, y seguir adelante y conectarlo. Cuando tenemos un arma aquí, si no está vacía, esto significa que estamos superponiendo con un arma. Tenemos que verificar si ya tenemos esta arma en el inventario. Porque si ya estás sosteniendo esa arma sea en tu espalda o en tu mano, tienes que dejar caer tu arma actual. No puedes tener dos pistolas a vez y no puedes tener dos rifles a la vez Por supuesto, puedes hacerlo por tu propio juego, pero para este juego que estamos creando, solo puedes tener un rifle, pistola, una granada o cuchillo o lo que sea para este Digamos aquí, intentemos encontrarlo en nuestro inventario. Recuerda, ya estamos haciendo todo esto. En realidad sólo voy a tomar esto y copiar todo esto aquí. Voy a copiar esto aquí arriba y pegarlo aquí abajo porque estamos tomando el inventario y luego estamos comprobando si ya tenemos esta arma a través de este tipo de arma, para este tipo de aquí abajo, es simplemente el arma que estamos superponiendo. Entonces voy a arrastrar de aquí y decir consigue. Y luego vamos a conseguir una copia. Y vamos a obtener el índice de uno. Si estamos superponiendo múltiples armas, sólo estamos obteniendo el índice de cero aquí y vamos a comprobarlo aquí. Bien, entonces lo que tenemos que hacer, igual que antes, tenemos que obtener el nombre de éste. Realmente no podemos decir nombre de arma en este momento y obtener esta variable porque esta, si sostienes el mouse sobre ella, es solo una referencia general de objeto actor. ¿Recuerdas esta? Se trata del BP, objeto basado en armas u objeto de referencia. Y así, si solo tienes un general al que hacer referencia, primero tienes que convertirlo en esta base de armas. Para este tenemos que obtener la referencia de arma. No creo que lo hayamos hecho aquí. En las interfaces que no hemos hecho, obtener referencia de arma. Nuevamente, intenta hacerlo tú mismo porque lo hemos hecho antes, solo para practicar. Intenta hacer que una función obtenga referencia de arma e intente usarla aquí. Bien, si no te acuerdas, hagámoslo juntos. Hagamos clic derecho, vaya a Blueprint y elija Interfaz de blueprint Llamemos a esto una base de armas. Vamos a abrirla. Digamos que consigue arma F. Ahora vamos a compilar. Aquí abajo, tienes que seleccionar a qué Eva estás tratando de hacer referencia. Estoy tratando de hacer referencia a la base de armas y seleccionarla y llamarla arma. Vamos a compilar y guardar todo. Volvamos aquí. Déjame pensar en las armas, abramos la base de armas. Y vamos ahora a la configuración de clase y agreguemos la interfaz aquí abajo llamada Weapon Base. Adelante y selecciona Compilar. Y ahora puedes abrirlo aquí en las interfaces y puedes rastrear desde aquí y decir yo mismo. Esto es una autorreferencia. Ahora hemos definido esta variable. Ahora lo que podemos hacer es volver a la base de jugadores y aquí podemos arrastrar y decirlo, referencia de arma. Ahora tenemos una referencia a esta base de armas. Y ahora convertimos esta referencia de actor general a un actor base de armas o referencia de objeto. Lo que podemos hacer es que podemos arrastrar esto ahora hacia aquí, iniciar sesión como antes. Vamos a arrastrar y decir, en realidad solo podemos copiar y pegar todo esto. Sólo vamos a copiarlo. No tenemos que escribirlo 100 veces. Adelante y conéctalo. De hecho voy a arrastrar este por debajo de este aquí y conectarlo por aquí. Arrastremos de aquí y hagamos una rama y conectemos esta. Bien, así que justo antes de que nos confundamos demasiado, tal vez lo que estamos haciendo aquí es estamos consiguiendo esa arma con la que nos estamos superponiendo. Y ahora estamos recorriendo el inventario. Estamos tratando de ver si ya tenemos esta arma. Si simplemente no hago clic para hacer una nota trasera para que puedan ver lo que está pasando. Lo que estamos haciendo es que estamos recorriendo el inventario y estamos comprobando si ya tenemos este tipo de arma en nuestro inventario Si tenemos este tipo de arma, tenemos que soltarla primero. Digamos que estoy saqueando un AK 47 y ya tengo un M41 en mi espalda Tengo que dejar caer ese 41. Entonces tenemos que soltar arma. Recuerden que ya hicimos esa arma de caída. A eso lo llamamos. Ahora no necesitamos llamar a este evento desde aquí. Esto se debe a que en realidad estamos recorriendo el inventario No necesitamos hacer eso porque ya lo estamos haciendo aquí. En realidad tenemos esta parte aquí, pero lo que necesitamos es esta parte donde la hagamos para que el jugador no pueda interactuar con el arma. Y el arma se dejará caer y así sucesivamente, y se retirará del inventario. En realidad también establecemos este tipo de arma. Necesitamos todo esto, puedes pegarlo aquí abajo. Sin embargo, para una buena práctica de codificación, en lugar de simplemente copiarlo pegándolo, mejor convertirlo en una función para que podamos volver a usarlo Adelante y aquí en el servidor, suelte el arma de este. Selecciona todo esto, solo tienes seleccionarlo todo aquí sin esta sucursal. Y haga clic derecho ir a colapsar. Para funcionar, hacemos esto en una función, llamemos a esta función drop weapon. Arma de caída. Déjame hacer doble clic aquí para hacer un nodo trasero. Se redoble para este pin de entrada. En realidad es si haces doble clic en esta función, solo hago que sea un poco mejor para mirarla ahora mismo. Se puede ver que aquí está un poco desordenado. Aquí termina. Déjame ver si realmente necesitamos hacer algo. Después de lo verdadero, deja caer el arma y luego vuelve y rompe el bucle. Eso se ve bien. Realmente no necesitamos hacer nada por aquí. Bien, entonces ahora se ve mucho mejor. Vamos a compilar y guardar ahora para este pin de entrada aquí. Vamos a llamarlo arma para soltar. Bien, estamos haciendo todo esto igual que antes y solo estamos parando el bucle. Sólo estamos haciendo lo mismo que antes. Pero ahora lo convertimos en una función. Y ahora podemos usar esta función. Si bajamos aquí ahora y nos enteramos de que tenemos esto en nuestro inventario, ya podemos tomar esta arma. Y ahora podemos seleccionar. ¿Qué arma quieres dejar caer? Quiero dejar esta arma en mi inventario que acabo de encontrar. Para que pueda arrastrar de esto, enchufarlo aquí. Voy a hacer click para hacer notas de rock. Bien, ahora bajamos al arma. Lo siguiente que tenemos que hacer es que tenemos que agregarlo a las superposiciones aquí Porque cuando lo agregamos a las superposiciones, recuerden que lo agregamos a la matriz de superposición y luego seguimos adelante y comenzamos a saquear el arma Tenemos que llamar a este anuncio arma de superposición. Bajemos aquí y digamos agregar arma solapada. Y ahora tenemos que seleccionar de qué arma estamos hablando? El arma del que estamos hablando es ésta. Recuerda, no es ésta. Porque no se puede arrastrar de aquí y enchufarlo a aquí. Esto no va a funcionar porque recuerda que esto es solo una referencia normal de objeto actor. Y éste necesita una referencia de objeto base de arma. Recuerda, ya hiciste esto aquí arriba. Para que puedas arrastrar de éste y conectarlo a aquí. Nuevamente, haga doble clic para hacer notas de reencaminar. Aquí lo tienes. Recuerda cuando encontraste esto en tu inventario y terminaste con todo esto, recuerda arrastrar de este y también romper el bucle, para que no continúes el bucle. Así que de nuevo, haga doble clic y haga en las notas aquí también. Bien, antes de que terminemos esto aquí en el bucle, recuerda cuando sueltas un arma también, si vas aquí arriba por el arma de caída, tienes esto donde la colocaste para que se interactuara de nuevo y así sucesivamente Así que vamos a copiar todo esto de nuevo, y vamos a bajar aquí y pegarlo en aquí. Así como así, porque recuerda que estás usando esta arma de caída y dentro de aquí la estás haciendo para que no puedas interactuar con un arma. Entonces tienes que hacerlo para que puedas interactuar de nuevo. Y eso lo agregamos al completo. este momento si haces clic en reproducir y ya podemos seleccionar Terrorista. Vamos a correr por ahí, recoger esas armas. Ahora bien, si hacemos clic en la K, se puede ver que nada está pasando realmente en estos momentos. Si me mudo y luego otra vez algo está molestando. Y también tenemos un error aquí. Si hago clic en él, es solo decir que este no se puede encontrar. No te preocupes por este. Esto está relacionado con otra cosa que arreglaremos más adelante. Pero por ahora se puede ver se me cayó el arma y le agregué el solapamiento para el arma, pero por alguna razón no la está recogiendo. En lugar de quitar esto del video y en lugar de darte la solución, intentaré mostrarte cómo suelo depurar errores. Este es un buen lugar para hacerlo. Ahora estamos soltando el arma. Entonces sabemos que todo este código funciona. Porque llega al punto en el que realmente te suelta el arma. Pero algo sale mal aquí desde el arma de superposición de agregar para lo primero. Ahora cuando depuras, tienes que agregar cadena de impresión. A este evento lo llamamos aquí. Déjame agregar aquí una cadena de impresión. Busca cadena de impresión, selecciónela y debería saludar por aquí. Cuando aludiste, selecciono Terraza. Ahora voy a la AK. Déjame, en realidad, no recogí este. Permítanme hacer click aquí. Se puede ver en la esquina de aquí arriba, dice Hola. El código llega a esta parte correctamente. Ahora necesito verificar si esto es correcto. Ahora creo que esta está mal. Pero podemos. Lo primero aquí, sólo voy a comprobar aquí si esta vez realmente está funcionando o no. Vamos a hacer clic en Reproducir. Seleccione Terrorista. Adelante y selecciona o recoge esto. Da click aquí en el AK y no podrás ver nada imprime. Ahora sé que esta parte del código funciona, pero esta parte no funciona. Nunca llega al punto que realmente carga el arma. Hay algo mal aquí con esta parte del código. A lo mejor nunca se abre. Esta nota nuevamente. Dice que puede cargar arma otra vez. Recuerda que este es un nodo y solo hace este código una vez hasta que abrimos aquí, restablecemos este nodo. Hace esto otra vez. Hay algo con este lote arma otra vez, puede mucho arma otra vez, estamos llamando aquí arriba. Hay algo mal con esta parte. A lo mejor no estamos quitando cosas correctamente de estas armas de regazo ovalado. Lo que podemos hacer es que siempre podemos hacer clic aquí e imprimir cadena. Sólo vamos a imprimir una cuerda aquí y ver qué pasa si hago clic en reproducir ahora y me llevo al terrorista. Mucho todo esto. Ahora lo ves quitado. En lugar de hacer todo esto, solo rompamos con este índice. En realidad sabemos lo que es. Eliminando el taponamiento de superposición, estamos obteniendo el índice y lo estamos quitando Déjame simplemente enchufar esto en su lugar aquí, realidad puedo ver lo que estoy quitando. Phyclicplaylutephld. Retirar el ph. Hace eso como puedes ver aquí. Si saqueo la pistola, debería quitarla, pero se puede ver que nada está imprimiendo Eso es porque sólo está quitando el Inp pero no la pistola Algo está mal y lo que estamos haciendo mal aquí es ahora mismo solo estamos quitando estas cosas siempre que estemos en el estado desarmado Si hago clic en Reproducir y jugar ahora, siempre que esté en el estado desarmado, ahora mismo se está quitando correctamente Sin embargo, si ya no estoy desarmado, en realidad va a ejecutar este código aquí Y nunca ejecutará esta parte del código. Lo que tenemos que hacer aquí, aunque no estemos desarmados, tenemos que quitar todo lo que saqueemos después de la primera Si saqueamos la información, ya no estamos desarmados Cuando saqueamos la pistola , corre esta parte y no hacemos nada En realidad, lo que tenemos que hacer es directo desde aquí y también quitar la pistola que saqueamos después de la info Así que adelante y conéctalo a este remove. Y vamos a compilar ahora. Vamos a hacer clic en Reproducir y ver si nuestro código funciona. Ahora si saqueo este, ahora si vamos al AK y si hago clic en E, ya pueden ver que funciona correctamente Si voy a éste, en realidad saqueé la pistola, se le dio un micrófono. Esto es algo que arreglamos en la siguiente lección, pero por ahora puedes ver la información está funcionando y cuando superponemos la pistola, necesitamos arreglar este problema y vamos a hacerlo. Pero se puede ver que está saqueando los fusiles correctamente, ya nada malo. Esto es lo que hicimos dibujando antes. Tienes que añadir algunas notas reescritas también aquí. Bien, vamos a compilar. Lo siguiente es, ya ves aquí, si presionamos en E, simplemente sigo haciendo spam en mi teclado y me gusta escapar Se puede ver que aquí tenemos algún error y dice, Access non trying to read the property saqueado arma Aquí se pone algún error y vamos a estar arreglando eso en la siguiente lección. Así como la era aquí abajo que da a veces. Por ahora todo está funcionando, guardemos todo y pasemos a la siguiente lección. 112. 8.27 Establece correctamente el tipo de artículo equipado: Bien. Antes arreglamos el acceso, no errores. Ahora mismo lo que puedes ver aquí es cuando hacemos clic en play y saqueamos la info y la pistola Y cuando voy a una pistola y presiono E, cambia a ese modo de vista de pistola. Esto es porque recuerda en el arma de caída que definimos que solo debes cambiar a desarmado cada vez que sueltes el arma Ahora tenemos que mejorar esto y porque cuando estás sosteniendo un rifle, no queremos cambiar a desarmados O cuando estás cambiando el arma que tienes en la espalda, no quieres cambiar a desarmado Lo que podemos hacer aquí, muy sencillo, es que podemos llevarnos el arma equipada. En este momento, tipo de arma equipada. Tratemos de preguntar si es lo mismo que lo que sea que estemos dejando caer. Si el tipo de arma equipada es el mismo que el arma que estamos soltando, significa que debemos ir a los desarmados No obstante, si estamos soltando un arma que no estamos sosteniendo en estos momentos, no debemos ir a los desarmados porque estaba en nuestra espalda Y no necesitamos cambiar el tipo de arma aquí. Arrastremos de aquí y digamos igual. Tomemos el arma que estamos dejando caer ahora mismo. Vamos a arrastrar desde aquí. Digamos, por ejemplo, nombre de arma. Consigamos de nuevo el nombre del arma. Digamos obtener información de armas. Éste. Rompamos esto. Tomemos el tipo aquí y lo conectemos. Y pregunta si es lo mismo aquí. Conectemos esta rama y permítanme simplemente organizar esto. Ahora lo que estamos preguntando es, es el arma que estamos soltando, ¿es del mismo tipo que la que tenemos ahora mismo? Si es así, vamos a cambiar a desarmados. Si no lo es, no vamos a hacer nada. No vamos a cambiar. Compilemos ahora y veamos si funciona. Entonces, si voy aquí y cojo el rifle y si hago clic en la pistola, pueden ver que cae la otra pistola que sostenía ahora, ya no está cambiando al estado de movimiento equivocado. Si yo también hago ruido a éste, se puede ver que está pasando lo mismo, ¿de acuerdo? Ahora bien esto está funcionando y lo único en estos momentos es que conseguimos algún eje no era. Y hagámoslo. Arreglemos eso en la siguiente lección. 113. 8.28 Arregla el error de saqueo de "No se tuvo acceso": Bien, entonces el problema ahora mismo con el access non es si estamos tratando de spam de la clave. Si solo sigo spamming la clave E para saquear un arma, me da un acceso no Si sólo lo intento aquí. Si trato de spam la clave así como así y hago clic en escapar porque vemos estamos consiguiendo esta era diciendo acceso, tratando de leer la propiedad, arma saqueada Este no acceso significa que esta variable está vacía. Y esto probablemente se deba a que lo estamos reiniciando aquí arriba. Y no tiene la oportunidad de procesar todo el código antes de que intentemos saquear de nuevo Porque si envias spam a la clave de botín, simplemente estás haciendo spam a todo este código aquí Y eso, llega a este punto y luego llega este punto también al mismo tiempo y dice acceso ninguno. Se confunde. Lo que podemos hacer es que podemos pausar al jugador de saquear cada vez que realmente esté saqueando el arma Si voy por aquí y hago una nueva variable, llamemos a esta variable arma de saqueo Compila éste cuando estemos saqueando el arma. Tomemos esto y digamos saquear arma, ponerla en verdad Siempre que termine de saquear el arma, podemos tomar esto y decir falso Bien, Esto evita que el jugador haga spam en el código. Tenemos que hacerlo por aquí cuando estamos presionando la tecla, tenemos que decirle al jugador que no puedes hacerlo siempre que estés saqueando Arrastre de aquí y diga que no toro. Cuando no estás saqueando un arma, podemos seguir adelante y hacer una rama y decir ahora puedes seguir adelante y solicitar mucho arma Cuando éste se pone en verdad por aquí, cuando empieza a saquear el arma, no se puede hacer nada Pero cuando terminemos de saquear el arma por aquí, entonces puedes seguir adelante y solicitar saquear una nueva Ahora bien, este te va a dar un problema, y tal vez ya puedas ver cuál es el problema. Ahora bien, si voy como cliente y trato de saquear el arma aquí, puedes ver que me está dando un problema Ahora mismo, si recuerdas estamos en multijugador. Y este ahora mismo, lo estás configurando a través del servidor y por aquí estás tratando usar esta variable en el cliente. Recuerda, puedes arrastrar y escribir una cadena de impresión para ver si estás en el servidor o en el cliente. Si juego aquí como el servidor y presiono, se puede ver imprimo hola como el servidor. Pero si juego aquí como cliente, ahora juego y presiono. Se puede ver que estoy spamming esto como el cliente. Puedo reproducir este código a través del servidor y del cliente. Esto significa que también estamos en el cliente. Cuando estamos aquí abajo, estás usando la variable en el cliente, pero la estás configurando en el servidor. Recuerda como servidor, tienes que replicar la información de nuevo al cliente, lo contrario el cliente no tiene ninguna posibilidad de saber si esto es verdadero o falso Cuando configuras algo en el servidor y necesitas usarlo en el cliente, tienes que replicar esa información de nuevo al cliente. Vamos a compilar y guardar. Entonces ahora si juego como cliente y sigo adelante y hago clic en play, probémoslo aquí como terrorista. Vamos a recoger las armas y dejarme ir a K. Presiono, todo está funcionando ahora. Bien, está funcionando. Y también puedo cambiar mi pistola en la parte posterior y puedo cambiar esta también. Tienes que hacer esto si envío spam ahora, spam de mi clave de lote, establecer un retraso si así lo deseas Si no quieres que el jugador cambie esto rápidamente, puedes establecer un retraso para el saqueo Pero como puedes ver aquí, está funcionando correctamente. Y si hago clic en Escape, puedes ver que no obtenemos ningún error. Esto se debe a que en realidad está esperando que esto sea falso antes de que el jugador tenga la oportunidad de volver a saquear Pero el jugador no se da cuenta de esto porque el código se está ejecutando muy rápido. Pero ahora hemos puesto esta barrera y todo está funcionando correctamente. A veces si dice error con armas, estás tratando de caer. Si estás tratando de jugar aquí y estás tratando spam la clave y presiono en escapar. Ahora mismo no estoy recibiendo ningún error, pero si consigues una era en el futuro, siempre puedes tomar esto. Esta es la época que teníamos antes. Puedes hacer clic derecho para convertir esto en un get validado, asegúrate de que sea válido antes de que hagamos todo esto. Sí, así es como te deshaces de la era antes de que tuviéramos donde en realidad obtuviste una era al dejar caer el arma. Se puede ver que estoy tratando de spam. No está pasando nada. Creo que está arreglado. Pero si tienes ese problema, siempre puedes hacerlo. Vamos a compilar y guardar todo. Por ahora. Pasemos a la siguiente lección. 114. 8.29 Limpia el código: Bien, entonces antes de continuar, lo que quiero que hagas es que limpies todo este proyecto porque se está haciendo bastante grande y necesitamos arreglar algunas cosas. Si podemos optimizar las cosas y podemos comentar algunas cosas, será mucho mejor hacerlo ahora que después antes de que se vuelva demasiado complejo. Entonces lo que quiero que hagas, por ejemplo, puedes ir aquí al Comienzo. Jugar. Intenta hacer apuntes de ruta trasera si no lo tienes ya. Y puedes seleccionar todo. Da click en C en el teclado y podrás, por ejemplo, escribir comenzar, Reproducir. Eso es mejor que no tener nada aquí en el código. Y puedes hacer click en él. Puedes hacer click en el color del comentario, Puedes cambiar el color del comentario a algo. Por ejemplo, puedo elegir este color azul púrpura. Puedo bajar la saturación 20.75 y puedo poner el alfa 20.25 por ejemplo Solo trata de estilizar esto lo mejor que puedas. También, por ejemplo, puedo hacer el texto a 24 en su lugar, así puedo leerlo mucho mejor cuando estoy alejada. Pero se puede ver aquí. Y también puedes guardar el color. Si haces clic aquí y puedes hacer clic y arrastrar esto aquí arriba, eso es seguro. Ahora cuando comentes algo aquí abajo, por ejemplo, déjame arrastrar todo esto y moverlo hacia abajo diesel como este. Entonces no arrastre esto hacia abajo, arrastre todo esto hacia abajo, por ejemplo. Puedes comentar esta parte porque esta parte es para los pasos Lo que puedes hacer es que puedes hacer click en esta, por ejemplo. Puedes llamar a los efectos de sonido Playing the Footsteps. De nuevo, igual que antes, voy a hacer el frente más grande. Y puedes dar click aquí arriba y dar click en este color. Y esto aplicará automáticamente cualquier configuración que hayas hecho aquí arriba. Bien, entonces quiero que comentes todo. Intenta que todo sea lo más organizado posible. Y además aparte de esto, voy a hacer los comentarios en mi propio tiempo libre, que no tengas que mirarme haciendo comentarios de todo. Pero solo recuerda que puedes hacer comentarios con comentarios. Tienes éste y digamos que yo quería incluir el movimiento con éste. siempre puedas seleccionar todo con el comentario de aquí. Y puedes hacer un nuevo comentario y por ejemplo, llamar a este movimiento. Entonces tienes un comentario principal. E incluso puedes comentar cosas pequeñas dentro de aquí también. Pero por ahora, voy a hacer eso en mi tiempo libre. Lo que es más importante en este momento es ver si podemos mejorar el código de alguna manera. En realidad podemos. Si bajamos por aquí, pueden ver que ya hemos usado este antes. Muchas veces estamos tomando el inventario y vamos a entrar en un bucle y estamos tratando encontrar este artículo dentro del inventario. Estamos haciendo eso bastante tiempo aquí. Un par de veces. También podemos ver que lo estamos haciendo aquí. Así que estamos recorriendo el inventario y estamos obteniendo este tipo de artículo Creo que hacemos eso algún otro lugar que no puedo encontrar en este momento. Pero por ahora, vamos a convertir esto en una función y esto va a ser mucho mejor lo que podamos hacer. Sólo vamos a copiarlo por ahora. Vamos a copiar esta parte del código de aquí. También copiemos este igual. Vamos a copiarlo y pegarlo por aquí. De hecho, podemos convertir esto en una función. Lo que podemos hacer es seleccionarlo todo. Haga clic derecho. En realidad no se puede convertir en una función porque tenemos una macro. Si dices colapsar para funcionar, dice error y puedes mostrar el mensaje. Y dice que sólo puede tener un pin de ejecución. Y se puede ver que este tiene muchos pines de ejecución. Lo que puedes hacer es hacer clic derecho y contraer esto a una macro. Para esta macro, la diferencia entre una función y una macro es simplemente que una macro puede tener múltiples pines de ejecución. Y las funciones solo pueden tener una entrada y una salida, mientras que las macros pueden tener múltiples pines de ejecución. Y puedes ver aquí, esta rama que estamos usando es en realidad una macro y tiene múltiples pines de ejecución para esta macro que acabamos de crear. Déjame dar click aquí y dar click en dos. Llamemos a este M para macro. Llamémoslo Buscar Tipo de Arma en Inventario. Esto es simplemente lo que está haciendo. Se trata de encontrar el tipo de arma dentro de nuestro inventario. Hagamos un nuevo pin de ejecución aquí. Si solo escribes ejecución, creo que ejecutas. En realidad, si haces clic en esto aquí, el tipo, si solo escribes ejecutar, en realidad eliminaremos el texto de aquí. Ese es un secreto para la escritura macro ejecutar. Vamos a conectarlo aquí. También necesitamos un pin de ejecución para romper esto más adelante. Déjame hacer un nuevo pin de ejecución. Llamemos a esto un bucle de ruptura. Bien, ahora tenemos eso. Déjame conectar esto aquí abajo. Y también necesitamos un insumo para éste. Vamos a meterle a este aquí. Déjame moverlo una vez. Si hago clic y arrastro esto aquí arriba, cambiemos el nombre por éste. Y esta es tipo de arma para encontrar, estamos tratando de encontrar este tipo de arma dentro de nuestro inventario. Simplemente siga adelante y haga doble clic en esto y haga algunas notas de reencaminamiento también Bien, aquí afuera en la salida, necesitamos tener todo esto dentro de aquí. Ahora primero tomemos este cuerpo de bucle y lo coloquemos aquí. Y ya dice cuerpo bucle. Eso es correcto. Tomemos ahora éste y colóquelo aquí. En lugar del valor de retorno. Estoy diciendo arma encontrada y podemos hacer una rama para ver si esto es cierto o falso. Ahora por otra cosa, voy a enchufar el terminado. Vaya, no así. Tomando esto, enchufándolo aquí Y voy a solo para aclaración bucle completado, también necesitamos la referencia de arma más adelante para que podamos hacer algunas cosas con ella. Y voy a moverlo aquí arriba, vamos a llamarlo arma ahora. No importa si se mueve aquí abajo, por ejemplo. Si muevo esto aquí abajo o lo muevo aquí arriba, en realidad no importa. Es solo mantenerse limpio con el código. Pero solo me gusta tenerlo de esta manera. De nuevo, voy a hacer doble clic en esto y hacer algunas notas de ruta así como para este pin de ejecución por aquí. Bien, entonces aquí lo tenemos y vamos a compilar. Ahora volvamos a la gráfica de la camioneta. Y ahora se puede ver que esta es la macro que hemos creado. Ahora podemos usar éste en su lugar, látigos. Si me acerco de nuevo para esta arma de caída. En lugar de hacer esto, ya estamos haciendo un bucle dentro de aquí Lo que puedo hacer es que puedo borrar esto y puedo enchufar este en su lugar. Déjame alejarlo un poco para que pueda ver lo que estoy haciendo. Ahora. En lugar de hacer todo esto, ya lo estamos haciendo. Borremos éste también. Este tipo de arma equipada. Podemos tomar esto y enchufarlo aquí. En cambio. Esto es, recuerda que esto es lo que estamos tratando de comparar con nuestro inventario. Esto es lo mismo que antes. Y si conecto este bucle y conecto esta rama con aquí. Ahora veamos, esta arma. Esto es lo que necesitamos usar para el arma de caída. Cuando hayamos encontrado el arma, voy a eliminar estos tres nodos de ruta. Voy a acercar esto a aquí. Y rompamos el bucle después de que se nos caiga el arma. Este código es igual que antes. En realidad solo está optimizado. Aquí no hicimos algo nuevo. Solo estamos creando esta macro para que se vea mejor y más limpia. Sí, cuando el bucle esté completo, conectemos todo esto de nuevo, igual que antes. Ahora puedes ver que está mucho más limpio que antes. Así es como optimizas el código. Ahora puedes usar esta. Permítanme organizar esto un poco más ahora. Podemos tomar este tipo de arma hallazgo en inventario. Podemos, veamos aquí por aquí donde intentamos encontrar el artículo nuevamente en el inventario. Vamos a arrastrarlo. Eliminemos éste. Y borra esta también. Déjame conectarlo por ahora en el cuerpo de bucle. Al igual que antes, estamos conectando esto, todo esto aquí ya lo estamos teniendo dentro de la macro. Voy a borrar todo esto. Y éste también. Este es lo que estamos tratando de comparar este tipo de arma a partir de la información del arma. Lo que realmente podemos hacer, aunque parezca un poco confuso, podemos arrastrar esto y volver a ponerlo aquí en el tipo de arma para encontrar de nuevo, haga doble clic para hacer en las notas solo para que se vea mejor. Lo que esencialmente estamos haciendo es lo mismo que antes. Sin esta macro, solo estamos encontrando el tipo y lo estamos enchufando para compararlo con el tipo de arma del inventario Debería hacer lo mismo. Déjame echar un vistazo por aquí. Está pasando por la sucursal. Recuerden que vamos a dirigir esta sucursal aquí. También hagamos doble clic en esos para hacer notas de ruta trasera para este. Para esta arma aquí, arma para soltarla es del inventario. Entonces estamos tratando de soltar el arma del inventario para que puedas arrastrarla aquí y conectarla. Bien, ahora todo está conectado. Y recuerda romper el bucle desde aquí. Nuevamente, arrastre, rompa el bucle. Solo quiero ver si realmente recuerdo hacer esto también para el otro, y lo hice. Bajemos, y voy a alejar esto un poco más. No se superponen, así como así. Bien, compila y ahora para que el bucle esté completo, volvamos a conectar este de aquí abajo está El arma, estamos tratando soltar el arma del inventario. Y es el arma que estamos tratando de saquear. Que vamos a estar superponiendo con igual que antes, pero acabamos de hacerlo mucho más limpio que antes. Así que siempre es agradable jugar el juego y sólo para probar y ver si todo está funcionando como se esperaba. Entonces ya puedes ver que está funcionando igual que antes. Sí. Entonces todo está funcionando. Hay un pequeño error ahora mismo con el código, y eso está por aquí cuando estamos tratando de solicitar el botín del arma, estamos tratando de compararla con el inventario, tratando de encontrar el arma dentro de nuestro inventario Si no tenemos el arma en el inventario, entonces estamos terminando en esta parte del código. Porque si tenemos el arma en el inventario, el arma que estamos tratando de saquear, estamos tratando de soltar el rifle existente, por ejemplo obstante, si no tenemos rifle, en realidad va a terminar aquí. En cambio, voy a tomar esto y enchufarlo a la superposición, porque todavía queremos saquear el artículo si no lo tenemos en nuestro inventario Sólo una pequeña solución a este código, ¿de acuerdo? Todas las demás cosas, realmente no veo más cosas que podamos intentar mejorar. Pero si quieres hacer algo a las funciones, por ejemplo esta. Puedes hacer una función o cosas que quieras que funcionen e intentar limpiar. Adelante y hazlo ahora mismo. No obstante, creo que esto es suficiente y voy a comentarlo todo. Lo que también puedes hacer es poner todas estas variables en categorías. Por ejemplo, la velocidad aquí, puedes escribir algo en la categoría. Por ejemplo, las propiedades de capa, que podrían ser una categoría. Y puedes ver que se agrega aquí. Y también puedes hacer clic en la velocidad de carrera. Da clic en Categorías y agrégalo a las propiedades del jugador. Lo mismo con el agachado también. Ahora puedes ver que están en una categoría. Puedes limpiar todas las variables así como así. En realidad puedes hacerlo también con funciones. No obstante, no puedes hacerlo con funciones unrep, solo puedes hacerlo las otras funciones que hayas realizado ¿Bien? Entonces con eso dicho, voy a comentarlo todo. Y recuerda que te voy a entregar este proyecto. Y lo puedes descargar de la página web para que veas todo esto que he hecho, todos los comentarios, y así sucesivamente. Pero probablemente también lo veas en la siguiente lección. Voy a seguir adelante y comentarlo todo y nos vemos en la siguiente lección. 115. 8.30 Arregla un pequeño problema de réplica: Bien, entonces antes de continuar, volvamos a la base de jugadores. Así que puedes ver aquí, he limpiado mi proyecto, he puesto todo en orden, y lo único que hice fue básicamente crear algunos comentarios y organizar las cosas un poco más. Entonces tenemos el movimiento básico del personaje aquí con todas las cosas que hemos hecho con la agachada, la caminata, el salto y así sucesivamente Y aquí abajo tengo el saqueo y la caída del arma, o tenemos las superposiciones, el saqueo para el arma y así sucesivamente Y también agregué un comentario para éste, asegurarme de que el arma esté adherida. El retraso del que hablamos antes, siempre es agradable escribir por qué editas este retraso para que no parezca aleatorio y lo borres por error en el futuro. Bien, así que vamos a guardar todo. Y ahora mismo, antes de continuar a la siguiente sección, tenemos un pequeño bicho del que me di cuenta. Si hago clic en terrorista aquí y si trato de saquear dos cosas, a veces funciona Para que veas aquí saqueé cosas. De hecho voy a hacer clic en el brazo de resorte y llegar a algo así como 500. Sólo para que pueda ver lo que está pasando y pueda volver a jugar. Tengo que hacerlo un par de veces y a veces darás cuenta de que el jugador en realidad no está saqueando el arma Así que voy a seguir tratando de saquear el arma así y ver si puedo conseguir el dólar para estar ahí Aquí. Bien. Así que intenté esto un par de veces y después 1 minuto de intentarlo una y otra vez, se puede ver aquí que está molestando. No tengo pistola en la mano. Si lo acabo de mover rápido para que veas que mi mano no tiene pistola. La pistola está en el suelo y en realidad no puedo saquearla así, está molestando No obstante, está trabajando en el servidor. Entonces, si tuviera el servidor jugando, creo que estamos jugando como dos clientes. Para que veas que este es el segundo cliente. Me uno como el segundo inclinado y miro a este jugador. Puedo ver que este jugador no tiene pistola. Así que puedes ver aquí, no tiene nada en la mano. No puedo ver la pistola aún en el suelo. Y tampoco puedo saquear en esta. El error está ocurriendo porque esto es solo un problema de replicación. Si hago clic en G para soltar el arma, se puede ver ahora que en realidad está en el suelo. Si camino de regreso y vuelvo a caminar al frente de ella, puede ver que estoy saqueando la pistola y ahora en realidad tengo la pistola en la mano Entonces en realidad es solo un problema de replicación y me di cuenta de que uno, me tomó tal vez 1 hora o 30 minutos solo tratando depurar y ver qué estaba pasando porque todo parecía correcto. No obstante, lo que está mal ahora mismo está en el arma del botín Si caminas sobre las armas. Y lo que hice aquí para conseguir este bicho es sólo para caminar sobre dos armas rápidamente. Como algo así. Y solo lo intento un par de veces y una de las veces vas a conseguir el bicho, a veces una de las armas no funciona. Esto en realidad se debe a que cuando este código se está ejecutando y estás tratando de saquear el arma a través de este representante notifica a veces si caminas sobre él lo suficientemente rápido o a un ritmo correcto, realidad eliminará tu arma saqueada aquí Y cuando el siguiente lo alcance entonces no tiene nada, no va a ser válido. Y entonces todo esto no va a pasar y serás despedido, y entonces podrás ver que el arma está en el suelo Pero si juegas como servidor, entonces realmente puedes ver que el cliente está sosteniendo el arma. No obstante, para el cliente, el cliente no puede ver el arma en la mano. Sólo lo pueden ver en el suelo, pesar de que en realidad lo están sosteniendo en la mano. Sabía que era un problema de replicación porque el servidor lo miraba correctamente, pero el cliente miró el parecía estar en el suelo aunque debería estar en la mano. En realidad es éste. Esto es lo que es, lo que lo está haciendo todo raro. En lugar de eliminar la variable arma saqueada, ¿ recuerdas lo que hicimos aquí? Solo un paseo rápido para que no nos confundamos demasiado porque hemos hecho mucho en este curso. Lo que simplemente hicimos es saquear el arma. Y luego pasamos por esto, saqueamos el arma. Estamos comprobando si esta superposición de armas no está vacía. Si no está vacía, estamos saqueando el arma. Y luego después de todo esto, lo estamos quitando del arma solapada Y entonces estamos re comprobando si hay más armas solapadas que necesitamos saquear, eso nos llevará hasta aquí arriba. En realidad, déjame ver dónde está. Nos lleva hasta aquí, comprueba si hay armas superpuestas, y luego intenta saquear de nuevo el arma Nuevamente, comprueba si está vacío. Ahora hay menos artículos ahora porque quitamos el viejo aquí. Ahora vuelve a entrar. Digamos que sólo fue la pistola. Digamos que solo fue la pistola y aquí la quitamos. Éste debería estar vacío ahora. Y dice, si no está vacío, será falso porque ahora está vacío. Y luego dice, puede volver a saquear arma. Lo retrasará. Aquí, eliminará esto. Recuerda, la razón por la que eliminamos una notificación de representante es porque si saqueas la misma arma una y otra vez Recuerda que una notificación no se ejecuta si la actualizas con el mismo valor, si actualicé con la misma pistola, esto en realidad no se ejecutará. Esta es la desventaja de una notificación de representante. Si aplicas exactamente el mismo valor no se ejecutará. Es por esto que en realidad eliminamos la variable y luego podemos ejecutarla de nuevo. Bien, en vez de hacerlo aquí arriba, solo una solución muy simple, podemos tomarla desde aquí. Vamos a pegarlo en algún lugar por aquí. En cambio, no podemos pegarlo aquí porque en realidad lo estamos usando aquí para establecer el estado de movimiento o el arma equipada apretada. Podemos agregarlo aquí antes de retirarlo de éste. O también puedes agregarlo por aquí. No importa. Yo solo voy a agregar antes de esto aquí y tú adelante y lo conectas. Y luego voy a reorganizar las cosas, ¿no? Entonces también moví los comentarios. Aquí lo tenemos ahora está aquí abajo en su lugar. Y en realidad podemos tenerlo aquí abajo porque estamos teniendo este retraso. Podemos utilizar este retraso, así que no estamos sobrescribiendo esta variable aquí porque en realidad tenemos un retraso Y este código puede reproducirse antes de que eliminemos realmente la variable. Tiene sentido que esté aquí abajo. Y entonces realmente no necesitamos este retraso, este retraso. Lo agregamos antes porque queríamos esperar a que se reproduzca este código. No obstante, para éste, solo vamos a eliminarlo. Este solo podemos conectarnos de nuevo. Así como así. Sí, creo que esto lo arreglará todo. Así que vamos a guardarlo todo. Déjame hacer clic, en realidad déjame cambiar para jugar como servidor de escucha. Y voy a jugar como tres jugadores. Estoy tratando de volver a jugar y ver si puedo conseguir que este libro vuelva a aparecer. Bien, así que ya lo he intentado unas 40 veces, no pasa nada. Y parece haber solucionado el problema. Esto fue un problema de replicación. Todo está funcionando como se supone que debe hacerlo. Ahora permítanme simplemente hacer clic en el resorte y ponerla a cero. Nuevamente, compilar todo. Pasemos a la siguiente lección. 116. 9.01 acciones de entrada de cambio de arma: Ahora es el momento de crear la acción de entrada para cambiar las armas e intentar hacerlo usted mismo. Intenta hacer una acción de entrada llamada arma primaria y arma secundaria, e intenta agregarlas tú mismo. Eso ya lo hemos hecho bastante tiempo. Solo un desafío genial. Y puedes intentar desafiarte a ti mismo. Y si no te acuerdas, sigamos adelante y hagámoslo juntos. Hagamos clic derecho aquí y vayamos a Entrada Y Acción de Entrada. Voy a hacerlo un poco más rápido que antes porque sabemos lo que estamos haciendo ahora. Arma primaria. Intentemos, haga clic de nuevo, vaya a la acción de entrada y haga el arma secundaria. Vamos al contexto de mapeo de entrada. Y fuera de aquí estoy dando click dos veces porque necesito agregar dos mapeos Y no tengo idea de por qué no me muestra nada. En realidad, creo que necesito cambiar esto antes de poder agregar el segundo, un arma primaria. Y voy a hacer click en el más otra vez. No sé por qué siguen maximizando, en realidad es un poco molesto Creo que puedes presionar aquí. Sí, se puede decir aquí, colapsar o expandirse. Todo lo que puedes colapsar todo. Creo que a lo mejor funciona. ¿Un arma secundaria? Sí, volvieron a maximizar sin motivo alguno. Arma primaria. Voy a dar click en mi única llave para obtener mi arma principal que es mi rifle. Y da click en las dos claves para volver a conseguir mi pistola. Como disparadores voy a escribir presionado porque solo quiero tocarlo una vez. Cuando hago clic en el botón, no quiero actualizarme constantemente. Por lo que se suman estos dos. Ahora vamos a guardar todo, vamos a cerrarlos. Y vamos al jugador. Vamos a la base de jugadores. Y dentro de aquí, hagamos clic derecho aquí abajo y digamos arma primaria de IA. Y aquí abajo digamos IA arma secundaria. Bien, entonces ahora tenemos estos dos eventos. Y los podemos usar para conseguir nuestro rifle o nuestra pistola si los tenemos en el inventario. 117. Lógica de cambio de armas 9.02: Bien, entonces para el cambio de arma, primero bajemos por aquí. Voy a quitar esto a un lado porque no necesito esto primero. Sólo tenemos que trabajar con el arma primaria. Entonces, acertadamente aquí y hagamos un nuevo evento personalizado. Y voy a correr por el servidor y voy a llamarlo, llamémoslo equipar arma. Ejecutemos este en el servidor y confiable. Cuando presionamos sobre una tecla, por ejemplo, la clave de arma primaria, queremos equipar el rifle. Cuando hago algo como esto, trato de pensar paso a paso. No pienses dos o tres pasos adelante, porque te vas a confundir. Y también me voy a confundir un paso a la vez. ¿Qué tenemos que hacer cuando necesitamos equipar el arma? Primero, si tienes esta arma en tu inventario y ¿cómo lo haces? Recuerda, hicimos este tipo de arma de hallazgo en inventario. Podemos arrastrar esto aquí. Lo que queremos encontrar es simplemente el rifle. Porque cuando haces clic en la única tecla en realidad puedo arrastrar desde aquí y decir arma equipada con servidor. Cuando le damos click, queremos encontrar el rifle. Ahora primero queremos asegurarnos de que no tenemos el rifle ya en nuestras manos, de lo contrario realmente no tiene sentido volver, equipar el rifle. Voy a tomar lo que ya tenemos equipado. Entonces el tipo de arma equipada, voy a decir si no es igual a rifle, entonces podemos seguir adelante y correr este evento. Porque si ya tenemos el rifle equipado, no tendría ningún sentido correr todo esto, para seguir adelante y conectar esto aquí. Bien, entonces aquí abajo, vamos de esta rama y hagamos una rama aquí, o de este lingote y hagamos una rama Y siempre que encuentre esta arma en el inventario, así que cada vez que encuentre el rifle, voy a hacer un lingote Y a este lingote se le llama arma que se encuentra en el inventario. Y ahora podemos tomar esto aquí y fijarlo a verdad, así como así. Y recuerda romper el bucle así, Bien, ahora sabemos que encontró el arma en el inventario aquí abajo en el completado. Podemos continuar con el código aquí. Solo estábamos buscando el artículo en el inventario y ahora lo encontramos. Entonces voy a tomar este tirón y asegurarme que sea cierto sólo si es cierto. Vamos a ejecutar algún código. Si no lo hemos encontrado en el inventario, realmente no necesitamos hacer nada. Lo que tengo que hacer es equipar el arma. Permítanos realmente aquí, podemos simplemente hacer clic derecho en este. Esta es el arma que encontramos en el inventario. Permítanme simplemente promoverlo a una variable y llamarlo equipar arma. Ahora, ¿qué hace esto, necesita ser replicado o representante, notificar Puedes intentar responderte la pregunta a ti mismo. Y ¿por qué debería ser rep, notificada o replicada? Ahora te voy a dar la respuesta. Este necesita ser representante, notificado. Y recuerda, siempre que tengas cambios visuales. Entonces ahora mismo el jugador va a sostener el rifle en la mano eso es un cambio visual. Necesitas convertirlo en una notificación de representante, para que puedas notificar a todos los clientes del cambio visual. Así que adelante y conéctalo aquí. Y da clic en él y configurarlo para que repita notifique. Y entonces también recuerda cambiar tu postura. Porque ahora mismo si haces clic en él, vas a equipar un arma. Entonces ahora mismo no tenemos esto hecho, y lo haremos en la siguiente lección. Entonces también hay que recordar establecer su tipo de arma equipada actual porque recuerde que hicimos esto aquí. Este está controlando lo que se está retocando dentro de tu plano de animación Vayamos por aquí y digamos, y lo puedes encontrar aquí, establecer tipo de arma equipada. Entonces el tipo de arma necesita ser rifle en este caso. Además, hay que poner esto a caídas, porque más adelante cuando hagamos esto, nuevo, se fijará en true. Recuerda configurarlo en cae aquí, necesitamos restablecer esta variable también. Tenemos que configurarlo a falls cada vez que hayamos terminado el código, la próxima vez que entre, ejecuta el código correctamente, lo contrario será verdadero automáticamente. Y ejecutará este código aunque no esté bien. Y también quiero restablecer esta variable porque cuando hayamos hecho todo esto, recuerda que necesitamos restablecer la notificación de rep para que no se baje. Y podemos tomar esta arma equipada y restablecerla aquí antes de que terminemos con todo. Y tal vez necesitamos agregar retraso aquí así que le damos al representante notifique tiempo para jugar. Pero vamos a comprobarlo más tarde. No soy fanático de agregar retardos aleatorios. Solo agrego demoras siempre que realmente necesitemos porque las demoras son agradables. Este no se notará. Es 0.05 Ningún humano nunca se dará cuenta de esto, pero realmente no necesitamos agregar uno si realmente no necesitamos hacerlo. Bien, entonces lo segundo que necesitamos realmente aquí es si ya tienes un arma en la mano. Entonces, por ejemplo, si ya estás sosteniendo una pistola, necesitas desequipar esa pistola De hecho, necesitamos desequipar también. Entonces necesito preguntar si el jugador está armado o desarmado. Porque el jugador podría estar sujetando una pistola ahora mismo y estamos saqueando el rifle y estamos presionando la llave del rifle y ya tenemos una pistola equipada Entonces tenemos que desequipar primero la pistola. Vamos, a partir de aquí voy a desconectarlo en realidad, y simplemente arrastrar esto un poco hacia abajo. Entonces podemos tomar este tipo de arma equipada y podemos decir, es igual a desarmada Hagamos una sucursal aquí y volvamos a conectarla aquí. Si es igual a desarmado, solo seguiremos adelante y ejecutaremos el código que hicimos antes No obstante, si no está desarmado, queremos desequipar el arma que tenemos Apenas otra vez, encuentra el arma en el inventario del que estamos hablando. ¿De qué arma estamos hablando? Estamos hablando del arma equipada actual que tenemos. Esta podría ser la pistola en estos momentos. Entonces cuando hayas encontrado esto, estamos haciendo una sucursal igual que antes. Cuando hayas encontrado esto, promovamos esto a una variable y llamémoslo arma no equipada . Y hagámoslo a un representante, notifíquelo y déjenos conectarlo aquí. Haz algunas notas de ruta trasera. Y luego cuando esto esté completo, porque ahora mismo estás ejecutando este código y estás desequipando el arma Pero hay que equipar esa arma después. Entonces aquí en lo completo, que volver a ejecutar esto aquí arriba. Déjame arrastrarlo aquí para hacer algo de espacio y hacer que se vea mucho mejor. Y podemos arrastrar esto aquí arriba. Bien, entonces algo así se ve mucho mejor. Estamos comprobando si estamos desarmados o no. Si estamos desarmados, vamos a equipar el arma al instante Si estamos armados con una pistola, por ejemplo, vamos a desequipar la pistola Recuerda romper el bucle. Se me olvidó enchufarlo aquí. Rompamos también el bucle. Después de que rompamos el bucle, y esté completo, vamos a equipar el arma, el no equipado y el equipo Eso lo haremos en la siguiente lección. Pero también recuerda reiniciar el arma no equipada para que no consigamos caja más adelante en nuestro juego Sí, eso fue todo por la lógica en este momento, realmente no podemos probarlo porque realmente no tenemos que notificar al representante. Pasemos adelante a la siguiente lección y trabajemos en ellas. 118. 9.03 Equipa y Unequip Arma RepNotify: Muy bien, así lo notifica al representante de equipamiento no equipado. Esto va a ser muy fácil porque lo hemos hecho antes. Si vamos al arma de botín o arma saqueada, si vas al representante avisar por el arma saqueada Si vas dentro de aquí, recuerda que hicimos todo esto con la desactivación de la colisión y así sucesivamente Entonces cuando ya tienes el arma en el inventario, ya eliminamos la física, ya eliminamos la colisión, e hicimos todo eso. Así que en realidad no necesitamos volver a hacer todo esto. Ya hiciste esto cuando saqueaste el arma. Entonces lo único que tenemos que hacer es equiparlo de nuestra espalda. Entonces este de aquí, adjuntar actor a cualquiera de esos zócalos. Así que vamos a duplicar este código aquí. Voy a copiar y voy a ir a mi arma de equipo y voy a pegarla por aquí. Bien, para ésta, no es el arma saqueada Voy a borrar esos. Es nuestra arma equipada, así que la voy a arrastrar y enchufar aquí. Y voy a enchufar esta a aquí. Bien otra vez, voy a tomarlo por aquí y hacer clic derecho y decir convertir a un get validado. Estoy asegurándome de que mi variable sea válida antes de hacer todo esto, antes de adjuntarla. Recuerda ahora mismo tu arma equipada, esta de aquí ahora mismo, está adherida a tu espalda. Por ejemplo, tu AK 47 antes de sostenerlo en la mano, se adjunta a los personajes atrás. Primero lo que hay que hacer, en realidad hay que separarlo de ese viejo zócalo Hay que arrastrarlo de aquí y decir desprenderse del actor. Lo estamos separando de atrás primero. Y podemos mantener la posición al mundo en todos ellos. Después de que lo separemos de la parte de atrás, podemos seguir adelante. En realidad voy a eliminar este nodo de ruta. Voy a conectarlo directamente aquí. Y podemos desglosar esto para que se vea un poco mejor aquí. Y luego este realmente puedes eliminar y puedes conectarlo aquí si lo deseas. Es sólo para que se vea un poco mejor, algo así. Déjame acercarlos más juntos. Bien, aquí lo tenemos. Este es el código equipado para los no equipados. A lo mejor ya lo adivinaste. Tenemos que ir al arma let's para soltar. Ya hicimos todo esto y en realidad no wap en gota Vamos al arma saqueada. Necesitamos este código aquí donde pones tu pistola, por ejemplo, en tu muslo cuando hayas sacado el rifle. Vamos a copiar todo esto aquí donde lo pones en la espalda o en el muslo. Y vamos al arma no equipada, igual que antes. Vamos a pegar este. Y déjame tomar el arma no equipada en su lugar y enchufarla aquí Permítanme borrar esta. Déjame tomarlo de nuevo, Derecha, Convertir a un validado conéctate. En realidad, vamos a eliminar éste y conectarlo aquí en su lugar. Antes de hacer esto, volvamos a separarnos del actor. Y vamos a mantener la posición al mundo y la vamos a separar del actor Y entonces vamos a conectarlo por aquí. Recuerda también aquí, estamos usando el arma no equipada, así como esto Bien, adelante igual que antes. Muévelo hacia abajo. Y acercarlo, para que se vea un poco mejor. Algo así. Y sigamos adelante y compilemos y guardemos todo. Bien, entonces ahora hemos terminado con esos y podemos seguir adelante y hacer clic en Reproducir para ver si realmente funciona o si hemos hecho algunos libros. Y sigamos adelante y pulsemos en play. Déjame aquí como servidor jugar como el antiterrorista. En realidad, juguémoslo como el terrorista. Porque las armas están ahí ahora mismo. Es sólo la única clave que funciona. Entonces necesito eluir el rifle como mi segunda arma. Ahora bien, si hago clic en uno, se puede ver que en realidad estoy seleccionando mi rifle. Y si le envío spam a la única clave, recuerden que no podemos spam la única clave si cierro esto para poder mostrarles, porque aquí, encontremos el gráfico de eventos. De hecho voy a cerrar todo esto. Entonces voy a mover esto aquí, clic derecho, cerrar pestañas a la derecha. Entonces es un poco más mejor mirar aquí. Recuerda, hicimos este lingote para que no podamos spam de la llave del rifle porque si ya tenemos el rifle, no ejecutamos este código Esto también es bueno para la optimización. Entonces no ejecutas código innecesariamente. Todo está funcionando muy bien, y si encontramos alguna caja, siempre podemos arreglarlas. No obstante, todo está funcionando. Lo siguiente que tenemos que hacer es el arma secundaria, y hagámoslo en la siguiente lección. 119. 9.04 Equipa un arma secundaria: Ahora mismo hagamos el arma secundaria ahora. Puedes seguir adelante y copiar todo esto y hacer un nuevo evento. Y solo copia, pega todo esto y cámbialo por una pistola. Sin embargo, esto no sería realmente una buena práctica de codificación. Ahora recuerda que estoy tratando de enseñarte el mejor código y podríamos copiar y pegar esto aquí abajo, y funcionaría perfectamente. No obstante, cuando veo algo copiar pegar, cuando veo código que necesita copiar pegar y lo único necesito cambiar es un valor, por ejemplo, esto de rifle a pistola Siempre trato de cazar. Yo solo tengo este evento y puedo volver a usar este evento en lugar de copiarlo pegándolo de nuevo Sí, podemos intentar pensar por ti mismo, ¿cómo podemos usar este evento aquí también? En realidad funciona aquí y aquí. Sin tener que copiar y pegar todo esto, ¿qué tenemos que hacer ahora? Podemos publicar este video y ustedes pueden regresar. Y ahora te voy a dar la respuesta. En lugar de tenerla como variable estática, podemos tenerla para que sea dinámica. Podemos arrastrar esto a aquí, a este evento. Este es el tipo de arma a encontrar. De hecho creo que necesitamos, sí, éste también. Cuando cambiamos el arma, la animación, ésta tiene que entrar en ésta también. Hagamos doble clic en este y hagamos algunas notas de redirección. Bien, ahora lo hemos enchufado aquí. Lo que podemos hacer es aquí arriba en el arma primaria, podemos simplemente cambiarla por un rifle aquí arriba en lugar de aquí abajo. Lo que podamos hacer aquí abajo, sólo voy a copiar y pegar todo esto. Y pegarlo aquí abajo. Voy a conectarlo ahora en vez de rifle. Ahora el arma secundaria es una pistola. Entonces, si no tenemos una pistola ya equipada, podemos seguir adelante y correr este evento. Y éste voy a cambiar a pistola ahora. Va a tener este valor enchufado aquí y ahora va a buscar una pistola Bien, entonces ahora, muy fácil, en realidad terminamos esta lección. Puedes hacer click en play y yo puedo dar click en terrorista y puedo saquear estas dos armas Puedo dar click en uno para tener mi rifle. Puedo dar click en dos para tener mi pistola. Ahora se puede ver que podemos cambiar entre esas dos armas sin ningún problema. Y ni siquiera copiamos y pegamos todo esto. Acabamos de volver a utilizar el mismo. 120. 9.05 crea montajes de animación: Bien, entonces lo que me gustaría hacer ahora mismo es que creo que ahora mismo es un poco barato. Porque podemos cambiar las armas así. Y sería genial si tenemos una animación cuando cambiamos el arma. Si has jugado Counter Strike antes, cuando cambias de arma, se vuelve a cargar el arma antes de poder usarla Hagamos algo así y para esta lección, muy sencillo. Sólo vamos a crear algunos montajes de animación o animación Vamos a hacer clic en los activos. Recuerda, no es la animación, no son las viejas. Son los activos. Es nuestro personaje. Solo asegúrate de que sea nuestro personaje. En lugar de aquí, solo voy a buscar reload porque tenemos algunas animaciones de recarga que estaremos usando Ahora, no tengo animaciones específicas para sacar tu arma. Probablemente lo tengas si tienes un proyecto serio y quieres hacer algo como esto. Sin embargo, para esta, solo usemos la animación de recarga cuando arrastremos nuestra arma Y esto también es por buenas prácticas. Vamos a hacer clic derecho en la pistola primero. Por ejemplo, ve a Crear y crear un montaje de animación Con el montaje de animación, podemos agregar realmente algo como recargar animaciones, disparar las animaciones de armas y cosas así sin interrumpir nuestra animación sin interrumpir nuestra Y haga clic en el montaje de animación y llamémoslo anión para montaje de animación y llamémoslo pistola de recarga Hagamos lo mismo con el rifle, haga clic derecho, vaya a crear montaje de animación Y llamarlo rifle de recarga. Y si lo abres ahora, puedes ver que tenemos un montaje de animación Y tenemos algunas cosas que podemos hacer aquí. Y en realidad vamos a usar esta parte de aquí abajo para crear como un movimiento de la parte superior del cuerpo. Entonces cuando estamos corriendo, podemos tener esta otra animación, esta animación de recarga, sin detener nuestra animación en ejecución Así que podemos tener dos animaciones a la vez y es por eso que creamos este montaje de animación 121. 9.06 Ajusta el plan de animación: Bien, antes de que los montajes de animación puedan trabajar en tu animación, tienes que hacer algo dentro del plano de animación Vamos al jugador y abramos el plano de animación Y recuerden que esto es lo que hemos hecho aquí hasta ahora. Lo que necesitas hacer es jugar un movimiento de la parte superior del cuerpo, como puedes ver aquí. Si vuelvo a mis animaciones y busco mi animación y echo un vistazo a mis montajes de animación Ahora si hago clic en uno de ellos, puedo ver aquí que está usando un slot llamado slot default. Y en realidad necesitamos usar la parte superior del cuerpo en su lugar. Aquí en la animación Slot manager. Vamos a hacer clic en una ranura, solo llamémoslo parte superior del cuerpo, porque solo quiero mover la parte superior del cuerpo cuando recargue y todavía quiero que mi personaje corra por ahí Puedes correr y recargar parte superior del cuerpo y dejarnos guardarlo. Y ahora ya ves si vas a la pistola también. Aquí en el gestor de slot, tienes esta parte superior del cuerpo. Tienes esta ranura cada vez que creaste en una de ellas, el rifle la tiene y la pistola también la tiene. Bien, Necesitas hacer clic en la ranura aquí en lugar de ranura predeterminada. Ahora vamos a hacer clic aquí para el nombre de la ranura y cambiarlo a la parte superior del cuerpo. Lo mismo para la pistola, así que ambos dan clic aquí, nombre de ranura y cambiarlo a parte superior del cuerpo. Ahora se puede ver que la animación no se está reproduciendo porque en realidad somos solo nosotros que sabemos que esta es la parte superior del cuerpo. Realmente no le hemos dicho al motor neural cuál es la parte superior del cuerpo en estos momentos. Tenemos que hacer eso. Vayamos al plano de animación dentro de aquí. Necesitamos usar una función llamada mezcla en capas su hueso. Esta mezcla en capas su hueso por defecto. Tomemos primero la pistola. Vamos a copiar esto. Movimiento de pistola en caché, y vamos a colocarlo aquí Lo que hay que mezclarlo es intentar copiar y pegar esto de nuevo. Y tenemos que arrastrar aquí y buscar la ranura por defecto. Puedes ver aquí tenemos esta ranura por defecto. Sin embargo, esto no es lo que queremos usar en estos momentos. Queremos usar, si haces clic aquí arriba, quieres cambiarlo a parte superior del cuerpo. Ahora estamos usando éste en su lugar. Y puedes salir y conectarlo aquí. Siempre que toquemos nuestro montaje de animación, va a mezclarse entre los dos Aquí tenemos esta mezcla. Vamos a darle click aquí. Y vamos a hacer clic en la capa establecida. Haga clic aquí y haga clic en el más. Haga clic en la flecha aquí. Ahora estamos dentro de aquí. Lo que estamos tratando de hacer ahora es que queremos decirle a Unreal Engine cuál es la parte superior del cuerpo, porque ahora mismo Unreal Engine no conoce realmente la parte superior del Hay que darle un nombre de hueso. Si abres el esqueleto o el personaje y haces clic en los huesos del personaje y toda la jerarquía, puedes ver el hueso del personaje que queremos decirle a la parte superior del cuerpo. ¿Por dónde empieza? Por lo general para la mayoría de los casos , comienza aquí en la columna 01. A veces se ve mejor cuando parte de la columna vertebral 02. En este caso, intentemos usar el Spine 01. Tienes que volver atrás y tienes que escribirlo exactamente como se llama aquí, nosotros lo llamaremos Spine 01. Y la profundidad de mezcla es una. Y también la rotación del espacio de malla, se dice que la mezcla es verdadera. Vamos a compilar y eliminémoslo de aquí arriba. Y conectemos esto en su lugar. Así como así, voy a copiar pegar todo esto y borrar la pistola. Y en cambio, toma el fusil y enchufa aquí también. Sigamos adelante y conectemos también el rifle y borremos este viejo. Voy a bajar esto y organizar las cosas un poco más. Entonces algo como esto aquí. Entonces puedo moverlo aquí arriba igual que antes. Y ahora en realidad hemos terminado esto. Si hago clic en puedo compilar, puedes ver mi personaje se está moviendo ahora. Ahora bien, si tocamos nuestros montajes de animación, todo debería funcionar a la perfección Recuerda cambiarlo. Aquí en tu montaje de animación, recuerda cambiarlo a la parte superior del cuerpo Y recuerda aquí para la parte superior del cuerpo, para la mezcla en capas por hueso, recuerda decirle, de qué hueso quieres mezclarte. Muy, muy importante. Guarde todo y sigamos adelante. 122. 9.07 Equip Animation Multicast: Sigamos adelante y hagamos que funcione. Volvamos al jugador y abramos aquí la base de jugadores. Juguemos nuestro montaje de animación. Lo que tienes que hacer es tomar esta malla que tenemos y puedes arrastrar desde aquí y buscar montaje de animación Y entonces se puede ver aquí. Reproducir montaje de animación. Bien, ahora tenemos que seleccionar qué montaje estamos hablando Voy a hacerlo dinámico igual que éste. Lo que podemos hacer es recordar que este es un efecto temporal. En lugar de usar un representante, notifique, recuerde que una notificación de representante será vista por un jugador que aún no se haya conectado a su servidor. Y si se conectan, por ejemplo, 10 minutos después, podrán ver tu arma equipada. Sin embargo, para la animación, como la animación de recarga cuando coges un arma y ellos pueden ver una recarga, realmente no necesita mostrarse para jugadores desconectados porque es solo una animación que desaparece después La gente realmente no va a sentir pena si no pueden ver esa animación cuando se conectan, porque de todos modos solo va a desaparecer después de 1 segundo. Entonces voy a agregar a una multidifusión en su lugar. Una multidifusión. Recuerda que son solo los jugadores conectados los que pueden ver esto. Y jugadores desconectados, si se conectan al mismo tiempo que estás recargando, no podrán verlo hasta que vuelvas a cargar, déjanos hacer un nuevo déjanos hacer un nuevo Llámalo multidifusión. Llamémoslo Equipar Arma, porque normalmente solo lo llamo con el mismo nombre que el del servidor. Ejecutemos esto en multidifusión y confiable, y conectémoslo aquí para la multidifusión Dependiendo de si estamos sosteniendo una pistola o un rifle, queremos reproducir esa animación respectiva. Justo como lo que hicimos aquí arriba. Voy a hacer una nueva variable y es el tipo de tipo de arma igual que ahí arriba. Seleccionado. Vamos a lo mismo aquí. Yo sólo voy a equipar. Sólo voy a llamarlo para equipar. De hecho voy a llamarlo lo mismo aquí arriba. En lugar de encontrar, equipar como este tipo de arma para equipar. Bien, todo se ve bien. Ahora podemos arrastrar desde aquí y decir seleccionar y usar este nodo de selección. Entonces podemos conectar este de aquí abajo. Ahora va a seleccionar la animación dependiendo de cuál sea este valor de enumeración Si es la pistola, voy a seleccionar y tocar la pistola. Montaje de Animación. Si es el rifle, voy a tocar el rifle Animation Montage Ahora lo va a jugar dependiendo de lo que hayamos seleccionado aquí arriba para el rifle o aquí abajo para la pistola. Déjame en realidad solo moverlo por debajo de ambos. De hecho voy a organizar esto un poco más. Moviendo esto, moviendo esto arriba. Entonces estos están juntos y este está por debajo de ellos. Y también podemos mover este hacia arriba, así como así. Bien, entonces ahora lo tenemos y ahora necesitamos agregarlo al código. Entonces sólo voy a agregarlo aquí. Justo después cuando cambiemos nuestro estado de movimiento, quiero reproducir mi animación de recarga Y lo llamamos MC equipar arma. Y recuerde, las multidifusión solo pueden ejecutarse en eventos de servidor. Este es un evento de servidor. Recuerda muy importante, la multidifusión no se puede ejecutar aquí. Entonces no se puede llamar a una multidifusión aquí arriba. Esto está mal. Hay que ejecutarlo a través del servidor. Vamos a romper esos y digamos arma MC Equip. Vamos a conectarlo aquí. Y conectemos este tipo de arma a él para que sea correcto cuando juega. Y vamos a compilar ahora. Ahora podemos seguir adelante y hacer clic en Reproducir para ver si todo funciona o si tenemos alguna caja. Si hago clic en play y selecciono terroristas y los selecciono aquí, ahora hago clic en uno, puedes ver que juego la animación de recarga Si hago clic en dos, vuelvo a cargar también. Ahora veamos si se mezcla con nuestro running. Si corro y hago clic aquí, se puede ver que en realidad estoy corriendo y estoy recargando Si hago clic en control y vuelvo a cargar, veo yo en realidad, si solo hago clic en el brazo de resorte y lo hago 500 para que podamos ver realmente cómo se ve, hago clic en play Y si los cogimos ahora, hagámoslo ahora. Si cambio, puedes ver que en realidad también me estoy agachando y recargando. Está funcionando ahora. Todo está funcionando correctamente. Impresionante. Entonces ahora estoy dando clic en el brazo de resorte, vuelvo a hacer que la longitud del brazo objetivo sea cero, y todo está funcionando. Ahora también necesitamos agregarlo en otro lugar. Porque cuando saqueamos el arma desde el suelo, ahora mismo no está jugando Siempre que saquees los artículos o aquí en el lote armas, siempre que saquees el artículo Cuando establecemos el tipo de arma equipada con arma de lote, también tenemos que reproducir la animación. Entonces es correcto. Déjame alejar esto un poco aquí. Y llamémoslo de nuevo MC Equip arma. Y agreguemos cualquiera que sea el tipo de arma. Es éste. Adelante y haz un nodo de ruta trasera, y ahora lo tenemos correcto aquí. Así que vamos a organizar las cosas un poco más así. Bien, entonces ahora está dentro de aquí también en el arma de botín Y ahora vamos a dar click en play. Ahora cada vez que saquee mi arma, en realidad va a reproducir esta animación antes de que pueda disparar mi arma Entonces así es como agregas animaciones a tus armas también. Puedes agregarlos a través montajes de animación y también puedes hacer un movimiento de la parte superior del cuerpo para los montajes de animación, que no interrumpas tu animación de carrera mientras haces todo esto Bien, así que eso fue todo por ahora. Guardemos todo y pasemos al siguiente. 123. 9.08 Configura el widget de visualización de armas: Ahora es el momento de crear el widget de visualización de armas. Entonces, sigamos adelante. En la interfaz de usuario de aquí, igual que antes de que creáramos la selección de equipo I, ahora hagamos clic derecho y vayamos a Interfaz de usuario y creemos otro widget, blueprint Ahora para éste, de nuevo, el widget de usuario es el que vamos a seleccionar. Y llamémoslo B. Voy a llamarlo principal. Esta será la interfaz de usuario principal que tengamos. No hemos creado un NuWi principal para el juego. En el Nei principal también puedes ver tus armas. Vamos a abrir esta. Recuerda, cada vez que comienzas en un blueprint de widget, primero tienes que usar canvas, agregándole un lienzo Y ahora mismo estamos listos para diseñarlo aquí. No obstante, todavía no hemos importado los iconos. Así que déjame guardarlo todo. Vamos a cerrar esto. Y quiero que entres en los materiales del curso que te he dado, yendo a los iconos de la interfaz de usuario, y te he dado estos íconos. Así que adelante y selecciona de nuevo todos los íconos de armas. Es posible que veas diferentes elementos dentro de los materiales de este curso dependiendo de cuándo lo descargues. Porque ahora mismo solo estoy agregando más cosas a medida que voy con este curso. Podría haber más íconos de los que puedes ver aquí ahora mismo. Tener estos tres iconos. Por ahora, vamos a la carpeta de iconos. Déjame simplemente hacer clic y arrastrarlos hasta aquí. Nuevamente, al igual que lo que hicimos con los otros, recuerde que cambiamos el grupo de texturas a UI y la configuración de compresión a interfaz de usuario dos D. Hagámoslo con estos tres también. Ahora puedes hacer click sobre ellos y configurarlos individualmente. Sin embargo, puede simplemente hacer clic en uno o mantener el control seleccionar los tres. Haga clic derecho, vaya a Activo. Acción, Edición masiva a través de Matriz de Propiedades. Recuerda que así es como los editas todos a la vez. Esto es algo que ya hemos hecho antes. Seguimos adelante y damos click en él. En la compresión, lo creo ya que de aquí la configuración de compresión aquí, va a dos interfaces de usuario, dos D, y el nivel de detalle, puedes configurarlo de mundo a UI. Así que ahora podemos cerrarlo y podemos guardarlo todo. Bien, así que ahora cuando entramos en UI y dentro de la IU principal, y si nosotros, por ejemplo, agregamos una imagen a la pantalla, haces click en ella aquí arriba para que la imagen encuentre la imagen, busquemos los íconos que hemos agregado. Y aquí puedes ver los íconos que tenemos. Bien, así que pasemos a la siguiente lección donde diseñamos este plano de widget Por ahora, solo eliminemos esta. Mantengamos este lienzo porque lo necesitamos. Y compilar, guardar todo, y sigamos adelante. 124. 9.09 Diseña la interfaz de usuario de visualización de armas: Bien, entonces lo que queremos hacer ahora mismo con la exhibición de armas es igual que en Counterstrike, donde puedes ver aquí al costado tienes el arma y luego tienes la tecla en el teclado que necesitas presionar para ver esa arma Así que así, así vamos a hacer lo mismo, y la interfaz de usuario será más visible cada vez que tengas seleccionada esta arma comparación con las otras y así sucesivamente, así que solo un pequeño efecto. Bien, por ahora, déjame cerrar esto y vamos a crear esta interfaz de usuario de visualización de armas muy simple. Ahora cuando diseñas algo como esto, tienes que pensar en qué cajas quieres agregar. Entonces tenemos la caja horizontal y tenemos la caja vertical. Primero, necesitamos una caja vertical porque las armas están una encima de la otra. Escojamos una caja vertical. Colócala aquí. Vamos a cambiar el tamaño de esto de alguna manera para que pueda arrastrarlo por ahí Y voy a arrastrarlo aquí abajo en alguna parte. Nuevamente, recuerda cambiar el punto de anclaje, lo contrario va a estar mal en la pantalla aquí. Al hacer clic en el punto de anclaje, colocándolo abajo en la parte inferior derecha. Y también para el puesto voy a escribir 00 para ver dónde está en la pantalla. Y se puede ver que está fuera de la pantalla. Recuerda, puedes ajustar esto en la alineación. Si escribo 0.5 aquí, puede ver que ahora se ajusta a la mitad de la misma. Y si escribo uno, brota al otro lado, así como para Y, Si t 0.5 se encaja a la mitad de la Y si escribo uno, se ajusta a la otra esquina. Ahora incluso en la posición 00, está dentro de nuestro lienzo, y esto es lo que queremos para la posición x e y . Puedo darle algo como -30 aquí y -30 aquí, sólo para alejarlo de los bordes No está en la parte superior de la pantalla. Aquí está el borde de la pantalla. Bien, vamos a compilar. Ahora lo que tenemos que hacer es tener un arma y tenemos la tecla del teclado. Al lado, en realidad necesitamos una caja horizontal. Ahora una caja horizontal dentro de la caja vertical. Y ahora podemos agregar la imagen del arma así como el texto para la tecla del teclado. Agrégalos aquí. Déjame simplemente hacer clic en el texto, y escribamos uno por ahora. Esta es la tecla del teclado. Y luego puedes dar click en la imagen. Déjame seleccionar la imagen. Si busco el icono AK 47 por ejemplo, y quería estar en un tamaño más grande, lugar de 32 por 32, tal vez podamos escribir algo como 130 por 130. Recuerda, antes de diseñar completamente esto correctamente, recuerda hacer clic en el tamaño de la pantalla. Vaya a laptops, por ejemplo, y seleccione el portátil genérico 14 a 15. Esto es como lo que te mostré antes con el widget de selección de equipos. Esto es para escalar esta interfaz de usuario correctamente en todos los dispositivos. Siempre que estoy en el zoom uno por uno, así es como va a verse en la computadora portátil, así es como se ve. Ahora puedes ver si haces clic en este botón aquí, elimino las líneas de guiones. Normalmente hago eso para ver cómo se ve sin todas estas líneas. Creo que esto es lo suficientemente grande para una computadora portátil. Vamos a compilar. Recuerda, lo escalamos a mi pantalla Por ejemplo, tengo un monitor de cuatro K, y lo escalamos haciendo clic en este pequeño icono Y luego seleccionamos aquí cuánto queríamos escalar. Creo que antes eran ocho. Por lo que se escala muy rápidamente. Lo puse a 2.5 Si. Ahora vamos a hacer clic en este número. Voy a alinearlo al medio verticalmente. Creo que esto ahora está dando clic en esta caja horizontal. En realidad lo que voy a hacer es clic en el cuadro vertical. Y haciendo clic en Size To Content, la caja vertical simplemente va a dimensionar en comparación con cualquier contenido que tenga en ella. Lo que podemos hacer es, por ejemplo, para la caja horizontal, yo puedo controlar D, y esto lo copiará más allá de esto aquí arriba. Si solo controlas D para copiarlo o duplicarlo, puedes ver que pega las armas aquí arriba y eso se ve correcto Sólo necesito dos de ellos. No necesito tantos. Voy a hacer click en el número primero. En realidad, voy a borrar esta. Sólo voy a estilizar uno de ellos y puedo copiar y pegar Voy a dar click sobre este número. Voy a cambiar el fondo por algo. Hemos importado rubí. Creo que Simy Bold estará bien para este. Siempre podemos probarlo para el tamaño. Creo que 22 podría ser un poco mejor. 22, necesitamos un espacio entre estos dos. Sube aquí, busca espaciador y colócalos entre la imagen y el texto. Y luego puedes poner algo de espacio entre ellos. Por ejemplo, si lo hago 20, algo así. O puedes hacerlo aún más si es muy poco. Creo que está bien por ahora. Ahora lo que puedes hacer es dar click sobre esta caja horizontal de control D para duplicar. Y ahora lo tienes, por ejemplo, para este puedes cambiarlo en una pistola. Ahora, realmente no importa ahora mismo porque vamos a cambiarlo dinámicamente en el juego. Este AK será un arma. Si voy al plano de armas, si lo encuentro aquí, el arma aquí, 44 Este será el icono, o éste. Si has recogido 44 en lugar de un AK, estas imágenes cambiarán dinámicamente en el juego. Realmente no importa, pero para estos números, este es uno, este son dos. Y esto es lo que presiono en el teclado para que estas armas estén equipadas para mí. Bien, así que eso fue todo por estilizarlo. Se puede ver que es muy, muy sencillo. Es una interfaz de usuario muy simple, pero va a quedar bien en el juego. Entonces eso fue todo por ahora. Adelante, compile y guarde todo, y pasemos al siguiente. 125. 9.10 Muestra la interfaz de usuario de visualización de armas: Ahora vamos a mostrar esta interfaz de usuario a la pantalla. Ahora puedes hacerlo tú mismo si quieres algún entrenamiento, porque ya lo hemos hecho antes. Intenta averiguar cómo puedes mostrar esto en la pantalla. Después del widget de selección del equipo. Siempre que seleccionemos el equipo, quiero mostrar esta interfaz de usuario principal. Intenta averiguarlo tú mismo. Es un buen entrenamiento si no te acuerdas o si quieres ayuda. Hagámoslo juntos. Déjame cerrar esto. Primero, lo que tengo que hacer es que tengo que ir a los planos. Ir al control del jugador. Recuerda que en el control del jugador tenemos toda la interfaz de usuario donde hicimos este evento show hide widget. Aquí, quiero mostrar mi widgit principal. Ahora usamos esta enumeración, necesito agregarla a la enumeración Si voy a Enums, hago clic en los widgets del juego Dentro de aquí estoy agregando un nuevo enumerador y estoy escribiendo nombre o no nombre Voy a moverlo aquí arriba a la cima solo para estar más limpio. Realmente no importa. Entonces voy a ir al controlador del Reproductor aquí, igual que antes. Haga clic derecho, cree widgets. Entonces podemos crear el widgit principal. Podemos buscarlo aquí. Voy a hacer clic derecho y promover esto a una variable y llamarlo WB main. Ahora vamos a arrastrar desde aquí y agregar a Viewport, así como esto Ahora igual que antes, voy a arrastrar este main out, derecho, convertir en un get validado. Entonces cuando no sea válido, quiero crear el widget. No obstante, si lo hemos creado antes, voy a seguir adelante y solo agregarlo a la viewport directamente, igual que antes Intenta organizar esto. Cuando termines así así, entonces puedes seguir adelante y compilar. Y recuerda también ir al widget hide dentro de aquí. Al igual que antes, tomemos W en un get validado y arrastre desde aquí y digamos eliminar de. Recuerda también hacer esto cuando quieras , quizá algunos ahora. Realmente no pasa demasiado con el MenUI. No se lo quita demasiado. No obstante, si un caso, por ejemplo, si tienes una cinemática o algo así, no quieres mostrar el MenUI Así también es como lo eliminas. Volvamos ahora al gráfico de eventos. Después de la selección del equipo, recuerda aquí en el controlador de jugador en la parte inferior, hicimos este jugador de generación CL Nosotros engendramos al jugador, ocultamos la selección del equipo. Ahora aquí es un buen lugar para mostrar el Maui. Recuerde que la interfaz de usuario es del lado del cliente. Siempre que trabajes con UI, tienes que ejecutarlos en el cliente aquí. Lo que suelo hacer es que estoy buscando un evento de cliente que ya hemos realizado y que podamos usar. Este jugador de spawn CL se está ejecutando en el cliente, por lo que este es un muy buen lugar para mostrar al Maui Voy a conducir aquí y decir Mostrar Ocultar widget, como lo llamamos. Y voy a seleccionar el MenUI. Voy a dar click en Mostrar y conectarlo. Ahora solo un recordatorio, si lo olvidaste, va a seleccionar el Maui y va a seleccionar Mostrar aquí en el programa Ocultar widget. Sabe que es el MenUI Sabe que este boletín es cierto. Entonces va a ir aquí. Sabe que es verdad. Entonces va a mostrar el widget. Ahora sabe qué widget es, porque hemos seleccionado el widget principal, va a ir dentro de aquí. Y va a ejecutar este código desde el widget principal. Y va a hacer caso omiso de éste. Sólo está manejando este de aquí arriba. Y vamos a agregar el widget principal a la ventana gráfica. Entonces no creo que nos falte nada. Entonces, sigamos adelante y jugemos y seleccionemos, por ejemplo, contra el terrorismo. Y entonces se puede ver que tengo mi interfaz de usuario principal. Si maximizo mi pantalla, tengo la interfaz de usuario principal aquí y la puedo ver en mi pantalla. 126. 9.11 Codifica la funcionalidad de visualización de armas: Ahora vamos a codificar la funcionalidad para la interfaz de usuario de pantalla. Vamos a la interfaz de usuario y vamos a abrirla. Esencialmente, antes de comenzar a codificar UI, solo tienes que pensar, ¿qué es lo que intentas hacer? Lo que estoy tratando de hacer es que quiero cambiar esta imagen a lo que sea que tenga. Quiero exhibirlo y quitarlo, dependiendo de si he saqueado el arma o no Entonces comencemos con el primero. El primero, sólo voy a cambiar el nombre de la imagen para que no sea confuso. Voy a llamarlo rifle IMG. Al siguiente voy a llamar pistola IMG. Ahora para usarlos aquí en la gráfica, se puede ver que no tenemos ninguna variable. Tenemos que dar click en ambos. Seleccione ambos. Dos es variable, así que hay que tomar eso y compilar. Y ahora podemos ver que podemos usarlas como variables dentro de aquí. Voy a eliminar todos estos y vamos a crear un evento personalizado. Vamos a llamarlo actualizar inventario. Actualizo inventario I dentro de aquí. Básicamente lo que estamos tratando de hacer es que estamos tratando tomar esta pistola de imagen por ejemplo y rifle de imagen y estamos tratando de decir set brush from texture. Este conjunto de pinceles de textura, esto es simplemente justo cuando estás cambiando esta imagen. Queremos cambiar esta imagen dependiendo de si estamos sosteniendo la K, la información o algo más. Establecer pincel de textura y aquí está la imagen que podemos cambiar. La otra cosa es que estamos tratando de mostrar u ocultar este icono dependiendo de si hemos saqueado el arma o no Nuevamente, dragón de este conjunto de visibilidad y seleccione éste. Voy a copiar y pegar este de aquí abajo, Coppa esto y conectar también el rifle de imagen Esto es lo que intentas hacer. Estoy copiando pegando esto también así así. Estas son las funciones que simplemente vamos a usar. Esto siempre es agradable de hacer cada vez que vas a empezar con algo. Intenta pensar qué es lo principal que intentas hacer. Estás intentando cambiar la imagen dependiendo de qué arma hayas saqueado y estás tratando de establecer la visibilidad en oculta o no oculta, dependiendo de si has saqueado esa arma o Bien, con esa. Ahora, depende de qué arma estemos saqueando. ¿Es una pistola o es un rifle? Recuerda, ya tenemos una variable para eso y este es el tipo de arma E. Estamos usando mucho eso y llamémosle a ésta un tipo de arma. Bien, entonces tenemos éste y podemos arrastrar desde aquí y decir que switch tiene autoridad. En realidad encienda la enumeración este. Ahora, dependiendo de si es una pistola, vamos a ejecutar este código. Dependiendo de si es un rifle, vamos a ejecutar este código. Y sólo voy a conectar todo esto aquí, así como esto. Bien, ahora por las imágenes, por las texturas. En lugar de ponerlos por aquí, solo voy a hacer clic y arrastrarlos a este evento. Y voy a llamarlo clavo tonto. Podemos arrastrar esto aquí también. Bien, vamos a compilar ahora. Vamos a guardar todo. Bien, así que lo único que nos falta ahora mismo es la miniatura del arma Porque recuerden, no hemos agregado una miniatura de arma a la infraestructura de armas Entonces tenemos que hacerlo en la siguiente lección. No obstante, antes de terminar esto, también necesitamos establecer esto visible o no. Entonces ahora la visibilidad del arma va a ser visible cada vez que hayas cargado el arma. No obstante, si aún no lo has cargado, quedará oculto. Entonces para hacer esto, lo que podemos hacer es simplemente verificar si esta miniatura de imagen o miniatura de arma es válida o no Porque igual que antes, si vuelvo a la base de jugadores y jugadores, recuerda así como cómo podríamos eliminar variables como esta al no ponerlas en nada y no serán válidas. Podemos hacer lo mismo aquí para la miniatura de la imagen. Podemos ponerla a nada y no va a ser válida, y eso significa que se nos ha caído el arma. Lo que podemos hacer es que podemos arrastrar de aquí y decir que es válido y podemos elegir, éste es válido. Al igual que antes tenemos, o hemos trabajado con las notas selectas podemos arrastrar de esta y decir seleccionar y elegir esta. Ahora puedo conectar este lingote a este de aquí. ¿Bien? Si la miniatura del arma no es válida, es válida es falsa, eso significa que queremos que esto se oculte Ahora para este otro, si es cierto, es válido. Queremos que no sea comprobable por golpes. Recuerda, no golpear comprobable significa que el cursor de tu mouse no puede interactuar con esta imagen Realmente no necesitamos hacer eso. Lo que tenemos que hacer es hacer clic en él aquí y mantener el control. Haga clic en el segundo y también establezca la visibilidad en no hit comprobable. Visible significa que tu mouse realmente puede hacer clic en él y bloqueará cualquier cosa detrás de esto. Pero realmente no necesitamos hacer clic en esos. Necesito configurarlos en no hit comprobable. Y haz lo mismo aquí para el texto. Establecerlos en no golpear comprobable. Aquí abajo en la visibilidad también por defecto voy a seleccionar estos dos y la visibilidad a ocultos, Realmente no necesitamos verlos cuando iniciemos el juego, no tenemos armas. Vamos a configurarlo para no golpear comprobable cada vez que realmente saqueemos el arma aquí Haz lo mismo aquí. Estamos preguntando si esto es válido. De hecho podemos simplemente copiar y pegar éste. Copia pégalo, conéctalo, y también conéctalo aquí arriba. Bien, entonces aquí he creado algunas notas de ruta y organizado un poco el código. Aquí tenemos el código, y este es el código principal para nuestro inventario, UI. Ahora pasemos a la siguiente lección y creemos esta miniatura de arma dentro de nuestra estructura 127. 9.12 Añade una miniatura de arma a la estructura: Ahora agreguemos la miniatura del arma a la estructura. Volvamos a nuestras estructuras y abramos la información del arma. Y agreguemos una nueva variable y llamémosla miniatura aquí Para la miniatura, el tipo que es es solo una imagen, entonces es una textura dos D. Así es como se llaman. Salga y ahorre. Ahora vamos a cerrar esta estructura. Agreguémoslo también a la tabla de datos. Si abres la tabla de datos de las hojas de Google que creamos anteriormente y abres la tabla de datos dentro de aquí, agreguemos la variable dentro de la estructura. Voy a simplemente empujarlo hasta aquí después del tipo, Tal vez por aquí solo para que sea más limpio. Realmente no importa a dónde lo muevas, pero ahora necesito agregarlo aquí. Después del tipo, necesito agregar la miniatura. Si busco aquí el tipo, necesito agregar la miniatura aquí Voy a hacer click derecho y agregar una columna a la derecha. Entonces voy a llamar a esta miniatura. Recuerda llamarlo con el mismo nombre que lo llamaste aquí. Ahora necesitamos las referencias a ellos. Si cierro esto, voy a la UI. Abro los íconos, ahora puedo escribir, dar clic en este AK y copiar la referencia. Puedo volver a mi tabla de datos y pegarla aquí para el AK. Haz lo mismo aquí para la info, click derecho copiar referencia. Pégalo aquí, clic derecho copiar referencia para la pistola. Y pegarlo aquí también. Ahora tienes que seguir adelante y descargarlo como un archivo CSV por aquí en la carpeta de descargas. Voy a renombrar Weapon Info. Voy a copiar esto, el viejo. Voy a borrarlo. Voy a pegar el nombre aquí, DT Weapon info. Recuerda que este es el mismo nombre que lo llamamos aquí dentro de nuestras tablas de datos. Y ahora podemos pinchar y arrastrarlo hasta aquí, y dice reimportarlo con éxito Si lo abres, puedes ver que en realidad tiene íconos adjuntos ahora. Bien, ahora podemos cerrarlo. Y ahora pasemos al jugador y abramos la base de jugadores. Dentro de la base de jugadores, queremos actualizar la interfaz de usuario cuando saqueemos el arma aquí en el arma del lote Bajemos aquí en el arma del Servalote. Necesitamos llamar a este evento de actualización de interfaz de usuario dentro de un cliente. Recuerde, la interfaz de usuario está ubicada en el cliente y en realidad no tenemos ningún evento de cliente en este momento Lo que voy a hacer es hacer clic derecho por aquí y hacer un nuevo evento personalizado. Llámalo CL para cliente, déjame llamarlo Actualizar inventario, UI por ejemplo. Y ejecutarlo en el cliente propietario y es confiable. Lo que queremos hacer aquí es que queremos llamar a nuestro B principal. Recuerda que está dentro del controlador del reproductor, tenemos este WB principal. Y dentro de la principal B, podemos encontrar nuestro evento que creamos antes. Necesitamos acceder a este WB main, que está dentro del controlador del reproductor. Intenta ver si puedes hacerlo tú mismo y llama a este evento aquí. Esta es una buena práctica para comunicarse entre planos. Hagámoslo juntos. Ahora déjame hacer clic derecho y decir obtener controlador para obtener el controlador para este específico. Entonces puedo arrastrar desde aquí y decir obtener referencia del controlador del reproductor, lo hicimos desde nuestra interfaz de blueprint Y entonces puedo llamar a mi variable principal WB. Entonces puedo arrastrar y actualizar el inventario. I inventario de actualización de eventos. Adelante lo conecto para el tipo de arma. Sólo voy a arrastrarlo hasta aquí, así como la miniatura del arma Sólo lo estoy arrastrando al evento. Crea una variable automáticamente y voy a crear algunos nodos de ruta. Ahora cuando eso esté hecho, sigamos adelante y compilemos y guardemos todo por aquí. Siempre que saqueemos un arma, voy a llamarla, después equipar esto, después de cambiar el tipo de equipo aquí, voy a alejar esto. Voy a alejar esto también. Voy a alejar esto. Entonces voy a llamar al CL, actualizar arma o UI de Inventario. Ahora, en lugar de establecer el tipo de arma, solo arrastrémosla de esta arma saqueada Voy a hacer click y arrastrarlo hasta aquí. Hacer una nota de redireccionar también. También para la miniatura del arma. Ahora ahora lo tenemos dentro de nuestra tabla de datos. Cuando obtienes la información del arma, también obtienes la información para la miniatura, que puedes ver aquí Si no lo ves, recuerda marcar esto aquí. Recuerda que hacemos clic en Ocultar pines desconectados, y solo vemos esto Ahora también puedes hacer clic en el Girar para mostrar la miniatura y podemos conectarla aquí Bien, así que ahora lo tenemos aquí. Ya lo tenemos enchufado. Debería funcionar siempre que saqueemos un arma. Vamos a probarlo. Antes de continuar, hagamos clic en play. Y cuando hacemos clic en Jugar como el terrorista. Hago alusión a esta pistola por ejemplo. Y se puede ver que la pistola ahora se muestra aquí abajo en la Mi UI. Cuando aludido a la para, no está mostrando la P. Tenemos que arreglar esta No está mostrando el por ahora. Es raro porque aquí debería ser el mismo código. Siempre que sea, el infor, no estamos desarmados Entonces aquí en el arma botín ahora mismo o mucho arma, así no estamos desarmados Así que en realidad está pasando por esta parte del código aquí arriba y se está saltando todo esto Necesitamos realmente reconectar esto a uno correcto. Voy a mantener el control y Alt para desconectar esto. Alt. Haga clic, lo siento. Alt y haga clic para desconectar esto. Entonces voy a mover esto aquí de lo falso. Creo que es mejor si lo conectamos a aquí. En cambio, vamos a conectarlo a aquí, Esto es más correcto y vamos a compilar ahora y tratar de jugarlo. Entonces si juego a terroristas selectos, ahora cojo un formulario y luego cojo la pistola y se puede ver que ambos ya están funcionando. Tenemos que arreglar la cosa donde ahora soltamos un arma y ahora debería quitarla de nuestra interfaz de usuario. Copiemos esto aquí, y encontremos el arma de lanzamiento. Ahora por aquí por el código de armas gotas y el arma de caída, voy a entrar de aquí. Y ahora estamos poniendo el arma caída y la estamos retirando del inventario. Puedes hacerlo aquí o aquí. Realmente no importa. Yo sólo voy a hacerlo dentro de aquí. Voy a pegarlo. Y necesitamos tener la miniatura del arma. Entonces esta es el arma para soltar. Lo que puedo hacer, solo puedo tomarlo de aquí, arma para soltar, y puedo conectar esto aquí, para que se vea más limpio. Yo también puedo tomar esto. Puedo decir de nuevo, en realidad lo estamos haciendo todo aquí. En lugar de copiarlo pegándolo, solo usemos éste. Déjame moverlo de nuevo. Y luego puedo usar el tipo de arma y puedo usar la miniatura Y vamos a estructurarlo mejor para éste. Volvamos a conectarlo. Vamos a moverlo hacia atrás. Al igual que antes, siempre podemos crear una parte trasera. En realidad, no necesitamos crear un nodo trasero. Podemos simplemente colocarlo así aquí para la miniatura del arma En realidad, antes de hacer clic en play, en realidad no es así. Recuerda, cuando sueltas un arma, no quieres poner una miniatura, nosotros queremos configurarla en nada Aquí en la interfaz de usuario, dice que no es válida, y cuando no es válida va a ocultar este icono. Hacemos click adelante en play y seguimos adelante y saqueamos la pistola Saquea el rifle. Y si soltamos el rifle, por ejemplo, se puede ver que se retira de la interfaz de usuario. Si se me cae la pistola, ahora se retira. Si recojo el AK, se puede ver que ahora está mostrando el icono de AK. Si cojo la pistola, si dejo caer el AK y recojo la información, puedes ver que ahora está mostrando el ícono de info. Entonces todo está funcionando como se supone que debe hacerlo. Y eso fue todo por ahora. Entonces en la siguiente podemos intentar. Entonces siempre que tengas un arma seleccionada. Entonces ahora mismo si tengo la pistola seleccionada, la pistola debería ser completamente visible. Sin embargo, el icono de información debería ser apenas visible. Para que sepas lo que has seleccionado de tu inventario. 128. 9.13 Opacidad de interfaz de usuario de armas sin equipos: Bien, así que continuemos con el código aquí. Lo que tenemos que hacer ahora mismo es que necesitamos cambiar la opacidad de las imágenes en el diseñador Si haces clic en uno de ellos, por ejemplo el AK, si haces clic en el tinte, si haces clic en la flecha y ves puedes cambiar el alfa para que sea visible y no visible. Entonces esto es lo que queremos mostrar cada vez que hayamos seleccionado la pistola. Por ejemplo, voy a volverlo a hacer uno. Y vamos a la gráfica. Podemos tomar la pistola de imagen y podemos decir opacidad. Si no sabes cómo se llama, solo busca la palabra y luego podrás ver cuál es la mejor para usar. Esto a veces es algo que uso. Si estoy creando una nueva mecánica, solo puedo escribir la palabra y luego tratar de seleccionar lo que tenga sentido. Queremos establecer la opacidad para este conjunto de imágenes opacidad. Ahora depende de cuál sea nuestra arma equipada. El arma equipada está dentro de nuestro jugador, este tipo de arma equipada. Porque este ahora mismo, no podemos usar. Esta es sólo el arma que hemos recogido del suelo. Esta no es necesariamente el arma que estamos equipando en estos momentos Necesitamos obtener esta variable. Y la forma en que hacemos esto, nuevamente necesitamos comunicarnos con el jugador. Dentro de la interfaz de usuario, tenemos algo llamado get owning, get owning player. Si quieres una referencia al controlador del jugador, obtén jugador propietario. Si quieres una referencia al jugador pan para el I, queremos una referencia al jugador Paw. Voy a decir conseguir ser dueño de jugador peón. Entonces podemos arrastrar desde aquí y decir obtener referencia del jugador. Porque ya lo hemos hecho dentro de una interfaz de blueprint Vamos a conectarlo después de los que están aquí. No importa cuál de ellos sea, ejecuta el código y luego sigue corriendo de aquí. Queremos conseguir el equipado, éste se equipara tipo de arma. Otra vez, igual que antes. Voy a mover esto y decir switch on enumeration connect Ahora tomemos esto. Si se trata de una pistola, queremos establecer la opacidad a una totalmente visible Si es un rifle, copiemos esto realmente sin éste. Digamos establecer opacidad si es un rifle. De la pistola. Ahora mismo hemos equipado la pistola, el rifle estaría a 0.25 de visibilidad. Por ejemplo, la opacidad. Ahora podemos copiar y pegar esto aquí y podemos conectarlo al rifle. La pistola ahora es 0.25 y el rifle es uno. Ahora que tenemos esto terminado, podemos seguir adelante y compilar y guardar todo. Ahora debería funcionar. Tenemos que llamar a éste. ¿Recuerdas esta actualización de interfaz de usuario de inventario? En realidad no lo estamos llamando dentro de nuestro evento donde en realidad seleccionamos armas aquí abajo. Cuando seleccionamos el arma primaria y secundaria por aquí. No estamos llamando al evento donde actualizamos la interfaz de usuario de inventario, tenemos que llamar a este también. Siempre que equipamos armas, esta de aquí se actualiza. Tenemos que hacer eso. Vamos a la base de jugadores. Y déjeme simplemente alejar esto. Recuerda que estamos en el arma de equipamiento Serva. Siempre que cambiemos a la primaria y secundaria dentro de aquí. Después de esta otra vez voy a llamar a CL, actualizar arma I, voy a comprobar aquí el tipo de arma que estamos equipando es esta una arma tipo dos equipar que estamos usando Solo puedo conectar esto aquí y hacer un nodo de re ruta para el siguiente. La miniatura del arma es que en realidad podemos obtenerla de esta variable de arma, podemos arrastrarla aquí, obtener el nombre, buscar la variable de nombre, recopilarla igual que antes, obtener información de arma, y luego podemos arrastrar desde aquí y romperla Entonces podemos obtener la información aquí. Tenemos el tipo de arma y tenemos la miniatura. Técnicamente, puedes simplemente enchufar esto aquí también. Realmente no importa. Sólo voy a enchufar la miniatura. Eso está bien. Y voy a dar click en éste y esconder pines desconectados Y ahora tenemos esto terminado. Voy a llevar esto más cerca y todo se ve bien. Vamos a compilar, guardar todo y vamos a probarlo. Flic se quejan ahora selectos terroristas y puedo recoger la pistola y puedo recoger a los cuatro Se puede ver que la M cuatro no es tan visible como la pistola en estos momentos. Si selecciono la M cuatro, se vuelve más visible. Entonces ahora puedo ver que puedo cambiar de arma así. Si lo dejo caer y selecciono el AK o cojo el AK, puedo soltar la pistola. Y ahora el AK no es visible porque no lo he equipado. Pero si lo equipo, se va a mostrar. Ahora puedes ver cómo funciona esto. Es mucho mejor que antes. Ahora en realidad podemos ver lo que hemos equipado. Es solo un bonito diseño de juego, así que en realidad podemos, tenemos algunos cambios visuales. Bien, ahora esto está terminado. Hagamos algunos efectos de sonido. Los efectos de sonido para cuando realmente cambiamos el arma y los recargamos así y cada vez que estamos soltando el arma al suelo 129. 9.14 Añade efectos de sonido de Equip: Ahora sigamos adelante y agreguemos los efectos de sonido equipados. Primero, sigamos adelante e importemos los efectos de sonido. Si vamos a la carpeta de audio y efectos de sonido dentro de aquí, te he dado en los materiales de costo aquí dentro. Si vas al audio y si bajas aquí y encuentras la recarga del rifle y el clip del rifle, la recarga de pistola y el clip de pistola, estos cinco efectos de sonido, adelante y haz clic y arrástralos al navegador de contenido dentro de Bien, así que cuando los hayas arrastrado, seleccionémoslos todos manteniendo presionado, haciendo clic en uno de ellos, manteniendo presionado el turno y haciendo clic en el último clic derecho, y creamos múltiples señales Va a crear todas estas señales sonoras para ti. Ahora, me gustaría cambiarles el nombre a lo que hicimos antes aquí con la S, el prefijo. Sigamos adelante y hagamos clic en el primero. Voy a borrar desde el final. Voy a añadir sonido Q en lugar de efectos. Voy a hacer eso con el resto de ellos. Y yo sólo saltaré un poco y simplemente les renombraré aquí. Ahora los he renombrado a todos. Antes de continuar, sólo voy a reducir el volumen para cada uno porque son muy ruidosos. Y para este curso, no quiero que sean muy ruidosos porque va a ser molesto para ti. Este es el sonido aquí, y si hago clic en el siguiente, tal vez reducirlo a algo así como 0.30 0.3 Por cierto, puedes tener volúmenes de Luda Sonará mucho mejor en el juego, pero solo estoy haciendo esto para mi núcleo, que no tengas que escuchar estos ruidos fuertes Entonces estas son las recargas y así es como suena. Bien, increíble. Ahora déjame cerrarlo, guardar todo. Ahora vayamos a los activos y animaciones y encontremos estas animaciones. Recuerda, no son estas viejas animaciones, nuestras propias animaciones aquí. Si busco algún montaje ahora, podemos seguir adelante y abrir ambos. El montaje de animación de rifle y el montaje de animación de pistola que creamos antes . Bien, genial. Dentro del montaje de animación aquí, lo que puedes hacer, puedes agregar efectos de sonido para que no tengas que hacerlo dentro del código Aquí en el nodo a F, tenemos esta barra aquí, esta. Puedes seguir adelante y renombrarlo si quieres haciendo clic en él. Haga clic en dos en el teclado. O simplemente pincha sobre él y tal vez llamarlo efectos de sonido o algo así. Realmente no importa. Y aquí dentro, hagamos clic derecho y agreguemos una notificación y luego reproduzca Sonido. Ahora vamos a darle un click y ya podemos elegir qué sonido queremos reproducir. Lo que queremos tocar para el primero se llama clip de pistola. Queremos elegir este clip de pistola porque puedes ver aquí, queremos colocar el sonido cada vez que vuelva a cargar aquí, cada vez que saque el clip de la pistola Ahora lo que he descubierto es que es mucho mejor agregar el sonido antes de que haga la cosa porque suena retrasado. Si en realidad pones el sonido aquí donde saca el clip y puedes intentar escucharlo, suena un poco retrasado. Lo que me gusta hacer es que me gustaría agregarlo antes de que realmente lo haga. A lo mejor algo así como por aquí. Bien. Suena bien. Ahora, el siguiente es que no tengo que hacer sonar efectos para el clip de pistola, en realidad tenemos que agregar el mismo. Puedes hacer clic aquí, controlar C y luego controlar V por aquí. A ver cuándo queremos jugarlo. A lo mejor algo como aquí. Entonces la última es la recarga de pistola. Y creo que voy a agregarlo a algún lugar por aquí. Haga clic con el botón derecho, Agregar, notificar el juego. Sonido Haga clic en él y encuentre la recarga de la pistola. Creo que si buscas así recarga encontrarás el que te di Recarga de pistola. Y por cierto, puedes ver muchos efectos de sonido aquí. Y esto se debe a que ya importaste efectos de sonido del mercado. Cuando importaste todas estas armas, en realidad hay efectos de sonido dentro de estas carpetas de armas. Puedes intentar usar algunos de esos si así lo deseas. No tienes que usar el que te di. Puede buscar recarga de pistola. Ese es el que te di. Ese es el sonido. hacer clic en el espacio para escucharlo. Bien. Para que suene un poco más interesante, puedes escuchar la entrada y salida del clip. O clip hacia fuera y clip adentro. Suenan igual. ¿Bien? No es realmente interesante. Sigamos adelante y cambiarlo y hacerlo más interesante. Si vas a los efectos de audio y sonido y haces clic, da clic en él. Pero vamos a hacer clic en el clip de la pistola y vamos a duplicarlo. Si puedo encontrar el botón aquí, duplique. Llamémoslo Pistol Clip In. Cambiemos el nombre de éste a Pistol Clip Out. Vamos a hacer clic en el clip de pistola aquí para que suene diferente. Creo que la hemos usado antes dentro del curso antes. Pero puedes usar este llamado modulador. Y con un modulador se puede cambiar el tono del sonido. Y de esta manera puedes hacer que suene diferente. Vamos a conectarlo aquí. Vamos a juntarlos. Ahora da clic en el modulador. Voy a cambiar este a 1.3 en el terreno de juego. Va a sonar más alto que el otro. Si intentas seguir adelante y tocarlo , así es como suena. Si abres el otro, el clip sale ahora puedes escuchar la diferencia. Bien, podemos hacer click en el espacio aquí para escucharlo. En realidad, creo, sí, tenemos que cambiarlos aquí en lugar de recortarlos. Voy a cambiarlo a clip in y vamos a intentarlo de nuevo. Bien, suena mucho mejor que antes, así que sigamos adelante y lo guardemos. Y tenemos que hacer lo mismo por el otro. Si abro el otro montaje de animación, y puedes hacerlo, por cierto aquí desde el navegador de assets, puedes ver el otro montaje de animación Adelante y ábrelo igual que antes. Cambiemos el nombre de éste a efectos de sonido. Hagamos clic derecho en algún lugar aleatorio aquí y agreguemos una notificación. Juega. Sonido Haga clic en el sonido. Adelante y busca rifle Lip, creo que se llama Rifle Clip out. El primero es clip out de nuevo. Voy a ponerlo retrasado, mejor lo estoy poniendo aquí. Entonces el clip en, voy a agregar en algún lugar por aquí, Tal vez el clic derecho y haga clic sobre él, cambia a rifle En la recarga, tal vez juegue la recarga en algún lugar Haga clic con el botón derecho, Reproducir. Sonido Haga clic en él y busque la recarga de rifle. Adelante, selecciónela e intentemos ver cómo suena. Haga clic aquí. A lo mejor este debería llegar temprano porque suena retrasado. Suena bien. Ahora me gusta. Y vamos a guardar todo. Y eso fue todo por éste. Entonces ya debería funcionar. Porque estos ahora se aplican a las animaciones, así que no necesitamos agregar nada al código. Entonces, si vamos por aquí y seleccionamos terroristas. Y si solo cojo una pistola por ahora. Suena bien. Si recojo el informe y selecciono suena bien. Bien. Impresionante. Ahora suenan bien. Por supuesto que vamos a hacer que se vea mucho mejor con la recarga y con el clip y así sucesivamente, pero por ahora solo fueron los efectos de sonido y todo está sonando genial, por cierto De nuevo, puedes usar otros efectos de sonido que vienen con las otras armas que hayas descargado del mercado. Y eso fue todo por ahora. Así que vamos a guardar todo y pasemos al siguiente. 130. 10.01 Crea la interfaz de usuario de mira: Bien, así que sigamos adelante y sumemos la cruz. Vamos a la carpeta UI. Y abramos la carpeta de iconos en lugar de aquí, igual que antes, ve a tus materiales de costo y he incluido para ti, en lugar de iconos, he incluido esta cruz para ti. Haga clic y arrástrelo al navegador de contenido. Antes de que nos olvidemos, abramos y vayamos aquí en el grupo de texturas. Cámbielo a UI, igual que antes para la configuración de compresión, vamos a cambiarlo a una interfaz de usuario dos D, vamos a guardarlo, vamos a cerrarlo. Ahora lo que queremos hacer, vamos a la interfaz de usuario. Hagamos clic derecho aquí y vayamos a la interfaz de usuario, Seleccionar Wigid, Blueprint. Y elige al usuario. Widgid. Todo esto ya lo hemos hecho antes. Vamos a llamarlo WB. Rosa. Vamos a abrirlo en vez de aquí. ¿Qué es lo primero que tenemos que añadir? Recuerda que es el lienzo. Busquemos lienzo. Vamos a agregarlo. Y dentro de aquí, muy sencillo. Para el Crossa, solo necesitamos una imagen. Sólo necesitamos el Crossa. Sigamos adelante y cambiemos la imagen a la cruz. Selecciona el Crossa, queremos que esté en el medio. Intenta hacerlo tú mismo. Esto ya lo hemos hecho antes. Intenta hacer esta crossia en el medio en la posición 00. Intenta hacer eso. Sigamos juntos lo que quiere hacer aquí. Primero, quieres cambiar el punto de anclaje al medio. Entonces si escribes 00 la posición, puedes ver que se ancla aquí. Esto se debe a que para la alineación, hay que establecerla en 0.5 para la Y también. 0.5 igual que esto para que el tamaño sea correcto. En lugar de cambiar el tamaño aquí o el tamaño aquí, quiero decir, puedes tener este tamaño al contenido, va a dimensionar a cualquier tamaño de imagen que tengas en lugar de cambiarlo aquí arriba. Vamos a compilar ahora. Ahora bien, así es como se ve. Recuerda, también quieres hacer click en pantalla aquí y para los portátiles y cambiarlo a genérico, este cuaderno aquí. Como esto es solo un cruzador, realmente no necesitamos todo este lienzo aquí Esto es simplemente algo que está en medio de la pantalla. Debido a esto, en realidad podemos hacer clic en Pantalla de Relleno y seleccionar Deseado. Esto solo va a llegar a esta pequeña cosa de aquí porque solo queremos colocarla en la pantalla. No queremos todo el espacio a su alrededor. Seleccionar lo deseado aquí sería correcto. Ahora bien, si haces zoom uno por uno, puedes ver lo pequeño que es esto. Necesitamos aumentar la imagen y tal vez algo así como 80 por 80, solo mucho más grande. Podemos probarlo en juego más tarde para ver si eso es grande o pequeño. Así que ahora podemos guardar todo para éste. Voy a darle click de nuevo. Ve a Visibilidad, cámbialo a no hit Comprobable. Y esto es porque no queremos que el ratón interactúe con él. Eso fue todo para todo. Vamos a guardar esto. Vamos a cerrarlo, y pasemos al siguiente. 131. 10.02 Muestra la mira: Ahora agreguemos la cruz a la pantalla. Y también puedes intentar hacerlo tú mismo. Esto ya lo hemos hecho antes. Si no lo recuerdas, volvamos a hacer esto juntos. Vamos a los planos. Ahora vamos al controlador del reproductor. Aquí es donde tenemos toda nuestra interfaz de usuario en el gráfico de eventos. Puedes ir a tus widgets dentro de aquí. Hay que crear el valor de enumeración para ello. Si solo abres la carpeta de planos, en folder, y los widgets del juego dentro de aquí, al igual que antes Agreguemos un nuevo enumerador. Llamemos a esto una cruz. Adelante y ahorra. Volvamos al mando de reproducción aquí. Hagamos clic derecho en Crear Widgets aquí, seleccione Crear Widgets y seleccione Cruz. Haga clic derecho sobre él, promoverlo a una variable, y llamarlo cruz B. Adelante y agrégalo a la ventana gráfica. Agrega dos viewports, así como así. Bien, igual que antes, saquemos esta variable cruzada B. Vamos a hacer clic derecho y convertirlo en un get validado. Vamos a conectarlo aquí. Si es válido, podemos simplemente seguir adelante y agregarlo directamente a la ventana gráfica. Si no es válido. Sigamos adelante y creémoslo primero antes de agregarlo a la ventana gráfica Recuerda también agregarlo a, veamos aquí, el Hyde Widget. Si haces clic en Hyde Widgets y también lo puedes encontrar aquí. Si no lo tienes abierto, puedes tomar esta cruz y convertirlo correctamente en un get validado. Si está en la pantalla y queremos eliminarlo, podemos arrastrar y decir eliminar de los padres. Adelante y solo organízalo un poco más así así. Bien, vamos a guardar todo y ahora vamos a agregarlo a la pantalla. Vamos a la gráfica de la camioneta. Y creo que el mejor lugar para agregar esto es tal vez después de engendrar al jugador, escondes la selección del equipo y también mostrar el widget principal Sigamos adelante y mostremos la cruz también. Vamos a golpear desde aquí y decir mostrar ocultar widget y llamar a este evento que hicimos. Adelante, selecciona la cruz y selecciona Mostrar. Esto debería funcionar ahora compilar, vamos a jugar. Ahora vamos a jugar como el cliente por ejemplo, y seguir adelante y seleccionar Terrorista. Ya puedes ver que tengo el Crossa a la mitad de mi pantalla ahora Puedes elegir ajustar el tamaño de la misma si así lo deseas. Si solo vas a la UI y vas al Crosier y puedes dar click sobre él y tal vez cambiar el tamaño a algo así como 60, 60 si crees que esto es demasiado grande Y puedes intentar volver a jugarlo y ver cómo se ve. A lo mejor algo así es mucho mejor que antes. Bien, así es como agregas un crosier a la pantalla, y pasemos al siguiente 132. Añade propiedades de armas a la estructura: Antes de continuar, necesitamos agregar algunas propiedades a la estructura. Vamos ahora a la estructura aquí, y vamos a abrirla. Lo primero que queremos agregar a la información del arma es la velocidad de disparo. Eso nos hace falta. Lo siguiente que tenemos que añadir es el destello del hocico Este es el efecto visual que queremos jugar cada vez que disparemos el arma. El último es el efecto de sonido, bien para la velocidad de disparo. Cambiémoslo a una carroza. Esto es solo un valor numérico para el flash del hocico. Este es un sistema de partículas. Sistema de partículas, El efecto visual. Y sigue adelante y elige la referencia del objeto para el efecto de disparo. Solo usemos la señal de sonido. Estamos usando señales de sonido aquí para la velocidad de disparo, la mosca del hocico, el efecto de sonido Todo se ve bien. Sigamos adelante y lo guardemos. Estas variables que hemos creado aquí, las vamos a agregar más tarde a la tabla de datos, pero por ahora ya estamos terminados. Nosotros las hemos añadido. Ahora vamos a cerrarlo, guardar todo, y pasemos al siguiente. 133. 10.04 Dispara acción, estructura y entrada de arma: Ahora sigamos adelante y creamos una acción de entrada llamada Arma de Disparo. Y puedes volver a hacerlo tú mismo. Intenta hacer eso como práctica. Vamos al reproductor y abramos la carpeta de entrada. Hagamos clic derecho, vamos a entradas y agreguemos una acción de entrada. Vamos a llamarlo un arma de tiro. Realmente no necesitamos hacer nada dentro de aquí. Vamos a abrir el contexto de mapeo de entrada. Agreguemos otro mapeo. Debería estar aquí en la parte inferior. Y vamos a seleccionarlo y buscar arma de tiro. Adelante y selecciónelo. Y para la llave, sólo vamos a usar el botón izquierdo del ratón. En realidad no necesitamos nada aquí abajo. Ahora vamos a cerrarlo. Vamos a abrir la base de jugadores y dentro de aquí. Entonces aquí puedo mirar ahora mismo y buscar un arma de tiro. Y sigue adelante y selecciónala. Ahora también antes de que termine, veo aquí para el arma de equipar. De hecho, arreglemos esto. Ahora que me doy cuenta aquí para el arma equipar tenemos esta animación de recarga En realidad, solo agreguemos eso dentro de nuestra estructura. Si solo vas a la estructura y la abres y buscas o simplemente para hacer una nueva variable y la llamas equipar, algo así o equipar animación. También puedes escribir todo el asunto, algo así. Equipar animación Para esta, vamos a abrirla y busquemos cualquier montaje Vamos a utilizar una referencia de objeto de montaje de animación para la animación equip Sólo voy a dejar que esté aquí abajo . Vamos a guardar todo. Ahora vamos por aquí dentro del código. En lugar de hacerlo así, lo que podemos hacer ahora es que podemos eliminar esto, en realidad podemos eliminar este. Y podemos tomar este montaje para tocar directamente aquí. Y podemos eliminar esta también. Este podemos cambiar para equipar algo como esto o equipar animación. Y vamos a arrastrarlo más cerca. Ahora lo que podemos hacer es por aquí, donde quiera que lo hayamos usado, si no sabes dónde lo has usado, por cierto, aquí lo hemos usado, pero si quieres todas las referencias, puedes escribir click aquí y puedes buscar encontrar referencias y realmente puedes ver dónde las usamos. Vamos a hacer clic en el primero. Es sólo éste. Vamos a hacer clic en el siguiente. Está por aquí. Podemos seguir adelante y dar click en Alt y dar click aquí para desconectarlo. También voy a eliminar este nodo vial. En lugar de usar el tipo de arma, es ésta, el arma de equipo. Y ya tenemos la estructura descompuesta, así que en realidad podemos simplemente hacer clic en ella. Esconde todo aquí. Ocultar pines no conectados. Y sólo puedo dar click en esta animación de equipar. Y puedo tomar y arrastrar esto hasta aquí. Entonces ahora puedes ver que tenemos una animación personalizada para todas las armas. Entonces, dependiendo de lo que hayamos enchufado para cada arma, va a tomar esa animación y reproducirla Así que vamos a compilar y guardar todo. Tenemos que cambiarlo aquí también. Entonces si solo desconecto esto, borro este nodo vial. Y con esta estructura, nuevo, esconden pines desconectados Voy a mostrar la animación de equipar. Y voy a agregarlo por aquí también. Bien, así que ahora tenemos esto arreglado y reorganizado ahora para la animación equipar Lo que podemos hacer, podemos simplemente agregar esa información dentro de nuestra tabla de datos. Sigamos adelante y abramos la tabla de datos aquí. Voy a abrir la tabla de datos. También voy a abrir la estructura para poder ver qué variables he agregado aquí. Para las variables, déjame hacerlo un poco más grande e ir a este lugar después de la clase. Aquí agregamos la velocidad de disparo, también agregamos el flash de boca, y también agregamos un efecto de sonido de disparo Y agregamos la animación equipar. Nuevamente, recuerda escribirlos exactamente como el nombre que has escrito aquí. Ahora para la animación de quip, vamos a guardar todo. Vamos al navegador aquí y abramos los activos. Animación. Busca el montaje de animación aquí para la pistola. Hagamos clic derecho y copiemos tu referencia. Adelante dentro de la tabla de datos para la pistola, que es la última de aquí. Vayamos a un lado para la animación de quip. Sólo voy a pegar esta referencia. Voy a hacer click derecho para la referencia del rifle. Voy a pegarlo tanto para el AK como para los cuatro. Por cierto, puedes hacer lo mismo aquí. Y hagamos eso solo por el AK por la velocidad de disparo. Ahora tenemos que probar esto en el juego, no tengo idea. Solo escribamos 0.1 para el siguiente 10.1, para el tercero 10.1, no lo sé, tenemos que probar esto en el juego. No tenemos idea en estos momentos. En cuanto al destello del hocico, qué puedes hacer. Creo que tenemos algunos destellos de hocico dentro de esta carpeta donde importamos todas las armas del mercado Si solo buscas hocico, puedes ver estos destellos de hocico Voy a usar uno de ellos, por ejemplo. Se puede utilizar el. Destello de hocico de rifle de asalto. Voy a darle click derecho hacia arriba. Su referencia para el fusil para el AK. Puedo pegar uno para el M cuatro. Puedo pegar el mismo. Ahora puedes ver por cada arma, realidad puedes tener un destello de hocico para cada una de ellas. En realidad pueden ser únicos. Todos pueden tener efectos de sonido únicos, Todos pueden tener animaciones únicas, velocidades de disparo únicas, y así sucesivamente. Para que veas lo bonito que es este método. Es realmente dinámico y es muy fácil de cambiar. Si algún día deseas tener otro efecto de sonido, solo puedes entrar aquí y agregar otra referencia. Bien, para el de pistola, tenemos el flash del hocico de la pistola aquí tenemos el flash del hocico de la pistola y podemos hacer clic derecho en este Podemos volver a copiar la referencia. Y podemos pegarlo aquí. Ahora para los efectos de sonido de disparo, aún no lo hemos importado, así que hagamos eso mientras lo estamos haciendo aquí. Vamos a abrir la carpeta de materiales de costo. Volvamos al material de costo aquí. Lo que quiero que importes es el disparo AK 47. También quiero que importes los 41 disparos y también el disparo de pistola Esta una pistola de bala. Vayamos a la carpeta de audio como efectos. Déjame quitar la palabra de búsqueda y puedes pincharla y arrastrarla aquí. Y al igual que antes, puedes hacer click en todas ellas. Haga clic derecho, cree múltiples señales. Voy a abrirlos todos aquí arriba. Reducir el sonido aquí a 0.3 Creo que quiero reducirlos aún más porque son muy ruidosos y no quiero que se les permita dentro de este curso. 0.1 para todos ellos. Y vamos a tratar de jugarlo. Bien. Impresionante. Todo suena bien. Vamos a cerrarlos todos. Ahora, antes de copiar las referencias, sigamos adelante y renombrémoslas. Voy a renombrarle este a SC y quitar la Q aquí al final. También voy a cambiar eso por la pistola. Eliminemos la Q y escribamos C al principio. El último para el AK. Nuevamente, retire Q y A. C al principio. Ahora para las referencias, copiemos primero el AK 47. Voy a copiar la referencia. Y luego aquí en la tabla de datos para el AK 47 que es el primero, puedo pegarlo aquí para el M cuatro. Si lo podemos encontrar aquí. Este es el cuatro de aquí. Vamos a hacer clic derecho en copiar, hacer referencia, pegarlo. Y el último es el disparo de pistola. Copia la referencia y pegarla aquí también. Ahora sigamos adelante y en realidad es ahorro automático, así que sigamos adelante y descarguémoslo aquí y el CSV. Ahora por aquí voy a cambiarle el nombre. Copiando el mismo nombre aquí para la información del arma, eliminando el anterior. Voy renombrando la nueva y luego voy a volver a mis tablas de datos de blueprints y ahora solo coge esta nueva tabla de datos y la enchufaré aquí ¿Bien? Ahora toda esta información está dentro de aquí. Puedes seguir adelante y verificar para asegurarte todo se vea correcto y que todo esté bien. Podemos seguir adelante y salvarla todo. Ahora debería jugarlo automáticamente, porque aquí en la base de jugadores. Ahora aquí en la base de jugadores para el arma equipar, ahora tenemos esta animación de equipamiento. Y ahora lo está reproduciendo automáticamente. Porque lo hemos definido en la estructura qué es si solo lo jugamos ahora y vemos qué pasa si seleccionamos terrorista y salgo a recogerlo, deberías ver que en realidad lo está jugando. Y para la pistola también. Ahora en lugar de tomarlo del tipo de arma, toda la información que podamos hacer única, podemos agregar a esta estructura de arma. 134. Crea el temporizador de disparo de arma: Bien, entonces ahora sigamos adelante y abramos la base de jugadores. Y dentro de aquí bajemos al evento hicimos el arma de chute Para comenzar con eso, creemos el servidor un clic derecho y hagamos un evento personalizado. Y vamos a crear el arma de disparo servidor dentro de aquí. Vamos a crear un temporizador primero, ponerlo en réplicas en el servidor y confiable para disparar Vamos a crear un temporizador igual que el otro temporizador que creamos aquí para los pasos donde creamos el temporizador establecido por evento Es el mismo método que vamos a utilizar para disparar. Si bajamos aquí y arrastramos de aquí y decimos temporizador por evento y seguimos adelante y lo seleccionamos. Entonces desde aquí podemos arrastrar y hacer un nuevo evento personalizado. Podemos llamarlo Bucle de arma de tiro. Bien, la lógica del arma de tiro estará aquí abajo. Acuérdate de configurar el temporizador para que sea looping y luego tenemos que establecer una hora Ahora el tiempo que pongas aquí depende de qué tan rápido esté disparando tu arma. Para AK 47, por ejemplo, digamos que es 0.1 para una pistola. Va a ser para pistolas, si no quieres hacerlas disparar automáticamente, realmente no necesitamos este temporizador Pero para las armas automáticas, AK 47 y la información que necesitan para estar disparando a través de un temporizador. Porque va a hacer loop el código a esta velocidad ya que esta es la velocidad del arma. Recuerda en la estructura, si vuelvo y abro la estructura, hemos agregado esta variable de velocidad de disparo. De hecho, podemos usar eso para conectarnos aquí. Dependiendo de qué tan rápido esté disparando tu arma, este temporizador cambiará la hora. Dependiendo de eso necesitamos una referencia al arma, así que hagámoslo. Hagamos clic aquí y hagamos una nueva variable. Y elige la base de armas aquí, de los tipos variables. Adelante y selecciona eso. Llamemos a esto un arma. Tenemos que llamar a éste aquí arriba. Llámalo servidor disparar arma. Puedo deletrear eso así. Arma de chote de servidor. Ahora tenemos que definir el arma. Ahora si compilas, puedes ver que obtendrás una era. Y dice nuevo parámetro. A pesar de que dice arma aquí arriba, a veces esto sucede y solo hay que borrarlo y volverlo a hacer. O puede hacer clic en archivo y actualizar todas las notas. Y eso en realidad arreglará eso también. Bien, necesitamos una definición del arma ahora mismo. Nosotros en realidad, no tenemos una variable ni el arma porque lo único que tenemos es que tenemos el arma equipada, pero también eliminamos eso más adelante tenemos arma no equipada y tenemos mucho arma también Aquí arriba tenemos el arma saqueada. Sin embargo, también estamos liderando esta variable de arma saqueada por aquí Realmente no tenemos ninguna variable para el arma que se mantenga consistente. En realidad, solo vamos a crear uno. Vamos al arma equipada aquí. Cuando equipemos esta arma, voy a hacer clic con el botón derecho en la misma variable y promover esta a una variable. Llamemos a esta arma equipada. Esta es arma equipada. Estamos equipando el arma. Y ésta es el arma equipada. Y podemos usar esta variable. No eliminamos esto. Esto cambiará cada vez que se establezca esto. Recuerda dar click sobre esta variable y establecerla en replicada. Realmente no necesitamos notificar nada replicar. Simplemente significa que estamos enviando esta información al cliente. El cliente también sabe lo que es esta variable. Voy a seleccionarlo todo aquí y alejarlo. Y moviendo esta variable hacia aquí. Ahora tenemos esa variable desde la que podemos trabajar. Bien, ya podemos bajar aquí. Y podemos tomar esta arma equipada y enchufarla aquí. Ahora tenemos eso. Vamos a compilar ahora a partir de esta. Podemos arrastrar y decir que podemos obtener la variable de nombre y luego podemos obtener información de arma, obtenerla aquí. Y entonces alejemos esto y rompamos. Y ahora podemos usar la velocidad de disparo desde aquí y conectarla a aquí. ¿Bien? Así que haz clic en él y oculta todos los pines no conectados Bien, así que cada vez que presionemos nuestro ratón un botón, va a disparar y disparar este temporizador. Ahora también tenemos que parar este temporizador también en algún momento. Así que vamos a hacer clic derecho en este mango promovido a una variable y llamarlo mango de arma Disparo. Y podemos usar este asa para detener el temporizador, así que tenemos que saber cuándo estamos filmando y cuándo no estamos filmando. Cuando soltamos el ratón un botón, entonces se jugará este gatillo completo y ya no estamos disparando el arma. De hecho, agreguemos una bala aquí. Vamos a agregar uno. Y llamémoslo arma de tiro. Y sólo voy a agregar una B delante de ella para mantenerme consistente ya que es un lingote Y cambiarlo en un lingote como este. Bien. Ahora puedes arrastrar desde aquí y decir rama y conectarla si es verdad, Si arma disparada es verdad, queremos seguir adelante y disparar el arma. obstante, si ya no queremos disparar el arma, tomemos esta empuñadura y digamos que es válida. Si este asa es válida, solo asegúrate de que no estamos recibiendo ninguna caja, asegurándote de que sea válida. Y hagamos otra rama. Si es válido, siga adelante y tome este temporizador y diga claro e invalidar temporizador por asa. Vamos a detener este temporizador aquí arriba en este código. Ya podemos copiar y pegar esto. Y para el completo, cuando soltamos el ratón un botón, va a poner arma de disparo en falso. Cuando disparamos el arma, tiene que ser verdad cuando es falsa, cuando dejamos de disparar, va a preguntar, ¿ es válido este temporizador? Si es así, continúe y detenga el temporizador. Yo sólo voy a reorganizar las cosas un poco aquí. Ahora mismo lo tenemos hecho, sigamos adelante y probemos y veamos si todo está funcionando. Y sigamos adelante y pulsemos en jugar aquí para el cliente por ejemplo, voy a seleccionar terroristas. Sigamos adelante y recojamos algo. Vamos a recoger la información ahora mismo. Vamos a tratar de disparar. Ahora mismo, estoy tratando de disparar con mi ratón uno y no está pasando nada. Nada está imprimiendo a la pantalla aquí arriba. Déjame solo cancelarlo aquí tenemos una era. Esta era está diciendo acceso. Acceder a ninguno solo significa que está tratando de leer algo de esta variable de arma, esta variable de arma aquí. Sin embargo, access non significa que esta variable está vacía, no tiene nada de qué leer. Esto es realmente cierto porque solo hemos colocado el arma equipada dentro del evento equipar arma. Y éste sólo se establece cada vez que cambiamos de arma. Si voy a terroristas y recojo algo, tengo que cambiarme a otra arma y luego volver a cambiar antes de que esta variable se establezca ahora mismo, permítanme disparar ahora y ver qué pasa y no pasa nada. Esto en realidad se debe a que estamos ejecutando esto varias veces. Si desconecto este falso, puedes ver aquí si no paro el temporizador, puedes verlo con más claridad si solo recojo otra cosa otra vez. Ahora bien, si disparo el arma, ahora mismo estoy disparando. Y si solto mi mouse onene, cada vez que dejo ir mi mouse uno, en realidad es imprimiendo. Esto es lo que queremos. Queremos que se imprima cada vez que presionamos el mouse uno, no cuando lo dejamos ir. Esto se debe a que el temporizador aquí está funcionando muy rápido en el código. Cada vez que estoy sosteniendo mi mouse un botón y nunca tiene la oportunidad de reproducir realmente este código. Esta parte de aquí, en realidad necesitamos hacer solo una vez. Permítanme reconectar esto aquí de la verdad. Voy a hacer un nodo uno. Siempre que mantenga pulsado el mouse un botón, va a hacer este código una vez y luego podemos restablecer este código cuando queramos. Sólo voy a alejar todo esto. Y éste voy a hacer un nuevo evento personalizado. Y llamemos a éste y volvamos a disparar. ¿Cuándo podremos volver a disparar? Podemos volver a disparar. Siempre que dejemos de disparar aquí arriba, voy a llamar a esto, podemos disparar de nuevo. Y así, eso es lo único que teníamos que hacer. Ahora vamos a darle una oportunidad de nuevo. Vamos a compilar y vamos a probarlo. Déjame seleccionar terroristas. Déjame recoger las armas. Ahora vamos a solucionar este problema. Esto es de nuevo, un problema con las armas saqueadas aquí arriba. Así que en realidad voy a hacer una solución difícil en un rato. Sólo quiero ver si esto de aquí abajo funciona y podemos seguir adelante y arreglar esto. Entonces si cojo el arma y si mantengo pulsado el ratón un botón, ahora puedes ver que imprime en la pantalla correctamente. Y si dejo ir el ratón , deja de imprimir. Y en realidad hagamos eso también con el rifle. Entonces si solo como terrorista coge el rifle, cojo la pistola y si cambio de un lado a otro para que se establezca la variable, ahora mismo puedo sostener el mouse un botón y está disparando, y si lo dejo ir, ya no está disparando. Bien, entonces este código de aquí abajo en realidad está funcionando completamente. Ahora ya terminamos con esta, y también voy a eliminar esta cadena de impresión. Subamos aquí y arreglemos esto. Antes de que terminemos, déjame sacarlo de aquí. Sólo vamos a hacer una muy buena solución para esta. Nunca vuelve a boxear aquí abajo en las armas superpuestas, esto es lo que intentas conseguir. Tomemos éste y digamos, ¿es esto igual a la variable arma saqueada Estamos tratando de verificar si el, el que estamos saqueando actualmente está configurado la misma variable que la que dijimos anteriormente Si es así, si es cierto, queremos eliminar la variable antigua. Déjame mover esto por aquí. Queremos eliminar la antigua variable saqueada. Entonces después de eso queremos ejecutar la nueva variable. Con esto encerrado, básicamente estamos comprobando si lo que estamos saqueando ahora mismo es lo mismo que lo que dijimos antes Si es así, vamos a eliminar esta variable antes de establecer la nueva. Esto, asegúrate de que no pongamos el mismo dos veces. Si no es lo mismo, si no es el mismo artículo, estamos saqueando Sólo tienes que seguir adelante y ejecutar el código sin eliminar esto. Bien, voy a organizar esto más adelante, pero veamos si funciona. Antes de probarlo, conectemos esto de nuevo. Aquí estamos. Retirar el artículo del inventario. Sólo voy a pinchar y arrastrarlo de nuevo hasta aquí. Adelante y compile ahora intentemos dar click en Reproducir y seleccionar Terrorista y ver si funciona. Si entro aquí, puedes ver que realmente funciona. Bien, así es como creo que en realidad es un mejor método para hacerlo. Como ves, ya no se está molestando. Lo siguiente es, en realidad estoy notando que los íconos están equivocados. Vamos a depurar esto. Volvamos al widgit principal, vamos a abrirlo y vayamos a la gráfica Sólo estoy viendo lo que hay aquí arriba, por qué está haciendo esto. Para el rifle, tenemos el rifle de imagen, rifle de imagen. Eso es correcto aquí. Para el arma equipada. Para la pistola, estamos mostrando la pistola y ocultando el rifle. Y para el rifle, estamos mostrando el rifle y estamos escondiendo la pistola, la opacidad Esto parece correcto. Hay algo mal establecer el tipo de arma equipada. Volvamos al jugador. Debe haber algo que salga mal con el arma equipada. Para el arma equipada. Veamos aquí, esta es la interfaz de usuario de inventario de actualización. Estamos estableciendo el tipo de arma al tipo de arma para equipar el tipo de arma a equipar. Lo definimos aquí cuando presionamos el botón. Cuando presionamos en Primaria, estamos configurando el rifle, lo cual es correcto. Ese es nuestro rifle secundario, lo estamos poniendo a pistola. Eso también es correcto. Aquí no hay nada malo en realidad. Entonces algo debe estar mal cuando aludimos al arma, cuando aludimos al arma de aquí, saqueando arma, estamos estableciendo esto también, estamos estableciendo el tipo de arma que acabamos de aludir, que también es correcto En realidad no hay un error en ninguna parte de aquí. Sospecho que tal vez haya un error en la tabla de datos. Si abres la tabla de datos, echemos un vistazo, la tabla de datos escribe aquí. Entonces tenemos que buscar el tipo de armas. Si hemos escrito algo mal, Rifle, rifle y pistola. En realidad están todos correctos. Están establecidos a la correcta. Bien. Nada está realmente mal. No veo ningún error. Quizás ahora mismo, el tema es que estamos configurando correctamente el tipo de arma equipada. Sin embargo, también estamos ejecutando este código. Y esta parte del código, aún no se da cuenta que se ha establecido a este valor. Si solo hacemos un retraso y le damos la oportunidad de establecer esto, solo para echar un vistazo y ver si esto funciona, porque realmente no me gusta tener un retraso aquí. Pero vamos a echar un vistazo y ver si eso realmente soluciona el problema. Si saqueo las armas, hago clic en una. Si hago clic en dos, ahora eso funciona también. Entonces puedes ver que realmente funciona. Ahora si hago clic en 1.2 ahora los iconos están funcionando. El problema aquí que tenemos es que esto se está configurando correctamente, el tipo de arma. Sin embargo, también estás ejecutando este código muy rápido. Entonces estás ejecutando este código antes de que esto haya tenido la oportunidad de cambiar realmente. Bien, para solucionar este problema, podemos intentar agregar un retraso. Sin embargo, en este código, hagamos eso dentro de nuestro principal de WB. Dentro de la función aquí que creamos anteriormente. Aquí es cuando fijamos la opacidad para el rifle. Antes de establecer la opacidad, puedes intentar agregar un delay y el delay , por favor empieza por hacerlo muy pequeño, 0.01 y compilar. Y vamos a hacer clic en play. Y si eso funciona entonces en realidad es realmente bueno. Ahora puedo recoger todo y ver que la pistola ya está recogida. Y sólo voy a maximizar mi punto de vista. Ahora se recoge la pistola. Puedo dar click en 14. Da click en dos para la pistola, ves a veces obtenemos un dólar. Me cambio a mi rifle, pongámoslo en 0.03 En su lugar, compilar. Haga clic en jugar. Vamos a intentarlo de nuevo. Vamos a recoger todo. Haga clic en rifle, pistola. Rifle, pistola. Ahora todo parece estar funcionando también. Bien, entonces eso funciona. Entonces 0.03 soluciona el problema como de costumbre. Y esa sería una solución muy, muy agradable y fácil. Bien, así que sé que ha sido muy confuso aquí, pero en verdad tuvimos que hacer esto porque esto estaba saliendo todo el tiempo Entonces, si el arma equipada alguna vez da pavos aquí abajo, realidad no se está desconectando en este momento Así que sólo voy a dejar que sea. No obstante, si alguna vez se da un puñetazo, como aquí arriba, puedes hacer el mismo método comprobando si el arma equipada aquí. Siempre se puede comprobar si es la misma que la anterior que hemos establecido. Entonces puedes eliminar la variable y luego puedes establecer la nueva. Entonces, en vez de hacerlo en el viejo método, sin embargo, no creo que esto vaya a fallar porque aquí arriba estamos comprobando si ya llevamos un rifle, pero en el futuro podríamos tener un bicho. No tengo idea ahora mismo. Tenemos que desarrollarnos y ver. Pero así es como es en el desarrollo de juegos. Obtienes errores durante la programación y tienes que arreglarlos. Lo bueno para un programador es solo saber cómo solucionar esos problemas. Y aquí ven acabamos de agregar un matón y solo comprobando si esto era lo mismo o no, y solucionamos ese problema de esta manera Siempre verás cuando desarrolles juegos, incluso en estudios grandes. Pero solo hay que saber cómo solucionarlos y cómo superar el problema. Vamos a probarlo ahora. Vamos a hacer clic en play justo antes terminar esto para ver si todo está funcionando. Y si selecciono al terrorista, recojo todo aquí y puedo cambiar entre ellos. Si dejo caer los cuatro, solo estoy intentando el drop ahora mismo, el drop, puedes ver que también se está disparando Entonces tenemos que añadir aquí un pequeño retraso porque no se está dando cuenta de que hemos eliminado esto. Si dijera el retraso a 0.05 Y hago click en play. Y da clic en jugar aquí. Y vamos a recoger un arma. Vamos a dejarlo caer. Vamos a recogerlo, dejarlo caer, dejarlo caer. Mira, ahora está funcionando perfectamente y puedo cambiar entre esos. Solo estoy tratando de probar el juego para ver si falla. Ahora parece que funciona bien. Teníamos que tener este pequeño retraso imperceptible porque de lo contrario el programa no sabía lo que estábamos haciendo aquí Eso es bueno saber tener eso aquí también. Eso soluciona todos los problemas que tuvimos con esta variable siendo eliminada sin que queramos que la borre antes de que ejecutara el código. Entonces todo está funcionando ahora. Voy a reorganizar esto. Voy a ponerlo dentro de aquí y pasemos al siguiente. 135. 10.06 seguimiento de línea por canal: En esta lección, vamos a crear una función línea por canal. De esta manera vamos a disparar la bala desde el arma. adelante y hagamos clic en el jugador y abramos la base de jugadores dentro de aquí. Bajemos al código que escribimos antes. En arma, aquí es donde queremos agregar el trazo de línea por canal. Pero antes de eso tenemos un pequeño dólar con el arma equipada cuando cada vez que saqueo un arma, si hago clic terrorista, mucho algo. Si disparo ahora mismo, no me da un dólar porque cambio el arma. Sin embargo, si no cambio el arma, así que si directamente solo cojo esta y empiezo a disparar, me va a dar un error aquí, porque solo estamos configurando el arma equipada cuando sea, en realidad estamos cambiando con las teclas de nuestro teclado. Copiemos esta arma equipada. Y subamos donde sea que carguemos el arma por aquí en el arma saqueada Y vamos a poner el arma equipada cada vez que pasemos por este código aquí, cada vez que estemos desarmados, vamos a colocar el arma equipada aquí Después de este retraso aquí. Sigamos adelante y péguelo. Y vamos a conectarlo. Y también voy a alejar todo esto para que pueda ver aquí. Y voy a conectarlo aquí. Y luego arrastra del arma saqueada a ésta. Nuevamente, puedes sacar notas aquí, hacer algunas y organizarlas. Entonces eso debería estar funcionando bien ahora. Ahora también estamos poniendo el arma equipada cada vez que estamos saqueando aquí Bien. Así que voy a alejar esto también. Incrementa el tamaño del comentario, algo así. Bien, entonces eso ahora está arreglado. Lo siguiente que quiero hacer es aquí en las armas. Entonces vayamos a las armas y abramos la base de armas. Ahora vamos a esconder estas esferas. En realidad ya no los necesitamos. Voy a hacer clic en la esfera de colisión y seleccionarla de nuevo. Aquí, escondido en el juego. Y eso lo voy a hacer en la base de armas. Entonces hace eso para todos ellos. Si guardo ahora, y luego trato de jugar el juego solo para comprobar si eso está arreglado. Y se puede ver aquí que ya está arreglado. ¿Bien? Así que ya no necesitamos estas esferas, ¿de acuerdo? Así que sigamos adelante y hagamos que la línea trace por canal. Así que bajemos al código que escribimos antes aquí abajo. Empecemos a hacerlo desde aquí. Siempre que hagamos un bucle en el código, arrastremos desde aquí y escribamos trazas de líneas por canal. Seleccionemos esta función. Ahora bien, parece complejo, pero en realidad es muy, muy fácil de entender el trazado de línea por canal. Necesita una ubicación de inicio y necesita una ubicación final. La ubicación de inicio está donde quiera que estés en este momento, y la ubicación final es donde esté apuntando en este momento. Con micros, esto es lo que tenemos que decirle. La forma en que obtenemos esta información es si escribes click y primero tenemos que acceder al controlador del reproductor. Ahora intenta hacerlo tú mismo. Si recuerdas cómo acceder al controlador del reproductor, podemos hacerlo juntos. Ahora puedes escribir get controller, puedes obtener el controlador de esta jugada al igual que antes, tenemos este get player controller reference de la cara. Ahora puedes arrastrar de esto, si solo escribes cámara, queremos conseguir algo llamado administrador de cámara. Si solo te desplazas por todo esto, trata de leer lo que tenemos. Éste, consigue al jugador encargado de la cámara. Con esta, podemos llegar precisamente a donde apuntamos con nuestra venta cruzada. Conseguir este administrador de cámara, vamos a arrastrar de esto y decir obtener la ubicación de la cámara. Esta es nuestra posición de inicio. La posición de inicio ahora mismo es donde quiera que esté ahora mismo, aquí, de pie aquí como el jugador en medio de mi pantalla. Ahora tenemos que decirle que la ubicación final es donde quiera que esté apuntando con microsa La forma de hacer esto primero es arrastremos de esto y digamos get at forward vector. Así que estamos consiguiendo la dirección de avance para este administrador de cámara. Entonces estamos tomando esto y multiplicándolo. La razón por la que nos estamos multiplicando, vamos justo primero aquí y cambiemos este pin No necesitamos que sea un vector. Vamos a cambiarlo en una carroza. Multipliquémoslo con algo realmente grande. Por ejemplo, 20 mil algo así. La razón por la que hacemos esto es que estamos obteniendo el vector hacia adelante, así la dirección hacia adelante de esta cámara. Y entonces estamos multiplicando esto por mucho porque queremos que llegue a la distancia allá en la pared Lo estamos multiplicando. Entonces tenemos que decir más. Aquí estamos agregando la ubicación de inicio. Estamos agregando la ubicación de inicio junto con esta línea para la ubicación final. De esa manera conseguimos la ubicación final. Te imaginas aquí estoy de pie como jugador y estamos consiguiendo la ubicación de inicio. Aquí es donde estoy parado ahora mismo. Y básicamente estamos creando una línea y la estamos agregando con el inicio. Y eso hará que esté ahí al final donde estoy apuntando ahora mismo. Ahora es muy confuso entender como principiante o la primera vez que haces esto. Pero trata de pensar en cómo tiene sentido esto. Ahora, cuando sumemos esto juntos, agreguémoslo aquí hasta el final. Y eso debería hacerlo. Así que recuerda también conectar este pin de ejecución. Y seguir adelante y hacer notas de reencaminamiento. Bien, ahora esto debería funcionar por aquí. Ahora tenemos algo llamado hits, y se puede ver que es un alfiler azul. Y si te has dado cuenta antes, hemos usado alfileres azules antes porque información de nuestra arma es en realidad también un pin azul. Un alfiler azul significa que esta es una estructura con estructuras como antes, podemos arrastrar y decir romper, podemos romper estructuras, tienes toda esta información que puedes usar. Puedes tomar esta línea trazada por canal. Así que puedes tomar la línea que has hecho aquí y puedes obtener la ubicación en donde realmente llegaste a esta línea. Puedes conseguir al actor que golpeaste con esta línea traza por canal. Se puede obtener el tiempo, la distancia, y un montón de cosas aquí, realidad no necesitamos mucho en este momento. Lo único antes de hacer esto es que queremos arrastrar de este lingote y hacer una rama Porque no queremos continuar con nuestro código si esto no es válido. Siempre que realmente golpeamos algo, queremos seguir adelante y continuar con el código. Siempre es bueno tener esto más a veces obtendrás una era. Lo siguiente que tenemos este golpe de bloqueo. Siempre que realmente golpeamos algo con esta línea, queremos continuar con el código también, hacer una rama aquí también. Además, queremos asegurarnos de que es el jugador al que estamos pegando para hacer algún daño. Porque no queremos golpear a ningún actor al azar con hit act igual que antes. Esto ya lo hemos hecho antes. Decir actor tiene etiqueta entonces se puede escribir jugador. Recuerda que agregamos el tag player. Si no te acuerdas, puedes hacer click en, creo que son los valores predeterminados de clase Y si buscas etiqueta, recuerda que agregamos el tag player al actor. El actor tiene tag player. Tenemos eso para todos los jugadores porque lo hemos agregado a la base de jugadores. Ahora podemos arrastrar de esto y decir pull si estamos pegando algo. Entonces tenemos un golpe de bloqueo, el actor que golpeamos es un jugador. Entonces queremos seguir adelante y aplicar algunos daños. Bien, con esta. Primero podemos simplemente escribir una cadena de impresión para ver si realmente está funcionando por aquí. Para la depuración, en realidad puedes cambiar esto a persistente, porque entonces puedes ver la línea que estás filmando. Y se puede ver si en realidad está haciendo algo mal o algo correcto. También para que los actores ignoren. No quieres dispararte aquí. Ignorar yo ya está encendido, pero tengo algunos como a veces cuando me desarrollo en mi propio tiempo, me gusta arrastrar de esto y decir make. Ahora puedes hacer una matriz y luego puedes arrastrar desde aquí y decir yo mismo. Ahora en realidad va a ignorar a este jugador de aquí, actores para ignorarse a sí mismos. Y ya está haciendo eso aquí. A lo mejor esto es innecesario, pero sólo me gusta tenerlo aquí. Seguridad. Si quieres bloquear a otros actores. Para que no ignores a otros actores. Así que no puedes pegarles. Siempre puedes hacer clic en el más y agregar otro actor aquí. Pero por ahora, permítanme hacer clic derecho aquí y eliminar este elemento de matriz. Bien, eso fue todo para el rastreo de la línea. Y vamos a compilar. Y permítanme simplemente dar click en play y ver qué pasa si juego como servidor y selecciono terroristas. Y selecciono, por ejemplo, un arma aquí y disparo. Y nada está pasando ahora mismo. Déjame dejarlo aquí y déjame echar un vistazo a por qué esto no está jugando. En realidad está jugando, pero está jugando. Un poco retrasado. Si solo lo intento de nuevo y solo sostengo mi mouse, en realidad está jugando. Se puede ver que ahora está creando las líneas. Dondequiera que dispare, en realidad está disparando a esa distancia por allá. Lo que sea que esté apuntando, pero está disparando a una respuesta tardía. Y la razón por la que hace esto es que necesitamos una toma inicial aquí. Porque cada vez que estamos filmando, recuerda el tiempo que fijaste aquí para un temporizador, en realidad va a tomar ese tiempo antes de que lo reproduzca. Por ejemplo, si, digamos que escribí tres aquí para mi temporizador y compilo y hago clic en reproducir, ahí van 3 segundos antes de que realmente se dispara. Ahora estoy sosteniendo mi ratón y se puede ver después de 3 segundos que va a disparar el tiro aquí, el tiempo que se le ha fijado aquí. En realidad va a esperar ese tiempo antes de que comience a circular. Para arreglar esto, necesitamos un evento inicial, como shooting, que ejecutará este código una vez antes de que ejecutemos el código aquí. Y así es como solucionamos este problema. Hagamos algo llamado disparo de arma inicial. Permítanme arrastrar de esto y hacer un evento personalizado. Probablemente necesito alejar todo esto así que tenemos algo de espacio para trabajar con este evento aquí. Sólo voy a llamarlo disparos iniciales de armas. Este solo se está ejecutando una vez para asegurarse de que esto se está ejecutando antes de que este temporizador por evento se ejecute aquí después de la vez. Esto sólo se va a ejecutar una vez. Entonces podemos decir disparo de arma inicial. Entonces va a filmar solo una vez antes de que realmente empecemos a filmar. Por lo que no tenemos ningún retraso en el tiroteo. Vamos a hacer clic en jugar ahora. Y si recojo algo y disparo, se puede ver que dispara. Dispara de inmediato. Ya no tenemos que esperar nada. Está funcionando. Y vamos a cerrar esto. Creo que ahora mismo tenemos un error. Si no tengo nada y trato de disparar, ya ves que puedo filmar algo y también me sale un error. Si hago clic en él, dice que hay una flecha con esta. Para ello, aquí podemos hacer algo. Siempre que disparemos el arma, podemos asegurarnos de que en realidad tenemos un arma. La forma en que hacemos esto, podemos hacer clic derecho aquí y convertirlo un get validado y seguir adelante y hacer algo como esto. También podemos hacer otra cosa. Mantengamos esto y tomemos este tipo de arma equipada y justo de esto y digamos si esto no es igual al estado desarmado, podemos seguir adelante y disparar porque realmente no tiene sentido disparar cada vez que estemos desarmados porque no tenemos Vamos a conectar esto. Más adelante probablemente lo haremos si no tenemos MO. Cuando agregamos MO, si no tenemos MO, tampoco queremos filmar. Vamos a agregar eso más adelante cada vez que agreguemos el MO al juego. Bien, ahora mismo estamos disparando el arma. No obstante, no estamos pegando al jugador. Si ves aquí, si hago clic en jugar, me llevo aquí al terrorista, me llevo a mi otro cliente y selecciono terroristas como tomar un arma aquí, déjame tomarla como servidor. Si disparo como servidor en el jugador, está golpeando al jugador. Sin embargo, no está pasando nada. Se ve lo que sea que le pegué a algo, la línea detrás de él se vuelve verde. Y eso quiere decir que sabe que le pega a algo. No obstante, le dijimos que solo queremos reaccionar siempre que sea el jugador al que estamos pegando. Siempre que no es el jugador, en realidad no va a hacer nada, pero sabe que le pega a algo. No obstante, para el jugador, en realidad no es golpear nada. Sigamos adelante y ajustemos los ajustes de colisión para el jugador en la siguiente lección. 136. 10.07 Ajusta la configuración de colisión de jugadores: Bien, bienvenido de nuevo. Sigamos adelante y ajustemos la configuración del jugador aquí. Configuración de colisión. Así que déjame hacer clic en la Malla. Y déjame bajar por los ajustes de colisión. Siempre que estamos pegando algo, necesitamos generar un evento hit. Voy a habilitar el evento genera hit porque necesitamos que también cuando hacemos daño y salud y cosas así, necesitamos generar un evento hit. Y para la colisión aquí, si echas un vistazo al trazado de la línea, estamos usando el canal de visibilidad. Ahora para las trazas de línea, puedes cambiar esto. Si vas a la configuración del proyecto ahora mismo, no vamos a cambiarlo porque realmente no tenemos ningún problema con esto. Pero en el futuro si tenemos un problema y necesitamos cambiarlo, vamos a cambiarlo. Pero por ahora, mantengámoslo como visibilidad. Pero solo voy a mostrarte dónde puedes cambiarlo por si acaso en la configuración del proyecto. Si encuentras una colisión, si solo me desplazo y tenemos algo llamado colisión, tenemos algo llamado canales de rastreo. Este es un trazo de línea. De hecho, puede agregar un nuevo canal al rastreo de línea y luego puede seleccionar ese canal que haya realizado. En realidad también puedes usar un canal personalizado para esto, Pero por ahora usemos el canal de visibilidad. Y si haces clic en la malla aquí para los presets de colisión, voy a cambiarlo a custom Entonces vamos a, para la visibilidad, vamos a decir bloque porque estamos usando el canal de visibilidad. Ahora vamos a mantenerlo así. Si tenemos algún problema más adelante podemos cambiarlo. Vamos a compilar todo. momento, en realidad estamos usando como una colisión precisa porque no estamos usando este cápsula de componente de colisión, en realidad estamos usando esta malla para hacer los eventos de impacto. Ahora hagamos click en play y veamos si dice hola cuando le disparo al jugador. Si tomo esta arma aquí como la otra, voy a seleccionar terroristas. Voy a recoger esta. Ahora este es el cliente. Voy a dispararle al jugador. Ahora mismo, no está pasando nada. Déjame tratar de hacerlo en el, en el servidor. Si golpeo en el servidor, puedes ver que dice hola. No obstante, en el cliente ahora mismo, no está diciendo nada para arreglar esto. Dado que esto es multijugador, el cliente no sabe realmente cuál es la ubicación de inicio y la ubicación final. Porque puedes ver aquí, el servidor sabe lo que es. No obstante, para el cliente de aquí, si solo intento volver a jugar y mostrarte antes de arreglarlo, si recojo algo y para el cliente terrorista como cliente, si solo, así que digamos que disparo aquí en esta pared. La carrera de línea es por automático. Realmente no se va a mostrar en el cliente porque recuerda que la carrera de línea que estás haciendo es jugar en el servidor. La línea persistente aquí, la línea de depuración nunca se mostrará en el cliente. Lo cual es normal porque estás ejecutando esto en el servidor. Cuando echamos un vistazo al servidor también aquí se puede ver que le disparé a esta pared. No obstante, para el cliente, en realidad parece que disparaste por ahí. Realmente no tiene ningún sentido, sin embargo, desde el servidor. Y yo tiro por aquí, debería correctamente. Se puede ver aquí, le pegué aquí. No obstante, para el cliente, ni siquiera está por ahí. La manera de arreglar esto. Ahora bien esto es multijugador, así que en realidad no lo sabe. De hecho, tenemos que arrastrar esto más al evento. Vamos a golpear este inicio. Tengamos el final aquí también. Tenemos que mover este código. Voy a desconectar este código aquí. Y alejemos esto. Tenemos que trasladar esto de nuevo al principio aquí. La razón por la que hacemos esto es cuando también ejecutamos este código en el cliente. Porque en realidad no estamos estableciendo nada. Eso está bien. Si no estamos configurando nada, está bien jugarlo en el cliente. Lo estamos ejecutando en el cliente también sabe cuál la ubicación de inicio y fin y así es como arreglas este código. Sigamos adelante y enchufemos esos de aquí. Ahora, déjame alejarme de esto. Déjeme organizar esto. Permítanme acercar todo esto a éste. Ahora es sólo este código de aquí. Permítanme crear algunos nodos de reenrutamiento para estos vectores. ¿Bien? Algo como esto. Ahora que se está ocupando, déjame alejarme , déjame tomar este código y moverlo hacia abajo. Tenemos algo de espacio ahí arriba. Ahora para este código, después de que esto sea válido, hemos averiguado que esta arma equipada es válida. Entonces podemos seguir adelante y enchufar este código. Sigamos adelante y enchufarlo. Y vamos a alejar esto otra vez. Vamos a tapar el inicio a esto y el final a éste. También puedes simplemente mover esto hacia abajo para que veas lo que está pasando. Y puedes seguir adelante y conectar esto si quieres. Simplemente puedes llevarte todo esto. Puede hacer clic derecho y contraer esto a una función. Y puedes llamar a esta función, o simplemente puedes hacerla más descriptiva. Obtener una línea de bala localizaciones de rastreo, algo como esto. Ya que estás obteniendo información y no configurando nada, puedes seguir adelante y hacer clic en Pure porque realmente no necesitas ejecutarlo a través de esto. Y puedes hacer doble clic en él. Adelante y solo organice esta función también. Asegúrate de que todo esté conectado. Y eso debería ser bueno para ir algo así. Ya tienes esto hecho. Ahora volvamos a la gráfica y déjame acercar todo un poco más. Se puede ver que es mucho más limpio simplemente convertirlo en una función. Y cambiemos el nombre de esas dos balas a la ubicación de inicio y a esta ubicación de fin de bala. Ahora que tenemos esto hecho, podemos compilar para éste. Realmente no necesitamos hacer nada porque estamos deteniendo este tiroteo. Realmente no necesitamos esto. Esto es lo importante aquí. Bien, tenemos esto enchufado, y creo que esto va a funcionar Ahora déjame subir esto aquí. Y vamos a hacer clic en Reproducir. Vamos a probarlo. Ahora vamos a probarlo como el cliente. Y déjame recoger algo. Déjame probarlo como servidor también. Recogiendo el, como el servidor. Ahora puedo dispararle a este jugador. Y dice hola así como el cliente. Debería decir hola si le disparo al jugador y si le disparo al jugador, en realidad es decir hola. También se puede ver en el servidor, la línea en realidad está dibujando correctamente. De hecho, también me cerró. Digamos en el servidor, estoy filmando aquí como cliente también. Estoy disparando aquí. Ya ves que en realidad está disparando con precisión. Ahora esto está arreglado. sabe dónde estoy disparando en realidad. Ahora si le pego al jugador, se puede ver que dice hola. Como puedes ver lo preciso que es, si le pego al jugador aquí, dice nada porque no estoy golpeando la malla del jugador. Si le pego al jugador, el ejemplo, déjame dispararle al jugador. Se puede ver que dice hola. Déjame dispararle al jugador. Por ejemplo, por aquí dice hola. Si le disparo al jugador aquí, dice hola. Yo le disparo al jugador aquí arriba. No dice nada. También es muy bueno. Éste le está pegando al jugador de aquí arriba porque la malla en sí no es realmente buena. Se inclina, pero se puede ver por ejemplo, si juego como el antiterrorista, así es como están las mallas ahora mismo Si solo juego como el antiterrorista y maximizo esto, debería decir hola como servidor. Si tiro aquí, puedes ver hola. El trazo de línea no se muestra porque estamos en el cliente. Recuerden, si acabo de disparar aquí, por ejemplo, se puede ver saludando. Si tiro por aquí, dice hola. Se puede ver que esta es más precisa, esta malla aquí, en comparación con la otra. También es cómo haces la malla y qué tan precisa es y así sucesivamente. Para que veas la diferencia. Puedo disparar aquí y dice hola, porque le estoy disparando. No obstante, si me tiro aquí, no es decir hola. También es muy preciso con esta colisión. 137. 10.08 Crea los sockets de flash de bozal: Antes de que podamos agregar el efecto visual y los efectos de sonido para el disparo, necesitamos agregar un socket para el efecto visual del hocico. Sigamos adelante y hagamos eso. Vamos al arma que estamos usando. Necesito encontrar el esqueleto para el arma. La forma más fácil de encontrarlo, en lugar de solo mirar las carpetas del mercado. Se pueden abrir las armas, abrir la K para el AK. Da click en el arma y da click en este pequeño icono. Esto te llevará automáticamente en el navegador de contenido a esa arma. Ahora adelante y abre el esqueleto para el arma. Y dentro de aquí, igual que antes, necesitamos agregar un socket. Ya veo que aquí hay un socket. Déjame cambiarle el nombre. Voy a renombrarlo y llamarlo como prefijo. Y hocico, podemos simplemente llamarlo hocico. Eso está bien. O podemos llamarlo, simplemente llamarlo hocico Y vayamos a los otros y hagamos eso también. Déjame ir otra vez al arma, abre los cuatro, abre la pistola, da clic en el clic sobre el arma, da clic en este pequeño icono, te llevará ahí. Y luego abre el esqueleto. Y para el esqueleto aquí, para el flash de hocico, ahora podemos hacer clic derecho y decir agregarle calcetín para éste otra vez, llamarlo hocico Simplemente llámalo igual en todos ellos. Hocico para éste también. No estoy seguro de si necesitamos rotarlo. Éste se puede ver X es el eje delantero para éste. Creo que hay que rotarlo de esta manera. Sólo intentemos hacer eso. Déjame darle click de nuevo. Y voy a chasquear aquí para la rotación. Y voy a rotar 90 grados. De esta manera la X en realidad está apuntando hacia adelante. Bien, vamos a guardar esto y pasemos a la pistola. Ahora abramos el editor completo de planos. Ve a arma y da click en este pequeño icono para la pistola. Ahora para la pistola, abre el esqueleto aquí para el destello del hocico En realidad tiene uno aquí también. Mo expulsa, tiene el flash del hocico. Este pack aquí es más avanzado que antes, pero para este, permítanme simplemente cambiarle el nombre de nuevo. Déjame llamarlo hocico. Ahora tenemos un socket para todos ellos, y lo vamos a usar dentro de nuestro personaje para adjuntar efectos visuales al arma. 138. 10.09 Dispara VFX y SFX: Bien, volvamos al jugador y volvamos a abrir la base de jugadores. Y ahora estamos listos para agregar los efectos visuales y los efectos de sonido dentro de aquí. Dentro de aquí, lo que tenemos que hacer, tenemos que correr a través de una multidifusión Nuevamente, debido a que necesitamos mostrar los efectos visuales a todos así como los efectos de sonido, necesitamos correr a través de una multidifusión Primero, vamos a crear la multidifusión. Hagamos clic derecho y digamos Evento personalizado. Para este evento personalizado, llamémoslo arma de multidifusión. Ahora para esta, vamos a ponérsela. No se ejecuta en servidor, sino multicast y confiable. Para ello, lo sencillo que queremos hacer es engendrar emisor en ubicación O en realidad vamos a hacer engendrar emisor conectado porque vamos a conectarlo al socket Adelante y vio el emisor adjunto y después tenemos que seleccionar de qué emisor estamos hablando? Ese. Si vamos a la estructura y abrimos la estructura del arma, tenemos este sistema de partículas flash de hocico que agregamos anteriormente a nuestra tabla de datos Podemos seguir adelante y tan solo enchufar esto. Vamos a usar eso. Voy a cambiar el nombre de esto a Shooting Visual Effects o simplemente VFX Sólo voy a llamarlo VFX. Y el adjuntar al componente, en realidad voy a enchufarlo aquí también. Voy a mover este hasta arriba. Y tenemos que adjuntarlo al arma. Voy a llamarlo arma ahora, este es el hueso al que necesitamos sujetarlo. El hueso que llamamos hocico. Solo escribe el nombre aquí, Hocico. El nombre del socket que creaste. Entonces la ubicación de este efecto que necesitamos jugar ahora para este emisor Si usamos el emisor de engendro en la ubicación, entonces realmente necesitábamos la ubicación para esto Sin embargo, esta es solo la ubicación dentro del zócalo, y eso solo debería ser 000. Eso está bien. Ahora también necesitamos reproducir un efecto de sonido, Arrastrar desde aquí y decir reproducir sonido en el lugar. Ahora para este efecto de sonido, recuerda también en la estructura que hicimos este efecto de sonido de disparo. Solo tenemos que enchufarlo aquí y lo agregaremos más adelante. Llamemos a este único efecto de sonido, la ubicación del efecto de sonido, ese que necesitamos. Vamos a arrastrar esto hasta aquí. Sólo podemos decir ubicación. Eso está bien. Vamos a compilar y guardemos todo. Tratemos de jugar esto aquí arriba. Antes de hacer la carrera de línea, intentemos jugar el efecto. Si arrastro esto lejos, yo llamo a esta canaleta de multidifusión arma por aquí Arma de chute mc. Esto necesita ser enchufado a él así como a éste. Entonces ambos de esos eventos. Ahora necesitamos enchufar toda esta información. El arma que estamos usando es esta arma de aquí. Si arrastro de esto y realmente necesito obtener la variable de arma, si solo busco la variable de arma y obtengo esa malla estática o malla esquelética en lugar de que estamos usando aquí, podemos hacer clic y arrastrar esto hacia aquí Y ahora eso está enchufado. Ahora el efecto visual depende de lo que tengamos dentro de esta estructura. Simplemente puedes usarlo aquí ya llamamos a la estructura. Puede hacer clic en él y hacer clic en el pin para el flash del hocico Y puedes enchufarlo y también hacer clic en el pin para el efecto de sonido de disparo. Y puedes enchufar eso también. Ahora para la ubicación, solo necesitamos obtener la ubicación del socket para el flash del hocico, ahí es donde queremos reproducir el efecto de sonido También puedes simplemente obtener la ubicación del personaje o actuar como una ubicación. Nadie se dará cuenta como se puede decir simplemente obtener ubicación del actor y simplemente usar eso. Y tocará donde quiera que esté tu actor o personaje y nadie se dará cuenta realmente de que no viene del arma. No obstante, si quieres que venga precisamente de la pistola, puedes simplemente tomar esto y decir obtener ubicación de socket. Puedes hacer eso y puedes escribir el bozal del zócalo y puedes tomar eso y enchufarlo aquí Eso también es más preciso para éste. Bien, así que creé nodos Smyroute, así que esto es un poco más organizado Si compila y guardo todo, eso debería hacer que funcione. Ahora este inicio y fin, también podemos cambiar el nombre por ello. Entonces, en lugar de hacer eso de la lección anterior, ubicación de bala, solo voy a llamarlo Bullet start location. Y bala la ubicación, es más como que se ve mejor y podemos entenderlo más fácilmente. Ahora hagamos click en play y veamos si esto va a funcionar. Recuerda que si aún no has establecido información de tu tabla de datos, eso lo hicimos en las lecciones anteriores. Si no lo has configurado, tienes que poner el hocico aquí adentro, fuera de la tabla de datos Sabe qué efecto de sonido tocar y también qué F tocar también. Bien, vamos a guardar todo y vamos a cerrarlo. Y sigamos adelante y pulsemos en jugar aquí como el servidor, voy a seleccionar Terrorista. Selecciona el arma. Ahora puedes seguir adelante y disparar. Deberías escuchar el efecto de sonido. También se puede ver que el flash del hocico se está reproduciendo también. Bien. Impresionante como el cliente. Intentemos eso también. Déjame seguir adelante y recoger algo. Vamos a recoger la K. Si sigo adelante y disparo, eso también está funcionando. Ambos están funcionando. Tanto el cliente como el servidor. Si sólo voy delante de él, tú la juegas. Puedo ver el destello del hocico en ambos. Si hago eso como cliente, solo para asegurarme de que está funcionando también, voy delante de aquí y le disparo, y eso también está funcionando. Bien, increíble. Entonces tanto de eso funciona, y ahora estamos acabados con el código. Entonces, si vuelves a la base de jugadores, simplemente creamos esta multidifusión y la agregamos al servidor Recuerde, una multidifusión solo puede ejecutarse a través de un evento de servidor Lo ejecutamos a través del evento del servidor. Conectamos toda esta información y ahora la tenemos funcionando Así que adelante y guarda todo, y sigamos adelante. 139. 10.10 Previene el rodaje durante Equip Anim: El problema ahora mismo que tenemos es que el jugador puede disparar mientras equipa el arma Si equipo esta arma, pueden ver que puedo disparar mientras estoy equipando el arma Por cierto, para este curso, sólo voy a desactivar el sonido del arma para que me escuchen cuando esté disparando y no me distraiga Sólo voy a desactivarlo de mi parte. Cuando equipas el arma, queremos desactivar el disparo. Sigamos adelante y hagamos eso. Primero agreguemos un lingote. Llamemos a esto que está equipando arma. Compilemos ahora. Tenemos que establecer esto a través de un evento. Vamos a hacer un nuevo evento personalizado. Evento personalizado. Y llamemos a esto un conjunto está equipando arma. Sigamos adelante y copiemos ese nombre porque voy a crear otro evento personalizado. Tenemos que ejecutar esto a través del servidor. Voy a llamarlo servidor al principio. Y ejecuta este en el servidor y siendo confiable también. Bien, puedes ejecutar el servidor uno en el conjunto de servidores de eventos normales. Este conjunto está equipando arma, igual que esto por aquí Lo que simplemente queremos establecer esta variable para que sea, que sea verdadera o falsa dependiendo de a qué nos fijemos esta. Vamos a arrastrar esto hasta aquí. Y vamos a arrastrar esto a aquí también. Bien, éste. Recuerda configurarlo para replicarlo para que el cliente también sepa qué es esta variable Para este, tenemos que llamarlo a través del código en alguna parte para que sea verdadero o falso. Empecemos por aquí. Tenemos este montaje de juego cada vez que equipamos el arma. Déjame arrastrar este aquí abajo. Siempre que pongamos el arma, siempre que esto sea cierto, estoy haciendo una rama siempre que esto sea cierto. Llamemos a esto equipar arma MC equipar. Y entonces podremos seguir adelante y establecer esta animación equiparable también. Entonces lo que hicimos aquí, pasamos por la multidifusión y en realidad llamamos a éste en el servidor Entonces lo que podemos hacer es que podemos copiar y pegar esto. Solo estoy pensando si deberíamos arrastrar esto aquí y luego arrastrar esto hacia aquí, así podemos llamarlo aquí arriba. Y creo que en realidad no necesitamos hacer eso, vamos a copiar esto aquí arriba. Y déjame mover esto hacia abajo. Vamos a pegar este de aquí abajo. Y peguemos en la animación equipar igual que antes. Y vamos a esconder los pines desconectados. Entonces ahora cada vez que equipemos el arma, vamos a jugar esta multidifusión Bien, entonces ahora tenemos esto, vamos a compilar Ahora lo que podemos hacer es usar esta arma equipada con set en lugar de esta. Siempre que equipemos un arma, va a poner esto en verdad. Permítanme borrar esto por ahora y ocultar pines desconectados. Déjame llamar al set está equipando arma y vamos a conectarlo. Y va a correr por el servidor y luego llamar la multidifusión siempre que ésta sea cierta Aquí queremos equipar el arma. Tienes que ponerla en falso en algún momento, lo contrario será verdad todo el tiempo y no podrás disparar tu arma. Siempre que terminemos de tocar este montaje de animación, llamemos al set es arma de azotes para que sea falso Lo quitamos aquí. ¿Bien? Y luego cuando disparemos el arma aquí, dispara arma. Queremos filmar siempre que no estemos equipando. Tomemos esto aquí. Es equipar arma. Y correcto, no lingotes, luego arrastra desde aquí y escribe lingotes Vamos a conectarlo por aquí. Bien, entonces no podemos disparar siempre que estemos desarmados y no podemos disparar siempre que todavía estemos equipando el arma aquí Bien, vamos a compilar. Y yo también voy a subir aquí. Cuando saqueamos el arma, también somos el arma de equipar Eliminemos la multidifusión de aquí. Yo voy a hacer lo mismo. Sólo puedes bajar aquí. Si deseas copiar esto, pegarlo aquí arriba, justo así. Y eso también debería reproducir la animación. Eso debería solucionar el problema. Y puedo borrar esto aquí. Puedo ocultar los pines desconectados en lugar de usar el arma equipada de este equipo Porque esta arma de equipo sólo está siendo llamada aquí abajo en el arma de equipar. Sin embargo, en realidad no tenemos el arma equipada aquí arriba cuando le damos mucho al arma. A lo mejor es usar esta arma equipada. Es mejor usar este. Entonces déjame ver aquí. Armas equipadas. Sí, ya lo definimos antes. esto lo llamamos, tal vez solo puedas eliminar esto, y déjame ver arma equipada, usando esta en su lugar. Eso debería funcionar mucho mejor. Vamos a compilar y guardar. De hecho intentemos jugar y veamos si tenemos alguna caja aquí. Déjame jugar aquí, el Terrista. Y tratar de disparar cada vez que saqueo el arma, no puedo. Y se puede ver que sólo puedo disparar cada vez que termine de equipar el arma Si lo vuelvo a caer y trato de saquearlo y disparar, no puedo. Ahora puedo, siempre que se detenga aquí. Bien, intentemos jugarlo como el cliente. Porque también es muy importante ver si funciona como cliente. Sólo voy a escribir un jugador y jugar como cliente. Voy a jugar aquí y probarlo. Tomando esto, y eso es lo mismo. Realmente no puedo disparar cada vez que estoy equipando mi arma. Así es como funciona y solo va a reproducir la animación siempre que el arma de equipamiento esté puesta en true. Y va a ponerla a la culpa cada vez que el montaje de animación esté completo 140. 10.11 Crea la interfaz de usuario de Ammo: Ahora es el momento de diseñar la interfaz de usuario de MO para que podamos agregar algo de MO al juego. Y para hacer eso, pasemos a la interfaz de usuario. Y diseñémoslo dentro de nuestra interfaz de usuario principal. Porque es parte de la interfaz de usuario principal dentro de aquí. Quiero diseñarlo justo debajo del arma aquí. Por ejemplo, tomemos esta caja vertical, vamos a empujarla hacia arriba en la Y. Así que tengo algo de espacio aquí abajo para hacer esto. Quiero diseñar algo como esto. Me gusta mostrarte lo que quiero diseñar y tienes que descomponerlo. Tienes que echarle un vistazo a esto y luego tratar de desglosarlo y ver lo que necesitas agregar como la interfaz de usuario. Por ejemplo, ¿necesitas agregar una caja horizontal? Una caja vertical? Y ¿qué necesitas agregar aquí? Primero, necesitamos una superposición, porque puedo ver que tenemos algún texto encima de una imagen en el fondo. Y por lo tanto, necesitamos algo que se llame superposición. Empecemos por aquí. Busquemos una superposición, y peguémosla aquí en el panel del lienzo, en el cuadro vertical. Ya terminamos con éste. Aquí es una superposición por sí misma. Y voy a colocar el ancla al botón, ¿no? Y entonces si escribimos 00 como la posición, podemos ver que se alinea aquí para la alineación Tenemos que escribir 11. Ahora en la posición 00, está dentro de la lona. Bien, primero necesitamos una imagen. Busquemos una imagen y la peguemos en la superposición. Haga clic en la imagen, y vamos a llenar toda la superposición para rellenar la alineación horizontal. Y relleno de alineación vertical también. Bien, al hacer clic en la imagen, vamos a seleccionar la imagen. Creo que lo llamé panel. Sí. Si buscas panel y tomas este miembro del panel de imagen, si se estira así, puedes hacerlo sin estirar Si escuchas en las puertas, lo cambias a una caja y cambias el margen a 0.5, Bien, También recuerda alejar a uno por uno. En realidad se puede ver el tamaño real de esta caja. Simplemente puedes cambiarlo de tamaño. Ahora mismo, en realidad no demasiado importante. Lo que quiero hacer es hacer clic en la superposición y en realidad hacer clic en Tamaño al contenido. En realidad va a dimensionarse a cualquier contenido que esté dentro de esta superposición. Cuando hago clic en la imagen y aumento el tamaño, ahora se puede ver que puedo aumentar el tamaño en ambos sentidos. Solo puedes aumentarlo por ahora. Necesitamos diseñar el interior primero antes de saber realmente el tamaño del mismo. Primero necesitamos una caja horizontal porque tenemos algo de texto, y al lado tenemos una imagen. Busquemos una caja horizontal, y vamos a colocarla en la superposición. Tomemos el cuadro horizontal y alinéelo en el medio de la imagen aquí de la superposición. Ahora busquemos un texto. Tome el texto, colóquelo dentro de la caja horizontal. Y también tomar una imagen y colocarla dentro de la caja horizontal. Bien, ahora podemos dar click en el texto. Vamos a escribir algo. Por ejemplo, 30 por 90. Tienes 30 balas ahora mismo en la revista, y luego tienes 90 balas adicionales. Ahora bien esto va a cambiar dinámicamente en el juego, así que en realidad no importa en estos momentos. De hecho voy a escribir algo como 100, 200, así que sé que es un texto falso, y podemos configurarlo correctamente después. Bien, para esta, esta es la imagen bullet y aún no la hemos importado. Vamos a los Activos en Activos. Vamos a la interfaz de usuario y a los iconos dentro de aquí. Te he dado dentro de la carpeta de materiales del caso en los iconos de la interfaz de usuario, esta bala aquí, haz clic y arrástrala aquí. Y recuerda abrirla primero y cambiar el grupo de texturas a UI. Y cambie la configuración de compresión al deber de la interfaz de usuario. Sigamos adelante y ahorremos. Volvamos a nuestro Nui Busquemos la bala y sigamos adelante y la seleccionemos. Bien. Ahora puedo dar click sobre mi texto. Y déjame simplemente acercarme para que pueda ver lo que estoy haciendo. Voy a cambiar este a rubic, semi audaz. En cuanto al texto ahora voy a alejar a uno a uno para poder ver el tamaño de este texto. Y sólo voy a dejar que sea a las 24 aquí como el tamaño. Bien, voy a hacer click en el icono de aquí arriba, así que elimino las líneas de trazos para esta bala. Voy a alinearlo en el medio, y voy a hacerlo más pequeño, tal vez 30 por 30. En cambio, así es como se ve. Bien, necesito algo de espacio entre estos dos. Y esto se puede hacer buscando un espaciador y colocándolo entre el texto y la imagen. Hagamos el texto, o el espacio aquí, diez píxeles en la x Bien, aquí lo tenemos. Ya puedes compilar. Y lo que puedes hacer ahora es que puedes hacer click en la imagen e intentar redimensionarla mejor Ahora, ahora tienes el contenido dentro de él y tratas de redimensionarlo como como te gusta Bien, cuando estés satisfecho, voy a empujar este overlay un poco lejos de la pantalla, desde los bordes aquí de la pantalla. Quizás -30 por -30 y ahora es perfecto. Así que vamos a compilar y guardar todo. Y también voy a seleccionar el texto, la imagen y la imagen en el fondo. Y establecer la visibilidad a un no hit comprobable para que el cursor de millas tampoco pueda interactuar con ellos. Bien, vamos a compilar y guardar todo. Y ahora que esto está terminado, vamos a dar clic en el cuadro vertical de aquí arriba. Y ahora podemos moverlo hacia abajo. Puedes mover esto hacia abajo, tal vez algo así. Y estoy satisfecho con esto. Tenemos la munición y también tenemos las armas aquí arriba. Bien, puedes seguir adelante y compilar, guardar todo, y pasemos al siguiente. 141. 10.12 Establece la cantidad inicial de munición para armas: Sigamos ahora adelante y definamos cantidad de MO que tienes en cada arma. Nuevamente, tenemos que volver a la estructura. Vamos en la estructura, información de armas que hemos hecho. Hagamos dos nuevas variables. El primero que necesitamos saber cuánto MO tienes en una mag, esa arma max MO en. Necesitamos saber cuánto MO tienes como balas extra. Entonces puedes ver aquí en la interfaz de usuario si la abro. ¿Cuánto MO tienes aquí en la mag? Y ¿cuánto MO tienes? Sobras que puedes recargar de esta. Solo llamaré a Max extra MO. ¿Cuál es el máximo que puedes tener dentro de esa arma? Ya que es solo un número, es un número entero, no es un número decimal. Necesitamos seleccionar entero, solo un número ordinario. Sin decimales, tenemos maximo en ma y max extra MO. Voy a moverlos aquí arriba y creo que los moveré por encima de la velocidad de disparo, algo así. Ahora bien, en realidad no importa a dónde los muevas. Sólo me gustaría estar limpia así. Al tener los terminados, ya podemos cerrarlo y tenemos que recordar actualizarlo dentro de la tabla de datos. Si abro la tabla de datos y dentro de mi tabla de datos aquí, tenemos que escribirla igual que hicimos aquí en la estructura. Si vuelvo a la estructura, abro la estructura aquí dentro de la estructura. Ahora si solo lo comparo con mi tabla de datos, necesito ahora este MO en mí y Max extra MO después de la variable de clase. Después de ésta. Después de la clase voy a escribir click y decir Insertar columna a la derecha. Y voy a hacer eso una vez más. Permítanme maximizar esto para poder ver realmente lo que estoy haciendo. Simplemente podemos hacer esto más pequeño como y podemos escribir Max MO en Mag. Incluso puedes copiar esto, pegarlo aquí. Y copia esto. Y pegarlo aquí. Bien, entonces tenemos eso ahora. Y entonces hay que definir la cantidad de MO que tiene. Entonces para el AK 47 por ejemplo, puedo tener 30 en mi Meg y puedo tener un máximo de 90 balas extra. Mi info podría tener por ejemplo como 2060 y mi pistola por ejemplo, 12 balas y máximo de 24 balas como MO extra, algo así Adelante otra vez y haz clic en el archivo para descargarlo y descargarlo como archivo CS para que podamos subirlo al motor. Y otra vez, igual que antes, voy a borrar el viejo que hicimos. Y voy a pegarlo aquí, renombrarlo de nuevo como DT Weapon Info. Y luego dentro del motor, vayamos a las tablas de datos. Y permítanme simplemente hacer clic y arrastrar esto aquí para que se actualice. Y si lo abres una vez más, puedes ver que todos los valores aquí están actualizados. Bien, increíble. Entonces ahora hemos definido el monto MO. Sin embargo, ahora cuando jugamos el juego, el motor no conoce la cantidad inicial porque realmente no hemos usado esos números. Está bien. Los hemos escrito dentro de la estructura y tabla de datos. No obstante, en realidad no los hemos puesto a nada en estos momentos. Vamos a las armas y hagamos eso dentro de la base de armas. La razón por la que lo hago ahora mismo en la base de armas y no en el jugador, es porque cada vez que el arma genere, va a establecer la cantidad de MO que tiene en la mag y el MO extra, lo va a hacer automáticamente Dentro de aquí, dentro de aquí. Hagamos clic derecho y hagamos un nuevo evento personalizado. Llamemos a este servidor. Entonces vamos a ejecutarlo a través del servidor. Y llamémoslo Arma inicializada. Es solo un evento para principiantes que va a correr aquí en la jugada de inicio. Si solo llamas a servidor inicializado arma y ejecutas esto en el servidor, confiable, así, compilar Ahora dentro de aquí lo que compilar Ahora dentro de aquí queremos hacer es querer establecer el MO extra actual y también MO en la mag para el arma Vamos a crear dos nuevas variables y las vamos a necesitar más tarde también. Llamémosle a éste. Necesito cambiar el nombre aquí, MO en mag. Llamemos al otro M extra aquí en la estructura. Si vuelvo atrás y abro la estructura, dentro de la estructura, esta es la M máxima en, esta es la máxima que podemos tener. Este es el actual. Podríamos haber cerrado nuestra arma y usar nuestro MO cuando tiramos el arma al suelo. No va a tener el MO máximo como el MO en la mag. Va a tener este MO actual porque el jugador ha usado parte del MO. Cambiemos esto en un interior también. Déjame arrastrarlos hasta aquí para que podamos ponerlos. Y recuerda que puedes sostener Alts en tu teclado para configurarlos así directamente Vamos a conectarlos aquí, conectar este. Y tenemos que fijarlos ahora primero. Tenemos que obtener la variable aquí, la estructura. probablemente ya sepas ahora lo que tenemos que hacer, porque lo hemos hecho mil veces. Entonces obtienes el nombre del arma, obtienes información de arma, y luego rompes esta estructura. Y ahora tienes el Max MO y Meg y el Max Extra MO. El Max M y Mag, voy a establecer a la M actual y Meg y la M extra, configurándola al MO extra actual. Y voy a dar click en Ocultar pines no seleccionados. Y así lo que sucede es que cada vez que esta arma genera esto comienza, el juego va a jugar Siempre que engendremos esto en el mundo, cada vez que hayamos colocado esto en el mundo, vamos a hacer clic en play Y esta jugada de inicio se va a jugar enseguida. Y siempre que este lugar, va a configurar automáticamente el MO actual y Mac un Mo extra de lo que hemos definido de hecho tabla de datos. Bien, así que eso fue todo. Esto fue muy, muy sencillo. Y con estas variables hay que dar click sobre ellas y dar click en replicadas. Y también para éste, da clic en replicado. Porque recuerda que estamos corriendo en el servidor. Y si no los replicamos, el cliente no tiene idea de cuánto MO tienes El cliente verá 00 MO si no los ha replicado. Así que recuerda replicarlos también. Ambos. Y pasemos al siguiente. 142. 10.13 Crea la lógica de la interfaz de usuario de Ammo: Ahora sigamos adelante en la interfaz de usuario y hagamos la lógica dentro de aquí. Dentro de nuestro principal B, creamos esta interfaz de usuario para las balas. Ahora vamos a dar click sobre este texto. Y voy a renombrarlo a balas T o MO. Vamos a llamarlo MO. Y vamos a compilar. Vamos a establecerlo también en una variable. Porque necesitamos establecer este texto, dependiendo de la cantidad de MO que tengamos, necesitamos convertirlo en una variable. Así podemos modificarlo con código dentro de la gráfica. Dentro de aquí. Hagamos un nuevo evento personalizado. Hagamos clic derecho en Eventos personalizados. Llamemos a este MOI de actualización con esto Inicialmente lo que solo queremos con esto es establecer este texto a la cantidad de MO que tenemos. Golpeemos aquí y digamos texto fijo. Siempre es agradable pensar, ¿qué es lo que realmente quieres? ¿Qué intentas hacer? Esto es lo que suelo preguntarme cuando trato de codificar algo. Por ejemplo, este de aquí, ¿qué intentas hacer? Estás tratando de establecer este texto a la cantidad de MO que tienes ahora mismo en el Meg, vas a la gráfica y tomas esto por ejemplo. Puedes escribir Establecer texto porque queremos establecer el texto en última instancia. ¿Cómo configuramos el texto? Necesitamos dos variables diferentes. Esto es algo que ya hicimos. Necesitamos el MO actual en Mac. Necesitamos saber eso, porque necesitamos configurarlo aquí y también necesitamos el MO extra actual. Vamos a llamarlo. Da click aquí y llámalo MO extra actual. Cambiemos ambos a un entero. Estas son las dos variables que necesitamos conocer y necesitamos establecer este texto con. Ahora puedes ver que tenemos dos cosas que necesitamos establecer. No tenemos solo un número, tenemos dos cosas. Siempre que tengas múltiples cosas dentro de una, una línea de texto que necesites cambiar por separado, vas a usar algo llamado formato texto. Si arrastras desde aquí y dices formato texto, esto es algo en lo que debes pensar de inmediato cuando tienes dos cosas Quieres modificar dentro de una línea de texto, dos cosas separadas. Queremos modificar este número y queremos modificar este número. Siempre que recarguemos el arma, necesitamos formatear el texto Porque ahora necesitamos enchufar estas dos variables con formato de texto. Si escribes un corchete para empezar, llamemos a este. Puedes llamarlo como quieras. Sólo voy a llamarlo el mismo nombre que aquí. MO actual en mag. Y luego hay que cerrar los corchetes. Recuerda que es un corchete. Hay que formatearlo igual que aquí. Porque quiero el espacio aquí y el y el espacio. Voy a dar click aquí y escribir espacio espacio. Porque solo quería quedar así. Puedes elegir como quieras hacer que parezca que yo quiero quedar así. Entonces hay que volver a abrir los corchetes, porque ahora tengo que definir mi segunda variable aquí. Este es, por ejemplo, MO extra actual, así como éste. ¿Bien? Ahora tenemos estas dos y ahora registramos estas dos variables en. Automáticamente los conectará aquí y aquí, lo que significa que actualizará esto y esto separados entre sí. Así es como se usa un formato de texto de formato. Si solo lo vuelvo a hacer, por ejemplo, otro ejemplo, puedes usarlo por ejemplo, en un juego RPG, podrías decir, por ejemplo, hola. Y entonces se puede decir el nombre del jugador. Porque a lo mejor dice hola John, o algo así. No lo sé. Sea cual sea tu nombre de jugador , dice hola. Y tu nombre de jugador, cómo te va a esta hora del día, por ejemplo, del día, por ejemplo, Hola, por ejemplo, John, ¿cómo estás haciendo esto para esta noche? A lo mejor tienes como un sistema diurno y nocturno. Y en el juego automáticamente sabes si es tarde o mañana o algo así, y puedes enchufar eso en variables. Así es como se usa un formato de texto. Se pueden hacer múltiples variables, y en realidad no tiene que ser enteros. Puede ser una línea de texto, puede ser otra cosa, una enumeración, y así sucesivamente Es muy, muy útil usar este formato. Bien, ahora tenemos esto terminado, y de hecho podemos usar esto para enchufar esas variables. Compilemos y guardemos todo, y pasemos al siguiente. 143. Actualiza la interfaz de usuario de munición 10.14: Ahora es el momento de actualizar la interfaz de usuario a la cantidad real que tenemos dentro de las armas. Vamos a la base de jugadores. Ahora, dentro de aquí, vamos a crear un nuevo evento. Y echemos un vistazo aquí y hagamos un nuevo evento personalizado. Llámalo CL porque estamos trabajando con UI y UI, nuestro lado del cliente. Llamemos a esta actualización, MOU. Lo que tenemos que hacer, al igual que éste, necesitamos obtener el controlador y así sucesivamente. Entonces ahora puedes ver que estamos tratando de obtener este controlador una y otra vez. De hecho, es agradable crearlo en una variable en su lugar, en lugar de copiar y pegar esto todo el tiempo Vamos aquí arriba a la jugada del Jugador aquí, donde en realidad conseguimos el mando. Hagamos clic derecho y promocionemos este controlador a una variable y lo llamemos controlador de jugador. Voy a alejar esto un poco aquí y luego voy a colocarlo aquí. Siempre que este controlador de reproductor sea válido, lo vamos a establecer como una variable. Sí, esto está bien. E incluso puedes hacer doble clic aquí para hacer notas de redireccionamiento así como Bien, adelante y compile. Ahora lo que podemos hacer aquí abajo, en realidad podemos eliminar esto, obtener controller, play controller, porque ya lo tenemos como variable ahora. Ahora se vuelve mucho más fácil de hacer. Incluso podemos acercar esto, algo así. Ahora en realidad puedes hacer lo mismo por aquí. Podemos tomar el controlador. Ejecutemos esto en el cliente antes de que nos olvidemos de ejecutar el cliente propietario, tomar controlador de pantalla, obtener WB principal Entonces puedes llamar al que llamamos update MO Ui. Bien, aquí necesitamos dos variables. Podemos simplemente enchufarlos dentro de este cliente. En cliente uno. Déjame mover esto un poco hacia abajo, así como así. Bien, y ahora tenemos este de aquí. Así que vamos a compilar y guardar todo. Y a éste hay que llamar cada vez que saqueamos el arma. Así que déjame subir aquí. Siempre que saqueemos el arma que está por aquí, saqueemos Y si vamos a un lado, necesitamos actualizar las balas sólo si estamos desarmados Porque si tengo un AK, va a pasar por este código aquí arriba. Solo quiero actualizar cada vez que realmente saquee el arma la primera vez Porque no necesitamos cambiar la cantidad de MO para la otra arma. Eso me va a ir en la espalda porque no lo he equipado cuando estoy desarmado Quiero actualizar mi MO por aquí. Tenemos que volver a extender el código. En realidad, voy a alejar esto bastante porque seguimos extendiendo este código. Tengo algo de espacio para trabajar. Puedo mover todo esto aquí conmigo. Así como así. Podemos llamar a update MY este cliente uno que acabamos de hacer. Entonces tienes que definir aquí cuál es tu MO actual y extra. Ya fabricamos esta arma equipada variable. Este solo voy a hacer click en él y esconder pines desconectados Haga clic en esto. Entonces tienes esta arma equipada, podemos usar eso. El arma equipada. Recuerda que no es arma equipada, es la equipada. A lo mejor puedas cambiar el nombre de esos para que no te confundas demasiado arma equipada. Y podemos obtener el MO actual en mag. También podemos obtener el MO adicional actual. Y los podemos enchufar aquí. De hecho, puedo copiar todo esto porque podemos copiar y pegar esto por todas partes. Podemos copiar y pegar esto. Vamos a compilar, vamos a pegarlo. Siempre que cambiemos las armas. Siempre que cambio las armas aquí en la lógica de equipar armas, nuevamente, estamos actualizando la interfaz de usuario. Entonces voy a alejar esto, y sólo voy a pegarlo aquí. Pégalo después de esta lógica. Y sigamos adelante y lo conectemos. Así como así. Bien, vamos a compilar todo ahora. Intentemos ver qué pasa si hacemos clic en jugar ahora. Y ahora juega el cliente. Selecciono Terrorista y me dejo recoger algo. Entonces puedes ver mi MO en realidad se está actualizando ahora dice 20.60 Si cojo la pistola, no dice nada a menos que cambie a la pistola Después actualiza también el MO. Si dejo caer esto ahora, ahora necesitamos ocultar la sección MO porque no tengo armas. Pero vamos a hacer eso en las próximas lecciones. Ahora podemos ver aquí cuando recoja el AK, se va a actualizar correctamente. Cuando cambie de arma, se va a actualizar correctamente. Bien, así que todo se está actualizando correctamente. Y eso fue todo por esta lección. Muy sencillo. Y guardemos todo y sigamos adelante. 144. 10.15 Oculta la interfaz de usuario de munición: Bien, bienvenido de nuevo. Entonces ahora necesitamos ocultar la interfaz de usuario M siempre que no la necesitemos. Déjame abrir de nuevo la interfaz de usuario. Abre la principal del WB y entra dentro de la gráfica debajo aquí, el MOU de actualización Voy a hacer otro evento personalizado, y voy a llamar a este display así como así. Para este, lo que estamos tratando de hacer, nuevo, pregúntate, ¿qué intentas hacer? Estoy tratando de ocultar toda esta sección. Siempre que no tengo un arma, hago clic en esta superposición. Esto superpone todo el asunto aquí. Este es el padre de todos ellos aquí. Voy a renombrarle este a V M o overlay. Déjame configurarlo como una variable para que pueda editar esta codificación. Déjame ir a la gráfica, tomar esto y luego decir establecer visibilidad. Quiero controlar la visibilidad de esta interfaz de usuario. Podemos arrastrar desde esto y decir seleccionar dependiendo de si queremos mostrar u ocultar la interfaz de usuario. Necesito un toro aquí. Necesito un lingote llamado display. Si queremos mostrar u ocultar la interfaz de usuario, podemos seguir adelante y conectar esto a aquí. Este acoso es falso, lo que significa que no queremos mostrar la interfaz de usuario. Quiero ocultarlo. Siempre que esto sea cierto aquí, quiero mostrar la interfaz de usuario. Voy a configurarlo para que no golpee comprobable. Nuevamente, esto significa que tu significa que es visible, pero el cursor del mouse no puede interactuar con esta interfaz de usuario aquí. Y realmente no necesitamos interactuar con él de todos modos. Vamos a compilar. Y ahora esto de aquí está terminado. Ahora lo que podemos hacer es volver al jugador. Y en lugar de la base de jugadores como antes aquí, hagamos un clic derecho, hagamos un nuevo respiradero personalizado, todo esto se muestre de nuevo. Tomemos este copy paste y busquemos el MI display. Vamos a conectarlo. Recuerde ejecutar esto en el cliente propietario y confiable también Déjame hacer clic y arrastrar esta variable aquí. Bien, eso fue todo. Vamos a compilar ahora. Vamos a elegir cuándo queremos mostrar y ocultar la interfaz de usuario. Quiero mostrar mi UI cada vez que equipe el arma o la saquee aquí MdE de pantalla. Si voy a mi arma de lote y solo voy por aquí y quiero mostrarla justo después de actualizar mi MO. No quiero mostrar antes actualizar mi MO porque de lo contrario va a parecer buggy. Quiero actualizar el MO antes de mostrar la interfaz de usuario. De nuevo, permítanme arrastrar todo esto. Nuevamente, así, seguimos arrastrando esto lejos. Tenemos muchas cosas que hacer dentro de aquí aquí, podemos escribir CL display aquí y conectarlo. De nuevo, voy a alejar esto un poco así. Algo como esto. Siempre es agradable decirlo, organizado. Bien, así que vamos a mostrar la interfaz de usuario aquí. Esta otra vez, siempre que estemos desarmados, porque ahora tenemos un arma Quiero mostrar mi interfaz de usuario. Recuerda marcar esto aquí. Vamos a compilar de nuevo. También necesitamos esto siempre que equipemos el arma. Si voy a mi arma de equipo, si puedo encontrarla aquí, equipar arma aquí. Nuevamente, cada vez que actualizo mi MO, quiero mostrar mi UI o mi MO así. Bien, recuerda también tenerlo marcado aquí también. Ahora necesitamos ocultar la interfaz de usuario cada vez que dejamos caer el arma por aquí en mi arma lógica de caída. Recordemos que hicimos esta función anteriormente, soltar arma. Vamos a entrar aquí. Ocultemos la interfaz de usuario justo antes de esta. Si arrastro esto, puedo pegarlo. La pantalla MO UI va a ser, cae aquí, cae para la pantalla. Y podemos ocultar la interfaz de usuario cada vez que soltemos el arma. Bien, vamos a compilar y guardar todo. Vamos a probarlo y ver si realmente funciona. Seleccionemos terroristas. En realidad, necesitamos ocultarlo por defecto. Ya ves que es ahora mismo y no queremos eso. Entonces ese es el primer error. Pasemos a la principal aquí. Vamos a hacer clic en la superposición aquí en la visibilidad. Vamos a configurarlo en oculto por defecto y compilar. Y vamos a hacer clic en reproducir de nuevo aquí en el cliente seleccione Terraza. este momento no lo podemos ver, pero cuando recogemos un arma, se va a exhibir con la cantidad correcta de balas. Si lo dejo caer ahora ya no va a exhibir más. Recojo la pistola, va a exhibir, cojo el AK. No va a actualizar las balas menos que cambiemos al AK. Si me cae el AK, no va a exhibir nada. Ya puedes ver, está funcionando correctamente. Siempre que estemos sosteniendo un arma, vamos a ver cada vez que cambiemos el arma. Cada vez que dejamos caer el arma, ocultamos la interfaz de usuario y así sucesivamente. Y en realidad probemos esto también en el servidor, así que no sé si estoy jugando como servidor también. Entonces haciendo clic aquí arriba, jugando como servidor, y voy a jugar como dos números o dos jugadores y seleccionemos terroristas. También vamos a probarlo aquí en el servidor. Recuerda, tienes que probarlo en el cliente y en el servidor para saber que realmente funciona en ambos. Aquí también tengo al cliente y puedes seguir adelante y seleccionar terroristas. Y ya lo probamos en el cliente. Todo está funcionando a la perfección. Sí. Todo está funcionando, Todo es bonito, increíble. Todo funciona. No tenemos pavos, ni errores, y así es como lo hacemos. Pasemos al siguiente. 145. 10.16 Cálculo de munición: Entonces ahora sigamos adelante y calculemos el MO, porque ahora mismo cada vez que estamos disparando el arma, así que si recojo esto y trato de disparar, realidad no estamos calculando el MO. Todavía son 20. Entonces, sigamos adelante y hagamos eso. Vayamos una vez más a la base de jugadores para calcular las balas. Recuerda, hemos hecho este temporizador aquí abajo. Si podemos encontrarlo aquí abajo con el trazado de línea por canal y reproduciendo el efecto visual y el efecto de sonido por aquí, queremos restar una bala cada vez que dispares Déjame simplemente alejar esta línea trazada porque vamos a usar más tarde cuando apliquemos el daño del jugador. Pero por ahora, trabajemos aquí. Lo que simplemente quiero hacer es tomar mi arma equipada que tengo ahora mismo y quiero obtener mi MO actual en mi mag. Entonces solo quiero restarle uno, menos uno. Y luego puedes seguir adelante y establecer este MO actual en mag. MO Actual en mag. Y tenemos que configurarlo. Establecer el MO actual en mag. Y nosotros solo menos uno de él, estamos restando una bala cada vez que disparamos Ahora bien, en lugar de solo tenerlo así, necesitamos arrastrar de esto y decir clamp. Lo que hace la pinza es que evita que nuestro valor vaya por debajo de cero porque no queremos tener menos una bala, menos dos bala, menos tres bala, y así sucesivamente. Estamos estableciendo nuestro valor mínimo en cero cuando restamos aquí Estamos impidiendo llegar a menos uno, menos dos balas y así sucesivamente. Eso no tendría ningún sentido. Ahora, el máximo para éste, solo podemos tomar esto y decir que podemos obtener las balas actuales y luego podemos ponerla aquí. Ahora bien, este no importa. Incluso podemos establecerlo en 999. Realmente no importa en este momento. Pero sólo voy a la buena práctica, a la buena práctica de codificación. Toma las balas adicionales actuales y ponlas como el máximo. Bien, ya tenemos ese set. Permítanme crear notas reescritas alrededor de ésta también. Sigamos adelante y conectemos este pin de ejecución aquí. Y conectemos aquí también el pin de ejecución. Lo que puedes hacer este, incluso puedes hacer clic derecho y promoverlo a una función o colapsarla a una función. Llamemos así a esta función tract MO de mag. ¿Bien? Ahora estamos restando y solo podemos dejar que esté aquí Ahora en lugar de solo tener una bala, incluso puedes hacerla dinámica en el futuro. Si quieres disparar una bala y en realidad quieres restar dos en lugar de una bala Incluso puedes simplemente enchufarlo aquí y puedes escribir MO para restar así Permítanme simplemente alejar todo esto, esto, y seguir adelante y compilar ahora. Si volvemos ahora, puedes ver que puedes escribir cuántas balas quieres restar para mi juego ahora mismo, solo quiero restarle una bala. Eso está bien. Entonces sigamos adelante y hagamos una nota de secuencia porque vamos a recargar más tarde De hecho voy a desconectar este rastro de línea y voy a alejar esto un poco aquí. Rastreemos desde aquí y hagamos secuencia. Y elige el nodo de secuencia. Ahora con la nota de secuencia, conectemos los dos aquí, desde el pin aquí, desde el cero. Vamos a conectar esto aquí. Lo que es una nota de secuencia, solo se usa para organizar tu código. No es hacer otra cosa que eso, es solo organizar tu código. Primero vamos a hacer el efecto aquí y vamos a restar la bala Entonces vamos a poner esta línea de trazo. Puedo mover este rastro de línea aquí abajo. Yo sólo voy a mover todo esto aquí abajo también, porque ahora mismo se ve un poco desordenado Incluso puedes eliminarlos y simplemente conectarlos directamente aquí. Y voy a mover esto así hacia arriba. ¿Bien? Ahora se ve mucho mejor. Y ahora podemos conectar esto a esto aquí. Un nodo de secuencia es solo para organizar tu código. Va a hacer el efecto de sonido y todo eso, restar la bala, entonces vamos a crear el trazo de línea Entonces después de eso, vamos a hacer la recarga porque tenemos que revisar, ¿nos quedamos sin balas Si lo estamos, tenemos que seguir adelante y recargar. Sigamos adelante y hagamos eso en la siguiente lección. Esto va a ser un no muy difícil pero hay que estar despierto para eso. Por ahora hemos terminado, estamos calculando las balas. Incluso podemos hacer clic en el plato solo para probarlo por buenas razones aquí y ver si es box out. Ahora mismo necesitamos actualizar realmente la interfaz de usuario y hagamos eso dentro de la función restar amo de mag Vamos dentro de aquí y dentro de aquí. Golpeemos desde aquí y llamemos a la actualización de CL MO I. Esto es lo que creamos antes. Y entonces podemos tomar este MO en mag, este es solo este aquí y el otro, el MO extra. De hecho, podemos simplemente tomar este y crear un nodo de re ruta o simplemente hacerlo más bajo aquí y podemos llevarlo hasta aquí. Bien, ahora esto está hecho. Vamos a compilar. Vamos a hacer clic en play. Probemos como el cliente. Juguemos ahora. Voy a dispararle a mi arma. Está funcionando ahora. Yo también voy a jugar como servidor, tomando el arma y disparando también. Y eso funciona. Tanto el cliente como el servidor, ambos están funcionando perfectamente. Bien. Ahora es calculador. Y sigamos adelante en las próximas lecciones. Y ya pueden ver, podemos disparar el arma. Puedes ver si sigo disparando el arma, puedo seguir disparando siempre que esté a cero balas. Y la razón de esto es porque en realidad no le hemos dicho al motor deje de disparar cada vez que estamos a cero balas. Y eso lo haremos en las próximas lecciones. Pero primero tenemos que calcular el MO y hacer la recarga. Y después de eso podemos sumar todas estas condiciones. Pero por ahora, vamos a guardarlo todo. Todo está funcionando. Y pasemos al siguiente. 146. 10.17 Recarga la animación de armas: Hola y bienvenidos de nuevo. Ahora estamos listos para hacer la funcionalidad de recarga. Ahora hay que estar muy despierto para esta lección porque va a ser quizá una larga también. Tenemos muchas matemáticas que hacer, así que realmente necesitas prestar atención aquí. Bien, primero hagamos la recarga. Sigamos adelante y creamos un evento personalizado. Así que permítanme hacer clic aquí y hacer un nuevo evento personalizado. Llamémoslo set de recarga de arma. Así que vamos a establecer un toro para que se recargue o no ejecute esto realmente para ejecutarse en el servidor. haz eso. No ejecutar en servidor, eso fue un error, solo set es recargar arma Evento normal, hagamos un servidor uno aquí abajo llamado set es recargar arma Ejecutemos este en el servidor, confiable. Vamos a hacer un nuevo bulling aquí llamado recargar y seguir adelante y hacer clic en Tomemos esto y pongamos el toro de recarga aquí. Recuerda configurarlo para replicarlo ya que nos estamos ejecutando en el servidor y el cliente necesita saber si estamos recargando o Por aquí tenemos que ejecutar el conjunto de eventos del servidor está recargando arma Sigamos adelante y conectemos esto aquí también. Bien, así que cada vez que estamos recargando queremos realmente tocar el montaje para la Déjame romper de aquí y hacer una rama. Y hagamos una sucursal aquí. Y digamos que si estamos recargando queremos tocar un montaje Y recuerda el N montaje que necesitamos para jugar a través una multidifusión porque todos los clientes necesitan ver este cambio visual El conjunto de multidifusión es el arma de recarga. Ahora me gustaría simplemente llamarlo el mismo nombre que las funciones principales. Puedes nombrarlo como quieras y ejecutarlo a través una multidifusión confiable por aquí Tenemos que tomar la malla, así que esto no los dos sino solo esta malla de aquí. Y puedes escribir montaje y puedes tocar este montaje igual que antes Este montaje para jugar, solo puedes conectarlo aquí Llamémoslo recargar M. Juguemos esta multidifusión aquí arriba. Set es recargar arma. Esa es la correcta. Entonces tenemos que decirle qué montaje necesitamos tocar. Ahora bien, no creo que tengamos ninguna animación. Porque si solo subimos aquí, tomemos uno de ellos. Esta estructura aquí. Sólo lo estoy pegando para no tener que volver a escribirlo todo. Puedo tomar mi arma equipada y enchufarla aquí. Bien, entonces aquí en la estructura solo tenemos la animación equipar. No tenemos una animación de recarga para cada arma porque cada arma de manera realista tiene su propia animación de recarga Entonces, sigamos adelante y agreguemos eso a la estructura. En la estructura, ábrala y sigue adelante y agrega la animación de recarga Hagamos setage, sigamos adelante y busquemos eso y selecciónelo, igual que el anterior Sigamos adelante y guardemos todo. Quiero que sigas adelante y abras tu tabla de datos. Porque aquí en la tabla de datos ahora puedes escribir animación de recarga Puedo copiar todas mis animaciones de equipamiento aquí. Porque como dije antes, no tengo una animación de equipamiento separada. Pero como puedes ver para tu propio juego ahora, puedes tener una animación de equipamiento, separar una, y puedes tener una animación de recarga separada Todo esto se puede personalizar muy bien. Ahora puedes salir y hacer clic en Archivo y descargar, Descargar como CSV, y luego puedes minimizar esto aquí, ve a la carpeta de tablas de datos. Y aquí, igual que antes, voy a borrar mi anterior y renombrarle el nombre a este nuevo, y luego arrastrarlo hasta aquí para actualizar esto. Ahora puedo volver a mi base de jugadores dentro de aquí montaje para jugar Ahora dice cero sin motivo alguno. Solo tienes que dar click en Archivo y refrescar todos los nodos así como así. Ahora en realidad puedo tener mi animación de recarga aquí y puedes conectarla Bien, ahora tenemos esto resuelto y también necesitamos establecer esto se está recargando para que sea falso en algún momento Pongamos que esto se está recargando para que sea falso. Y la forma en que hacemos esto podemos simplemente llamarlo de nuevo en el servidor. Recuerda cuando estás en una multidifusión, puedes volver al servidor aquí Cuando completemos la recarga, podemos decir que el conjunto del servidor es el arma de recarga. Volvemos al servidor y estamos configurando la recarga para que sea falsa En realidad podemos seguir adelante y probarlo y salgamos a compilar. Y eso fue todo para este ahora, realmente no podemos probarlo ahora mismo porque no tenemos ninguna funcionalidad de recarga Pero vamos a hacer eso y vamos a calcular la recarga y así sucesivamente por aquí Pero por ahora tenemos terminada la animación de recarga y sigamos adelante y compilemos, guardemos todo, y pasemos a la siguiente 147. 10.18 Recarga la funcionalidad de armas: Bien, así que ahora estamos listos para calcular las balas cuando estemos recargando. Y antes de hacer eso, vamos a añadir este conjunto se está recargando aquí arriba en el código Antes de continuar, recuerda que hicimos esta secuencia. Entonces como pueden ver aquí, y estamos disparando las balas, estamos restando una bala cada vez que disparamos No obstante, al final, tenemos que revisar, ¿tenemos más balas? Si no lo hacemos, tenemos que seguir adelante y recargar. Lo que tenemos que hacer es tomar esta arma equipada, y recordar que tenemos este MO actual en mí. Podemos preguntar si esto es igual a cero. Si esto es igual a cero, permítame simplemente hacer una sucursal aquí. Si esto es igual a cero, tomemos esto y conectémoslo aquí. Si esto es igual a cero, sigamos adelante y digamos set es recarga Set se está recargando para que sea verdad, queremos recargar siempre que no tengamos más balas Vamos a compilar. Vamos a hacer clic en play. Y veamos si realmente funciona. Voy adelante aquí y voy a disparar a todas mis armas. Tengo que tener cuidado porque no quiero disparar bajo porque no he hecho condiciones para eso. Si tiro a cero, se puede ver que va adelante y recarga y eso es correcto Bien, entonces ahora está reproduciendo la animación. Tenemos que calcular las balas cada vez que estamos recargando. Entonces sigamos adelante y hagamos eso. Déjame simplemente alejar esta multidifusión porque necesitamos el código aquí Ahora hay que estar realmente despierto porque hay muchas matemáticas pasando cuando calculamos las balas. Bien, primero lo que tenemos que hacer, tenemos que tomar el arma equipada, tenemos que averiguar las balas extra que tenemos. Porque si no tenemos balas extra, realmente no tiene sentido recargar Ahora lo primero que quiero preguntar es, es este MO extra que tenemos en esta arma, es mayor o igual a? Ahora déjame pegar esto aquí abajo. ¿Es mayor o igual al MO máximo en la mag? Ahora por qué preguntamos sobre esto es porque digamos que este es el AK, y el AK tiene 30 aquí en el max M en la mag si tenemos más que eso como el MO extra. Ahora sigamos adelante y hagamos una sucursal. Y déjame conectar esto aquí abajo. Si eso es cierto, simplemente podemos seguir adelante y tomar esta arma equipada y obtener el MO y mag actuales. Y establecer ese MO actual, y podemos simplemente configurarlo a lo que sea que esté aquí como la M en el, si eso tiene sentido. aquí descubrimos que nuestro MO extra es mayor o igual a lo que podemos tener dentro de la mag. Eso significa que la mag puede estar llena. Sólo estamos llenando todo el mag aquí, así como así. Pero antes de hacer esto, también necesito calcular lo que nos quede en nuestro MO actual porque tenemos que restar de aquí Tomemos este MO extra y digamos menos. ¿Qué necesitamos para restar de aquí? Tenemos que restar lo mucho que tenemos ahora mismo en nuestra mag Si solo busco MO actual en mag este año, necesitamos restar el MO máximo en mag del M max actual Vamos a darnos un ejemplo para que no sea demasiado confuso. Puede sonar muy confuso. Por ejemplo, digamos que mi max MO ahora mismo en el AK es 30. Ahora mismo me resta. Digamos que me quedan 27 MO. En mi mag actual sólo disparé tres balas. Ahora tengo 27 aquí. 30 que es el máximo -27 que es 33. Voy a restar tres de mi MO extra si tuviera 90 como mi MO extra, ahora tengo 87 porque solo disparé tres balas Ahora la matemática tiene sentido aquí para ésta. Ahora bien, este valor, necesito establecer mi M extra actual aquí. En lugar de copiar pegar esto. En realidad sólo voy a dibujar de aquí y decir M. extra Podemos establecer eso a este valor. Sigamos adelante y hagamos eso. Y sigamos adelante y conectemos esto también. Voy a hacer algunas notas redireccionadas y re, explicarte esto solo para asegurarme de que estamos en la misma página Todo bien. Entonces ahora he creado notas traseras y he organizado esto. En realidad este necesitamos extenderlo un poco porque puedo ver que estamos recibiendo un dólar más adelante porque estamos preguntando si el MO adicional actual es mayor o igual que el MO. Y si ese es el caso, lo estamos configurando, estamos configurando el MO actual al MO máximo porque podemos pagarlo, tenemos suficientes balas. No obstante, cuando tenemos como, digamos que nos quedan cinco balas. Entonces, si solo abro la interfaz de usuario para que podamos entender mucho mejor. Digamos que me quedan cinco balas aquí. Tengo algo como digamos que quedan diez balas. No lo va a poner en 15, en realidad va a estar mal aquí. Lo que tenemos que hacer es que tenemos que preguntar es el MO adicional actual que tenemos, necesitamos agregar esto aquí más el actual. Tenemos que sumar ambos. Obtenemos la M actual más las juntas. Si esos son mayores o iguales el max M en max, ahora es correcto y no conseguimos un dólar con este. Sé que podrías necesitar entender esto como podrías necesitar simplemente publicar este video y tratar entender la lógica detrás de esto. Es pura matemática. Incluso puedes escribirlo en papel. Es mucho mejor. A veces cuando creo lógica así, escribo en papel, está frente a mí, es mucho más fácil de entender. Básicamente solo estamos preguntando, es el MO extra actual que tienes más el MO actual en mag, son mayores o iguales al MO máximo? Si es así, eso sería falso porque el total apenas sería 15 y el máximo en Mac sería de 30. Entonces sería falso. Y aquí haríamos algo así. Bien, entonces ahora eso es correcto. Y también recordemos aquí cuando restemos aquí y volvamos a poner el MO extra actual, tomemos una pinza y asegurémonos de que no vaya por debajo de cero Y vamos a conectarlo aquí. El máximo es solo este MO extra. De hecho podemos simplemente tomar este o simplemente puedes copiarlo y pegarlo solo para que vea para que se vea mucho mejor y más legible así aquí. Ahora cuando es falso, y sólo me voy a alejar este poco, así que se ve mucho mejor. Ahora cuando es falso, lo que tenemos que hacer, tenemos que tomar esta arma y necesitamos obtener el MO actual en Meg, y tenemos que establecer ese valor. A lo que tenemos que fijarlo es digamos que fue el caso como este año. Aquí nos quedan cinco balas, aquí tenemos diez balas. Tenemos que decir cinco más diez, es decir 15. Y tenemos que fijar eso a la cantidad actual de balas. De hecho, tenemos que tomar esto aquí arriba. Tenemos que decir MO extra actual que tenemos, que son diez por ejemplo, más los cinco que son 15. Y tenemos que ponerla aquí abajo. Y eso se hace siempre que no nos queden más balas. El M extra más el MO actual en mag, no son ni siquiera mayores que el MO máximo en el mag. Entonces solo necesitamos tomar todas las balas, juntarlas y colocarlas dentro de nuestra actual mag. Algo así aquí. Bien, ahora esto está atendido. También tenemos que asegurarnos de que la cantidad extra de balas aquí, tenemos que ponerla a cero. Ahora, porque hemos metido todas las balas en la mag, tenemos que llevarnos esto, tenemos que decir extra. Tenemos que decir establecer el MO extra actual para que sea cero. Ahora también tenemos que recordar actualizar la interfaz de usuario. Déjame guardarlo todo y digamos actualización de CL I. Conectemos este de aquí, y conectemos este de aquí. Necesitamos actualizar la interfaz de usuario después de estos eventos. Déjame hacer doble clic en éste. Haz que se vea mucho mejor así aquí. Ya podemos tomar, no, sólo voy a copiar esto pasado aquí. Ahora podemos enchufarlos, vamos a conectarlos de manera diferente aquí. Primero, el MO actual, en mag y MO extra. Solo presta atención a lo que estás enchufando aquí. Compilemos ahora y guardemos, y ahora probémoslo. La razón por la que escribí la lógica aquí en las cataratas es porque estoy esperando que termine esta animación antes de que vamos a permitir que el jugador establezca la cantidad de balas correctamente. Porque en realidad, no quiero darle balas al jugador durante la animación. Quiero esperar a que termine la animación. Cuando, se cae, va a reproducir este código aquí abajo. Bien, para que veas que tienes que estar un poco despierto para este código de aquí. Nuevamente, siéntete libre de hacer una pausa, echarle un vistazo, obtener un papel y un bolígrafo y simplemente escribir los valores. Intenta hacer las matemáticas y ver si tiene sentido para ti. Sigamos adelante y hagamos clic en Reproducir. Juega como terrorista. Y déjenme tomar la M cuatro por ejemplo. Permítanme maximizar la ventana gráfica. Ahora si sigo adelante y disparo todas mis balas, cuando golpeo todavía puedo disparar. Se puede ver que sigue fastidiando. Puedo disparar cada vez que sigo sosteniendo mi ratón. Aún no hemos hecho esta condición . Lo vamos a hacer más tarde. Pero si suelto mi mouse ahora, voy a recargar y en realidad va a calcular las balas correctamente si solo sigo haciendo eso Y se va a volver a cargar. Voy a hacer el último aquí. Voy a volver a cargar, y así es como se ve Se puede ver que bichos aquí al final. Eso es porque en realidad no hemos hecho ninguna condición aquí. Si vuelvo aquí y me dejo tomar el código que escribimos con la secuencia. Si acabo de encontrar la secuencia aquí arriba, esta es la secuencia que estamos filmando. Y entonces estamos preguntando aquí si el Mo actual en mag es igual a cero. Esta es la única condición que estamos pidiendo. Necesitamos agregar algunas condiciones para que no se baje así. Pero por ahora, guarda todo, ahora esto es correcto, es como se ve el código. De nuevo, siéntete libre de echarle un vistazo de nuevo, sé que es confuso. Esta es la matemática más dura hasta ahora que hemos hecho para el juego, pero en realidad no es tan difícil una vez que la pones abajo en papel. Así que vamos a guardar todo y pasemos al siguiente. 148. Condiciones de rodaje en 10.19: Bien, bienvenido de nuevo. Ahora hagamos las condiciones de disparo para que no disparemos al azar cuando estamos recargando y cosas así Así que empecemos aquí con el arma de disparo. No quiero disparar mi arma cada vez que estoy recargando. Ahora mismo, no podemos disparar el arma cuando estamos desarmados o cuando todavía estamos equipando el Además, no quiero disparar mi arma cada vez que estoy recargando. Siempre que la recarga aquí sea falsa. Entonces no recargaremos, podemos seguir adelante y agregar un pin y agregarlo a aquí Adelante y compilar, bien, para que se cuide de eso. Ahora, bajemos a esta parte aquí sobre la secuencia aquí. No quiero disparar siempre que tenga cero balas. Tengo que escribirlo aquí antes de tocar el efecto y así sucesivamente. Necesito decir si tengo cero balas, no me interesa jugar todo esto. En realidad es lo mismo que éste. De hecho voy a convertir esto en una función ya que estamos reutilizando esto, colapsar esto a una función y voy a llamar a esto está fuera de MO, hazlo puro porque solo estamos obteniendo información No estamos fijando nada cuando el M Mac actual es cero, eso significa que nos quedamos sin balas. Si esto para recargar, si estás fuera de MO, entonces puedes seguir adelante y recargar Eso tiene sentido. Ahora para este de aquí arriba, vamos a pegarlo. Escribamos n lingotes y seleccionémoslo. Cuando no estamos fuera de MO, queremos seguir adelante y disparar. Si estamos fuera de MO no queremos disparar también para la recarga. Tomemos la recarga y digamos si no estamos recargando queremos seguir adelante y disparar Si estamos recargando no queremos seguir adelante y disparar. Eso es lo que está diciendo ahora mismo. Déjame seguir adelante y alejar todo esto. Yo creo que muy pronto limpiamos todo el proyecto porque se vuelve a ensuciar porque estamos escribiendo mucho código ahora mismo Pero como pueden ver aquí, si no estamos fuera de MO y si no estamos recargando, entonces podemos seguir adelante y disparar las armas aquí abajo Cuando estamos recargando el arma, no quiero recargar dos veces ésta en realidad, ya que es una secuencia, solo toma esto en cuenta Y cuando llega hasta aquí abajo, no toma esto en cuenta. De hecho hay que agregar esto aquí abajo también. Cuando no estás recargando, tienes que recargar aquí No queremos recargar una y otra vez cuando ya estamos Y también hay otra condición ahora cuando disparo mi arma. También quiero asegurarme de que en realidad tengo MO extra cuando recargo Porque te puedes imaginar aquí, por ejemplo, digamos que tengo 15 balas y tengo cero como balas extra. En realidad va demasiado si recargo, si disparo las armas o disparo al MO y llega a cero, en realidad va a recargar Tengo que preguntar aquí si tengo MO extra. La forma en que hacemos esto de nuevo, tomemos el arma rápida y digamos obtener el MO extra actual extra. Si eso no es igual a cero, igual que no es igual a cero, entonces queremos seguir adelante y hacer todo esto. Déjame conectar esto aquí y conectarlo. Solo nos estamos asegurando de que en realidad tengamos MO adicional. Antes de recargar, permítanme simplemente llevar este colapso a una función nuevamente y llamar este como MO extra nuevamente, hazlo puro Adelante, pongámoslo aquí. Y llévate esto aquí abajo también. Bien, sigamos adelante y compilemos. Creo que eso fue todo. Vamos a hacer clic en play. Y tal vez nos falta algo. Tenemos que probar el juego haciendo clic en jugar. Ahora voy a saquear mis cuatro y voy a disparar mi arma Como puedes ver aquí, si solo sostengo mi ratón, en realidad ya no va a disparar, va a dejar de disparar. Entonces sostengo mi ratón. Va a dejar de disparar automáticamente. Yo sólo sigo disparando aquí, cero balas. También está haciendo eso ahora mismo. Por alguna razón en realidad no está calculando correctamente. Cuando disparo mi arma bajo 20 balas, en realidad está molestando. Creo que también lo hizo en la lección anterior. Déjame echarle un vistazo a lo que está pasando mal aquí. Debe ser algo aquí arriba cuando en realidad restamos la bala Porque cada vez que disparamos, es hacer eso. No está aquí porque estamos atravesando y disparando el arma. Creo que es algo dentro de aquí. Estamos tomando el MO en el menos uno, porque aquí hemos escrito uno que se está estableciendo aquí. Y establecer el MO actual en su configuración a la variable correcta por aquí. Este es el equivocado. Estamos estableciendo el máximo al MO adicional actual. Si tu MO adicional actual es uno, este en realidad se va a establecer en uno automáticamente. Aquí hay un error. Lo que tenemos que hacer, vamos a esto, sí, tomemos esto aquí, digamos variable de nombre. Vamos a conseguirlo aquí. Vamos a obtener información sobre armas. Obtén la información del arma igual que antes. Descomponerlo y este es el MO actual. Y tomemos el Max MO y mag y coloquemos aquí en su lugar. No usemos este, solo usemos este de allá en su lugar. Déjame hacer clic aquí y ocultar pines desconectados. Y eso debería funcionar perfectamente. Ahora, el error debería ser arreglado. Creo que también sucedió en la lección anterior. Entonces haciendo clic en Play, hagámoslo ahora. Sólo voy a disparar todas las balas. Y mostrarte ahora estoy disparando las balas finales recargas y disparo Se puede ver que ahora es correcto. Ya no puedo disparar cuando estoy a cero balas y todo está funcionando a la perfección. Ahora tengo que verificar esto para el cliente también. Recuerda, tienes que revisar al cliente, aunque funcione en el servidor, podría estar equivocado. Cuando suelte esta arma ahora y la recojo, puedes ver que en realidad tiene la cantidad correcta de balas. Cuando me quedan diez balas, nueve, puedo soltarlas. Puedo recogerlo. Tiene la cantidad correcta de balas. Si alguien más lo va a saquear ahora tengo que probarlo con el servidor también Si solo traigo el servidor aquí, y minimizo a los dos aquí como el servidor, puedo soltar el arma a medida que el cliente se vaya. Aquí como servidor, voy a recogerlo. Y si solo maximizo esto, en realidad es la cantidad correcta de balas. Si disparo como servidor, ahora quedan cuatro balas. Aquí como cliente, puedo salir a recogerlo y quedan cuatro balas. Bien. Eso es correcto. Todo parece funcionar perfectamente. Y lo hace también para el AK. Tratemos de disparar algunas de las balas aquí también. Todo está funcionando bien. Bien, arreglamos toda la caja. Ahora mismo, todo está funcionando correctamente. Hagamos la recarga con tecla del teclado en la siguiente lección 149. Recarga un arma de 10.20 con una tecla de teclado: Bien, así que sigamos adelante y recarguemos con el teclado Entonces sigamos adelante igual que antes, vamos al jugador e Input. Y haga clic derecho aquí, vaya a entrada, haga una nueva acción de entrada. Llamemos a esta arma de recarga. Y vamos a abrir éste, en realidad solo el contexto de mapeo. Agreguemos un nuevo mapeo. Ve al fondo, selecciona el arma de recarga uno y sigue adelante y presiona la tecla R. Voy a recargar con mi tecla R en el teclado y luego presionada aquí, solo jugamos esta vez y estará mucho más optimizada Bien, por aquí con el set se está recargando arma. Yo sólo voy a hacerlo arriba de aquí. Recargo arma y voy a tener esta mi acción de entrada simplemente cuando presionamos la tecla R, solo queremos decir set está recargando para ser verdad Solo queremos recargar cada vez que pulsamos el botón. Sin embargo, recuerda que necesitas algunas condiciones porque no quieres simplemente recargar Porque ahora mismo si sólo juego, sólo puedo presionar sobre la R. Ahora mismo, por ejemplo, tomemos esto. Sólo puedo presionar R, a pesar de que tengo balas completas. Puedo presionar una R. No tiene ningún sentido. De hecho puedo presionar un Re. Siempre que no tengamos ningún arma equipada, también puedo presionar R y eso nos dará a Bucky. Nosotros no queremos hacer eso. En primer lugar, tenemos que tomar este tipo de arma equipada y queremos asegurarnos de que no sea igual a armar. Arrastremos de aquí y digamos que no es igual a M y nos estamos asegurando de que no sea igual a D. Bien, entonces eso es lo primero. Solo arrastremos de aquí y digamos lingotes porque necesitamos agregar un par de ellos. Lo siguiente es que si ya estamos recargando, no queremos presionar recargar, así que encontremos nuestro lingote de recarga y digamos N matón Si no estamos recargando podemos seguir adelante y recargar aquí. Bien, así que vamos a agregar un nuevo pin de nuevo. Lo último que quiero pedir es si tengo balas completas. Si por ejemplo, digamos si tengo 30 de 90, por ejemplo aquí, como el AK, no quiero recargar porque tengo balas completas en mi Mac Sólo digamos, tomemos esta arma equipada y consigamos la M. actual Vamos a copiar y pegar la estructura. No quiero volver a escribirlo. Vamos a pegar esta estructura aquí abajo para el arma. Déjame conectarle el arma equipada. Ahora vamos a preguntar, es este MO actual en mag, ¿es esto igual al MO en Ma? Porque si son iguales, significa que tenemos MO completo en nuestra Ma y realmente no necesitamos recargar Yo digo que es igual. Si el MO actual no es igual al MO máximo y a mí, entonces podemos seguir adelante y recargar De lo contrario no volveremos a cargar. Bien, déjeme colocarlo detrás de todo esto así y conectemos esto a una sucursal y conectemos estos juntos. Ahora estamos preguntando, estamos diciendo si no lo estamos, si no estamos recargando y si no tenemos la cantidad total de balas ya en el MO actual y yo entonces podemos seguir adelante y recargar Vamos a tratar de hacer eso. Vamos a compilar, vamos a guardar todo, y vamos a hacer clic en Placa. Si hago clic en R en mi teclado, podemos ver en realidad que estoy recibiendo un error. Permítanme que le eche un vistazo a lo que está pasando aquí ahora mismo. Es sólo decir que la época es ésta. Si acabo de escribir spam R aquí y lo dejo, en realidad me va a mostrar la época en que el arma equipada no es válida. En realidad, necesito tener esto para que sea válido primero, déjame arrastrar todo esto. Déjame tomar el arma equipada, clic derecho, convertir a un get validado. Déjame conectar esto. Nos aseguramos de que el arma sea válida antes de hacer todo esto porque cuando no hayamos saqueado nada antes, si presionamos R, no será válida Ahora ya no estamos recibiendo este bicho. Vayamos a una de las armas ahora. Si presiono R ahora voy a recargar porque tengo MO completo Pero si disparo uno y recargo, entonces puedo seguir adelante y recargar así así Y va a calcular el MO correctamente. Ahora se puede ver que debería decir 39, eso es correcto. Y si disparo a cuatro de ellos y me vuelvo a cargar, debería decir 35 como el MO extra correcto Ahora cada vez que disparo todas mis balas, digamos si calcula correctamente. Ahora déjame disparar a tres de ellos y recargar. Debería decir 12, eso es correcto. Ahora digamos que vuelvo a cargar aquí cada vez que tengo cinco, Solo di 170 Eso también es correcto. Ahora si les disparo a todos, no se va a recargar Y si hago clic en R, ahora se va a recargar Hay esta última condición que tenemos que verificar. Tenemos que verificar si tenemos mes extra. Esto también tiene mo extra antes de que podamos recargar. Ahora toda la caja está arreglada. Ahora bien, no podemos recargar siempre que tengamos cero balas en las magas adicionales Voy a mover este pedacito hacia abajo. Voy a reorganizar esto un poco más tarde cuando terminemos con la sección Así que vamos a guardar todo y pasemos al siguiente. 150. 10.21 recarga armas en el cambio de armas: Bien, entonces la cosa es que ahora mismo queremos recargar también, siempre que estemos en el cambio de arma Entonces ahora puedes ver aquí si tengo cero balas y cambio mi arma, déjame coger rápidamente una pistola y cambiarla. Ahora puedes ver si vuelvo a cambiar, esta es la animación pick up. No es la recarga ahora mismo. Estoy tratando de disparar y no puedo disparar. Estoy tratando de recargar y no puedo recargar. Esto se debe a que aquí cuando recargamos el arma, realidad estamos configurando la recarga para que sea cierta cada vez que recarguemos No obstante, si cancelamos la animación, tocamos el montaje de animación Sin embargo, en realidad no lo estamos completando. Esto nunca se establecerá en falso. Es por eso que en realidad está molestando de alguna manera. Cuando cambiamos el arma, necesitamos configurarla en false y recargarla automáticamente De hecho podemos hacer eso en el arma equipada. Siempre que saqueamos un arma, estamos configurando que este conjunto es un arma de equipo para que sea verdad También lo estamos haciendo siempre que lo equipamos manualmente. No sólo recogerlo, también estamos configurando este conjunto está equipado arma. Recuerden que hicimos este aquí abajo. Déjame hacer clic aquí, Ocultar pines desconectados. Lo estamos haciendo aquí. Siempre que pongamos el arma equipada y terminamos de equipar el arma Sigamos adelante y hagamos eso Recarga automática cada vez que se nos acabe más automáticamente Digamos que la recarga es falsa porque necesitamos establecerla en false siempre que el jugador esté cambiando realmente el, el arma durante la animación de recarga Siempre que terminemos de equipar el arma, automáticamente vamos a establecer la recarga También vamos a recargar el arma. El conjunto se está recargando. Siempre que no tengamos más MO, lo que tenemos que verificar es que tenemos que decir es que el jugador está fuera de MO y ¿ el jugador tiene MO extra? Porque si no tienes MO extra, no tiene sentido recargar Necesitamos a esos dos y necesitamos hacer una sucursal también. Después de eso podemos seguir adelante y recargar. Antes de eso no podemos recargar, necesitamos establecer la recarga para que sea cierta Si no tenemos eso, no vamos a recargar ni hacer ninguna, solo asegúrate de que la recarga esté establecida Porque cuando lo interrumpes aquí a través de la recarga, cuando interrumpes el montaje, nunca vas a poner esto a caídas y tu código se va a reventar. Ahora esto está arreglado, probémoslo. Tratemos de jugar aquí como el terrorista. Voy a recoger los cuatro y voy a seguir adelante y disparar si ahora cambio el arma. Ahora recuerda que la primera animación que va a reproducir es la animación equipar. No la recarga entonces necesita recargar así como así. Ahora se recarga automáticamente cada vez que no me quedan balas cuando lo cambio. Bien, como pueden ver, ahora recargo. Yo cambio el arma y la vuelvo a cambiar. Ahora puedo presionar R y en realidad es recargas. No se desinfla, igual que antes. Vamos a probarlo. Vamos a intentarlo de nuevo. Si tenemos, tenemos cero balas y cambio de arma, no debería recargarse y no se recarga Ahora todo está funcionando perfectamente. 151. 10.22 agrega disparo de pistola: Hasta el momento hemos estado trabajando con el rifle y ahora vamos a seguir adelante y hacer el disparo con pistola ahora. Esto es muy fácil porque ya tenemos la configuración hecha. Vamos a la base de jugadores dentro de aquí. Lo que estamos haciendo ahora mismo aquí en el arma de disparo, cuando estamos disparando el arma, simplemente vamos adelante aquí y jugando el, el temporizador está haciendo un bucle del código y estamos disparando el rifle Ahora cuando tenemos una pistola que queremos disparar, no queremos este temporizador porque no queremos hacer bucle a todo esto. Sólo queremos disparar un disparo porque es una pistola. Por supuesto, si tienes una pistola automática, puedes simplemente volver a usar este sistema porque es una pistola automática. No obstante, es sólo una pistola y solo quiero disparar una bala. No quiero ejecutar este temporizador. Lo que podemos hacer aquí es que en realidad podemos, a partir de esta, puedes tomar el tipo de arma aquí. Ya tenemos el tipo de arma. Lo que puedes hacer es arrastrar desde aquí y decir encender enumeración. Podemos ver con qué tipo de arma estamos disparando actualmente. Puedes salir y conectarte. Cuando estamos disparando con un rifle, queremos tocar este temporizador. Cuando estamos disparando con una pistola, no queremos hacer nada porque recuerden que ya estamos disparando una bala. Ya estamos ejecutando todo este código aquí. Ya estamos manejando todo esto aquí con este disparo inicial de arma, porque lo hemos llamado aquí. En realidad, estás acabado, creo . Vamos a hacer clic en play. Entonces eso fue muy fácil si solo hacemos clic, probémoslo para el cliente aquí. Ahora puedo ver aquí, ya no puedo disparar. Sólo estoy disparando una bala. Yo creo que es. Porque aquí estamos configurando esto, podemos volver a disparar. Estamos cerrando éste. Estamos haciendo este código una vez y cada vez que disparamos una bala, en realidad no estamos haciendo más. Esto se debe a que aquí cuando es falso, recuerden que ya pusimos el arma de disparo en falso. ¿Por qué vuelve a hacer esta toma? Intenta responderla tú mismo si puedes. Sin mi ayuda. Ahora, te puedo dar la respuesta. El problema es que ahora mismo es que nunca entramos en este temporizador. Este nunca será válido. Aquí. Estamos preguntando, ¿esto es válido? Eso va a ser falso porque nunca hemos ejecutado este temporizador. Ahora, corriendo la pistola para realmente aquí desde las cataratas, necesario conectarla para poder disparar de nuevo. Y voy a hacer algunas notas de Mirarte y ahora debería funcionar Si compilo ahora y hago clic en play y selecciono terrorista de nuevo y cojo mi pistola Ahora puedes ver que en realidad puedo disparar mi pistola sin ningún problema y todo está funcionando como se supone que debe hacerlo. 152. 10.23 Detén tu VFX en el cambio de armas: Pero ahora tenemos un problema. Si juego como servidor, por ejemplo, en realidad vamos a jugar como cliente. Si juego como el cliente, puedes ver, intenta echarme un vistazo aquí en el servidor uno. Se puede ver aquí, se puede ver cuando disparo y me cambio de arma. Si solo disparo y cambio de arma, en realidad puedo disparar el arma todavía en el suelo. Y el destello del hocico está al lado de mi pierna. Y mira que se ve muy raro. Gato dispara mi arma y cambia y se ve así y todo está como desconectado. En realidad, tenemos que dejar de disparar cada vez que cambiamos el arma porque no queremos hacer eso. Sigamos adelante y cerrémoslo. Lo primero que quiero hacer aquí en el arma caliente ahora mismo, estamos cancelando el arma caliente cada vez que soltamos el botón del mouse No obstante, también quiero cancelarlo siempre que esto no sea cierto. Siempre que estemos recargando o equipando una nueva arma, o vamos al estado desarmado, en realidad quiero dejar de disparar Vamos a copiar esta. Pégalo. Vamos a conectarlo con éste. Aquí, déjame alejar esto un poco. Y aquí está. Estamos cancelando el arma de disparo siempre que uno de esos no sea cierto, realidad podemos seguir adelante y hacer clic en reproducir y ver cómo se ve De nuevo, voy a jugar como cliente, y voy a echar un vistazo aquí en mi pantalla grande para ver cómo se ve. Entonces, si solo disparo y cambio, ahora sí se detiene. Sin embargo se puede ver que todavía hay un flash de hocico jugando Cuando me cambio, se puede ver en el suelo. No se registra demasiado rápido. Si disparo y cambio, puedes ver que sigue jugando, ese hocico parpadea en el suelo que todavía parece buggy en el juego Así que tenemos que arreglarlo. Bien, hagámoslo aquí. Si encontramos el flash del hocico, voy a limpiar todo esto después de esta sección Necesitamos tener esto limpio antes continuar así que en realidad es más fácil trabajar con el flash de hocico es aquí abajo donde toco el efecto de sonido también Aquí para el flash de hocico, en realidad voy a escribir click y promocionar este emisor que creamos a una variable y vamos a llamarlo emisor de bozal Vamos a conectarlo aquí De nuevo, sólo voy a tocar el sonido solo para ver cómo es con el sonido también. Vamos a compilar, bien, ahora tenemos este flash de hocico Ahora tenemos que detener este destello de hocico en algún momento. Tenemos que encontrar un temprano aquí en el código. ¿Cuándo podemos cancelar este flash de hocico desde el principio dentro del código para que sea un libro de nueces? A lo mejor cuando estamos equipando el arma. Si sólo voy aquí arriba y tratamos de encontrar arma de equipo aquí, cuando vamos a cambiar el arma por aquí, realmente no lo hacemos. Porque aquí para el arma equipada, estás tratando de buscar el arma en el inventario. Si no lo tienes en el inventario, si esto es falso, en realidad no estás haciendo nada. Realmente no tiene sentido detener el destello del hocico si no tienes nada en el inventario y no vas a cambiar el arma aquí en el arma Quip Creo que lo haré aquí cada vez que realmente encuentre el arma en mi inventario porque ahora mi personaje está cambiando a otra arma aquí. Quiero tomar mi emisor flash bozal y voy a hacer click derecho y decir convertir a un get validado Entonces voy a conectarlo aquí. Si es válido, permítanme simplemente alejar un poco todo este código para que pueda trabajar aquí. Siempre que sea válido, voy a arrastrar y decir destruir componentes, Destruir un componente y luego voy a continuar. No obstante, si no es válido, sólo quiero continuar. No quiero destruir nada. Si no es válido, sólo tienes que seguir adelante y continuar con lo que hayas hecho antes. Sigamos adelante y echemos un vistazo aquí a la carne del hocico. Lo que voy a hacer es que voy a tomar esto aquí. Antes de hacer eso, en realidad aquí también podemos decir que no puedes hacer esto siempre que estés equipando el arma Siempre que lo estés equipando aquí arriba. Cuando decimos set equipar arma es equipar arma, tenemos que dejar de disparar también Si solo cojo esta arma, si la encuentro aquí, esta. Y puedo tomarlo y colocarlo aquí. Y otra vez, bien, no tire adentro y puedo conectarlo. Si no estás equipando también el arma , puedes seguir adelante y disparar Voy a copiar todo esto y voy a pegarlo justo antes del lugar emisor De hecho voy a hacerlo, antes de hacer todo esto, voy a comprobar si todavía puedes hacer esto. Todo bien. Lo que también tenemos que hacer aquí, creo. Vamos a subir aquí en el arma que se encuentra en el inventario. Porque cuando encuentras un arma en el inventario, ya no quieres jugar el flash del hocico aquí. También podemos verificar antes de tocar el emisor y podemos evitarlo. Podemos tomar esta arma encontrada en inventario y ponerla aquí, consíguela aquí. También, lo configuré para replicarlo. No se replicó. Lo configuré para replicarlo porque recuerda ahora estamos en el cliente, estamos en la multidifusión, y esto también lo usa el Hay que replicar la variable para que el cliente sepa de qué estamos hablando Déjame solo escribir lingotes, siempre que no se encuentre en el inventario, podemos seguir adelante y disparar o jugar a este emisor, sin embargo se encuentra en el Creo que esto es un salvavidas para nosotros porque está jugando desde el principio cada vez que estamos cambiando de arma Esta es la primera variable que se está cambiando. Está cogiendo esto desde el principio y no tocará el flash del hocico Ojalá, necesitamos probar constantemente porque realmente no sabemos antes de probar, juguemos como servidor ahora mismo, en realidad, juguemos como el cliente. Como cliente aquí arriba, déjame jugar. Ahora voy a echar un vistazo aquí en mi servidor otra vez. Si disparo como cliente y cambio, traté de hacerlo un par de veces, eso fue todo. Hay muchos cheques que estamos haciendo. Esto es necesario para no jugar ese efecto de error. Ahora no está afectando realmente el juego, sin embargo, todavía lo está afectando visualmente. No afectando el daño ni nada porque esto en realidad no se juega. Esto se detiene desde el principio. En realidad no estamos dañando al jugador. Recuerda, estamos creando el daño del jugador después de la carrera de línea. Es solo un error visual del que nos deshicimos. Bien, sigamos adelante y compilemos todo. Vamos a guardar todo y pasemos al siguiente. 153. Animación de tiroteo en 10.24: Ahora necesitamos una animación de tiro porque ahora mismo el jugador está estático. Siempre que filmemos, agreguemos una animación. Vamos a los activos y animaciones. Y aquí están todas las animaciones que creamos antes. Si solo buscas tomas y creo que en realidad se llama fuego. Si solo busca fuego, se puede ver pistola de fuego y rifle de fuego. Estas son las animaciones que podemos usar para agregar siempre que el jugador esté disparando el arma. Para estos dos, voy a llevarlos a los dos. No creo que necesitemos la C, tal vez lo hagamos más tarde. No estoy seguro ahora mismo. Pero vamos a usar estos por ahora. Y volvamos a esos si los necesitamos. Vamos a hacer clic derecho aquí, ir a Crear y crear un montaje de animación igual que antes Para estos dos aquí, ahora hemos creado dos montajes de animación Voy a renombrarlos, Quitar montaje del final Al principio, voy a llamarlo como prefijo solo para mantenerme consistente con nuestro código actual en este momento. Que esto y llame a este otro 11 también. Si solo busco para poder ver los montajes de animación. Puedo hacer click en la pistola primero. Esto es una recarga. Estoy pinchando en el fuego de pistola, es este de aquí. Y lo que podamos hacer aquí de nuevo, que cambiar la ranura a la parte superior del cuerpo, igual que lo que hicimos antes. Nombre de ranura, parte superior del cuerpo así. Y vamos a cerrarlo. Y abramos también el rifle. Cámbialo a la parte superior del cuerpo, así como así. Bien, y guarda todo ahora. Vamos a cerrarlo. Bien, lo que tenemos que hacer ahora mismo, tenemos que reproducir esta animación. Siempre que disparemos el arma, necesitamos nuevamente agregarla a nuestra estructura. Volvamos a los planos. Voy a quitar esta palabra de búsqueda para que podamos ver. Voy a ir a estructuras y abrir la información de armas. Lo que podemos hacer aquí, podemos agregar una variable llamada shoot animation para esta. Ahora puedes tener una animación de disparo diferente para cada arma. Esto es genial. Todo está personalizado en esta animación de disparos de juegos. Y voy a tenerlo justo después de la recarga o justo antes de la recarga Equipar, disparar, Recargar. Bien, sigamos adelante y compilemos o simplemente guardemos aquí. Vamos a abrir nuestra tabla de datos. Una vez más, aquí dentro de nuestra tabla de datos. Una vez más, pasemos aquí a la animación de equipar. Permítanme agregar uno nuevo a la derecha y llamar a este rodaje animación. Ahora podemos minimizar esto aquí en el juego. Y volvamos a encontrar nuestro montaje. Si busco uno y me llevo este rifle de fuego copia la referencia. Y déjame volver a la tabla de datos. Pégalo para el AK y M cuatro, estos son los dos primeros. Después vuelvo y copio la referencia para el montaje de animación de puño Copia la referencia, vuelvo aquí y la pego para el disparo con pistola. Bien, eso fue todo. Sigamos adelante y haga clic en archivo, descargue archivo CSV. Vamos a abrirlo aquí. Voy a volver a cambiarle el nombre igual que antes. Renombrarlo T Información de arma. Y ya tengo uno aquí, así que en realidad voy a copiar este. Eliminarlo aquí, y cambiar el nombre de éste. Ahora volvamos a nuestro juego. Vamos a planos, tablas de datos dentro de aquí De nuevo, voy a cerrar esto aquí. Puede arrastrar esta tabla de datos aquí. Y ahora está actualizado. Bien, vayamos al código ahora y lo codifiquemos en la base de jugadores dentro de aquí cada vez que disparemos. En realidad también está aquí si simplemente arrastramos todo esto lejos. Así que vamos a reproducir la animación junto con tocar el flash de boca y el efecto de sonido porque sigue siendo solo una animación Y necesitamos reproducirlo en una multidifusión porque todos los jugadores necesitan ver esa animación Tomemos de nuevo la malla. Una vez más, digamos montaje. Y podemos tocar este montaje, y sigamos adelante y conectemos todo Y ahora lo que podemos hacer también aquí para que juegue el montaje Ahora lo tenemos de la tabla de datos. Déjame copiar todo esto. Pégalo aquí abajo, y déjame esconder alfileres desconectados para el arma Ahora no tenemos realmente una referencia para el arma. Esta no es la clase de armas, en realidad es solo la malla de armas. Se puede ver aquí. Si recuerdas, si volvemos al arma caliente, echamos un vistazo aquí al canal del servidor, arma Esta es la malla de armas. Esta es la malla esquelética. Recuerden, esta no es la clase de planos en sí. Esta es la clase de planos. Esta es la malla esquelética. Y la malla esquelética es la que estamos enchufando al arma aquí Esta es en realidad la malla esquelética. No es la clase de planos en sí. Necesitamos la cláusula blueprint porque no es realmente la malla esquelética que ponemos dentro de aquí. Es éste. Para que veas si arrastro de todo el camino hasta aquí y lo enchufar aquí, puedes ver que encaja entre sí. Lo que tenemos que hacer aquí para optimizarlo mejor. De hecho voy a cambiarlo si hacemos clic en la multidifusión y si hacemos clic en el Plus y buscamos la base de armas Y elegimos la base de armas, solo vamos a llamar a esta vieja, así que en realidad puedo cambiarle el nombre a arma. Recordamos compilar primero antes de que puedas hacer eso. Ahora se llama Arma, y ahora podemos seguir adelante y conectarla aquí. Ahora podemos ver que funciona, bien. Ahora todo esto realmente tiene que estar aquí porque ya tengo esta referencia de arma. Ahora realmente puedes obtener toda esta información aquí para este efecto V que has conectado aquí. Recuerda que este es el rodaje, tienes el efecto de sonido de disparo y tienes el flash de boca Y puedes conectar el flash del hocico a este de aquí. Y puedes conectar el efecto de sonido de disparo a este aquí. También puedes conectar la animación de rodaje que acabamos de hacer aquí. Realmente no necesitas también el arma, Podemos obtenerla de aquí. Si solo arrastras desde aquí y buscas variable arma, esta es la malla esquelética También puedes conectarlo aquí. Entonces puedo ver que todo esto en realidad es inútil. Para que podamos eliminar éste, y éste, y éste y salir y compilar. Tenemos muchos errores porque ahora no los estamos usando. Sigamos adelante y eliminemos todo esto. En realidad vamos a eliminar esto haciendo clic en el botón Alt en el teclado. Y dando click aquí, dando click aquí, dando click aquí. Y voy a quitar este nodo de reencaminamiento, eliminar estos, dar clic aquí, ocultar Ahora necesitamos una referencia al arma. Es esta arma de aquí arriba. Sólo puedo hacer clic y arrastrar por ahora. Voy a hacerlo mucho más limpio después. Así que vamos a compilar por ahora. Ahora esta arma de disparo es correcta. Bien, realmente no tenemos más referencias ahora para asegurarnos si tengo más referencias a esto o no. Solo para asegurarme de que no estoy molestando, puedo escribir, dar clic y encontrar referencias Y se puede ver que ya sea aquí o aquí. No tengo más referencias que esto. Bien, entonces ahora todo está bien. Y ahora también hemos conectado la animación de rodaje. Y no quiero tocarlo cuando esté completo, como lo que hicimos antes. Recuerden los otros montajes que hemos creado antes. Por ejemplo, éste. Realizamos este evento aquí cada vez que completamos el montaje de animación Ahora para el arma de tiro, solo quiero tocarla y luego continuar con mi código. No quiero esperar a que esté completo antes de tocar mi efecto aquí. Esto está bien. Compilemos y guardemos todo ahora. Debería reproducir la animación. Si hacemos clic en play, déjame jugar en el servidor ahora mismo, y selecciono terrorista. Voy aquí y solo disparo una bala. Se puede ver que en realidad está reproduciendo la animación. Ahora sí tenemos un error. Ahora si miro hacia abajo, se puede ver que está reproduciendo la animación aquí en el centro de la pantalla. Se puede ver que va al centro de la pantalla cada vez que disparo, lo cual es muy raro y necesitamos cambiar eso también la animación es realmente lenta. Voy a ir a los bienes y buscar de nuevo a Anim uno. Voy a abrir la pistola aquí para la animación de rodaje para la escala de tarifas. Entonces, qué tan rápido va a correr esta animación. Voy a cambiarlo a tres. Creo que quiero disparar mucho más rápido. También para el rifle, voy a cambiarlo a escala de tres tipos. Dispara mucho más rápido. Bien, ahora vamos a arreglarlo. En realidad, esto también está afectando la recarga y no sé por qué no lo noté antes Creo que estaba ocupado solo hablando y grabando y mostrándote. Pero si solo recargas, ves que esta es la animación de recarga que tenemos hasta ahora Sin embargo, no se está recargando correctamente porque si miro hacia abajo y recargo, realidad está mirando de nuevo en el medio y recargando igual que este problema de disparo que tenemos ahora Bien, tenemos que arreglar esto ahora. Déjame seguir adelante y desconectar el sonido otra vez, solo para que no sea molesto dentro de este curso. Déjame simplemente desconectar el sonido de disparo y compilar ahora. Sigamos adelante y abramos el plano de animación. Porque el problema está ahí ahora mismo. El problema es que para el plano de animación es esta animación de la parte superior del cuerpo y en capas por hueso De hecho, necesitamos jugar esto antes del desplazamiento de objetivo. El desplazamiento de objetivo, recuerden, es el offset donde aquí como jugador, miro hacia arriba y hacia abajo con mi arma y el movimiento así. Necesitamos reproducir esta animación de la parte superior del cuerpo antes del desplazamiento de puntería para que pueda mezclarse. Este es el problema ahora mismo, lo que puedo hacer aquí, vamos por aquí. Empecemos con una pistola ahora mismo aquí para esta máquina de estado en caché Permítanme borrar este movimiento de pistola por ahora. Déjame tomar esta capa por hueso y pegarla aquí. Ahora recuerda usar el caché de máquina de estado de pistola. Tenemos la máquina de estado en caché. Si lo encuentro, tenemos esta máquina de estado caché y también tenemos el movimiento en sí Tenemos la máquina de estado en caché y movimiento en caché por aquí Estamos usando la máquina del estado ahora mismo. Déjame copiar y pegarlo aquí abajo también. Esto es solo para la pistola y hagámoslo también por el rifle. Permítanme simplemente borrar esto, clip esto y pegarlo aquí. Déjame tomar esta máquina estatal para el rifle, recuerda que es la máquina estatal. Y copiar y pegarlo aquí abajo también. Y adelante y conéctalo aquí arriba. Bien, así que eso fue en realidad, vamos a copiar y pegar esto. Copiemos todo esto. Voy a borrar esto aquí abajo. Voy a pegarlo. Y voy a conectarlo aquí también. Hagámoslo aquí arriba también. Vamos a copiar la pistola una pistola máquina estatal. Déjame borrarlo aquí abajo. Déjame copiar o simplemente conectar esto aquí arriba. Pegar conectado aquí también. Ahora estamos jugando la mezcla en capas por hueso. Antes de jugar el offset de puntería, esa será la solución correcta. Ahora estamos guardando todo esto en el movimiento de pistola guardado en caché y el movimiento del rifle en caché Podemos seguir adelante aquí igual que antes, clic derecho y buscar caché. Puedes conectar el movimiento de la pistola, clic derecho, buscar caché. Toma el movimiento del rifle caché y sigue adelante y conéctalo ahora También es mucho más limpio que antes y pueden ellos juntos así. Y vamos a compilar y vamos a comprobar si esto funciona o si tenemos alguna caja que necesitamos cuidar. Vamos a hacer clic en jugar aquí como el terrorista. Ahora cuando muestro, si miro hacia abajo, se puede ver que está funcionando. Yo también disparo. Disparo en el medio. Está funcionando también para la recarga. Ahora podemos recargar mientras miramos hacia abajo. No tiene que ir aquí a la mitad. Si disparo, vuelvo a cargar, puedo hacer eso. Si solo tomo una, si abro a este otro tipo, le echo un vistazo a ese tipo de aquí. Para que pueda ver la animación. Recojo la K como puedes ver aquí, disparando. Puedo recargar incluso buscando aquí arriba O si miro hacia abajo, puedo recargar también. Puedo disparar. Y puedes ver mi animación de rodaje. Si me acerco aquí, puedes ver mi animación de rodaje. Y lo mismo aquí, si juego como servidor. Echas un vistazo aquí como cliente. Si solo maximizo esto. Para que veas minimizo un poco esto. Aquí, estoy echando un vistazo al servidor y el servidor ahora está filmando. También lo es, se puede ver la animación de rodaje. Yo también puedo recargar desde aquí arriba. Puedo recargar mientras miré hacia abajo también. Ahora está funcionando bien y se están mezclando. 154. SFX sin munición de 10.25: Para esta lección, quiero mostrarte cómo puedes tocar un efecto de sonido cada vez que estés fuera de MO. Siempre que te quedes fuera de MO, escuchas este sonido de clic del rifle. Puedes intentar implementarlo tú mismo, creo que puedes, si solo le echas un buen vistazo. No obstante, si no estás seguro, sigamos adelante y hagámoslo juntos. Sigamos adelante y abramos al jugador siempre que guarde aquí. Vamos a abrir la base de jugadores dentro de aquí. Nuevamente, necesitamos usar esta multidifusión. Sin embargo, me voy, voy a agregar un matón aquí diciendo que tiene mo Siempre que tengamos MO, podemos jugar todo esto. Si solo arrastro y escribo aquí una rama como esta, siempre que tengamos MO, vamos a tocar todo esto como lo que hemos hecho antes. No obstante, si no tenemos Mo, quiero tocar otro efecto de sonido. Quiero tomar este sonido puede sólo desde aquí y decir ubicación. ¿Qué sonido quieres tocar ahora? Tenemos que agregarlo una vez más a la estructura. En cuanto a la ubicación, ya tenemos la ubicación. Podemos simplemente enchufarlo aquí y compilarlo ahora para la estructura. Sigamos adelante y abramos la estructura, y hagamos una nueva variable. Podemos simplemente llamar a esto de M efecto de sonido. Cambiemos esto a un sonido, adelante y selecciónelo. Y adelante y ahorra. Creo que lo voy a mover hasta donde está bajo el efecto de sonido de disparo. Todos los efectos de sonido están juntos. Vamos a guardar todo una vez más, abramos la tabla de datos. Vayamos a la derecha aquí al final aquí después del efecto de sonido de disparo. Voy a hacer click derecho y agregar uno a la derecha. Entonces podemos decir fuera de MSX y dentro de aquí, vamos a copiar la referencia En este momento no tenemos ninguna referencia porque aún no hemos importado nada. Vamos a la carpeta de audio aquí. Abre los efectos de sonido. Si vas a los materiales de causa, he incluido para ti algo de audio. Si abres este audio y yo he incluido esto fuera de MO, si solo hago esto más grande con M K 47, MO para uno y con pistola MO. Y selecciona los tres. Haga clic y arrástralos al navegador de contenido. Dentro de aquí, seleccione los tres clic derecho y cree múltiples señales. Una vez más, voy a renombrarlos a todos solo para mantenerme consistentes, les renombramos S C como prefijo para Sound. También voy a hacer eso por la pistola aquí. Hagámoslo para el último. El último es el K 47. Llamémoslo Sonido al principio así como así. Bien. Voy a abrir el AK 4071. También voy a abrir la pistola y voy a abrir las cuatro. Quiero reducir el sonido porque probablemente sea muy ruidoso para mí. Voy a ponerlo a 0.2 también para que no te moleste en este curso. Así que ahora puedo oírlo. Se trata de los efectos de sonido fuera de MO. Ahora vamos a cerrarlo y copiemos las referencias. Hagamos clic derecho en la referencia de copia AK. Voy a volver a mi tabla de datos para la K, esta es la primera. Va a pegarlo para los cuatro, haga clic derecho en referencia más allá de la pistola, haga clic derecho p referencia y péguela aquí también. Descarga de archivos, descarga, CSV, igual que antes. Abre la carpeta de descargas. Y dentro de aquí, una vez más voy a borrar el viejo, pegarlo en el nuevo, cambiarle el nombre y ir a tablas de datos y arrastrarlo hasta aquí se actualiza, y vamos a guardar todo. Bien, volvamos al jugador y abramos la base de jugadores. Ahora para éste, ahora tenemos esto aquí. Lo que podemos hacer, podemos usar esto fuera de M efectos de sonido. Sólo voy a arrastrar esto aquí de vuelta porque en realidad no necesitamos copiar y pegar esto. Una vez más voy a hacer re escribí notas para todo esto. De hecho, es mejor mirar dentro de una o dos lecciones aquí. Lo que podemos hacer es salir del efecto de sonido MO, podemos arrastrarlo hasta aquí. Ahora va a reproducir el efecto de sonido siempre que no tengamos MO. Ahora no estamos completamente terminados porque en realidad también necesitamos definir cuándo tenemos MO o no. Aquí en el arma MC disparar. Tenemos que tomar esto, recuerda hacer esto cierto. Este es el código normal que tenemos. Y ya tenemos MO aquí cada vez que estamos filmando. Porque básicamente estamos echando un vistazo aquí si estamos fuera de MO o no y todas esas cosas aquí aquí. Y eso va a ser correcto. Ahora, siempre que no tengamos MO, siempre que esto sea realmente falso, intentemos hacer algo de código aquí. Déjame solo mover esto un poco hacia arriba. Déjame copiar y pegar esto. Déjame mover esto un poco hacia abajo también, solo para que tengamos algo de espacio para trabajar. Ahora para este, vamos a conectarnos aquí. Tenemos que hacer el código para el arma Otra vez, voy a romper la misma arma desde aquí arriba, arrastrarla hasta aquí. Y para la ubicación, es la misma ubicación. Y para el Mo, ahora tenemos que asegurarnos de que tenemos a Mo, porque no queremos simplemente tocar esto cada vez que bajemos por aquí. Básicamente lo que quieres comprobar, queremos reproducir este sonido. Siempre que tengas cero balas, cero balas en el Mac y cero balas en las balas adicionales, realidad podemos usar las balas adicionales para verificar. Aquí creo que ya tenemos una función. Este tiene Mo extra, en realidad podemos usar este. Podemos seguir adelante y decir si tienes X Ramo, vas a seguir adelante y jugarlo con normalidad. Si no tienes Ramo, puedes seguir adelante y reproducir el efecto de sonido siempre que tenga MO extra es falso entonces podemos seguir adelante y reproducir este efecto de sonido de disparo. Donde estemos fuera de esto debería arreglarlo todo. Vamos a compilar y vamos a hacer clic en play. Aquí quiero jugar como los terroristas simplemente siguen disparando mis armas. Voy a seguir filmando y saltarme el video. Bien, ahora estoy en las balas finales. Y si sigo disparando y alcanzo, si llego a cero balas, voy a tocar esto fuera de efecto sonoro. Y se oye, no tengo balas. Si solo cambio aquí y toco los otros efectos de sonido, mira que es normal. Porque recuerden, he desconectado el efecto de sonido ahora mismo he desconectado el efecto de sonido para el rodaje. Si llego a cero balas, se oye que tengo cero balas. Entonces así es como podemos hacerlo. Vamos a compilar y guardar todo como antes de continuar. Ahora, en realidad voy a limpiar todo esto antes de continuar porque parece un desastre. Y también es cómo seguir este curso. Déjame compilar en mi tiempo libre. Yo sólo voy a organizar todo esto, así que es mucho mejor a la vista. Sólo tienes que seguir adelante y crear, redirigir notas, crear comentarios y todo eso Te veré en la siguiente. 155. 10.26 Bullet Impact VFX y SFX: Bien, así que todo se ve bien hasta ahora. Creo que nos faltan algunos efectos visuales y efectos sonido para cuando la bala golpea algo. Ahora mismo cuando estamos jugando y tomo, por ejemplo, los cuatro y trato de rodar aquí, Ahora estoy pegando esta parte aquí, pero realmente no vemos ningún efecto visual en la parte que estamos pegando, y creo que se verá mucho mejor. Sigamos adelante y agreguemos eso. Puedes intentar editarte porque creo que puedes, si intentas pensar mucho más, hagámoslo juntos. Vayamos aquí en la base de jugadores. Al igual que antes, necesitamos crear una multidifusión. Ahora podemos integrarlo aquí y agregar más variables, pero creo que se va a poner un poco desordenado Entonces necesitamos crear uno nuevo. Como pueden ver, he organizado esto aquí, como pueden ver, y les voy a enseñar solo esto un poco. Aquí tenemos el gráfico de eventos. Tenemos el movimiento básico del personaje que hicimos y terminamos. Y en realidad no lo hemos tocado desde hace mucho tiempo en estos momentos. Por cierto, he agregado las funciones a diferentes gráficas. Esto se debe a que si creas mucho código dentro de una gráfica, en realidad empieza a hacerlo, tal vez ya puedas sentirlo en tu computadora. Comienza a. Cuando miras a tu alrededor dentro de aquí, qué puedes hacer, por ejemplo, digamos que quería esta agachada específicamente en otra gráfica Yo solo controlo x para darle la vuelta aquí, control x Luego creo una nueva gráfica llamada, por ejemplo, agacharse. Luego creo una nueva gráfica llamada, por ejemplo, agacharse Es porque a un evento se le llama agacharse. Entonces no puedo hacer eso. Vamos a llamarlo gráfico de eventos agachados o algo así Entonces dentro de aquí, ahora estoy. Dentro de la gráfica agachada, puedo controlar V, y ahí está, tengo la Ahora bien, por algunas razones, es posible que tengas funciones que no se están pegando Déjame simplemente dar click en el control Z aquí, control Z, control control Z hasta que esté aquí. A veces lo que está pasando es si copias algo, digamos que quería copiar esta parte, controlar X, quería hacer una nueva gráfica, llamarla algo al azar, y luego copiar y pegar. Ahora puedo ver cuando lo pegas, esto aparece y dice que algunas referencias de funciones no se pudieron resolver en el nuevo contexto. ¿Te gustaría arreglarlos aquí? Entonces puedes elegir algo. Sin embargo no quieres hacer nada aquí, solo haz clic en Confirmar. Cuando haces clic en Confirmar, puedes ver que tienes muchos errores aquí que necesitas corregir. Sin embargo, no presione en nada. Simplemente puede hacer clic en Archivo y luego clic en Refrescar todos los Nodos. Y eso arreglará todo por ti. Así es como se copia y pega código de una gráfica a otra. Voy a hacer click en los controles solo para volver a lo que tenía antes así. Esto es lo que hice. Acabo de copiar de aquí e hice una nueva gráfica. Yo hice uno llamado Lot Equip y Drop Arma. Aquí está mi Lot y Drop Arma Lógica. Y mi arma Equipar Lógica. También agregué algunos comentarios para usted. Cuando te doy el proyecto final, puedes intentar echarle un vistazo y es mucho mejor verlo que estar desordenado Como pueden ver aquí, esta es el arma del lote y así sucesivamente. Sí, eso es todo. El último gráfico que hice es el arma de disparo y recarga Éste donde tenemos la lógica del arma de tiro. Y trato de organizarlo lo mejor que puedo. Aquí está el arma de tiro multicast, entonces tengo el arma de recarga también Y aquí está la lógica para eso. Muchas barreras para mantenerse organizado, tener múltiples gráficas de eventos. Tenemos el gráfico de eventos normales con solo el movimiento. No puedes renombrarle este, Este es el predeterminado, no puedes cambiarle el nombre. No obstante, hice los otros y los cambié de nombre a Saquear, Equipar, y caer y disparar arma aquí . Recargar también. Es mucho mejor mantenerse organizado y podemos encontrarlos mucho mejor más adelante. También crearé categorías para todos aquellos como te mostré en la lección anterior. Puedes crear categorías y agregarlas aquí. Probablemente sea bueno hacer eso para todas esas y todas tus funciones también. Eso fuera del camino, vayamos al rodaje y recarguemos. En el rodaje y recarga aquí tenemos esta multidifusión donde tocamos el emisor aquí con el flash Sin embargo, vamos a crear uno nuevo para el impacto. Hagamos clic derecho, hagamos nuevos eventos personalizados como antes. Llamemos a este MC Bullet Impact. Vamos a ejecutarlo a través de una multidifusión y confiable también. Ahora lo que necesitamos saber es por supuesto que necesitamos el arma con la que estamos disparando. También necesitamos la ubicación del golpe. ¿Dónde es que queremos engendrar a nuestro emisor? Este es el lugar donde estamos golpeando el lugar del golpe para el arma. Es la base de armas. Adelante, selecciónela y compila. Bien, ¿dónde quieres tocar esto? Queremos tocar esto cada vez que disparemos. Esta es la lógica de tiro. Estamos disparando el arma primero, estamos jugando el efecto, y luego estamos jugando el trazo de línea. Recuerda el trazo de línea, si selecciono el tipo de depuración para que sea persistente para que puedas ver la línea, esta es la línea cuando estamos disparando, esta es la traza de línea. Está disparando esta línea. Ahora sabemos dónde estamos pegando con este rastro de línea después de que en realidad hayamos golpeado algo. Esto es lo que significa, Bloquear golpe después de que realmente golpeamos algo. Queremos jugar este efecto. Entonces solo voy a eliminar este hola por ahora. Juguemos este impacto de bala MC que acabamos de crear. En este momento tenemos un poco de problema porque es un golpe de bloqueo. Y aquí también dice que el actor hit tiene al jugador tecnológico. Ahora mismo, en realidad solo es jugar esto para los jugadores lo que necesitamos para arreglarlo. En lugar de combinarlos, voy a eliminar esto. Tomemos el golpe de bloqueo aquí y conectémoslo. Hagamos una rama y sigamos adelante y hagamos eso. Si es el jugador, puedes hacer algo. Si no es el jugador, puedes hacer otra cosa. Entonces, en lugar de solo agregar aquí, tenemos que jugar este efecto. Realmente no nos importa si es el jugador el que ha sido golpeado o no, simplemente jugamos este efecto de todos modos. Porque si chocas contra una pared, vas a jugar este efecto. Si golpeas al jugador, vas a jugar este efecto. Pero realmente no necesitamos conectarlo después del jugador aquí. Para que podamos conectarlo antes que el jugador. Yo sólo le voy a dar algo de espacio aquí. Podemos agregarlo antes que el jugador. Creo que también necesitamos saber a quién pegamos. Porque si le pegamos al jugador, queremos jugar sangre en vez de solo alguna calcomanía o alguna piedra que le pegamos aquí. Para este, voy a agregar uno nuevo. Vamos a llamarlo hit Actor. Para el exitoso actor, lo puedes ver aquí. Ahora bien, si estás confundido de qué tipo de variable necesitas agregar, puedes simplemente subir aquí. Y este actor de éxito. Si mantienes el mouse sobre él, dice Actor Object Reference. Bajemos aquí, haga clic en él y cambiemos esto a una referencia de objeto actor aquí. Éste, podemos simplemente ponerlo por encima de esto aquí y compilar. Bien, ahora tenemos esa información también. Ahora para el arma, hay que conectarla. El arma está aquí arriba, así que solo puedes hacer clic y arrastrarla hasta aquí. Y permítanme crear algunas notas de ruta traseras para mantenerme organizado. Bien, aquí vamos. Ahora lo hemos creado. Eso está fuera del camino. Lo siguiente es el golpe. El actor hit es solo esta ubicación de hit si haces clic en la flecha, para que puedas ver todos los valores, esta es la ubicación que hemos acertado. Después de que tengamos un golpe de bloqueo, estamos tomando esta ubicación de hit, estamos aplicando a esta multidifusión Volvamos a minimizar esto un poco, y aquí lo tenemos. Voy a conectar esto una vez más. Y después de que golpeemos al jugador, podemos aplicar algún daño. Ahora lo que podemos hacer, sí, podemos bajar aquí. Ahora. Realmente no tenemos nada que hacer ahí fuera. Vamos a engendrar emisor en la ubicación. Vamos a generar emisor en una ubicación. También vamos a reproducir sonido en el lugar también. Ahora si quieres tener calcomanías, si has jugado a Counter Strike antes, sabes que las calcomanías aparecen en la pared. Si le disparas a la pared. Realmente no tengo calcomanías en este curso. Sin embargo, si quieres, puedes de nuevo, simplemente arrastra desde aquí y di calcomanía de desove en el lugar Esto va a generar calcomanías. Las calcomanías son básicamente solo imágenes. Los puedes desovar en la pared. Por ejemplo, una imagen de impactos de bala, puede generar eso a través de una calcomanía de desove en Ya tenemos la ubicación aquí para la ubicación, el tamaño de la calcomanía, puedes hacer 111 por ejemplo, o lo que sea. Aquí podrás volver a seleccionar la calcomanía dependiendo de lo que se encuentre en la estructura. Puedes agregar las calcomanías a la estructura para el arma específica y así sucesivamente, pero realmente no tengo calcomanía, así que vamos a borrarlo Esto será fácil para ti después de que hayamos hecho en todo esto 100 veces. Vamos a borrarlo. Ahora aquí para este emisor de spawn, ahora necesitamos el emisor, también necesitamos el Sigamos adelante y hagamos eso. Vamos a guardar todo, vamos a minimizar esto. Pasemos ahora a la estructura. Ábrelo y aquí vamos a sumar dos variables. Agreguemos uno llamado VFX de impacto de bala. Voy a hacer algo de espacio aquí, realmente no necesitamos juntarlos , Bullet impact VFX Y también voy a añadir otro, Bullet impact. X, uno para el efecto de sonido y otro para el efecto visual. Para el efecto visual, es un sistema de partículas. Y sigue adelante y selecciona eso. Para el siguiente, el efecto de sonido es una señal de sonido. Y Dios, y selecciona eso también para el efecto de sonido. Sólo voy a sí, justo después del efecto de sonido de disparo. Así que solo para mantenerme organizado y por el efecto visual, solo voy a moverlo justo después del destello del hocico Adelante y guarda todo. Y recuerda ahora necesitamos agregarlo a la lo que se llama la tabla de datos. Adelante, abre tu tabla de datos. Bien, así que aquí estoy, dentro de mi tabla de datos. Y ahora para estos efectos de impacto de bala, es después del destello de hocico aquí Voy a agregar una columna a la derecha. Voy a llamarlo con el mismo nombre aquí. Yo sólo puedo copiar y pegar esto. Vamos a un lado y péguela aquí. El siguiente también los efectos de impacto de bala después de los efectos de disparo aquí. Agrega una columna a la derecha y agrégalo aquí. Ahora necesitamos referencias a. Ahora para esos, solo estoy usando los del mercado. En lugar de buscarlo en la carpeta, porque no tengo idea de dónde está, simplemente haga clic en la carpeta Marketplace y solo busque Impact. Y entonces puedes verlas aquí. Lo que voy a usar es quizás este llamado Stone Medium para el efecto de partículas de impacto. Haga clic derecho y copie la referencia. Si lo encuentro aquí, copia la referencia y puedo pegarla para los efectos bullet. Sólo voy a pegarlo para todos ellos. Yo solo quiero tener el mismo efecto visual de impacto de bala para el efecto de sonido. Ahora creo que aquí tenemos algo llamado el impacto del rifle. Sólo voy a hacer doble clic en él y reducir el volumen a 0.2 porque creo que es demasiado alto. Este es en realidad el cuerpo uno, Esto es cuando golpeamos al jugador. De hecho, agreguemos también eso mientras estamos agregados. Vamos a agregar uno para el jugador. Simplemente abramos de nuevo la estructura y agreguemos una nueva variable. Llamémoslo impacto de bala, impacto de bala, efectos de jugador para el otro. Agreguemos éste para el efecto de sonido. Agreguemos uno nuevo. Llámalo efecto de sonido del jugador de impacto de bala. Creo que va a ser mucho más interesante tener a los dos. Busquemos de nuevo el sistema de partículas. Adelante y selecciónala para la otra. Sonido Y solo muévalos de nuevo para el impacto de bala, efecto visual y para el efecto de sonido. Bien, ahora están en ello. Sigamos adelante y agréguelos nuevamente a la tabla de datos. Ábrela y haz columna aquí a la derecha. Haga una columna aquí a la derecha también. Este copia pega el nombre, el otro también, copaame Aquí estamos. Ahora podemos agregar un nuevo efecto visual y un efecto de sonido. Volvamos otra vez a la carpeta Marketplace , busquemos calor. Copiemos este Body one, solo reducimos el ruido del click derecho. Copia la referencia y podemos pegarla para el efecto de sonido bullet impact player aquí. Ahora necesitamos aquella en la que no le pegamos al jugador. Creo que esta superficie de impacto de rifle. Adelante y reduce el ruido a 0.2 Juguémoslo y veamos qué es. Bien, suena bien. Hagamos clic derecho y copiemos la referencia y péguela aquí. Ahora necesitamos un jugador de impacto de bala efecto visual en realidad necesitamos algo de sangre. Donde le pegamos al jugador, no estoy seguro si tienen uno aquí. A lo mejor puedas buscar sangre. Realmente no tenemos uno aquí. Se puede ver que solo tenemos esos metálicos. Solo tenemos el impacto en la piedra y la madera. No obstante, vamos a copiar por ahora el metálico. Se necesita un poco de tiempo para entrar aquí en el sistema de partículas y en realidad no es parte del curso. Esto va a ser un poco demasiado avanzado, toma algún tiempo para hacer. Vamos a copiar la chispa aquí. Chispa mediana. Hagamos clic derecho y copiemos la referencia. Y también puedes pegarlos aquí en el efecto visual para éste. Ahora bien, si realmente quieres entrar aquí y cambiar algo, puedes abrirlo. Tal vez puedas hacer clic en el Color sobre Vivo. Puedes dar click aquí, aquí, esta flecha y esta constante. Y puedes intentar jugar con los colores. Siempre se puede tratar de jugar con él. Hazlo más rojo, para que el color aquí, sobre la vida, puedas jugar con el color. Y con las flechas aquí hazlo más rojo, así que parece sangre. Siempre puedes hacer eso, o siempre puedes ir al mercado de Epic Games también, y descargar algunos sistemas de artículos de sangre. Hay muchos de ellos dentro del mercado. Bien, ahora las hemos sumado. Y volvamos a la tabla de datos. Y ahora podemos dar click en Archivo y descargar y descargar el archivo CSV, una vez más aquí en mi carpeta de descargas. Permítame simplemente cambiar el nombre de esta tabla de datos una vez más. Y déjame ir a la carpeta de tablas de datos. Déjame cerrar esto por ahora. Déjame arrastrar la tabla de datos hasta aquí y actualizar todo. Bien, entonces ahora tenemos eso encerrado. Vamos al jugador, base de jugadores. Y ahora vamos a copiar todo esto. Pégalo para que no tenga que volver a escribirlo. Esto es justo lo que hemos hecho antes. Arrastremos el arma, consigamos el nombre del arma, información del arma desde aquí. Sólo voy a ocultar los pines desconectados. Lo que necesito de este es el impacto de bala, el impacto de bala de efecto, el jugador de efectos y impacto de bala y jugador de efectos. Los necesito aquí Y luego puedo seguir adelante y hacer el efecto partícula en vez de solo rey, por ejemplo, el impacto de bala, los efectos aquí. Siempre podemos preguntar si es el jugador que hemos golpeado o no. Porque si es el jugador al que le hemos pegado, queremos jugar a éste. Lo que podemos hacer es que podemos tomar de este exitoso actor y decir o no conseguir pero solo actor tiene etiqueta justo antes. Al igual que lo que hicimos aquí arriba cuando golpeamos al jugador aquí. Estamos preguntando si el actor tiene el tag player, así sabemos que es el jugador. Podemos hacer lo mismo por aquí, dependiendo de si el actor tiene el tag player o no, entonces sabemos que es el jugador al que le hemos pegado o no. Entonces lo que podemos hacer es que podamos tomar esto y decir seleccionar. Y podemos tomar el nodo select y podemos enchufar esto aquí. Falso, no es el jugador entonces solo queremos tocar este efecto si es el jugador, si es cierto, el actor tiene el tag player. Queremos jugar este efecto jugador. Ahora va a jugar un efecto visual dependiendo de si golpeamos al jugador o no. Bien, genial. Por la ubicación, es la ubicación de golpe, Para la escala de rotación, todo es igual. Realmente no hay que cambiar nada. Ahora para el efecto de sonido, estoy haciendo lo mismo desde aquí. Y decir seleccionar dependiendo de si es el jugador o no. Aquí, éste. Adelante y vuelve a conectarlo. Si no es el jugador efecto de sonido normal, Si es el reproductor, el reproductor de efectos de sonido igual que para la ubicación es la ubicación del golpe. Sólo voy a agregar algunas notas de reencaminamiento y organizar este He añadido algunas notas de reencaminamiento y voy a guardar Déjame subir aquí y volver a comprobar que no me he olvidado de nada Ahora, hemos agregado esto, hemos agregado el efecto visual y el efecto de sonido también aquí arriba en el código cada vez que disparamos y de hecho golpeamos algo, vamos a reproducir el efecto de sonido y también vamos a tocar el efecto visual. Y el actor de éxito está bloqueado. El arma también está bloqueada, y la ubicación del impacto también está bloqueada. Solo guardemos todo aquí y pruébalo. Vamos a seleccionar terroristas. Voy a seleccionar los cuatro. Adelante y dispara. escuchar el sonido, si puedes escuchar el sonido. Impresionante. Bien, permítanme desconectar esta parte del código aquí para el arma disparada. Sólo voy a desconectar el arma chote parte del código Sólo puedo escuchar los impactos de bala solo para que pueda ver si funciona correctamente. Yo sólo voy a tomar el rodaje de AK aquí. Ahora se puede ver que en realidad estoy disparando. Puedo ver el impacto. Yo también puedo escuchar el sonido. Si está lejos, no puedo escuchar el sonido. Si está cerca, puedes ver que se está acercando. Se ve mucho mejor. Si quieres hacer que el impacto sea más grande, siempre puedes entrar aquí y aumentar la escala. Algo así como una locura. En realidad se puede ver la diferencia. La escala ahora es de diez. Puedo jugar, puedo disparar algo. Y ahora puedes ver lo loco que en realidad se pone. Ahora puedes ver que esto es, el efecto se ve mal porque está tan escalado. No obstante, creo que uno a uno está bien. Si lo deseas, siempre puedes hacerlo 1.5 así que es un poco más grande si así lo deseas. Pero creo que está bien por ahora. Así es como se ve. Ahora solo eliminemos esta línea. Realmente no necesitamos ver esta línea de depuración para que pueda presionar ninguna. También quiero probarlo en el cliente solo para asegurarme de que está trabajando en el cliente también para seguir adelante y probarlo en el cliente. Bien, bien. Nuevamente, si deseas cambiar el color del impacto, siempre puedes entrar en el sistema de partículas y hacer clic en el color. Y puedes seguir adelante y cambiar el color para eso también. Pero ahora puedes ver que está funcionando de maravilla, y también está funcionando por ahí. Sin embargo, realmente no podemos verlo por allá porque es muy pequeño. Aquí está. Puedes probar, puedes ver aquí está aquí. Impresionante. Suena muy bien. Bonito. Bien, esto se ha terminado y sólo voy a seguir adelante y conectar esta parte nuevo y compilar y guardar todo. Ahora tenemos el efecto de disparo, efecto visual y el efecto de sonido también. Nuevamente, si quieres agregar una calcomanía como contraataque, también puedes golpear desde aquí y decir Cal Y puedes generar calcomanías en el lugar como antes. Siempre puedes seleccionar aquí, hacer un nodo de selección y conectar el reproductor. Si es el jugador al que golpeas, no quieres engendrar nada, puedes hacerlo si es el jugador o si no es el jugador al que golpeas Siempre se puede generar una bala cal en la pared. Siempre se puede hacer eso. Compilemos y guardemos todo y pasemos al siguiente. 156. 10.27 propagación de bala: Ahora, en lugar de tener todas las balas golpeadas en medio del cursor, ahora puedes ver si disparo algo, siempre golpea en ese mismo lugar. En lugar de hacer eso, en realidad puedes agregar una propagación de bala. Podemos hacerlo igual que en Quincena por ejemplo. Si golpeas el cursor, realidad no es golpear el mismo punto, 2047 Si sigues disparando. Para hacer eso, es muy, muy simple en la ubicación del extremo de bala. Puedes ver aquí estamos creando ese trazo de línea. Antes de hacer esto, vamos a tomar todo esto, copiar esto, y pegarlo aquí abajo. Creo que lo probaré más tarde, porque aquí no quiero filmar un rastro de línea si estoy fuera de MO y así sucesivamente. A lo mejor quiero mejorar esto eliminando realmente la secuencia, porque entonces no necesitamos copiar y pegar este código. Podemos simplemente agregar esta parte justo después de esto. Pero dejémoslo por ahora, así y veamos a dónde vamos con él. La ubicación final, lo que quiero hacer con ella, quiero aleatorizarlo un poco Ubicación inicial y final. La ubicación de inicio está bien para el trazo de la línea. Sin embargo, la ubicación final, vamos a aleatorizarlo. La carrera de línea no dispara en el mismo lugar cada vez. La forma de hacerlo, muy, muy sencilla. Podemos tomar esta ubicación final ahora mismo y podemos tomarla y decir break vector. Ahora de éste, qué podemos hacer, vamos a desconectarlo de aquí. Por ahora, borre esta, que sólo tenemos esta aquí. Y solo puedes hacer clic y arrastrar y pegarlo aquí. En realidad, esta ubicación final, estamos rompiendo el vector. Así puedo ver la x, y, y la z, y puedo aleatorizar el valor aquí Lo que quiero hacer es usar este llamado random float in range. Ahora no tenemos realmente un vector aleatorio en el rango, lo contrario lo habría usado. Pero tenemos una función llamada random float in range. Entonces va a elegir un float aleatorio dependiendo de un número aleatorio, dependiendo de lo que le des como valor mínimo y como valor máximo. Por cierto, así también es como tiras un dado. Se tira un dado escribiendo aquí, el valor mínimo de los dados debe ser uno, El valor máximo de los dados debe ser seis. Y luego tira un valor aleatorio 1-6 para tirar los dados. Y se obtiene como un número aquí. Vamos a hacer esto aquí por el valor mínimo. Solo queremos tomar esta x y decir, escribamos menos primero, digamos 200. Probemos 200. Entonces el máximo flotador aquí, digamos más 200. Va a tomar la ubicación x, va a encontrar un número aleatorio. Damos este x -200 Toma este x más 200. Entre este rango, vas a encontrar un número aleatorio con este número aleatorio que queremos hacer vector. Tomemos este fin aquí y digamos vector para que podamos volver a armarlo y seleccionar este vector make. Entonces podemos volver a enchufarlo a la x aquí mismo. Básicamente estamos modificando el valor x y lo estamos conectando de nuevo al vector así Hagamos lo mismo por el otro. Voy a copiar y pegar esto. A lo mejor también puedes crear realmente una función a partir de esta, pero creo que será innecesaria. Vamos a agregarlo aquí. Y agrega la x o la y y la Z también. Vamos a enchufar la Y. Vamos a enchufar la Z así como esto. Bien, ahora tenemos esto terminado y ahora va a encontrar una carga y rango aleatorios. Y va a aleatorizar nuestro vector dependiendo de qué valor encuentre aquí como el Y permítanme seguir adelante y agregar algunas notas de reencaminamiento para que se vea mejor. Bien, entonces aquí está. Eso fue en realidad. Entonces ya terminamos. Eso fue muy, muy fácil. Solo hagamos depuración nuevo y juguemos solo para ver cómo se ve. Ahora aquí como terrorista, puedo disparar mi bala y se puede ver cuando disparé varias veces. No va a disparar en medio del cursor, va a encontrar una ubicación aleatoria, a veces en el medio, a veces fuera del cursor. Lo que se puede ver, no es disparar una y otra vez en el mismo lugar, así es como se puede aleatorizar la propagación de la bala No estás disparando en el mismo lugar. Lo que puedes hacer si quieres un spread mayor, siempre puedes volver a aumentar esos números, si quieres mejorarlo, siempre puedes acertar puedes promover esto a una variable y conectar esa variable a todos ellos. Y solo puedes editar una variable y ésta editará todas ellas al mismo tiempo. Eso te ahorrará mucho tiempo, pero creo que lo voy a mantener a 200 si quieres. Se puede aumentar la propagación de la bala y será para golpear en el medio. Pero como pueden ver, si golpeo cerca, va a ser mucho más fácil de golpear. No obstante, si golpeo muy lejos, va a ser más difícil dar en el blanco. No siempre estoy pegando en el medio aquí. Método muy fácil para hacer esto. Y solo guardemos todo, pasemos al siguiente. 157. 10.28 Coloca las armas correctamente: Ahora mismo, creo que estamos en el momento donde podemos simplemente colocar alrededor de las armas, esas armas que tenemos por aquí. Sólo voy a eliminarlos a todos. Puedes hacerlo rápidamente. Puedes dar click en aquí, turno antiguo, click en el último, eliminar, y también voy a eliminar este. Lo que puedes hacer ahora es que podamos ir a planos de armas. Ahora solo puedes arrastrarlos y colocarlos alrededor del nivel, por ejemplo. Puedes colocar un AK aquí si quieres. Puedes encender el chasquido aquí. Creo que va a ser mucho tener puede colocar el AK y simplemente arrastrarlo un poco para que no esté en el suelo así. Lo que puedes hacer es que solo quería tenerlo en la parte de atrás. Sólo estoy echando un vistazo a lo lejos que estamos de este muro. A lo mejor podemos agregarlo aquí. En realidad, déjame arrastrarlo hasta aquí detrás cubierta y mantener presionado alt y arrastrar para copiarlo. Creo que voy a aumentar este a 500 en su lugar para sostener Alt y arrastrar así. Creo que lo voy a copiar así un par de veces. Aquí, aquí y aquí. Simplemente hazlo como quieras para tu nivel. Realmente no tienes que seguirte aquí. Sólo lo estoy haciendo al azar. Ahora lo tenemos. Tal vez podamos agregar uno aquí también. Ahora lo tenemos. Y lo que puedes hacer es agregar un cuatro en el medio aquí. A lo mejor solo necesito disminuir mi chasquido a 100 una vez más aquí, creo que lo voy a agregar en el medio Necesito disminuir esto a 50 en su lugar aquí. Y luego aumentemos, solo llevémoslo aquí arriba, aumentémoslo a 100 nuevamente, aumentemos esto al otro. Ponlo a 500 otra vez, igual que antes. Sigue arrastrándolo así. Ahora es entre la K aquí, aquí y aquí. Y nada más que seguir adelante y seguir así. Bien, entonces ahora tenemos esto y si le das un vistazo se ve bien lo que puedes hacer. También puedes colocar la pistola para que la puedas arrastrar al nivel. Déjame solo disminuir esto a 100 otra vez. Y coloca la pistola, empújala como antes, así si quieres, puedes agregar la pistola para que me guste todo el espacio aquí. Si solo la aumento a 50, puedes agregar la pistola así a todos los espacios. Déjame seguir adelante y hacer eso. Bien. Ahora, he colocado las pistolas Ahora puedes ver pistolas todo el camino aquí, la K y cuatro hasta aquí, si lo deseas En realidad, no quiero colocar armas delante de aquí porque aquí es donde está desove el jugador Incluso puedo moverlos un poco más al frente. Por lo que no están desove encima de las armas. Sólo estoy moviendo algo para acá. Tenemos que recordar también los puntos de desove para éste Sólo tienes que seguir adelante y seleccionarlos todos. Muévalos un paso al frente así. También para esas armas, quiero seleccionarlas todas. Haga clic en el primero, desplácese hacia arriba Mantenga Mayús y haga clic en el último. También, tengo que seleccionar el caso Control de Retención. Y sólo voy a seleccionarlos todos aquí. Y hagamos clic en para la herramienta de movimiento, mantengamos pulsados Alt y arrastremos para copiarlos todos. Haga clic en para rotar 180 grados. Permítanme sujetarlos hasta aquí y solo tratar de hacerlos al mismo nivel. Entonces es justo que ambas partes echen un vistazo a si están al mismo nivel y ahora están, lo que quiero hacer ahora es simplemente arrastrarlos al otro lado y colocarlos en algún lugar como aquí. Creo que aquí es donde está del otro lado también. Están muy cerca de la pared. También están muy cerca de la pared. A lo mejor uno más así, necesitamos arrastrarlos realmente al otro lado. Aquí es algo. Es uno más, creo que detrás de la cubierta así. Ahora, ambos lados son iguales. Si haces clic en jugar ahora y podemos vender antiterrorista. Ahora por ejemplo, se puede ver que están en el suelo. Podemos recoger una pistola y también podemos elegir una de las otras armas. Y sí, ahora todo está funcionando. Lo que puedes hacer en lugar de coger primero una pistola porque es molesto, a lo mejor cambiar al rifle, puedes cambiarlos alrededor. Entonces tienes primero el rifle y luego las pistolas detrás de ellos. Bien, entonces ahora cuando hayas colocado las armas, también puedes colocarlas aquí arriba si así lo deseas. Puedes colocar, si haces otra arma, como un arma especial, puedes colocarla aquí arriba. Entonces hay que subir esta rampa para tomar esta arma. Eso también será genial. Bien, así que siempre que hayas colocado tus armas, pasemos a la siguiente lección. 158. 11.01 Diseña la interfaz de usuario de salud y armadura: Bien, así que ahora estamos en la armadura de salud y daño, y estamos listos para crear la IU de salud y armadura. Así que sigamos adelante y vayamos a la interfaz de usuario. Y ya tenemos nuestra interfaz de usuario principal, así que vamos a abrirla aquí a la izquierda, quiero crear armadura y UI de salud. Bien, entonces lo que quiero diseñar, quiero mostrártelo primero para realmente lo veas. Quiero diseñar una interfaz de usuario como esta. A mí me gusta mostrártelo. Así que en realidad puedes, estamos en la misma página aquí y ya sabes lo que estás haciendo. Estamos haciendo éste. Y así es como quería lucir. Otra vez, lo que te dije antes, trata de echarle un vistazo, intenta descomponerlo. Entonces, ya sabes, si quieres crear cajas horizontales, cajas verticales, superposiciones, igual que lo que hemos hecho antes, esto es lo que vamos a crear Bien, primero necesitamos una superposición porque tenemos un fondo y tenemos algo encima. Arrastremos esto al panel del lienzo aquí. Y ahora se agrega. Ahora da click en él. Y para el punto de anclaje, voy a cambiarlo a la parte inferior izquierda y escribir 00 en la posición para sacarlo aquí arriba en el lienzo para la alineación para la y, escribir uno, ahora está aquí arriba en la posición de 00. Bien, para esta queremos tener una imagen, queremos tener un lugar de fondo, la imagen aquí. Quiero que sea lo mismo que aquí. En lugar de simplemente hacer lo mismo. Lo que puedo hacer aquí es simplemente mantener el turno y hacer clic derecho para copiar esto. O simplemente puedes hacer clic derecho y copiar. Puedes ir a esta imagen y puedes mantener presionada la opción shift y click izquierdo para pegarla. Así como esto para la alineación, Solo llena todo para la superposición. Ahora quiero tenerlo tamaño a contenido como este. Cualquiera que sea el tamaño de imagen que tengamos aquí en realidad va a dimensionar automáticamente con esta. Para el espacio en la pantalla. Quiero alejarlo un poco, 30 en la X y -30 en la Y. Tenemos un poco de espacio aquí No está aquí arriba en el borde. Bien, vamos a compilar ahora. Así es como se ve. Ahora agreguemos la barra de salud. Agreguemos un cuadro horizontal porque queremos un icono y una barra de progreso junto a él. Así que agreguemos una caja horizontal a esta superposición. Para esta caja horizontal. Vamos, primero agreguemos una imagen porque queremos un icono. Y luego agreguemos la barra de Progreso. No obstante, recuerda que la Barra de Progreso tiene texto encima de ella. En realidad necesitamos una superposición. Primero, busquemos una superposición y colóquelo aquí para esta superposición. Encontremos la barra Progreso. Para la barra de salud, estamos usando una barra de progreso y luego tenemos algo de texto encima para mostrar cuánta salud tiene el jugador. Bien, ahora parece un poco confuso para esta superposición. Veamos aquí tenemos este cuadro horizontal para esta barra de progreso. Básicamente quiero llenar todo en esta superposición. Coloquemos esto en el medio. Al hacer clic en el cuadro horizontal, voy a alinearlo al centro para la imagen. Seleccionemos el icono. Ahora no tenemos un icono en estos momentos. Vamos a los íconos. Quiero que vayas a los materiales del curso. Si solo vas a los materiales del curso aquí, voy a la interfaz de usuario a los iconos e importo la salud en el icono del corazón y el icono del escudo. Haga clic y arrástralos aquí. Ahora son importados. Recuerda hacer clic en él, cambiar el grupo de texturas a UI igual que antes. Y ajustes de compresión a la interfaz de usuario tot lo mismo o el corazón Cámbielo a UI y cámbielo. Veamos aquí, la interfaz de usuario a T. Ahora podemos entrar en la interfaz de usuario. Podemos dar click en la imagen, buscar CO o icono. Solo busquemos el corazón uno sobre corazón. Selecciónelo. Ahora se pueden ver exhibiciones. Y esto es por la alineación. Yo sólo quería tenerla en el centro así. Y voy a cambiar el tamaño de la misma a 45, 45 tal vez. En realidad vamos a cambiarlo a 40 por 40. Ahora para esta barra de progreso, hagamos clic en ella. Para la barra de progreso, puedes ver aquí, puedo aumentar y disminuir el porcentaje. Y aumentará y disminuirá la barra de progreso. Ahora para el estilo de la misma, necesitamos una imagen de fondo y necesitamos una imagen de relleno y una imagen de marquesina Ahora para el fondo, solo quiero dar click aquí. Y creo que podemos buscar caja de entrada. Tengo como cajas de entrada aquí las podemos usar como fondo. Y solo podemos usar esta imagen, barra de entrada oscura. Adelante y selecciónelo. ¿Recuerdas lo que dije antes? Cámbielo a una caja y también seleccione 0.5 como margen. Por lo que se estira correctamente para la imagen de Phil. Si solo buscas a Phil, tengo la barra de progreso, Phil, para ti. Déjame importar el otro porque aún no lo he importado. Probablemente ya lo hayas importado aquí. Déjame simplemente ir a mis materiales de costo más antiguos, yo imágenes. Y déjame importar este rojo, rojo, Phil. Déjame importarlo aquí. Da click en él, cambia I y cambia esta interfaz de usuario para guardarla. Y déjame volver aquí. Seleccionemos el relleno rojo. Adelante y selecciona esta, también para la imagen de marca. Simplemente puedes copiar esto. Pégalo aquí. Recuerden por el margen lo que dije antes, 0.5 para el margen. Este vuelve a cambiar a caja y 0.5 para el margen. Ahora esto es fijo y se puede ver que el color no es correcto. Está mostrando este extraño color azulado, color verde azulado. Esto no es lo que queremos. Esto se debe a que la opacidad de relleno y color es de este color azul claro Tienes cambios a blanco. Puedes ver el correcto sobre lo que hayas seleccionado aquí. Compilemos ahora. Hagámoslo un poco más grande para verlo mejor para la imagen de la marquesina Aquí es donde controlas el tamaño. Si intentas cambiar el tamaño de la imagen en estas, no va a funcionar. Déjame ir aquí al tamaño de la imagen de la marquesina y puedes cambiarla Vamos a hacerlo más amplio. Por ejemplo, 350 Lee por ejemplo, 60 aquí en la altura. Así es como se ve ahora, 350.60 Puedes volver a copiar el tamaño de la imagen y pegarlo encima de los demás Puede hacer clic en el texto aquí y alinearlo en medio de esta barra de progreso. Cambiemos el texto a rubic semi bold, lo que hemos estado usando hasta ahora Además, cambiemos este tamaño a 20. Yo lo hago más pequeño, solo escribamos un número aleatorio por ahora. Escribamos 76. Yo sólo quiero escribir un número para que podamos ver lo que estamos haciendo. Estamos cambiando esto más tarde dinámicamente dentro del juego, Pero así es como se ve ahora mismo. Vamos a agregar un esquema. Voy a agregar dos al tamaño del contorno y luego cambiar el color para el contorno. Por ejemplo, eliges este seleccionador de color. Puedes elegir un color de aquí. Creo que sólo voy a elegir el color de fondo de esta barra de progreso. Bien. Vuelve a darle click, y voy a añadir algo de sombra también si escribes 66 aquí para la sombra por ejemplo. Para que la veas con claridad y puedas hacer click en este color de sombra y puedes cambiar el alfa a uno. Esta es la sombra para el texto. Ahora para la sombra, iré con el desplazamiento de tres por tres. Y voy a cambiar la opacidad a 0.5 No es demasiado visible cuando lo miras desde aquí, se ve mucho mejor Bien, eso se ve bien. Ahora podemos desactivar el contorno discontinuo para que podamos ver cómo se ve ahora mismo Creo que lo que podemos hacer ahora, podemos pinchar en, veamos aquí, el cuadro horizontal. Y le podemos dar algo de espacio. Lo que podemos hacer aquí para el relleno para la izquierda y la derecha, le voy a dar, por ejemplo, 30.30. Así es como se ve. Ahora lo estamos alejando de los costados. De hecho quiero darle más. Volviendo a hacer clic en la horizontal, 35 por 35, y arriba y abajo. Creo que lo voy a dar por 30 por 30. Ahora bien, así es como se ve. Bien, vamos a darle algo de espacio entre el icono. Y esto se hace si buscamos un espaciador y lo colocamos entre el icono y la caja horizontal. En realidad, aquí no. Vamos a arrastrarlo hasta aquí. Entre la imagen para el corazón y la barra de progreso. El espaciador está aquí. Vamos en la x, dale un espacio de 15 quizá. De hecho, vamos a darle más espacio. Creo que podemos darle más espacio para el espaciador, tal vez 20 en su lugar. También creo que le voy a dar más espacio aquí para la caja horizontal de aquí arriba. En vez de 35, se lo voy a dar a 40. Izquierda y derecha serán 40, y la parte superior y abajo serán 30. Así es como se ve ahora, se ve bien, ya podemos compilar. Vamos a copiar, pegar esto y editar como una armadura para la caja horizontal. Simplemente haga clic aquí y haga clic en Control. puede ver ahora que están uno encima del otro porque en realidad necesitamos una caja vertical para tenerlos uno encima del otro. Nos olvidamos de hacer eso. Busquemos una caja vertical. Vamos a solo, veamos aquí abajo la imagen de fondo. Recuerda que esta es la superposición, esta es la imagen de fondo. Y entonces podemos tener la caja vertical donde tenemos la salud y la armadura. Vamos a meterlos en esta caja vertical. Ahora para la caja horizontal, en vez de tener el relleno dentro de aquí, puedes ver que se agrega doble porque está agregando un relleno para ambos. Vamos a copiar esto. Voy a dar click en esta flecha para eliminarla. Haga clic en el cuadro horizontal aquí también. Remover, Agrégalo para la caja vertical en su lugar, el padre de estos dos. Al dar click aquí, pega el relleno que tenías antes, y ahora lo tienes aquí. Solo agreguemos un espaciador nuevamente entre estos dos porque aquí están demasiado juntos para el espaciado. Esta es la Y. Voy a añadir 15 para el icono. Vamos a cambiarlo a escudo de iconos. Cambiémoslo a esa por el color del relleno. Cambiémoslo por el morado. Déjame copiar y pegarlo aquí abajo también. Yo creo, sí, todo debería estar bien por ahora. Ahora si lo deseas, también puedes hacer click sobre ellos. Por ejemplo, esta imagen de imagen. Esta imagen. Cambiémoslo a la visibilidad de Hit Comprobable. No podemos interactuar con él, con el ratón, creo éste y éste. Y también podemos cambiar la visibilidad para golpear a Testable. Sí, eso debería ser todo, solo para que el ratón no interactúe con ellos. Si necesitas interactuar en el futuro, vamos a cambiar los nombres de ellos más tarde cuando los necesitemos como variables. Entonces podemos cambiar los nombres aquí arriba, pero por ahora esto está terminado. Así es como se ve nuestra parte de salud. Si haces clic en Placa para echar un vistazo a cómo se ve, agrandar la pantalla. Así es como se ve. Se ve bien. Entonces ahora tenemos la salud y la armadura y podemos agregarle funcionalidad. 159. 11.02 Aplicando daño: Ahora que tenemos lo sano, sigamos adelante y apliquemos algunos daños. Si vamos a la base de jugadores ahora tenemos este proyectil, esta línea traza que estamos disparando aquí Lo que estamos diciendo es que si el actor tiene al jugador tecnológico, queremos aplicarles daño. Para aplicar daño, básicamente solo arrastras desde aquí y dices aplicar daño. Tienes esta función y muy fácil de usar, va a alejar esto. Tenemos algo más de espacio para trabajar. Aquí estamos aplicando algunos daños. Ahora hay que especificar ¿cuánto daño desea aplicar? Ahora digamos por ejemplo, tenemos un número estático. Digamos 20. Ahora también hay que especificar quién es el actor dañado. Es el jugador. Aquí le estamos pegando al actor de éxito. Desde el actor de éxito, puedes hacer clic y arrastrar y enchufarlo. Bien, ahora tenemos al actor dañado. Vamos a probarlo y ver si funciona para probar y ver si esto realmente está funcionando. Sigamos adelante y abajo aquí, hagamos cualquier evento de daño. Ahora, antes de hacer el evento de daño, en realidad quiero hacer una nueva gráfica, así que no ponemos demasiadas cosas dentro de aquí. Todo esto está bien. Pero cuando aplicamos daños, quiero ir a otro evento aquí u otra gráfica. Llamemos a éste Salud y Salud Armadura y Daño. Vamos a llamarlo así. Dentro de aquí si haces clic derecho y dices Cualquier daño. Ahora este evento se juega cada vez que un jugador recibe daño. Solo podemos intentar imprimir una cadena en la pantalla para ver si funciona. Y arrastra este daño a esta cuerda, imprime cuánto daño le estamos haciendo al jugador. Ahora si hacemos clic en Reproducir y seleccionamos Terrorista aquí, y seleccionamos Terris aquí Si solo cojo un arma y trato de dispararle al jugador, se puede ver que imprime 20 en la pantalla, porque ahora le estoy aplicando 20 de daño a este jugador. Bien, este código funciona. Ahora si vuelvo atrás, en lugar de aplicar como 20 daños como un número estático, sigamos adelante dentro de una estructura una vez más, abramos la estructura dentro de aquí. Agreguemos dos variables. Ambos son un flotador y un flotador. Ahora para el primero, como queremos llamarlo, llamémosle daño en la cabeza. Ahora lo que puedes hacer, puedes hacerlo muy específico, como ¿cuánto daño debes hacer cuando golpeas las piernas? ¿Cuánto daño debes hacer cuando golpeas los brazos y así sucesivamente? Pero para simplemente mantener este curso más corto, complejo, o más corto y simple, más bien se está volviendo muy largo para este curso, solo mantenlo un poco más simple. Voy a hacer un daño para la cabeza y otro daño para el cuerpo. Daño corporal, dos tipos de daño. No obstante, voy a mostrarte cómo puedes hacer el resto de esto. Lleva un poco más de tiempo, pero mismo proceso. Bien, ahora lo tenemos dentro de nuestra estructura. Ahora lo que tenemos que hacer es agregarlo también a la tabla de datos. Así que adelante y abre la tabla de datos dentro de aquí. Ahora, antes de hacer esto, en realidad voy a mover el daño aquí arriba solo para mantenerme un poco más organizado. Después del MO, voy a hacer el daño en la cabeza y el daño corporal aquí. Vamos a maximizarlo después del MO máximo. Permítanme agregar dos columnas a la derecha. Al primero se le llama daño en la cabeza, al siguiente se le llama daño corporal. Entonces hay que especificar cuánto daño haces. Ahora déjenme decir solo por ejemplo, por el daño en la cabeza, estoy haciendo 20 daños, estoy restando 20 Por el daño corporal, solo estoy haciendo diez daños. Yo voy a hacer lo mismo. En realidad, vamos a cambiarlo para ver si hay una diferencia para los cuatro. Digamos que estamos haciendo 15 daños y cinco daños, tal vez eso sea a ocho daños Para la pistola, eso es mucho menos. Diez daños por ejemplo. Y digamos cinco daños aquí. Bien, Así que solo puedes ajustar esto cuanto más te guste. Ahora lo descarguemos como archivo CSV y déjeme ir a mi carpeta de descargas dentro de aquí. Voy a cambiarle el nombre de nuevo a T Weapon Info. Ahora dentro de aquí, de nuevo, vayamos a las tablas de datos. Y permítanme cerrar esto e importar aquí la tabla de datos. Bien, entonces ahora tenemos esta información, solo guardemos todo. Ahora sí se bloquea a veces cada vez que intentas guardar y editas algo dentro de una estructura. Esto es normal, como lo hace muchas veces. Cuando editas esta estructura y agregas nuevos valores y cosas así, generalmente simplemente se bloquea. Solo recuerda guardar tu trabajo. Asegúrate aquí, déjame abrir la tabla de datos para asegurarme de que todos mis valores estén enchufados, igual que antes y no lo es puede ver que está aquí abajo. A veces se choca y hay que rehacerlo aquí Pero por suerte no tenemos mucho que hacer, solo tenemos que arrastrar esto hasta aquí y luego puedo volver a arrastrar la tabla de datos hacia aquí. Bien, ahora vamos a guardar todo y ojalá no se estrelle. Ahora funcionó. Ahora abramos la base de jugadores. En el jugador, abre la base de jugadores. Ahora intentemos hacerle el daño en la cabeza y el daño corporal. Ahora lo que normalmente estás buscando es si vas a los activos que has importado al jugador. Aquí tenemos el esqueleto del jugador, la malla esquelética de los jugadores Pero también tenemos algo llamado activo de la física. Aquí es en realidad donde estás pegando. Este activo de física es donde estás golpeando al jugador. Puedes intentar ajustar este activo de la física. Puedes hacer esas formas más y más pequeñas. Esta es en realidad tu caja de éxito. Puedes construir al jugador como puedes crear formas, básicamente simplemente matarlos, habilitarlos, y así sucesivamente. Pero ahora mismo por el daño en la cabeza, estamos golpeando a éste. Déjame minimizar la velocidad de la cámara. Estás golpeando esta forma aquí y esta se llama golpe. Básicamente se les llama cuerpos forma del cuerpo. Si vuelvo aquí a la base de jugadores. Ahora por aquí para los resultados de aciertos, si vuelves a hacer clic en la flecha. Vayamos por aquí después del daño aplicado. Solo quiero imprimir esto para que lo veas. Quiero imprimir el nombre de hit bone, Hit bone name, y arrastrarlo aquí. Y sólo voy a minimizar esto una vez más. Ahora estamos imprimiendo el nombre del hueso Hit. Podemos ver qué pasa si pulsamos en Play Terrorist y yo en como terrorista para el cielo también. Vamos a disparar a dis player. Si disparo en la cabeza, lo dice. Si disparo en la pierna, dice muslo. Esto es, este es el pie, ¿ verdad? Este es el muslo. Y esta es la mano, mano, la derecha, la mano izquierda, y así sucesivamente. Se puede ver que estamos disparando diferentes partes del cuerpo. Ahora, sólo para que sea un poco más interesante para nosotros, tomemos este nombre de hueso de éxito. Lo que podemos hacer es igual que enumeraciones, donde puedes hacer encender enumeración, puedes hacer encender el nombre aquí, encender nombre, porque recuerda que esta es una variable de nombre Encender el nombre y simplemente puede enchufarlo antes aplicar el daño y hacer clic en el más para el giro. Ahora hay que especificar cuál es el nombre. Mi nombre es Head. Si solo regresas aquí, puedes ver que se llama Head. Puedes seguir adelante y escribir Head y luego conectarlo a aquí por defecto, voy a aplicar daño corporal por defecto, pero si es cabeza, vamos a aplicar el daño de cabeza. Yo sólo voy a copiar y pegar esto. Y por defecto voy a aplicar el daño corporal. Ahora consigamos la información aquí. Si solo copio todo esto, nuestra información de armas aquí abajo y nuestra variable de arma, creo que está en esta larga aquí. En realidad, este es el actor de éxito. Esta es el arma. Yo sólo lo enchufé aquí. Ocultar pines no conectados. Yo solo quiero ver el daño corporal, el daño en la cabeza aquí, y conectar el daño de cabeza, conectar el daño corporal, y también para el actor dañado. Recuerda conectar esto de nuevo así, ¿de acuerdo? Siempre que estamos golpeando la cabeza, estamos haciendo el daño en la cabeza. Siempre que estamos golpeando el cuerpo, estamos haciendo el daño corporal. Simplemente hagamos clic en play y veamos qué pasa. Ahora bien, si vuelvo a jugar como terrorista y le disparo a la cabeza, se puede ver que hace 20 daños. Si le disparo al cuerpo, hace diez daños. Bien, entonces ahora tenemos como un daño de disparo en la cabeza. Bien, increíble. Entonces eso está funcionando. Sólo voy a minimizar esto. Y también voy a quitar el debug aquí para la bandeja de líneas así no veo las líneas rojas. Y eso fue todo por esto. Nuevamente, se puede hacer un sistema más complejo, pero sólo para que este curso no demasiado complejo, así es como podemos hacerlo. Estamos haciendo algunos daños en la cabeza y algunos daños corporales también. Recuerde establecer los valores fuera de la tabla de datos. Puedes ajustar esos números. Sí, sigamos adelante y pasemos al siguiente. 160. Estructura de información para jugadores de 11.03: Bien, entonces ahora vamos a sumar la salud para el jugador y la armadura y la cantidad y así sucesivamente. Pero antes de hacer eso, en realidad vamos a crear una estructura de jugador. Ahora vamos a los planos y vayamos a Estructuras. Y ahora en lugar de la información del arma, hagamos clic derecho ahora vamos a Blueprint y luego agreguemos una nueva estructura Y déjenme llamar a esto información de una capa. Vamos a abrirla. Ahora para la información del jugador, lo que quiero agregar es ¿cuál es la salud máxima que puede tener el jugador? Eso es un float, no un entero, porque a veces se calcula como un decimal. Y luego corres hasta la salud. Entonces tienes la Armadura Max. Recuerda que también tenemos la armadura en el juego. Puedo añadir más a esto. Recuerda que si vas a la base de jugadores y jugadores, también tenemos algunas propiedades para correr. Tenemos la velocidad de caminar, la velocidad de carrera, la velocidad de agacharse. También puedes tenerlo dentro de aquí. No necesitamos tener variables separadas por aquí. Solo agrega la velocidad de carrera. Agrego la velocidad de caminata, también puedo agregar la velocidad de agacharse Así. Bien, ahora tenemos esto. Lo que podamos hacer, podemos eliminarlos más tarde. Así que solo tenemos que terminar esto primero antes de eliminarlo. Lo que sea que tengas como un valor estático que no va a cambiar. Por ejemplo, cuál es la velocidad de carrera, caminata, velocidad, velocidad de agacharse Y no van a cambiar durante el juego. Si tienes números estáticos, es muy agradable agregarlos dentro de una estructura. Creo que eso fue todo dentro de aquí. Lo que podamos hacer, sólo tiene que seguir adelante y guardarlo. Guarde todo. Pasemos a la siguiente y creemos la tabla de datos. 161. Tabla de datos de información del jugador: Bien, así que aquí estoy de vuelta en las tablas de datos. Ahora para este, el viejo voy a llamar aquí abajo DT información de armas. De hecho, vamos a crear uno nuevo. En realidad solo voy a duplicar esto para no tener que reorganizar todas estas cosas. Y sólo voy a llamarlo DT player info. Simplemente hagamos clic en el control A y luego simplemente eliminemos todo. Bien, cosa aquí. Solo volvamos a, volvamos a la estructura y veamos qué tenemos. No la información del arma, la información del jugador dentro de aquí. Lo que tenemos primero. Ahora, antes de agregar nada, es necesario tener una columna de ID. Eso lo tenemos en la información de armas. Recuerda, tenemos este llamado ID. Necesitamos un ID uno para este, realmente no necesitamos el ID. Simplemente puedes llamar al nombre, por ejemplo, puedes llamarlo uno. Vamos a llamarlo uno porque solo tendremos una fila para el jugador con toda la información. Aquí no necesitamos varias filas. Bien, para el primero, tenemos la salud máxima. Entonces tenemos la armadura, y luego tenemos la velocidad de carrera. Entonces tenemos la velocidad de caminar, y luego tenemos la velocidad de agacharse Bien, tenemos esos valores. Y déjame hacer esto un poco más pequeño. Lo que puedes hacer ahora es ahora para el ID, lo hemos establecido en uno para la salud máxima. Voy a ponerla en 100 para la armadura máxima 100 también para la velocidad de carrera. Ahora ya hemos establecido esos dos en el valor por defecto. Si voy al jugador, hago clic en la velocidad de carrera, se establece en 750. En este momento voy a fijarlo en 750. Para la velocidad de caminata, la he establecido en 400, y para la velocidad de agacharse, he establecido en 200 Así que escribamos eso. Ahora ya estamos listos. Vamos a hacer clic en el archivo de descarga TSV igual que antes. Abrámoslo aquí y llamemos a esto información de un jugador. Vamos a cerrar esto. Ahora en las tablas de datos. Ahora antes de importarlo, voy a crear uno nuevo. Vaya a Miscelánea y seleccione Tabla de Datos. Ahora vamos a seleccionar la Información del jugador. Haga clic. Bien. Vamos a llamarlo T Layer Info. Es aquí. Ahora podemos importarlo si haces clic en un arrastre ahora mismo dentro de esto. Ahora ha subido todos los valores. También ahora está funcionando y podemos guardar todo. Ahora recuerda, cuando necesitamos usar esta tabla de datos, tenemos que crear una función dentro de la biblioteca igual que antes. Vamos a crear una nueva función en la biblioteca. Nueva función, llamemos a esta, obtener información del jugador, porque tenemos que hacer eso. Vamos a copiar y pegar la cosa aquí. Vamos a copiar y pegar todo esto. Pégalo dentro de aquí. Conecta esto como aquí. Y vamos a conectarlo aquí. En lugar de la información del arma DT, necesitamos la información del jugador DT y regresamos. Arrástralo aquí y llámalo info. Compilemos y guardemos todo. Además, recuerda cambiarlo en una función pura igual que esta. Debido a que solo estamos obteniendo información, no estamos configurando información. Intentemos usarlo sólo para ver si algo anda mal. Vamos a, por ejemplo, el jugador, su base. Digamos que quería usarlo. Aquí puedo decir con razón obtener información del jugador, y aquí está. Ahora puedes obtener la información del jugador de este. Bien, ahora mismo no tenemos realmente como identificación. Al igual que cuando usábamos con las armas. Como si tuviéramos un nombre de arma. A partir del nombre del arma, estamos extrayendo valores para la base de jugadores. En realidad solo tenemos una línea de código o una línea en la tabla de datos, solo tenemos esta línea aquí. Realmente no tiene sentido escribir uno cada vez para extraer de esta línea de esta identificación, porque va a permanecer igual todo el tiempo. Para hacerlo mejor, lo que podemos hacer, realidad podemos simplemente volver aquí en la información del jugador aquí, entonces en realidad podemos simplemente desconectar esto. De hecho, también podemos simplemente eliminar todo esto aquí y eliminar esta variable de aquí. Ahora lo que puedes hacer es solo el nombre de la fila, siempre es uno. Simplemente establezca el nombre de la fila en uno. Eso es, si compilo ahora en la base de jugadores, cuando digo info del jugador, ahora siempre obtiene esa información del jugador. Así que realmente no necesitamos escribir nada aquí y realmente no tiene sentido cuando tenemos una línea De todos modos, solo estamos obteniendo la información de la tabla de datos de esa primera fila. ¿Bien? Ahora tenemos esta información y podemos utilizarla. Solo guardemos todo y pasemos al siguiente. 162. 11.05 Establece la salud y la armadura básicas: Bien, ahora estamos listos para establecer la salud base. Ahora mismo, cuando engendramos en el nivel, nuestra salud básicamente está diciendo 76 porque esto es lo que hemos establecido dentro de la interfaz de Esto es solo un número estático que establecemos aquí a través de este porcentaje. Realmente no tiene ningún sentido. Sigamos adelante y fijemos la salud base y la armadura cada vez que engendremos Para eso, vayamos a abrir la base de jugadores, está fuera de aquí. Déjame ir a la gráfica de Armadura de Salud y Daño. Quiero hacer dos eventos. Quiero hacer el primero llamado Set Layer Health. Quiero hacer el otro llamado Set Layer Armor. Tenemos estos dos. También queremos ejecutarlo a través del servidor. Vamos a ejecutarlo a través del servidor. Establecer capa también ejecutar este en el servidor. Establecer armadura de capa. Vamos a ejecutarlos tanto en el servidor como confiables. Vamos a ejecutar el servidor uno aquí arriba, arrastrando y diciendo set layer para la armadura uno Vamos a golpear desde aquí y decir capa de servidor, establecer la armadura del jugador así como esto. Bien, ahora solo voy a mover esto hacia abajo así que tenemos un poco más de espacio para trabajar. Lo que queremos hacer es simplemente establecer la variable de salud. Ahora necesitamos dos variables aquí. Necesitamos uno llamado salud actual, porque en la estructura hicimos uno llamado salud máxima. Esta es la salud máxima que puede tener el jugador. Pero también necesitamos uno para la salud actual. Ahora mismo tenemos la salud actual y la armadura actual, tanto para la salud aquí. Vamos a llevarla aquí arriba. Vamos a establecer el estado en el servidor uno. Arrastre este pin al evento que crea uno. Y también arrastra este pin más a este evento. Éste. Recuerda, estás configurando la variable en el servidor. Necesitas tener esto replicado. El cliente también puede ver cuál es la salud de los otros jugadores. También hay que hacerlo por aquí. Golpeemos por la armadura. Enchúfelo y conéctelo aquí. Enchufa aquí. Vamos a configurar este para replicarlo también. Ahora tenemos esto. Lo que podemos hacer con esto ahora es dejarme simplemente moverlos juntos. Ahora puedo volver a la jugada de inicio. Aquí es donde quiero establecer la salud base de los jugadores. Siempre que el jugador genere instantáneamente, vas a establecer la salud por aquí Quiero dirigir desde aquí y decir Set Health. Nuestro Set Player health es como lo llamamos, Set Player Health. También queremos usar el otro llamado Set Player Armor. Entonces tenemos que especificar cuál es la salud actual y la armadura actual. Está lleno cuando engenzas. Cuando engendras, quiero decir obtener información del jugador. Podemos romperlo aquí. Entonces podemos establecer aquí la salud máxima para la armadura. Podemos hacerlo así. Pero en realidad creo que voy a hacer dos funciones distintas. Pero esta voy a hacer click derecho y decir promover una función o colapsar a una función. Llamemos a éste, consigamos la salud máxima del jugador y conviértelo en una función pura. En lugar de este nombre demente, demente, sólo voy a decir Max Health. Vamos dentro de aquí. Vamos a organizarlo un poco. Hagámoslo por el otro también. Déjame copiar y pegar esto. Excelente. Copiar y pegar esto. Déjame duplicar este de aquí. Duplicar. Llamemos a este Obtener armadura en lugar de la. Voy a quitar esta. Llámalo armadura Max. Para la salud máxima, vamos a desconectarlo, cambiarlo a armadura máxima y enchufarlo aquí. Entonces ahora podemos tomar esto, conseguir al jugador Max Armor y enchufarlo aquí también. Bien, solo tenemos esto se ve un poco más limpio. Y ahora estamos fijando a los jugadores la salud máxima y la Armadura Máxima. Ahora si hacemos clic en play, ahora mismo nada va a aparecer. Y tal vez ya lo adivinaste, Esto es porque realmente no estamos actualizando la interfaz de usuario en este momento Sólo estamos configurando estas variables y ahora son correctas. Sin embargo, nunca vamos a ir a la interfaz de usuario en este momento y realmente actualizaremos esos valores aquí. Esto es lo que vamos a hacer en la siguiente. 163. 11.06 Funcionalidad de interfaz de usuario de salud y armadura: Entonces aquí estoy dentro del plano principal de Uji. Y ahora sigamos adelante y actualicemos la salud y la armadura. Entonces lo primero que tenemos que hacer, necesitamos usarlos dentro del gráfico de eventos. Para ello, recuerden que los necesitamos como variables. Haga clic en el primero. Esta es la parte de progreso para la salud. Voy a llamarlo salud solo para barra de progreso. Al siguiente lo voy a llamar Armadura. También recuerda tomar esto es variable. Así podemos verlas como variables aquí dentro de la gráfica. Y puedo usarlas y podemos modificarlas. Vamos a hacer clic en el texto también. El texto que tenemos que modificar también. El primero se llama Text Health, también variable. El siguiente se llama armadura con brazo fijo y también es variable. Ahora realmente no necesitamos nada más para ser una variable, Esto es lo único que necesitamos editar. Vamos a compilar y repasar a la gráfica. Voy a hacer dos nuevas funciones, la primera llamada actualización, actualización, salud I. También voy a hacer la otra llamada actualización, o están casi, o en realidad van a hacer la misma lógica. Pero éste es para la salud, éste es para el Ama. Bien. ¿Qué es lo que realmente tenemos que hacer? Esto es siempre lo que tienes que preguntarte sobre tu codificación. ¿Qué estamos tratando de hacer ahora mismo? Aquí estamos establecidos este porcentaje para la barra de progreso. Bien, vamos a la gráfica. Tomemos este progreso, vamos a conseguirlo aquí. Ahora golpeemos y digamos por ciento porque esto es lo que nos interesa editar aquí. Se fija por ciento, hagámoslo. Eso es fácil. Vamos a conectarlo. Hay algo que debes saber sobre el porcentaje para una barra de progreso. puede ver aquí, va 0-1 No va 0-100% va 0-11 es Lo que tenemos que hacer ahora, necesitamos obtener la salud actual usando una salud de corriente flotante. Hagamos esa variable, esta salud actual. Digamos por ejemplo, tengo 100 de salud y me dañé como diez, y ahora tengo 90 de salud. Si enchufa esto ahora mismo, el valor será 90. Eso no tiene sentido porque el valor máximo es uno. A pesar de que te queda como una salud de 100, todavía te mostrará la barra completa porque en realidad una es la barra completa aquí. Tenemos que dividirlo de alguna manera. En realidad también necesitamos la salud máxima , la salud actual, la salud. Cuando los dividimos, si arrastras de la salud actual y divides la salud máxima, por ejemplo, digamos que tienes 90 en salud. Podemos decir 90/100 porque esta es tu salud máxima. Esto será 0.9 Entonces el 0.9 nos enchufamos aquí, eso va a ser correcto porque ahora la barra porcentual será algo así cada vez que pierdas diez, ¿bien? Por ejemplo, digamos que me quedan 40 de salud, 40/100 es 0.4 y eso va a enchufar aquí Y la barra de progreso estará en 0.4 Así, será correcto ahora. Bien, esto está fuera del camino. Hagamos lo mismo por aquí. Tenemos la armadura actual y tenemos la armadura máxima. Entonces estamos dividiendo esos dos juntos aquí. Tomemos la barra de progreso para la armadura y digamos por ciento establecido. Adelante y conéctelos juntos. Ahora conectemos esto aquí. Ahora también estamos configurando correctamente la armadura. Lo siguiente que tenemos que hacer es también establecer el texto aquí. Vamos a hacer clic en el texto. Este es este texto Salud. Tomémoslo aquí y digamos Set Text. Veamos aquí. Set Text, Es éste. Y vamos a conectarlo ahora. Establecer texto. Hagamos lo mismo por el conjunto de armaduras. Tenemos que actualizarlos a ambos. ¿Qué tiene que haber en el texto? ¿Qué necesitas mostrar aquí? Esto es muy sencillo. Apenas esta variable, la salud actual. Si mi salud actual es 40, quiero mostrar el número 40 aquí. Muy fácil. Vamos a golpear desde la salud actual, inicia sesión aquí. Y como Unreal Engine convertirá automáticamente la variable float en una variable de texto y solo la conectará aquí Bien, muy agradable, Muy fácil. Hagamos lo mismo por aquí. Rompamos esta armadura actual. Enchúfelo. Y así, eso ya está terminado. Bien, así que eso fue todo. Esto está actualizando ahora la armadura y esta está actualizando la salud. Sigamos en la siguiente. 164. 11.07 Actualiza la interfaz de usuario de salud y armadura: Bien, ahora lo que tenemos que hacer es actualizar la salud del jugador. Ahora nos pusimos a la salud ahora mismo. Recuerda en la base de jugadores en la gráfica de furgoneta que establecemos a la salud y armadura del jugador cuando engendran, eso debería actualizarse Ahora podemos actualizarlo en otro evento. Pero creo que es mejor simplemente hacerlo como continuar el código aquí. Y la salud, cuando establecemos la salud, establecemos la variable y la replicamos. Vamos a continuar con el código aquí. Déjame arrastrar éste hacia abajo. Tengo más espacio. Déjame crear un nuevo evento. Recuerde, cuando actualiza la interfaz de usuario, se está ejecutando a través del cliente. Ui está corriendo a través del cliente. Tú lo catales, hazlo aquí arriba. Tenemos que crear un evento de cliente llamado Set Player Health. Entonces tienes que ejecutar esto en ser dueño de cliente confiable. Ahora lo que tienes que hacer con éste es, déjame llevarme todo esto aquí. Ya tenemos la referencia principal de WB. Recuerda que aquí tenemos el controlador del reproductor. Y podemos decir así. Entonces podemos arrastrar de aquí y decir actualización, creo que lo llamamos actualizar salud, esta. Ahora podemos conectarlo al evento así. Ahora podemos enchufar la salud ahora aquí, llamemos al evento del cliente CL update o CL set player health. Este para la salud actual. Sólo vamos a enchufar este de aquí para la máxima salud. Ya tenemos una función que creamos, establecer la salud máxima del jugador. Así de aquí. Bien, esto es completamente funcional. Ahora hagamos lo mismo por la armadura. Tenemos el set de armadura de jugador. Déjame mover esto un poco hacia abajo así. Y hagamos un nuevo evento llamado L, Establecer armadura. Ejecutarlo a través del cliente, confiable. Entonces ejecuta el cliente uno aquí arriba, Establecer armadura de jugador. Este para este, justo antes de que necesites la referencia del controlador del reproductor, necesitas B principal. Entonces necesitamos llamar a la actualización armadura y connect, conectar las variables al evento igual que antes. Conectemos aquí la armadura actual. Para la armadura máxima, voy a enchufar la función, obtener player max armor. Recuerda que la función es básicamente obtener la información del jugador y tomar esa información de aquí. Bien, volvamos al gráfico de eventos, Salud y Armadura aquí. Y ahora debería estar funcionando. Estamos llamando al evento, va a actualizar la interfaz de usuario, llamemos Set Player Armor o Set Player Health. Vamos a hacer clic en Reproducir. Ahora si selecciono Terris, puedes ver que está correctamente configurado 100.100 Lo que está pasando es en el Comenzar Juego, estamos fijando la salud de los jugadores Recuerda la salud del jugador que has definido en tu tabla de datos, esta salud máxima. Es establecer la salud del jugador. Va a ir aquí a este evento pasando por el servidor. El servidor va a establecer esta variable en lo que sea que haya enchufado aquí Entonces va a actualizar la interfaz de usuario, estos valores, porque está pasando por el cliente actualizando la interfaz de usuario. Está pasando por aquí actualizar la IU de salud. Es tomar esos números en los que has iniciado sesión. Te está dando el porcentaje porque los has dividido. Y luego también estás mostrando el texto correctamente a la pantalla a través de esta. Esto fue por actualizar la salud y la UI, en realidad, nuestra salud y armadura. Y ahora podemos usar este set de salud de jugador y establecer armadura de jugador también cuando le estamos infligiendo daño al jugador. 165. 11.08 Inflige daño a la salud: Ahora que hemos terminado con el set de salud y el set de armadura, sigamos adelante e infligiremos el daño al jugador. Aquí tenemos el evento de daño que usamos antes y solo lo usamos para ver si realmente infligimos daño al jugador. Comprobamos que en las lecciones anteriores donde golpeas la cabeza, haces algún daño. Si golpeas el cuerpo, haces otro daño. Y podemos ver que está imprimiendo, así que en realidad está funcionando. Cualquier daño está funcionando aquí. Bien, bien. Entonces ahora queremos infligir el daño real aquí cada vez que infliges daño, y esto viene del daño aplicado. Entonces, si vuelves a la lógica de tiro aquí para la línea de rastreo, traza, cuando golpeas al jugador, estás infligiendo este daño. Si aplicas daño a un actor, automáticamente seguirá adelante y disparará este, cualquier evento de daño si recibes el daño. Ahora cualquiera que sea el daño que recibas, este es el daño que has aplicado aquí dentro del daño aplicado. Y dijimos que dentro de nuestra tabla de datos, estamos aplicando daño al jugador aquí en el cualquier daño. Lo que podemos hacer ahora, podemos tomar la salud actual para el jugador. Podemos decir, por ejemplo, ahora mismo mi salud es de 100. Entonces podemos decir 100 menos. Estamos restando 100 de menos, digamos que el daño fue diez, eso serán 90 Tenemos que volver a establecer la salud. Antes de hacer eso, me gusta tener este nodo de abrazadera. Sólo estoy asegurándome de que no vamos por debajo de cero. No queremos tener una salud de menos diez por ejemplo. Estamos sujetando este valor para que sea, el mínimo es cero por lo que ya no puede ir por debajo de cero. Y el máximo, solo voy a arrastrar este, obtener player max health y enchufarlo aquí. Ahora está sujetada. Y entonces podremos volver a establecer la salud. Vamos a poner la salud a este valor que tenemos. ¿Bien? Lo que está pasando es básicamente que estás infligiendo diez daños. Por ejemplo, va a decir la salud actual que es 100 menos diez, es decir 90. Vamos a pasar por aquí para asegurarnos de que no vamos por debajo de cero. Y el valor de 90 será enchufado aquí. Ahora la nueva salud que tenemos es en realidad 90. Ahora bien, en lugar de establecer este estado así, esto funcionaría porque si tienes este ícono, esto significa que este se ejecuta en el servidor. Si sostienes el ratón sobre él, y en la parte inferior dice solo autoridad. Este evento solo se dispara en el servidor. Nuevamente, está bien establecer variables o es correcto establecer variables en el servidor y luego replicarlas. Eso va a funcionar perfectamente. Sin embargo, recuerde que ya hicimos este evento de salud del jugador establecido, y esto también actualiza la interfaz de usuario para nosotros, en lugar de simplemente volver a llamar a esta interfaz de usuario, y tenemos que actualizar la interfaz de usuario. Si tuviéramos que hacerlo de esta manera, teníamos que copiar esto, pegarlo aquí, y hacerlo así. En lugar de hacer esto, ya hicimos una función o un evento aquí. Digamos establecer la salud del jugador. Y podemos simplemente llamar a eso que acabamos de hacer. Y podemos enchufarlo aquí. Automáticamente solo pasará por esto y actualizará también la interfaz de usuario, porque la llamamos aquí, bien. Muy bien, increíble. Ahora también aquí por la muerte, si la salud actual es igual a cero y podemos hacer una rama, si eso es cierto, queremos llamar un evento de muerte. Esto es cuando muere el jugador, cuando la salud actual es cero. Eso lo haremos más tarde. Pero por ahora, tenemos esto conectado. Bien, hagamos clic en Reproducir y veamos si realmente funciona aquí. Si solo cojo un arma y le disparo al jugador, ahora ves que el jugador tiene 90 increíbles. Si le disparo a la cabeza, le disparó -20 Ahora tengo 70 de salud que está funcionando correctamente. Vamos a probarlo en el servidor. Si el servidor dispara al cliente, permítanme minimizar esto aquí. Si el servidor dispara al cliente, eso también está funcionando, increíble. Si saqueo como otra arma aquí, eso también está funcionando Bien, esa lógica está funcionando. Ahora sigamos adelante y hagamos la armadura en la siguiente lección. 166. 11.09 Inflige daño a la armadura: Bien, para repartir la armadura, básicamente vamos a hacer el mismo método. No obstante, para la armadura, en realidad quiero hacerle menos salud al jugador si ya tienes armadura. Entonces no voy a hacer la misma cantidad de daño a la salud, solo alejando todo esto, así. Y yo quiero hacer primero la armadura, solo alejarla. Bien, entonces tomemos la armadura actual ahora mismo, son 100 como comienzo. Lo que quiero decir es, tomemos esta armadura y restémosla del daño. No quiero restarlo solo uno por uno. De hecho quiero restarlo, este valor, el daño, si solo lo multiplico por, digamos 1.5 y después quiero aplicar el daño a la armadura La armadura se va a dañar mucho más rápido que la salud actual. No va a dañarse como la salud actual. Se va a dañar mucho más rápido porque lo hemos multiplicado por 1.5 también puedo simplemente arrastrar de este, Se mantiene organizado así aquí. Impresionante. Ahora bien, con esta resta, lo que podemos hacer es, de nuevo, igual que antes, sujetemos el flotador Nos aseguramos de que no vaya por debajo de cero. El máximo es vamos a conseguir este jugador max armadura y enchufarlo. Y ahora pongamos la armadura actual. Nuevamente, tenemos la función llamada set, set player armor. Y vamos a poner la armadura así como así. Y ahora se implementa, bien. Si solo juegas aquí y solo podemos probarlo. Se puede ver aquí, yo soy el cliente disparando al servidor. Estamos perdiendo la armadura. Ahora bien, no tiene sentido tener una armadura si vas a perder esa salud por la que de todos modos te estás dañando. Entonces en este momento esto realmente no tiene sentido porque sigues perdiendo la salud y muriendo. Lo que quiero decir es que si tienes armadura, vas a perder una salud más lenta, una menor cantidad de salud. Lo que puedo hacer aquí, en vez de restarle el daño a la salud, éste de aquí, en vez de restarle el daño quiero arrastrar de aquí y decir seleccionar flotar aquí Ahora queremos preguntar, ¿ la armadura es igual a cero? Tomemos la armadura y digamos, ¿es igual a cero? Cuando dice pick a, si este bullying es cierto, adelante y elige a Si la armadura es cero, eso significa que en realidad solo queremos aplicar este daño que teníamos antes así. No obstante, la armadura en estos momentos no es cero. Esto significará que aquí es el valor B. Entonces yo en realidad, esto significa que tenemos armadura y quiero infligir un daño más lento al jugador. Si solo arrastro esto aquí, quiero dirigir desde aquí y luego decir dividir este daño por, digamos por ejemplo, 2.2 0.5 Hagamos entonces el daño. De hecho, estamos reduciendo el daño antes de que se lo hagamos al jugador. Bien, ahora tiene sentido que tengamos armadura, porque cuando tengamos armadura, en realidad vamos a recibir menos daños. Y hagamos clic en play. Y probemos aquí a este mecánico. Si me acerco al servidor, si acabo de disparar al jugador aquí, se puede ver que estamos recibiendo daños ahora. El valor aquí, necesitamos eliminar los decimales. Eso está bien por ahora. Pero se puede ver que la armadura está funcionando. Siempre que perdamos la armadura, vamos a recibir mucho daño. Vamos a recibir el daño que hay ahí sin la armadura. Bien, esta funcionalidad funciona. Siempre puedes controlar estos valores, cuánta armadura pierdes aquí, también cuánto estás perdiendo él. Pero ahora está funcionando para la interfaz de usuario. En realidad necesitamos eliminar las cifras decimales. Volvamos aquí en la B principal aquí. Lo que quiero hacer es básicamente quiero redondear el valor. Si tomo este flotador, puedo usar este llamado round y estamos redondeando el valor Si el daño ahora mismo no estamos realmente en el menos, pero digamos en el plus. Si tenemos 1.6 de salud, se convierte en dos. Podemos usar esa y podemos redondear el valor. Y ahora podemos arrastrar esto al texto y enchufarlo. Simplemente borremos el viejo de aquí. Hagamos esto en su lugar, y hagamos lo mismo aquí. Usemos round y eliminemos este viejo. Enchufarlo aquí. Organicemos esto. Ahora probemos esto y veamos si funciona. Simplemente creando algunos nodos de ruta para que se vea mejor. Ahora vamos a compilar, haga clic en Reproducir, y veamos si realmente funciona. Si le muestro al jugador, se puede ver que está redondeando el valor ahora todo está funcionando como se supone que debe hacerlo 167. 11.10 Previene el saqueo de múltiples rifles: El problema que estamos enfrentando en este momento es si simplemente hago clic en reproducir aquí y maximizar mi ventana. Se puede ver aquí he saqueado un cuatro. Sin embargo, si hago clic aquí para saquear un arma, en realidad puedo saquear este AK E incluso puedo saquear estos cuatro. Incluso puedo saquear este, y están todos en mi espalda. Esto no se supone que suceda. Y hay un puck dentro del código aquí en la base de jugadores Creo que es una solución sencilla. Pasemos al lote. Equipa y suelta lógica aquí. Por aquí en el arma del lote, algo va mal porque le dijimos que no saqueara el arma si es la misma arma que la que hemos equipado Es éste pedir arma de botín porque aquí estamos tratando de encontrar el arma en el inventario Estamos tratando de comparar el arma con el inventario, con la que estamos saqueando ahora mismo . Estamos pasando por esto. Estamos tomando el arma del inventario. Estamos tratando de verificar si ya tenemos esta arma. Si ya la tenemos, dejaremos caer el arma Son falsos. Si no la tenemos, cargamos el arma. Por alguna razón creo que está pasando por aquí en vez de por aquí arriba. No es dejar caer el arma. Es como si no pudiera encontrar el arma. Si solo imprimo una cadena aquí y digo dos aquí arriba, imprimo otra cadena y escribo una. Por cierto, así es como depuras. Ahora voy a ver donde se ejecuta el código. ¿Está corriendo por aquí o por aquí abajo? Vamos a compilar y hacer clic en play. Ahora solo carguemos esta arma. Ahora bien, si hago clic en, dice, si aludio a éste, dice dos, el código en realidad va por aquí abajo Va aquí abajo en lo falso. Es como si estuviera diciendo, no, no tengo ese artículo en mi inventario y eso es falso. En realidad tengo este artículo en mi inventario. Veamos el código aquí. Vayamos por aquí. Está tratando de encontrar, está tratando de comparar el artículo en el inventario con el que estamos tratando de hacer lote. Lo que está pasando aquí es que primero busca aquí en el índice cero. Busca en el primer índice del arma. Si solo vuelvo aquí, solo cierra esto. Si vuelvo aquí a la lógica aquí, cuando no encuentra la primera arma, por ejemplo, si la primera arma es una pistola, entonces ésta será falsa en realidad, porque estás comparando la pistola la que queremos saquear ahora mismo Y no es un rifle, es decir, que en realidad solo va a falso. Y luego agrega esta arma por aquí. Tenemos que ajustar el código aquí abajo. Lo que tenemos que hacer es asegurarnos de que ha recorrido todo el inventario antes de que continúe con el código Si solo obtiene el primer artículo del inventario, que es la pistola, entonces realmente no tiene ningún sentido porque nos va a dar un dólar igual que ahora. Lo que quiero hacer es asegurarme de que este índice aquí, este índice se puede ver aquí. Si solo hago clic derecho e imprimo una cadena y solo puedo mostrarte. Y puedes enchufar el índice para que veas lo que imprime. Y puedo compilar com play cuando saqueo éste. Ahora dice cero. Sigue diciendo cero porque sólo mira al primer índice. Ahora el rifle es, si solo hago clic más aquí, el primero podría ser la pistola, el índice podría ser el rifle. Y sigue comprobando el índice cero solamente. Ahora permítanme simplemente borrar todo esto y eliminar esto. Déjame tapar el índice de rayos por aquí. Déjame moverlo hacia arriba. Vamos a moverlo por aquí y llamarlo índice de rayos. Vamos a compilar, volvamos. Ahora, quiero comprobar si este es el último índice antes de continuar. Si solo tomo el inventario y vamos a encontrar la variable aquí, inventario de armas. Vamos a por eso. Digamos último índice para este inventario de armas que tenemos ahora mismo, este número es igual a este índice de área? Hagámoslo más bonito aquí. Ahora hagamos una rama. Y estamos preguntando, ¿estamos en el último índice del inventario? Simplemente eliminemos esto. Déjame enchufar esto. Si eso es cierto, queremos continuar con el código. No obstante, si no estamos en el último índice, si aún necesitamos revisar algunas cosas en el inventario, tenemos que retroceder. Y en realidad no tenemos que hacer nada porque si no es el último índice, simplemente vamos a recorrer esto. En realidad, no estamos rompiendo el bucle, sólo estamos rompiendo el bucle aquí. Cuando encontramos un artículo, en realidad no necesito hacer nada. Déjame organizar esto un poco, déjame alejar esto, y eso debería arreglar nuestro problema. Bien, aquí he creado algunos nodos de ruta y se ve más bonita Ahora hagamos clic en Reproducir y veamos si funciona. Si acabo de saquear esta arma por ejemplo, y hago clic en, puedes ver que en realidad deja caer esta en cuatro Y si hago clic aquí, también deja caer esta. Puedes ver aquí está funcionando. No puedo saquear dos rifles a la vez y también está trabajando con una pistola probablemente así Ahora puedo ver que no puedo saquear dos armas al mismo tiempo. 168. 12.01 muerte: Bien, entonces ahora vamos a crear la muerte del jugador. Recuerda aquí que hicimos el evento de cualquier daño y calculamos la salud y armadura y cuánto daño sufriste. Ahora dijimos este aquí al final, si la salud actual es igual a cero, queremos jugar el evento de la muerte. Bien, muy sencillo. Vamos a overere hacer un nuevo evento rápido llamado muerte otra vez, vamos a ejecutarlo en el servidor porque estamos en multijugador Vamos a ejecutarlo a través de este servidor, evento de muerte confiable. Y vamos a ejecutar la muerte del servidor aquí arriba en el evento normal. Entonces corre así. Por la muerte te puedes imaginar que en realidad vamos a hacer como una muñeca de trapo la muerte, donde el jugador simplemente cae al suelo Ahora podemos decir tocar montaje de animación. Sin embargo, solo quiero hacerlo un poco más divertido y hecho crear una muerte de muñeca de trapo en lugar de una animación Porque ya lo hemos hecho antes. Sabemos cómo hacer esto en lugar de una multidifusión. Quiero mostrarte cómo se hace la muerte de muñeca de trapo. Para ello, ahora necesitamos que un representante notifique porque vas a cambiar las imágenes del juego Recuerda, si quieres cambiar alguna imagen por un representante, notifícalo aquí Hagamos un nuevo evento o una nueva variable. Y éste se va a llamar es Bullion muerto. Vamos a poner esto está muerto para que sea algo. Vamos a arrastrarlo al evento. Y éste lo arrastra también al evento. De hecho podemos llamar a éste. Ahora vamos por aquí. Si la salud actual es igual a cero, llamemos a este evento de muerte. Pongamos al jugador para que esté muerto. Acuérdate de hacer esto cierto. Ahora necesitamos representante, notificar esto. Rep notifique que crea una función. Entonces vamos a hacer doble clic en él. Dentro de aquí, lo que queremos hacer es simplemente, primero solo preguntar, ¿el jugador está muerto o no? ¿Este lingote es verdadero o falso? Bien, ¿qué queremos hacer para que la muerte reg dole sea verdad cuando la variable muerte sea cierta? Queremos simular la física con esta malla. Porque si solo voy al mercado y abro la era, solo uno de ellos no importa realmente. Y solo abres el activo de la física. Abres el activo de física como puedes ver aquí. Si haces clic en Simular, podrás ver al jugador muriendo así. Esto es en realidad reg death si solo lo simulas. Y lo puedes ver, esto es lo que quiero hacer. Para ello, necesitamos simular la física. Tomemos esta malla y digamos simulaciones. Establecer simular la física para que sea verdadera. También quiero desactivar el movimiento para el jugador. Así que no puedes presionar tu teclado y moverte. El jugador toma el movimiento del personaje y dice desactivar el movimiento. Ahora el jugador no puede presionar el teclado para moverse. Vamos a compilar y ver qué pasa si simplemente hago clic en play. Ahora también engendro al otro jugador. Déjame dispararle a este jugador y ver qué pasa. Voy a dispararle a este jugador. El jugador muere pero cae por el suelo. De hecho, arreglemos eso también. Tenemos que fastidiar algunas colisiones. Y esto se debe a que la malla ahora está simulando la física. Si echamos un vistazo a la malla aquí, si bajamos a la configuración de colisión, podemos ver que en realidad no tiene colisión física, lo que significa que va a caer por el suelo. Sólo tiene solapamiento. La física se superpone cuando golpeo con mis bandejas de líneas para hacer daño, pero no tiene colisión física, necesitamos habilitarlo Tomemos ahora esta malla. Permítanme arrastrar de aquí y decir set collision. Vamos a bajar por aquí. Configura la colisión habilitada. Voy a habilitar colisión. Voy a colisionar aquí. Colisión habilitada. Tengo tanto una consulta como física. Adelante y selecciona eso. De hecho voy a hacerlo antes de que la física lo contrario el jugador caerá por el suelo. Voy a habilitar primero la física. Intentemos eso. Ahora tenemos física. Bien, ese error está arreglado. Hay que tratar de ver qué otra caja tenemos. Ahora otra vez, voy a ir a matar a este jugador de aquí. Bien, Ahora el jugador está muerto. El jugador está aquí. Impresionante. Un problema con este jugador en este momento es en realidad, tiene la animación inactiva encendida. Porque puedo ver al jugador respirando ahora mismo. Se puede ver que los hombros se mueven y tenemos una animación jugando. Tenemos que detener esta animación porque se ve tonta. Hagámoslo. Vamos a quedarnos aquí. En realidad se puede decir play animation. Puedes seleccionar esta animación de reproducción. Simplemente no estableces nada dentro de aquí que realmente elimine todas las animaciones y el jugador no tendrá ninguna animación aplicada. Ahora otra vez, solo haz doble clic aquí para hacer una nota de reencaminamiento para que puedas ver lo que estoy haciendo Entonces no es difícil así así. Bien, ahora vamos a compilar. Creo que también noté un bicho con la sombra. Si acabo de engendrar al jugador otra vez. Y le mostré al jugador. Bien. Impresionante. Ahora hay un bicho aquí con la sombra, porque aquí como este jugador, se puede ver que puedo moverme por ahí. Esto se debe a que, recuerden que tenemos una malla de tercera persona . Malla de tercera persona. Lo que hicimos antes es si buscas sombra, hicimos que esta muestre sombra oculta. Hicimos esto lo recordamos, hace mucho tiempo en este curso porque queríamos mostrar la cabeza del jugador. Estamos usando esta malla en tercera persona para mostrar la sombra correcta. Hagamos malla en tercera persona, hagámoslo por aquí. Por ejemplo, digamos set hidden, creo que se llama set set hidden in game set cast hidden shadow. Éste, no digamos nada porque ya no quiero mostrar mi sombra. También hay una última cosa que olvidé. Y este es el componente de la cápsula. Este componente cápsula, no quiero que choque con armas y cosas así De hecho voy a desactivar colisión para esta también. Voy a hacer eso antes habilitar la colisión para la malla, porque a lo mejor a veces esta cápsula choca con esta malla y crea un desastre. Vamos a alejarlo y digamos que se habilitó la colisión establecida. Digamos que no hay colisión así como esta. Y es de esperar que así sea. Vamos a alejar esto. O en realidad simplemente muévelo aquí abajo. Y no necesitamos alejarlo todo el camino por allá. Ahora debería funcionar. Vamos a compilar ahora. Haga clic en Reproducir. Si solo voy por aquí, déjame engendrar a este jugador Ahora puedo dispararle al jugador. Ahora hemos destrozado toda la muerte, increíble. Yo no choco con el jugador. El jugador aún no se mueve. Y si solo me mudo aquí con el otro cliente, se ve que puedo mover mi cámara como quiera que lo haga, como la sombra se ha ido, aquí estoy muerto. Por supuesto, puedes hacerlo más complejo. Al igual que puedes crear una cámara de espectador. En lugar de hacer esto, incluso puedes desactivar la cámara. No puedes, eres así y no puedes mover la cámara. Pero creo que está bien por ahora. A mí me encanta esto. Sí, todo está funcionando correctamente. El problema ahora mismo que tenemos es que el jugador no está soltando las armas una vez que tienes el arma. Aquí puedes ver, una vez que tienes armas y yo te disparo, sigues sosteniendo esa arma. Quiero que el jugador deje caer el arma, porque imagínese si todos los jugadores están sujetando las armas cuando mueren, todas estas armas se irán como a los 2 minutos del partido. Quiero que el jugador deje caer el arma, y nosotros también podemos hacer eso. Sigamos adelante y pasemos a la siguiente lección. 169. 12.02 Deja caer un arma cuando estés muerto: Bien, así que sigamos adelante y hagamos que el jugador deje caer todas las armas cuando el jugador muera por aquí. Siempre que establecemos esto en verdad. Así que permítanme arrastrar de esto y hacer una rama y preguntar si está muerto está puesto en verdad. Porque más adelante vamos a establecerlo falso cuando el jugador esté respondiendo. Pero por ahora, el jugador está muerto y queremos dejar caer el arma. Bien, volvamos como recordatorio y veamos qué hicimos por el arma de caída. Si vuelvo al evento de arma lutqudrop, o a una gráfica, y por dejar caer el arma, en realidad está Y pulsamos el botón y luego se nos cayó el arma. En realidad solo necesitamos llamar a este evento aquí. realidad no estamos presionando un botón, solo estamos forzando al jugador a soltar todas las armas. Así que en realidad vamos a hacer esto. Este evento buscó el tipo de arma equipada. Y creo que tenemos que modificar esto porque no es sólo el arma equipada que necesitamos soltar, también necesitamos dejar caer la otra arma que está en nuestra espalda o en nuestro muslo. Necesitamos realmente modificar este código ligeramente. Volvamos solo para anotarlo y ver qué pasa por aquí. Llamemos al servidor. Creo que se llama arma de lanzamiento de solicitud de solicitud. Arma de caída. Éste. Y adelante y llámalo ahora mismo. Cuando volvamos a llamar a éste, va a dejar caer el arma equipada, pero en realidad queremos dejar caer todas las armas en el inventario. Permítanme simplemente modificar esto para este evento. Voy a añadir una nueva variable. Agreguemos la base del arma. Porque vamos a darle la entrada queremos aquí, base de armas. Y llamémoslo nosotros en cambio. Aquí tenemos que especificar qué arma queremos soltar cuando hacemos clic en el botón para soltar el arma, cuando hacemos clic en la K, quiero soltar mi arma. Este de aquí, arma equipada. Ahora bien, esto es correcto para éste. Ahora golpeemos desde aquí y digamos nombre. Obtener la variable name igual que antes. Obtener información de armas y romper esto y luego podemos obtener el tipo. En lugar de hacer esto, podemos eliminarlo y podemos enchufar esto en un, déjame simplemente alejar todo este código. Esto, y podemos ver lo que estamos haciendo ahora. Nosotros lo hemos organizado todo. Todo se ve bien. Simplemente expandiendo esto aquí. Ampliando esto aquí también. Impresionante, Tenemos esta puesta a punto. Ahora si vas a la gráfica de salud y armadura, ahora podemos especificar de qué arma estás hablando. Simplemente queremos dejar caer todas las armas en el inventario. En lugar de hacer un bucle de cuatro, podría hacer un cuatro cada bucle, nuevo con el inventario aquí. Y podríamos enchufar el inventario para cada uno de ellos, podríamos dejar caer el arma. Sin embargo, recuerda con un cuatro cada bucle, no espera a que se reproduzca este código. Va a jugar dos veces de este código de arma de caída. En realidad va a fastidiar tu código aquí porque va a cambiar el arma aquí. Va a cambiar este valor aquí antes de que tengas la oportunidad de terminar este ciclo de código. En lugar de hacer esto, lo que voy a hacer es que voy a hacer un bucle manual. Lo que podemos hacer aquí es que podemos tomar el inventario. Solo asegúrate de que esta no esté vacía, porque no queremos dejar caer armas. Si esto no tiene nada, tomemos la longitud de este inventario y asegurémonos de que sea mayor que cero porque no queremos hacer nada si es mayor que cero. Así como así. Si es mayor que cero, también sigue adelante y suelta el arma. Si es mayor que cero, esto significa que tenemos algo en el inventario. Déjame obtener el primer artículo que tenemos en el inventario. Esto será en el índice cero. Quiero seguir adelante y dejar esto. Golpeemos desde aquí. Así como esto, creo. No necesitamos hacer más aquí. Porque si vuelves al arma de lanzamiento, recuerda dentro de esta función de arma de caída, ya eliminas este artículo del inventario. Porque es muy importante sacarlo del inventario. Ahora de lo contrario vas a conseguir como un bucle infinito aquí. Retrasemos este código. Vamos a retrasar por algo como 0.1 Entonces podemos volver atrás y volver a reproducir este código. Entonces vamos a decir de nuevo, solo voy a hacer algunas notas espejadas para que podamos ver realmente lo que estoy haciendo por este de aquí, como esto y así como esto y solo hacerlo del otro lado también. Lo que estamos viendo aquí básicamente es soltar esta arma y luego retrasar el código y luego intentar ejecutar esto de nuevo. Intenta verificar si esta longitud aún está por encima de cero. Recuerda, la quitamos aquí en el arma de caída. Técnicamente debería ser cero si solo tuviéramos un arma. No obstante, si tenemos dos armas, la longitud de ésta seguirá siendo una. Porque la longitud de la misma era de dos antes. Porque teníamos dos armas. Ahora es una sola arma. Voy a revisar de nuevo. Es la longitud por encima de cero Si es. Y tómalo de nuevo. Toma esta arma. Déjalo caer. Así que sigue cayendo hasta que ya no tengas nada que puedas arrastrar desde aquí y no decir más o nada de armas que soltar. Imprimirá la cuerda si tienes cero armas para empezar o si has dejado caer todas tus armas del inventario, ahora puedes hacer las más pequeñas, creo 0.05 tal vez incluso. Pero déjame ir con 0.1 Realmente no importa que el jugador no se dé cuenta. De todas formas, permítanme simplemente hacer clic en Reproducir. Y probémoslo y veamos si nos equivocamos. Si tengo esta arma aquí, este jugador saquea todas estas armas En realidad, déjame mover a este jugador por aquí. Para que podamos ver que las armas están siendo arrojadas. Déjame dispararle a este jugador. Ahora podemos ver al jugador realmente soltar las armas aquí. Esta pistola y la K. Si me acaba de soltar esto y me acerco a la pistola, en realidad tengo una pistola yo mismo, así que déjeme caer esto. Puedo saquear esta pistola. Incluso puedo saquear la K que este jugador dejó caer. Puedo montarlo igual que antes. No hay nada realmente malo en ello. Impresionante. Vamos a probarlo en el cliente también. Este era el servidor. minimizar esto e ir al cliente. La jugada para el servidor. Voy a querer que el servidor vaya a muchas armas. Ahora como los iones van a disparar a los jugadores, aquí están. Voy a dejar esto en cuatro. Quiero la K, puedo tomarla. Impresionante. Todo está funcionando ahora mismo. Ahora mismo tenemos un problema con no poder saquear dos armas en estos momentos A veces tenemos un problema donde se nos ha caído el arma y realmente no podemos saquearla porque trata de compararla con el arma caída De hecho, sigamos adelante y arreglemos eso también. Esto es como lo que hicimos con el arreglo de armas. Si solo volvemos, si vuelvo aquí en mi gráfica, laúd y equipar y este es el código de arma que hicimos Recuerda que comparamos la variable de arma de lote con la que queremos mucho ahora mismo si es lo mismo, borramos la notificación, entonces la ejecutamos aquí. Porque recuerda si tienes el mismo valor correr dos veces, no se ejecutará. Tan simple como eso. Volvamos. Déjame abrir la gota aquí. Pasemos aquí al arma de lanzamiento. La forma en que quiero hacer esto es porque dentro de unas funciones en realidad no se puede hacer un retraso como lo hicimos antes aquí en el arma de lote donde hicimos un retraso aquí antes de ejecutar el código. En funciones no se puede hacer un retraso. Esto es otra cosa. Esta no es la demora normal que solemos hacer. Tenemos que hacerlo realmente fuera de la función. Tenemos que hacerlo aquí afuera en vez, por aquí, cuando queremos dejar caer el arma. Hagamos el código aquí. Quiero hacer que el arma caiga aquí y ponerla en nada como esto. Entonces quiero arrastrar de aquí y decir retraso igual que antes. Ponlo 20.05 y luego quiero seguir adelante y soltar el arma Antes de hacer esto, no quiero hacerlo todo el tiempo. Quiero comprobar si esto es lo mismo que antes. Voy a tomar esta arma para que deje caer y decir, ¿es esto igual al arma aquí en el inventario que acabo de encontrar? Déjame hacer una rama. Si eso es cierto, quiero hacer esto aquí, déjeme retroceder. Si eso es cierto, quiero hacer esto aquí. Si es falso, solo quiero ejecutar el código como antes. Déjame reorganizar esto para que realmente puedas ver lo que está pasando Bien, así, estamos tratando de comparar el arma para que caiga con la que estamos tratando de soltar aquí. Y si es lo mismo, vamos a aclarar esto y hacer todo esto. Bien, genial por aquí, en realidad no necesitamos esto. Podemos simplemente eliminar esta de aquí. También la otra cosa, a veces de nuevo, el arma se vuelve invisible porque este actor no puede reconocer a este actor, pesar de que son los mismos. En lugar de hacer esto, solo eliminemos esto. Borra esto, y vamos a sacarlo aquí abajo. En cambio, constantemente eliminamos esta arma para que caiga antes de ponerla de nuevo. Y eso está bien. En realidad no hay ningún problema con esto. En realidad hagamos eso también para el saqueo. En lugar de verificar si es lo mismo, eliminemos esto. Hagamos eso porque realmente no duele demasiado o realmente no duele. En realidad, en realidad no importa. Sólo tienes que seguir adelante y conectarlo así. Adelante y compilar. Voy a dar click en jugar ahora, vuelve a comprobarlo. Es principalmente para el cliente porque aquí es donde ocurrirán los problemas de replicación. Aquí. Como el cliente, como el servidor. Voy a saquear algunas armas y destacarme aquí y matemos a este jugador Ahora el jugador está muerto. Ahora voy dejar caer mi arma para saquear esta Ahora estoy soltando pistola, cargando la pistola. Funciona para que podamos saquear ambas pistolas. Carguemos esta arma. Simplemente sigue saqueando el arma y mira si te equivocas, si tienes algún problema o si todo está bien Podemos ver que nada se vuelve invisible, todo se ve bien. Sólo estoy tratando de ver si hay algún error en este momento. Creo que vi un bicho donde en realidad se me cayeron los cuatro. Ya se puede ver que se me cayó la entrada para cuando presione en su lugar. este momento el error es si elegimos un jugador aquí y equipamos dos armas, y si hago clic en G para soltar el arma, se puede ver que el arma en mi espalda se está cayendo. Y esto es después de las nuevas ediciones que acabamos de hacer. Comprobemos lo que está pasando. El problema es quizá con el eludir el arma o dejar caer el arma aquí Para el lanzamiento del arma, estamos soltando el arma equipada. Vamos a comprobar primero si esto es cierto. ¿Cuál es el arma equipada? De hecho, hagámoslo aquí abajo. Hagámoslo aquí abajo para que podamos imprimir el nombre del arma. Sólo tienes que enchufarlo aquí y compilar y guardar. Ahora debería decir pistola. Cuando trato de soltar mi arma y sí dice pistola, el arma equipada es correcta. No hay nada malo cuando saqueamos el arma. Ahora conocemos el arma de botín. La lógica es correcta. Estamos tratando de dejar caer la pistola, pero por alguna razón se está soltando el rifle. Ahora vamos a imprimir esto. Permítame también tratar de ver si estoy desarmado o no. En realidad, no tiene sentido porque estamos soltando el arma. Entonces sabemos que no estamos desarmados, estamos soltando la pistola Algo va mal aquí. Y creo que este bucle, nuevo, ya te lo dije antes, los bucles no esperen a lo que intentas hacer. Este es un problema con los bucles. A veces simplemente ejecutan el código. Si solo vuelvo aquí, creo que está tratando de soltar la segunda arma que saqueas Porque no va a esperar tu retraso. En realidad va a recorrer y soltar el último índice. Creo que esto es lo que está pasando. En cambio, desconectemos esto. Permítanme borrar esto. Aquí, déjame alejar esto. Ahora, cuando encontremos un arma, hagamos una nueva variable. Hagamos uno nuevo llamado arma encontrada para soltar. Es éste, encontró arma para caer. Vamos a poner esta arma encontrada para que caiga para ser verdad. Entonces rompamos el bucle. Ahora hemos encontrado un arma y solo tomamos notas igual que antes. Lo que podemos hacer con esto ahora es dejarme simplemente desconectar esto y alejar esto. Ahora tomemos esto y hagamos una rama y preguntemos, ¿tenemos un arma? Encontró arma para caer. Si eso es cierto, primero queremos establecer esto en falso. Porque la próxima vez que hagamos esto, queremos asegurarnos de que no esté molestando. Lo siguiente es que queremos dejar caer esa arma. Solo mudando esto aquí, y esto está bien. Vamos a soltar el arma igual que antes. Pero vamos a hacerlo aquí abajo cuando el bucle esté realmente completado aquí. Y el arma para soltar puede ser simplemente el arma que tienes ahora mismo. Porque recuerda que has roto el lazo, así que sigue estando en el arma que has encontrado. No necesitamos hacer nada dentro de aquí. Entonces vamos a demorar. Y entonces vamos a configurar esto para que sea para interactuar de nuevo. Bien, vamos a compilar. Lo siguiente que queremos hacer es que todo esto es correcto. Aquí no hay nada malo. Lo siguiente que quiero hacer, quiero volver a mi armadura de salud y dañar la lógica de aquí. Solo asegúrate de que tengas este retraso tal vez a 0.2 creo que tuve que 0.1 Si falla, a veces esto es porque estás soltando las armas demasiado rápido. Creo que voy a llegar al 0.2 y vamos a compilar y guardar todo. Esta es la lógica que tenemos hasta ahora. Si te has perdido algo, solo asegúrate de que se vea así, así como la lógica para dejar caer el arma. Si solo vuelvo a mi gráfica aquí, saqueando, asegúrate de que el saqueo sea así Eliminamos la comparación. También puedo eliminar este nodo de reencaminar. Esto es lo que tenemos hasta el momento. Simplemente borramos esta variable, al instante yacemos un poco, y luego saqueamos el arma Bien, esto se ve bien. Así como para el arma de lanzamiento, hicimos esta arma equipada para que se adjuntara a este servidor. Y luego usamos el tipo de arma aquí y nos aseguramos de romper el bucle así para que no se baje. Bien, esta es nuestra lógica hasta el momento. Si es necesario, podemos intentar arreglar las cosas de nuevo, pero creo que esto debería arreglarlo. Vamos a probar y asegurarnos de que nada está molestando. Voy a minimizar el servidor. Voy a jugar con el cliente porque es mayormente donde la replicación va mal. Tomemos un arma aquí como servidor. Ahora bien, si voy con el cliente. Aquí con el cliente y le disparo al servidor aquí está se me cae el arma. Trato de saquear. Puedo saquearla. Trato de saquear la pistola. No puedo porque tengo uno. Si la dejo caer, voy y trato de saquear la pistola aquí Ahora mismo tengo un problema de replicación con la pistola. Si solo lo cierro y vuelvo a echar un vistazo aquí por los retrasos, tengo 0.05 después la caída del arma y luego retrasamos 0.1 para asegurarnos de que nos puede gustar esta interacción después de ejecutar esta función. Además, si vuelves a la salud, este es 0.3 Ahora podemos intentar que vuelva a hacerlo 0.2, pero solo mantengámoslo en 0.34 Ahora también antes de que probemos cosas, vayamos a la muerte que hicimos aquí En lugar de establecer la malla en colisión habilitada. Porque para la malla, si bajas a la colisión, puedes ver que también está interactuando con las armas. Está interactuando con la estática del mundo y la dinámica mundial. Intentemos habilitar solo la física de colisión, no la consulta, no nos estamos superponiendo con las armas y causando problemas. En lugar de la colisión habilitada, voy a establecer la física solo porque solo nos interesa la física. Para que podamos hacer ese efecto de muñeca de trapo y caer al suelo La física solo debería ser buena aquí. Ahora probémoslo y veamos si funciona. Creo que tengo un error antes con el jugador que interactúa. Quiero recordar esta caja para poder arreglarla aquí como el jugador o el cliente. Vamos a disparar al servidor. Ahora puedo dejar esto, tratar mucho puede saquear la K la pistola Ahora también puedo saquear la pistola. No tengo ningún problema si salgo. Se puede ver aquí tengo un error diciendo eje no tratando de leer la propiedad interactuando jugador. Si solo haces clic en el error, aquí vas a él. Aquí sólo está recibiendo un error. Creo que es el jugador el que se está muriendo. En realidad, está configurando a ese jugador a esto cuando dice axis non. Simplemente puede arreglar esto asegurándose de que sea válido. Si solo me muevo esto, puedo tomar esto y hacer clic derecho y convertirlo en un get validado. Y asegurémonos de que sea válido antes de continuar. Entonces lo siguiente también es el bicho aquí, porque me da que la era también está aquí. Ahora hice esto es válido porque también viene de aquí arriba. Se puede ver que viene directamente a este bucle. Aunque arreglemos esto, esto va a doler por esta. Asegúrate de que esto sea válido. Nos dio una época por esta. Estamos tratando de revisar las cosas cuando esto no es válido. Asegurémonos aquí después del jugador, y creo que estamos interactuando con el jugador que está soltando el arma. Copiemos esto aquí arriba, aquí abajo. Asegúrate de que este jugador no sea el que también dejó caer el arma. Porque no queremos saquear el arma, simplemente nos dejamos caer. Eso no tiene ningún sentido. Alegremos todo esto. Así como esto, en realidad, creo que podemos eliminar éste, porque ya estamos pidiendo esto. Hagamos una sucursal y vamos a conectarla juntos, Conectados con aquí. Si esto es cierto, vamos a establecer al jugador que interactúa, vamos a moverlo hacia adelante. Creo que podemos eliminar esto, porque solo verificamos esto. Vamos a eliminar. Suprímase esto. Eso debería funcionar bien. Este lo estamos configurando y luego estamos comprobando si es válido. Eso también está bien. Bien, Ahora tomemos algunas notas. El motivo por el que no estoy borrando esto y solo conectándolo aquí así, porque quiero asegurarme de que esto sea válido antes de continuar. Porque también estamos viniendo de aquí arriba y en realidad conectándonos directamente con esto. A pesar de que estamos aquí arriba, en realidad necesitamos asegurarnos de que esto sea válido antes de continuar por aquí. También voy a asegurarme de que el jugador sea válido. Arrastrar aquí y decir es válido, adelante y también, así que asegurándose de que el jugador sea válido y también asegurándose de que el jugador no sea el que ha dejado caer esta arma Ahora volvamos a disparar al servidor. Ahora dejemos caer el arma, carguemos el arma. Déjame hacerlo más grande para que podamos ver realmente lo que está pasando ahora. Todo está funcionando. Puedo dejar caer la pistola. Si cargo dos cosas y me caigo soltamos la pistola, ya no tenemos ese bicho. Bien. Puedo cargar todo y no me sale ninguna caja cuando dejo esto. Bien, ya todo está funcionando. Sé que ha sido confuso porque teníamos mucha caja que necesitamos cuidar. Asegúrate de que cuando el jugador esté muerto, estés soltando el arma. Estamos obteniendo esta primera arma en el inventario. Si la longitud del inventario es superior a cero, lo que significa que tenemos un arma en el inventario, estamos soltando el arma y también retrasando una cantidad que no haría que el arma cayera buck 0.3 en este punto Ahora mismo, tal vez podamos reducirlo a 0.2 Pero estoy satisfecho con esto ahora mismo, nadie va a saber esto de todos modos. Entonces dentro de la caída del arma, hicimos este bucle aquí. Hicimos entrar a este toro, así que no nos molestamos. Y no necesitamos replicar esta variable porque solo estamos comprobando cosas dentro del servidor Estamos usando esta variable fuera del servidor, así que nunca la estamos usando en el cliente. Realmente no necesitamos replicarlo. Estamos corriendo por esto, estamos limpiando esta variable primero. Antes de que dejemos caer el arma. Dejamos caer el arma, la retrasamos para asegurarnos de que ésta se ejecute y luego los jugadores puedan interactuar con ella. Una vez más, el retraso es 0.1 para éste. Por último, para el arma de lote, nuevamente, simplemente eliminamos directamente la variable de arma de lote. Notificar lo despejó y luego lo ejecutamos aquí abajo. Bien, así que eso fue todo lo que sé, es un poco confuso pero tuvimos que deshacernos de todos esos temas. Ahora otra vez, si tienes algún problema, eres más que bienvenido a visitar mi sitio web, Pixel Helmet.com o siempre puedes hablar conmigo en Discord también Puedes ver mi discordia en mi perfil y es solo el casco Pixel también Bien, gracias por ver y pasemos a la siguiente lección. 170. 12.03 Respawn: Ahora que hemos terminado con la muerte, asegurémonos que el jugador responda también. Dentro de la base de jugadores. Nuevamente, dentro de la salud y armadura y daños. Déjame golpearlo por aquí a la derecha y clic derecho. Y luego cierra las pestañas a la derecha. Bien, dentro de aquí, hagamos clic derecho ahora y hagamos un nuevo evento personalizado. Llama a éste. Volvamos a hacer clic derecho y convertirlo eventos personalizados y llamarlo Re. Entonces éste se va a ejecutar en el servidor igual que antes. Vamos a ejecutar esto, el servidor confiable. Este de aquí arriba, llamemos al servidor repawn. Ahora estamos listos para dar la respuesta. Ahora para la reaparición, lo que simplemente queremos hacer es cambiar la ubicación del jugador. Porque imagina que el jugador ha muerto aquí en el suelo. Básicamente vamos a mover a este jugador de nuevo al punto de desove Esto es lo que estamos tratando de hacer ahora. Ya tenemos los puntos de spawn over en el modo de juego. Si recuerdas, si vuelves a los planos, abres el modo de juego y dentro del modo de juego, tenemos esta única solicitud, spawn player Ahora no queremos engendrar al jugador, recuerda que solo hicimos muerto al jugador al no movernos Técnicamente, ya estás engendrado. Nunca te sacamos del juego. No queremos volver a llamar a esto. Lo que queremos hacer es que solo queremos volver a hacer esta lógica. Lo que podemos hacer es que necesitamos el modo de juego para tomar los puntos de generación antiterrorista y terrorista Volvamos a la base de jugadores y digamos get game mode. Esta es solo la referencia, digamos modo de juego como este. Luego conectado a este obtener referencia del modo de juego desde nuestra interfaz de blueprint Ahora consigamos los puntos de engendro darorista, consigamos los puntos terroristas, éste obtiene puntos éste obtiene Ahora lo que queremos hacer, igual que antes, volvamos al modo de juego. De hecho, podemos simplemente tomar un punto de spa aleatorio y luego copiar esta transformación como antes. También podemos copiar esto aquí, control C. Volvamos al jugador control base V. Conectemos al terrorista de condominios y al terrorista con estos y hagamos ahora una notificación de representante también, recuerde conectar este. Necesitamos el equipo que hayas seleccionado. Necesitamos saber si el jugador es un antiterrorista o un terrorista. Recuerda, eso lo hicimos en la UI. Volvemos a la UI donde seleccionas al equipo. Vas a la gráfica aquí, seleccionaste en qué equipo estás. Esto te lleva al modo de juego. El modo de juego aquí, seleccione equipo. En realidad vamos a crearlo como una variable para que podamos usarlo, porque ahora mismo no hay forma de que podamos usarlo. Hagamos un nuevo equipo variable. Si solo sostengo el mouse sobre él, puedes ver que es una referencia de clase de actor, si eres actor y es esta. Y puedes seleccionar la referencia de clase. Vamos a compilar ahora recuerda, solo necesitamos establecer cosas como esta dentro del servidor, no en el cliente. Aquí en el servidor, voy a configurarlo equipo y luego conectar este de aquí abajo para que sea más limpio. Ahora bien, no necesitamos replicar esto porque nunca lo vamos a usar en el cliente Solo necesitamos usar esto en el servidor para que podamos encontrar el punto de generación correcto Esta variable en sí no es necesaria, realmente no necesitamos replicarla. Ahora establecemos esta variable por aquí. Tenemos que conseguir el control del jugador. Vamos a hacer clic derecho y decir obtener controlador y encontrar la función aquí. Y luego golpeemos y digamos referencia del controlador del jugador. Vamos a conectarlo ahora como el controlador del reproductor. Consigamos la variable de equipo que acabamos de hacer. Y ahora vamos a conectarlo aquí abajo. Bien, ahora estamos preguntando, el jugador es un terrorista o un antiterrorista? Si el jugador es un antiterrorista, lo que significa que esto es cuando es cierto, vamos a encontrar los puntos antiterroristas. No obstante, cuando el jugador sea terrorista, esto será falso, por lo que elegirá B, que son los puntos terroristas. Bien, hagamos clic derecho y promocionemos esto a nuestro jugador variable responder puntos. O en realidad déjame llamarlo responder transformar. Eso es más correcto. Nuevamente, tenemos que convertirlo en una rep, notificar porque estamos cambiando la ubicación del jugador. Este es un cambio visual para hacer clic en él. Compilemos, entremos dentro de aquí. Simplemente lo que tenemos que hacer dentro de aquí es cambiar el acto transformar. Vamos a hacer clic derecho y decir conjunto y seleccionado. Es solo uno mismo. el jugador que acaba de morir. Eso está bien. Ahora para la nueva transformación, tomemos esta que acabamos de decir. Ahora el problema con este, ¿no? Ahora el jugador, si haces clic en la malla, recuerda que hicimos antes dije que la escala era 1.6 en la escala. Si solo conecto esto directamente a aquí, esto se restablecerá a 11.1 Esto se debe a que este punto de España aquí es en realidad 111 Lo que puedes hacer es que en realidad estamos tomando esta transformación desde los puntos de España. Si haces este punto punto a 1.6 mira, déjame simplemente volver aquí a capa base. Enchufa esto directamente y tienes esto a 1.61 0.61 0.6 entonces en realidad será 1.6 aunque tengas este conjunto En realidad está tomando la transformación de este punto de engendro. No obstante, para mi ejemplo aquí ahora para tu juego, si tienes que 111, realmente no necesitas hacer esto aquí, pero para mí, sólo voy a romper esto aquí. Voy a transformar, romper transformar aquí, hacer transformar aquí. Para la ubicación está bien, la rotación está bien. No obstante, para la báscula, quiero mantenerla a 1.6 Vamos a conectarla así. Ahora vamos a compilar y volvamos. Y también queremos asegurarnos de que está muerto se pone en falso porque ahora ya no estamos muertos. Nosotros solo respondemos, arrastramos de aquí y decimos la muerte y pusimos a éste para que sea falso. Ahora tenemos que trabajar en esto en la siguiente lección porque todavía tenemos física simulada y todavía no tenemos colisión y todo eso. Y vamos a trabajar en eso aquí en la siguiente lección. Pero por ahora, hagamos clic en play. En realidad, antes de hacer clic en play, necesitamos responder aquí. Nunca hemos convocado a este evento. No va a pasar nada. Vamos, llamémoslo aquí cuando el jugador ya no esté muerto. Siempre que establecemos esto en falso. Y en realidad vamos a hacerlo aquí. Siempre que hayas terminado de dejar caer todas tus armas, déjame retrasar el código 3 segundos. Vamos a mejorar esto después, pero por ahora, solo respondamos y veamos si funciona. Vamos a demorar 3 segundos y luego vamos a responder. Déjame simplemente hacer clic en Reproducir. Elige a Terrorista aquí, Selecciona Terrorista por ejemplo. Ahora solo voy a meter algunas armas en este jugador. Salga por aquí con el cliente. Ahora déjame abrirlas dos sobre el cliente. Yo soy el jugador aquí. El jugador debe responder en uno de los puntos de generación después de 3 segundos, como puedes ver aquí Ahora mismo, no está pasando nada. Esto se debe a que todavía hemos simulado la física. Y ese es el tema. Si solo tratamos de hacer clic en la malla de la cápsula. Déjame decir aquí, escondido en el juego, voy a apagarlo para poder ver las cápsulas y en realidad ver qué está pasando. Y si solo vuelvo a hacer sonar el arma, sal aquí como terrorista. Voy a salir aquí. Ahora. Vamos a intentarlo de nuevo. Disparemos al jugador y veamos. Porque si la cápsula se mueve, no es un bicho que tenemos. Si echas un vistazo ahora, después de 3 segundos, podrás ver que la cápsula desapareció del jugador. Y esto se debe a que la cápsula ya está aquí. Ahora el jugador en realidad está aquí. No obstante, el jugador sigue por ahí de nuevo. Esto se debe a que hemos simulado la física. Y todo eso necesitamos para trabajar en la siguiente lección aquí de esta parte y hacer que funcione. 171. 12.04 RepNotify Not Dead: Bien, entonces ahora estamos de vuelta y vamos a trabajar en esto. Es que cuando es falso. Para que este representante, notifique y así podamos responder correctamente al jugador. Lo que quieres hacer primero, vamos a eliminar la física. Este es el primer paso. Tomemos la malla y voy a decir simular la física fuera. Lo siguiente que queremos hacer es que queremos volver a ensombrecer desde esta malla de tercera persona. Así que adelante y haz eso. Lo que voy a hacer es volver a poner la malla. Voy a arrastrarlo hacia abajo. Configura la colisión habilitada. Si acaba de hacer clic en la malla, se establece para consulta solamente. Voy a dar click aquí y configurarlo para consulta solamente. Puedo restablecerlo a como era antes. Vamos a hacer un nodo de reencaminamiento aquí y moverlo hacia abajo. Lo siguiente que queremos hacer es simplemente mirar hacia arriba aquí y ver qué tenemos que hacer. Ahora. Tenemos que tomar este componente cápsula y tenemos que hacer clic en él. Y tenemos que configurarlo colisión habilitado, arrastre desde aquí. Y digamos establecer colisión habilitada y seleccionarla. A continuación, configure la colisión habilitada aquí. Sin embargo, para esta, ahora esta es correcta. Además, recuerda que deshabilitamos la animación, necesitamos ejecutarla de nuevo. La animación para el jugador es este plano de animación. Este de aquí arriba, el modo de animación está configurado para el plano de animación De hecho, tenemos que volver a hacerlo desde aquí. De la malla. Y recuerda que esta es la malla aquí de ella. Y digamos establecer el modo de animación. Y sigue adelante y selecciona este conjunto de modo de animación. Y es necesario configurarlo de nuevo para usar el blueprint de animación. Ahora mismo cuando lo configuramos en blueprint de animación, en realidad necesitamos definir también qué blueprint de animación Debido a que restablecemos la configuración aquí arriba, lo que podemos hacer es que podamos arrastrar de nuevo desde esta malla y decir clase es este conjunto de instancia de animación revestido y conectarlo Es el que llamamos jugador MBP aquí, el plano de animación que creamos antes Ahora lo que tenemos que hacer, todavía vamos a reservar porque solo te voy a mostrar y ya puedes ver lo que está pasando. Si solo volvemos a abrir esto, juega aquí al terrorista. Ahora vamos a disparar a este jugador. Ahora a este jugador le disparan. Y puedes ver aquí el jugador sigue portando, pero aquí no hay nada. Y también estoy tirado en el suelo en esta pantalla, todavía hay un bicho. Esto se debe a que, recuerden con simular la física, tuvimos este problema antes en el curso. Si sostienes el mouse sobre él, dice si este componente está actualmente unido a algo, es la malla está unida al componente de la cápsula, Entonces iniciando la simulación lo desprenderá En realidad está separado del componente de la cápsula. Tenemos que volver a colocarlo de nuevo. Tomemos la malla aquí. Vaya, no los dos. Tomemos la malla y digamos adjuntar componente a componente. Si no recuerdas lo que hicimos, siempre puedes dar click sobre el arma saqueada Notifica si encuentras el arma saqueada desenvuelta. Esto es lo que hicimos. Deshabilitamos la física y volvimos a unir el arma a la escena raíz Aquí está lo mismo que estamos haciendo. Volvamos a aquí. Ahora vamos a conectar de nuevo o unir la malla al componente de la cápsula. Recuerda que está conectado a, en realidad no vamos a nada. El zócalo no es ninguno. Para la regla de ubicación. Digamos chasquido a blanco. Ajustar al objetivo. Ajustar al objetivo. Bien, veamos qué pasa si simplemente haces clic en Reproducir de nuevo. Y pruébalo aquí como el jugador. Voy a dispararle de nuevo al jugador. Ahora echemos un vistazo a lo que sucede. El jugador es engendrado por aquí. No obstante, todavía hay un problema. El jugador está aquí abajo, también en mi pantalla, el jugador como una cámara extraña. El motivo de esto es porque si vuelves a hacer clic en el Mesh, cuando simulas física, restableces todos tus ajustes. Para mí, la ubicación es esta y la rotación es esta. Para el jugador, inicialmente esto también se restablece. De hecho, necesito volver a ponerlo de nuevo. Si tomo la malla y digo set set ubicación relativa y rotación, necesito enchufar eso. Sólo voy a hacer clic en mi malla y copiar mi ubicación. Péguelo en. Este es el valor z y la rotación es -90 Vamos a compilar ahora, guardar todo A ver si todo está funcionando. Vamos a hacer clic en Reproducir. Como Terrorista otra vez, como este tipo. Déjame dispararle ahora al jugador y ver qué está pasando. Ahora el jugador está desove en el suelo. Por alguna razón, la encuesta reconsideró. Ahora estamos buscando normales. El único problema que tenemos ahora mismo es que el jugador está desove en el suelo Para solucionar el problema donde el jugador está debajo del suelo. Lo que podemos hacer ahora mismo cuando hacemos clic en play y el jugador realidad está desove correctamente, no hay nada malo con los puntos St. Realmente no necesitamos hacer nada con esos. El problema ahora mismo está dentro de aquí, cada vez que adjuntamos a este jugador, en realidad hagámoslo mantener relativo. Mantengamos al jugador relativo. Escalado. Relativo significa justo lo que hayamos escrito aquí. Ya que en realidad va a mantener nuestra báscula. Volvamos aquí al representante del jugador para la transformación que hicimos. En lugar de hacer 1.6 en realidad voy a borrarlo y ponerlo aquí. Porque de nuevo, si lo configuro para que se mantenga relativo, va a mantener mi báscula. Compilo y hagamos clic en play y veamos qué pasa si selecciono terrorista aquí. Vamos a disparar al jugador. Voy a disparar más. Veamos dónde responde el jugador. Ahora el jugador responde por ahí. Si solo maximizo mi punto de vista aquí se ve que el jugador tiene peón No obstante, el jugador está flotando. Esto se debe a que me olvidé de habilitar el caminar. Si sólo vuelvo a en su lugar aquí. Recuerda que por aquí configuramos la animación a esto y desactivamos el movimiento. Cuando deshabilitas el movimiento, tienes que habilitarlo de nuevo. La forma en que haces esto es dejarnos hacerlo justo antes del plano de animación Vamos a pasar esto. Tomemos el componente de movimiento del personaje y digamos establecer el modo de movimiento como este. Establecer el modo de movimiento conectado. Ahora puedes configurar este para que esté caminando, el caminar en el estándar que tienes por defecto, déjame simplemente mover esto hacia abajo. Y ahora debería funcionar. Si compilas y guardas todo, a lo mejor quiero mover esos puntos de generación más abajo. Así que en realidad están llegando al suelo. El jugador no está cayendo al suelo. Si solo los muevo hacia abajo, o en realidad están aquí en el suelo, esto debería funcionar si solo los muevo también. Éste. Éste. Éste, y éste. Y los muevo hacia abajo para estar en el suelo. Bien, vamos a jugar ahora selecta terrista, aquí estoy. Vamos a engendrar como el otro jugador. Ahora voy a dispararle al jugador. Veamos qué son los jugadores, el jugador está desove por allá Y puedo andar por ahí normalmente como antes, si disparo como cliente. Si solo lo maximizo para ver si está funcionando, ahora el servidor está muerto. El jugador responde allá, eso es trabajar en ambos sentidos. Si solo lo intento de nuevo, ahora el jugador muere rápido porque no hemos establecido la salud máxima. Y eso lo podemos hacer en la siguiente lección. Pero se puede ver que el jugador se está muriendo correctamente y nada se está cortando. Impresionante, Pasemos a la siguiente lección. 172. Restablece la salud en Respawn: Ahora reiniciemos la salud del jugador cuando el jugador responda. Y esto es muy fácil porque ya hicimos todo el trabajo si solo vuelves a la salud aquí. Y lo que podemos hacer es por aquí, siempre que el jugador responda, cada vez que pongamos al jugador para que ya no esté muerto, esto de aquí se disparará desde aquí. Lo que podemos hacer es que podemos arrastrar y decir set player él, creo que lo llamamos este Set salud del jugador. Básicamente este es el que hicimos antes. Así que establece la salud del jugador. Y también tenemos uno llamado set Player Armor. Llamen a esos que ya hicimos funciones. El que vamos a ver aquí. Consigue la salud máxima del jugador. Y también tenemos que conseguir player max armor. Vamos a recargar al jugador con salud y armadura. Ahora podemos jugar y debería funcionar. Eso era todo lo que teníamos que hacer. Bien, déjame disparar aquí y asegurarme de que sea correcto. Si solo minimizo esto para poder ver tanto la salud, esta, como también el cliente. Solo disparemos como el Klein para ver si funciona, el jugador debería repo Aquí. Se puede ver que el jugador vuelve a tener salud. Podemos ver que el jugador se está reiniciando en 100 de salud y armadura Y tengo que dispararle de nuevo al jugador antes de que el jugador muera. Impresionante, lo probaré aquí en el servidor y veré si funciona. Y el cliente debe responder con la máxima salud que es correcta también y todo está funcionando como se supone que debe hacerlo. 173. 12.06 Previene el daño al equipo: Ahora somos capaces de disparar al compañero de equipo. Si eres terrorista, no deberías poder disparar a tu compañero terrorista Algunos modos de juego que puedes tener eso también, pero si deseas no tener daño de equipo, pasemos a la base de jugadores. El daño se hace aquí en el lote. Equipa aquí el rodaje y recarga. Aquí es donde disparamos. Este es el trazo de línea que estamos creando. Simplemente lo que queremos hacer es no querer aplicar daños. Si es a tu compañero de equipo a quien le estás disparando. Lo que queremos comprobar es si el actor de éxito está en el mismo equipo que tú, puedes llevarte a este actor de éxito y decir obtener referencia. Vamos a conectarlo después de aquí. Si sólo me muevo esto un poco fuera de aquí, vamos a ampliar esto para que tengamos espacio para trabajar. Y también voy a hacer espacio aquí. Vamos a agregar el código en el medio. Consigamos la referencia del jugador. Digamos get controller porque tenemos esta variable de equipo dentro del controlador. Obtener referencia del controlador del jugador dentro de aquí podemos acceder a la variable de equipo que acabamos de hacer. Eso lo hicimos en las lecciones anteriores. Podemos usar eso para ver si el equipo de aquí es el mismo que el que tenemos sobre nosotros. Si solo tomamos el controlador del jugador y tomamos esta variable de equipo, los comparamos, estamos tomando esta variable de equipo del jugador que acabamos de golpear. Estamos tomando nuestra propia variable de equipo. Si esto no es igual a esto, entonces podemos aplicar daño si solo haces una rama. Y podemos aplicar el daño Si no estamos en el mismo equipo, quiero aplicar daño. No obstante, si estamos en el mismo equipo, realidad no vamos a hacer nada. Déjame reorganizar esto un poco aquí. Bien, entonces ahora que se reorganiza, si no estamos en el mismo equipo que el otro tipo, vamos a aplicar daños. Y eso era en realidad lo único que teníamos que hacer si selecciono ahora a terroristas. Y si aquí selecciono terrorista, no debería poder dañar a este compañero de equipo Si le disparo a este compañero de equipo, se puede ver que no pasa nada No estamos perdiendo la salud. Intento con éste. Si intentamos aquí como servidor además de disparar al cliente, no va a pasar nada. Bien, entonces así es como evitas los daños en el equipo. 174. 13.01 Diseña la interfaz de usuario de puntuación: Ahora que ya tenemos hecho el juego base, sigamos adelante y sumemos algunas anotaciones de equipo. Puntuación para antiterroristas y terroristas. Para que puedas ver cuánto has ganado en rondas. Sigamos adelante y bajemos a la interfaz de usuario. Ir a la interfaz de usuario en la interfaz de usuario principal, vamos a hacer las rondas aquí arriba. Lo que quiero hacer es básicamente quiero mostrarte lo que estamos tratando de hacer para que sea más fácil entender esto es lo que estamos tratando de hacer. Tener una puntuación para antiterrorista y tener una puntuación para terrorista. Nuevamente, desglose esto. Mira qué elementos necesitas usar e intenta hacerlo tú mismo si quieres, sin mi ayuda, porque deberías poder comprar. Ahora bien, si aún necesitas algo de ayuda, si no estás seguro, si no estás seguro, sigamos adelante y hazlo juntos. Primero, necesitamos una caja horizontal porque hay dos elementos uno al lado del otro. Sigamos adelante y busquemos cuadro horizontal. Déjame asegurarme de que no los ponga dentro de aquí. Simplemente golpee la caja horizontal en el panel del lienzo. Está dentro de aquí. Asegúrese de que el punto de anclaje esté en el centro de la pantalla. Si escribes cero en la exposición, ésta debería estar en el medio. Tenemos que ajustar la alineación x a 0.5 en la posición de la x. sólo voy a decir 30, en realidad, el xy 30, así que no está en el borde de la pantalla. Nuevamente, tamaño al contenido. Bien, ahora se va a dimensionar a cualquier contenido que tenga dentro de aquí. Primero, permítame agregar una superposición. Dentro de esta superposición, necesitamos una imagen porque necesitamos un fondo. Agrego esta imagen a la superposición para esta imagen. Solo busquemos panel, el mismo panel que hemos estado usando hasta ahora. Entonces este un panel doc otra vez, cambia el sorteo en cuanto a margen de caja a 0.50 0.5 y ahora podemos estirarlo Entonces ahora a las 11 en el zoom, puedo ver lo grande que es. No creo que vaya a hacer la talla aquí. Creo que en realidad voy a controlar esto más tarde. Entonces déjame escribir 32 por 32. Una vez más, voy a controlarlo aquí abajo. Primero, vamos a tener una caja vertical. Porque necesitamos dos textos uno encima del otro, necesitamos el primero. Solo busquemos texto. Ponlo dentro de la caja vertical. Duplica este. Voy a dar click en ambos. En realidad, vamos a copiar el estilo de éste. Déjame hacer click sobre él, mantén el turno y clic derecho. Da clic en ambos. Mantenga pulsada la Mayús y click izquierdo, Pegamos el estilo. Yo también voy a, veamos aquí. Para la sombra, no tenemos ninguna sombra aplicada y eso debería estar bien. Tampoco tenemos esquema. Bien, esta está bien. Ahora seleccionemos los dos que tenemos que hacer. En realidad, editemos el primero. Digamos antiterrorista. Vamos a escribir uno aquí. Déjame a lo mejor escribir un aquí para éste. Voy a ponerlo aquí en el medio. En realidad, éste también. Pon esto en el medio. Pon esto en el medio también. También aquí en la justificación, voy a ponerla a la mitad. Ahora da click en las líneas para eliminar los guiones. Ahora necesitamos algo de espacio entre ellos. Antes de hacer eso, también voy a cambiar el tamaño frontal. Creo que es un poco demasiado grande. Voy a fijarlo a 20. Al dar click sobre esta superposición, tenemos la imagen, luego tenemos la caja vertical. De hecho voy a poner algo de margen en esta caja vertical. Déjame escribir, o relleno. Entonces déjame escribir 30 y así es como se ve ahora. Creo que esto está bien. 30 está bien para esta caja vertical. Empujamos la caja vertical lejos de los bordes de esta imagen. Voy a cambiar el color de éste. Solo trata de encontrar el color que te guste aquí. Para el antiterrorista voy a reducir un poco la saturación. A lo mejor algo así está bien. Bien, tengo al antiterrorista, permítanme agregar un espacio entre estos dos. Basta con buscar espacio, agregarlos entre estos dos textos. Para la Y, escribamos diez. A lo mejor eso es un poco demasiado. Escribamos cinco, y volvamos a echar un vistazo, creo que necesitamos más. Digamos 88 para el espaciado. Simplemente dupliquemos esto. Voy a duplicar la superposición porque estamos en la caja horizontal. Se va a añadir otro al lado. Déjame cambiar éste a terrorista. Déjame cambiar el color aquí, el matiz a algo rojo. Sólo cero aquí. Es rojo. Voy a reducir ligeramente la saturación porque creo que es demasiado. La saturación es 0.8 Y voy a hacer eso para el otro también, cambiándolo a 0.8 se queda igual. Agreguemos un espaciador entre estos dos. Si vuelvo a tomar el espaciador, agréguelos entre es a superposiciones Entonces para el tamaño y la x, escribamos algo como 50, tal vez algo menos, tal vez no 50. Escribamos 30. Creo que esto está bien. Bien, si compilas ahora, solo cambiemos esas variables porque las vamos a usar más tarde. Este el número, llama a este T marcador terrorista. Voy a copiar esto y asegurarme de que esto sea variable porque necesitamos modificarlo posteriormente. Da click en el otro, llámalo texto partitura terrorista. Hacer esta variable también. Voy a hacer clic en todos ellos y asegurarme de que la visibilidad aquí se dice que no golpea comprobable porque no quiero que el mouse interactúe con ellos. Bien, si solo haces clic en Reproducir para echar un vistazo a cómo se ve, así es como se ve. Creo que todo se ve bien. Entonces pasemos al siguiente. 175. 13.02 Diseña la interfaz de usuario de Team Win: Antes de continuar, diseñemos el equipo que gane yo dentro de la interfaz de usuario. Volvamos a la principal por aquí. Quiero tener para que diga contar una victoria terrorista o una victoria terrorista cada vez que gane un equipo. De hecho, agreguémoslo debajo de esto. Lo que necesitamos es esto dentro de una caja vertical. Porque tenemos esto y el texto debajo de él, busquemos un cuadro vertical. Permítanme minimizar todo esto para que pueda ver dónde puedo dejarlo caer. Necesita entrar dentro de esta caja vertical. Sólo voy a dejarla caer entre aquí. Y luego arrastrando esta caja horizontal dentro de la caja vertical. Y ahora da clic en el cuadro vertical. Coloque el ancla en el centro. Establezca esta posición a cero. Voy a establecer la alineación. En realidad primero haga clic en tamaño al contenido y establezca la alineación en 0.5 Y para la posición en la Y, voy a establecerla en 30, igual que antes. Ahora lo tenemos dentro de una caja vertical. Y lo que podemos hacer es buscar un texto y agregar este texto al cuadro vertical. Este texto puede estar en el medio, y la justificación también puede estar en el medio. Vamos a darle algo de espacio, buscar espaciador, Agrégalo en el medio, Haga clic en él, Digamos, por ejemplo, 15 o 20, o 25 tal vez. Digamos 25, y así es como se ve. Ahora vamos a dar click sobre este texto. Vamos a desplazar el clic derecho para copiar este estilo frontal haga clic en este clic izquierdo para pegarlo. Para el offset de sombra, sólo voy a darle una sombra de dos en dos. este momento no puedes ver nada porque dentro del color de la sombra, necesitas aumentar el alfa a cero, es transparente. Pero si escribes 0.3 por ejemplo, veamos, hay un ligero efecto sombrío, 0.4 tal vez se vuelve más claro y esto es lo que tenemos Por ejemplo, podemos escribir victoria terrorista. Así es como se verá. Bien, para el tamaño divertido, vamos a hacerlo un poco más grande porque es importante. Ahora se ve bien. Compilemos todo y pasemos al siguiente. 176. Funcionalidad de interfaz de usuario de 13.03 puntaje y victoria en equipo: Ahora sigamos adelante y codifiquemos la funcionalidad para la interfaz de usuario. Vamos a abrirlo de nuevo y haciendo clic en Counter Terrorist. Voy a configurarlo para que esté oculto para empezar, configurarlo en oculto. No queremos verlo por defecto. Además, si acabas de subir aquí, cámbiate el nombre. Cambiémoslo a texto Anuncio de victoria por equipo por ejemplo. Puedes llamarlo como quieras y configurarlo variable para que podamos cambiarlo en blueprint Y este el puntaje antiterrorista que ya tenemos así como el marcador terrorista. Y ambos son variables. Bien, así que ya está hecho. Pasemos a la gráfica que hay dentro de aquí. Lo que hemos hecho hasta ahora es la armadura como podemos ver aquí y el MO ahora bajemos aquí, hagamos un nuevo evento personalizado. Llamemos a esto una actualización de puntaje terrorista UI. Voy a copiar este nombre porque lo escribiré de nuevo aquí abajo. Digamos ahora codterrorista score. Lo que tenemos que hacer es para el terrorista tenemos que tomar la partitura terrorista puntuación y establecer el texto y dejarnos conectarlo. Y vamos a hacer lo mismo aquí abajo para el marcador antiterrorista. Establecer texto y vamos a establecer el texto. Para el texto básicamente necesitamos la partitura. Vamos a hacer clic en este evento y hacer una nueva variable, y valor entero y numérico. Llamemos a esto una puntuación. Lo mismo para este. Hagamos una nueva variable entera. Llámalo puntuación. Ahora podemos simplemente enchufar este número de puntaje aquí. El motor neuronal cambiará automáticamente tu variable entera en una variable de texto para que pueda imprimirla en la pantalla. Hagamos lo mismo aquí. Alejemos esto solo para organizar esto. Ahora ya terminamos con esos. En realidad, compilemos y guardemos todo. Lo último es éste, y éste es un poco más grande. Hagamos clic derecho y hagamos un nuevo evento personalizado. Llamemos a esto una actualización equipo ganar anuncio I. Bien, para este, lo que tenemos que hacer es simplemente establecer este texto también. Tomemos esta. Recuerda que este está oculto por defecto. A pesar de que cambiemos el texto, necesitamos mostrar la visibilidad antes de hacer algo, vamos a golpear aquí y digamos establecer visibilidad para la visibilidad. Vamos a configurarlo para que no golpee comprobable, así que no podemos interactuar con él con el ratón Entonces queremos establecer este texto. Déjame mover esto hacia abajo y arrastrar desde aquí y decir un texto fijo así. Establecer texto, seguir adelante y conectarlo. Ahora vamos a fijar el texto, dependiendo de si es el terrorista o el antiterrorista el que gane. En realidad necesitamos saber cuál es el equipo. Recuerda, dentro del control del jugador, si vuelvo al control de jugadores planos, definimos este equipo variable Y en realidad podemos usar esto para saber si estamos hablando del terrorista o del antiterrorista. Permítanme añadir aquí una nueva variable. Recuerde que esta variable de equipo es un tipo de clase de actor. Si acabo de cambiar esto a actor actor aquí y es referencia de clase, llamemos a este equipo, solo deletrearlo. Ahora mismo, tenemos a este equipo aquí. Puedo arrastrar de aquí y decir igual a este equipo igual a antiterrorista. Si es así, entonces podemos arrastrar desde aquí y decir seleccionar. Podemos seleccionar qué texto queremos elegir. Podemos enchufarlo aquí. Estamos preguntando es este equipo ahora mismo y más adelante vamos a enchufar información aquí, pero ahora mismo no tenemos nada. Pero si este valor es antiterrorista, si eso es falso, entonces queremos mostrar, por ejemplo, la victoria terrorista terrorista. Si es cierto, si es antiterrorista, entonces queremos deletrear victoria terrorista. Se va a seleccionar el texto dependiendo de qué equipo haya ganado y le daremos esa información más adelante. Ahora vamos a hacer doble clic aquí, hacer un nodo re ruta. Bien, ahora mismo estamos mostrando esto a la pantalla, pero después de un par de segundos quiero volver a ocultarlo. Si vuelvo y la cantidad de segundos es en realidad el tiempo que tarda la gente en responder. Imagínese si todos mueren, esto viene al servicio de contador de pantalla ganar después, digamos por ejemplo, 5 segundos. Se aleja porque inicia una nueva ronda y todos van a responder. Lo que voy a hacer es simplemente llamar a esto, por ejemplo, tiempo de visualización. Y podemos enchufar el temporizador de respuesta más adelante en el tiempo de visualización. Voy a retrasar esto con la cantidad de este tiempo de retardo, que es el temporizador de respuesta en el futuro. Y podemos hacer doble clic aquí y hacer esto organizado. Vamos a retrasar esto. Después de este retraso, queremos ocultar esto una vez más, solo copiar, pegar esto, agregar conectado, moverlo aquí, y voy a configurarlo en oculto una vez más. Bien, entonces esto está terminado. Entonces esa fue la UI de puntaje y esta fue la UI de puntaje. Y esta es la interfaz de usuario de anuncio que vamos a actualizar. Entonces ahora podemos usar estos eventos más adelante. Adelante, guarda todo y pasa al siguiente. 177. 13.04 Haz un seguimiento de los jugadores vivos: Ahora lo que tenemos que hacer es hacer un seguimiento de quién está vivo en el mapa y quién está muerto. Porque realmente no podemos mostrar aquí en la interfaz de usuario quién ganó. Si no sabemos realmente quién está en el mapa y en qué equipo están, también necesitamos saber en qué equipo están. Por ejemplo, podría haber cinco personas vivas y todas están en el mismo equipo. Por ejemplo, antiterrorista y todo el terrorista está muerto. Entonces necesitamos mostrar victoria antiterrorista a pesar de que tenemos cinco vivos porque podrían ser del mismo equipo. Eso es lo que necesitamos saber. Hagámoslo dentro del modo de juego porque dentro del modo de juego en realidad decidimos todas esas reglas. Lo que podemos hacer aquí es agregar dos variables. Primero, agreguemos uno llamado Players Alive. Antes de agregarlo, cambiemos realmente el tipo de variable para la variable. Quiero cambiar esto a base de jugadores. Adelante y selecciona al jugador ahora creo que creo que esto está mal. Nuevamente busquemos base de armas, pero base de jugadores, es esta. Éste. Éste de aquí. Base de jugadores. Ahora, en lugar de sólo una variable original aquí, vamos a llegar a un mapa. Qué es un mapa, como puedes ver aquí, puede contener dos valores. Si solo lo seleccionas aquí, nosotros solo compilamos. Ya puedes ver que tenemos esta base de jugadores, pero también tenemos la segunda variable a su lado. De hecho, puedes asignar diferentes cosas a este jugador. Ahora si hago clic en el más, por ejemplo, si agrego un jugador aquí, también puedo agregar un número aquí. Esta variable de mapa, en realidad se puede utilizar como en diferentes escenarios. Se pueden tener dos variables. Por ejemplo, puedes tener cada jugador y también cuántas muertes tienen. Cada jugador está dentro de esta lista y también tiene cuántas muertes tiene, por ejemplo. Pero lo que queremos hacer es que queremos tener a este jugador y también queremos saber en qué equipo están. Porque esto es algo que necesitamos aquí para ver si todos en el mismo equipo están vivos o si están muertos y todo eso. Cambiemos esta otra vez a actor, última referencia, porque este es nuestro equipo. Y sólo voy a cambiar este tipo de variable. Aquí lo tenemos. Ahora tenemos esta variable, tenemos al jugador. Si solo compilo, esto desaparecerá si compilo. Ahora podemos tener al jugador, podemos aquí, en qué equipo están. Ahora podemos tener a cada jugador y en qué equipo están. Bien, entonces tenemos vivos a los jugadores. Voy a hacer uno nuevo llamado jugadores. Dt es un último más adelante, y trabajaremos con eso más adelante. Pero hagámoslo ahora. Los jugadores engendran. Vamos a usar eso más tarde. Y éste sólo va a ser un array normal. Simplemente sabemos cuántos jugadores ha engendrado dentro del mapa Empecemos por aquí. Hagamos un nuevo evento personalizado. Y esta la vamos a agregar al mapa de jugadores vivos. Y a éste se le llama mapa, por cierto. Esta es una sola variable, una matriz, un conjunto. Y ahora estamos trabajando con un mapa. Agregar mapa vivo de dos jugadores. Lo que vamos a hacer es que vamos a tomar esto y decir añadir aquí. Podemos agregar el jugador, en realidad necesitamos tener esta referencia de jugador. Podemos simplemente arrastrarlo y enchufarlo aquí. Y esta es la base de jugadores. Sólo voy a cambiarle el nombre a Player. Antes de hacer esto, el jugador podría estar muerto. El jugador podría ser agregado a esto. Jugadores muertos, porque cuando respondan, se les sumarán a esto. Aquí, lo que tenemos que hacer primero en realidad es tomar esto y decir encontrar. Podemos usar esto. Por cierto, para los mapas, puedes simplemente arrastrar aquí, ir a servicios públicos, ir al mapa. Aquí están las funciones que puedes usar con él. Se puede ver que en realidad no hay mucho que pueda hacer con él. Puedes agregar, encontrar algo, preguntar si está vacío y así sucesivamente. En realidad no hay mucho que ver con eso. Lo que queremos hacer, intentaremos encontrar a este jugador y ver si este jugador está dentro de este mapa. Vamos a conectarlo aquí, Encuentra aquí. Hagamos esta rama para preguntar si ha encontrado al jugador dentro de aquí. Déjame mover esto cuatro abajo un poco. Si encontramos al jugador queremos tomar esto y decir remove y seleccionar la función remove. Adelante y quita a este jugador del muerto del jugador. Permítanme simplemente hacer doble clic aquí y hacer una nota de ruta trasera para que esté organizada. Ahora voy a arrastrar de este jugador, adelante y conectarlo de nuevo. Click, voy a mover todo esto hacia abajo así que tengo más espacio para trabajar. Y podemos mover esto hacia abajo así. Y ahora lo es. Aquí vamos a encontrar a este jugador dentro del mapa de jugadores muertos. Y vamos a quitar al jugador si el jugador ha sido encontrado. No obstante, si no se ha encontrado al jugador, simplemente continuamos con el código. Lo que queremos hacer aquí es éste donde sumamos vivo al jugador a los jugadores. Ahora eliminamos al jugador del muerto del jugador, y ahora vamos a agregar este jugador al mapa. Este es el jugador otra vez. Podemos simplemente desconectar esto porque ahora tenemos este nodo de reencaminamiento Voy a hacer doble clic aquí y conectarlo a aquí. De nuevo, haz doble clic aquí, y solo agrégalo a aquí abajo. Ahora lo que tenemos que hacer es que en realidad también necesitamos esto aquí. Necesitamos saber en qué equipo está para hacer esto, necesitamos obtener una referencia al controlador del jugador. Porque recuerda dentro del controlador del reproductor tenemos esta variable y la necesitamos. Bajemos aquí, déjeme alejar esto. Lo que podemos hacer es hacer doble clic aquí para hacer un nodo de reencaminamiento Podemos arrastrar aquí y decir obtener controlador y seleccionado. Recuerda que este es el jugador. Estamos tratando de conseguir este controlador de juego. Luego desde la interfaz del blueprint hicimos la referencia del controlador get player Ahora tenemos el controlador del reproductor. Ahora podemos acceder a todo lo que hay dentro de este controlador de reproductor. Y queremos esta variable de equipo. Vamos a golpear aquí. Equipo consigue esta variable de equipo. Y ahora podemos hacer clic y arrastrar y enchufar esto aquí. Vamos a enchufarlo aquí. Y voy a mover todo esto hacia abajo así tengo más espacio así como este. Y vamos a acercarlo y conectarlo. Ahora en realidad estamos agregando a este jugador al mapa, y estamos eliminando al jugador de este lugar de jugadores. Bien, ahora esto está terminado. Compilemos todo y pasemos al siguiente. 178. 13.05 Haz un seguimiento de los jugadores muertos: Lo que tenemos que hacer es ahora que tenemos que hacer un seguimiento de los jugadores aquí. Lo que tenemos que hacer igual que antes, hacer clic derecho, hacer un nuevo evento personalizado y llamar a este agregar al mapa de jugadores. Al igual que antes, necesitamos la referencia del jugador. Entonces, si buscas una base de jugadores, sigue adelante y selecciónala aquí y llama a este jugador. Tomemos el mapa muerto de este jugador. En realidad, tomemos primero el que está vivo. Tenemos que eliminar al jugador si el jugador está dentro de aquí antes agregarlo al mapa muerto aquí, al igual que antes. Tomemos esto, veamos si podemos encontrar al jugador dentro de aquí. Hagamos una rama. Conectemos esto aquí. Por cierto, para este, me olvidé de conectar realmente esto como puedo ver aquí aquí para el remove, si es falso, si no podemos encontrar al jugador dentro de aquí, adelante y continuar con el código. No quites nada. Vamos a hacer doble clic aquí y hacer doble clic aquí. Bien, eso se corrige. Tenemos que hacer lo mismo aquí. Si podemos encontrar al jugador, adelante y tomar esto y decir eliminar. Y vamos a conectarlo. Adelante y quita al jugador, igual que antes. Yo sólo voy a reorganizar esto. Bien entonces ahora cuando hayamos eliminado al jugador, agreguemos ahora al jugador al muerto del jugador. Tomemos esto, digamos sumar, seguir adelante y sumar al jugador igual que antes. Haga doble clic aquí para el jugador, haga un nodo de ruta trasera. Metamos esto aquí y hagamos de nuevo un nodo de ruta trasera. Aquí vamos. Ahora hemos agregado el jugador aquí. Y solo voy a alejar esto un poco así tengo más espacio para trabajar. Necesitamos que el controlador sepa qué equipo está este jugador. Arrastremos esto. Vamos a hacer doble clic aquí. Digamos que obtenga el control, obtenga el controlador en realidad obtenga el controlador del reproductor. Adelante y conéctalo. Ahora necesitamos tomar esta variable de equipo igual que antes y conectarla aquí abajo. Vamos a moverlo aquí abajo. Y déjame mover esto un poco así. Voy a mover este un poco hacia arriba, así como esto. Y adelante y acérquelo. Bien, ahora estamos agregando el jugador aquí. Y al igual que antes, si no podemos encontrar al jugador, solo tiene que seguir adelante y encontrar el controlador y podemos agregar el jugador a este mapa. Bien, este era el código. Ahora estamos haciendo un seguimiento de los jugadores que están vivos y también estamos haciendo un seguimiento de los jugadores que están muertos. Lo que tenemos que hacer ahora es hacer un seguimiento de los jugadores que están vivos, todos los jugadores vivos. Sigamos adelante y hagamos eso en la siguiente lección. 179. 13.06 Haz un seguimiento de todos los jugadores generados: Para hacer un seguimiento de todos los jugadores que realmente se generan en el nivel Esto es muy fácil en comparación con los demás. Vamos a hacer un evento personalizado llamado add to players spawn array dentro de aquí Nuevamente, necesitamos al jugador, cambiemos esto y lo llamemos jugador. Y el tipo es base de jugadores. Simplemente solo queremos tomar esta matriz de engendros de jugadores y decir elementos de conjunto de matriz y queremos agregar los jugadores dentro de aquí Ahora tenemos que elegir el índice. Y el índice es simplemente tomar esto y decir longitud. Y vamos a enchufarlo aquí. Automáticamente va a encontrar la longitud de esta matriz y va a agregar los jugadores dentro de ella. El ítem que queremos agregar es simplemente este jugador. Recuerda también tomar esta talla para que quepa, ya que si no la tomas inicialmente, lo que necesitábamos hacer es realmente tomar esta y decir re size. Entonces vamos a darle como cuánto puede contener esta matriz en tamaño. Pero en lugar de hacer esto, en realidad solo podemos decir tamaño para que quepa. Tamañarlo automáticamente. Eso está bien. Y podemos doble clic en esto para hacer un nodo de ruta posterior, y podemos acercarlo más. Esto en realidad está hecho. Esto es todo lo que tenemos que hacer. Ahora podemos usar todos estos eventos. Ahora es mucho más fácil para nosotros porque ahora hemos hecho todos estos y podemos usarlos en el futuro. Guardemos todo y pasemos a la siguiente lección. 180. 13.07 Comprueba la cantidad de jugadores vivos: Bien, entonces ahora en realidad necesitamos verificar si los jugadores están todos muertos o si están todos vivos. Porque tenemos que ir a este Nui y exhibir esto. Tenemos que verificar la cantidad de jugadores que están vivos. Aún así, la mejor manera de hacerlo es aquí. Cuando agregamos al jugador al mapa muerto, entonces sabemos que este jugador acaba de morir. Y desde aquí podemos comprobar cuántos jugadores están vivos. Cada vez que muere un jugador, vamos a comprobar si necesitamos jugar a esta pantalla antiterrorista, por ejemplo. Hagamos esto, permítanme hacer una macro aquí. Vamos a hacer clic en este plus. Para la macro, déjame llamar a este cheque Cantidad de capas vivas. La razón por la que lo convierto en una macro en lugar de una función es porque estoy haciendo un bucle for aquí. O para cada bucle en realidad, para cada bucle voy a usar este. Lo bueno de una macro es este retorno. Si solo agrego dos variables aquí, ambos pines de ejecución, esta se llama ejecutar, esta se llama. Entonces la razón por la que se les llama, que el texto desaparece si realmente escribes ejecutar aquí arriba. Y si escribes, entonces también desaparece aquí abajo. La salida, en lugar de hacerlo aquí arriba como una función, cuando comienzas con la pluma de ejecución y la terminas aquí, podemos, con una macro, agregar la salida al completo. De hecho, esperamos a que ocurra el bucle antes de continuar con el código aquí. Si agrego esta macro a aquí, solo va a continuar siempre que mi loop haya terminado. Es por eso que en realidad estoy creando una macro. En este caso lo que quiero hacer, agreguemos ahora dos variables. Al primero podemos llamar vivos a los terroristas und terroristas. Hagamos esto en una variable normal entera. Hagamos uno nuevo llamado vivo y recopilemos, Bien para este, primero pongamos a cero a los contrterroristas, los que están vivos y este a cero también. Porque vamos a bucle esto y vamos a incrementar la cantidad dependiendo de cuántos estén vivos. Bien, tomemos vivos a estos jugadores. Aquí es donde podemos comprobar cuántos están vivos. Todavía uno. Permítanme simplemente borrar esto para éste. Para la carrera, solo puedes tomar esto y decir para cada bucle que realmente puedes usar esto. Sin embargo, para un mapa no se puede decir para cada bucle, no es una matriz, esto es solo para rayos. Lo que puedes hacer es arrastrar, si solo vas al mapa de utilidades y puedes ver esta función. Tienes algo llamado llaves. También tienes algo llamado valores. Si haces clic en las claves, puedes obtener todas las claves aquí. Como toda esta parte, puedes conseguir a todos los jugadores. Si arrastras y dices valores, sin embargo, puedes obtener todos los valores, puedes obtener toda esta sección, esta sección por aquí, tenemos claves y tenemos valores. Y puedes verlas aquí. Si solo arrastras desde aquí y dices agregar, puedes ver que estás agregando a esta, cuales son las claves, y estas agregando a esta, cuales son los valores. Esto es lo que hicimos antes. Tomemos todos los valores. Permítanme borrar esto aquí. Déjame tomar todos los valores y decir para cada bucle ahora podemos bucle porque esto es una matriz. Ahora para cada bucle, permítanme simplemente borrar este y mover este hacia abajo. Vamos a comprobar qué equipo está vivo puedo arrastrar de esto y decir, en realidad tenemos que tomar esto primero y decir igual y preguntar si esto es igual para deshacer terrorista por ejemplo. Y seleccione este BP antiterrorista hacer una rama aquí. Ahora estamos tomando los valores aquí y estamos preguntando, es esto un valor antiterrorista en este momento? Significa que un antiterrorista está vivo. Si eso es cierto, podemos tomar vivo a este antiterrorista y decir más más. ¿Qué significa plus, plus? Es lo mismo que decir más uno Y luego establecer esta variable así, así, hacer esto es mucho más corto. En realidad es lo mismo que agregar uno. Puede mantener el mouse sobre él y dice agregar uno al valor especificado, luego configurarlo. En lugar de hacer todo esto, podemos simplemente hacerlo. Estamos tomando vivo al antiterrorista y agregándole uno porque acabamos de enterarnos de que este valor específico es un antiterrorista. Bien, si es falso significa que es un terrorista. Podemos tomar vivo a este terrorista y decir más y agregarlo aquí a lo falso. Si es falso, es un terrorista que está vivo. Cuando termine el bucle, lo que tenemos que hacer ahora aquí en el regreso, tenemos que decir cuántos terroristas están vivos y cuántos antiterroristas están vivos. Necesitamos agregar dos variables y ambas son números enteros aquí Salidas, llamar a éste contar terroristas vivos, y llamar a éste terroristas terroristas vivos y sin espacio. Ahora podemos agregar ambas variables aquí y emitirlas al reproductor en el. Cuando completemos el bucle vamos a continuar el código y así si vuelvo a ventilar gráfico y acabo de compilar aquí es vamos a continuar después del bucle y ahora sabemos cuántos contra-terroristas están vivos y también sabemos cuántos terroristas están vivos. 181. Anuncio de victoria en equipo de 13.08: Ahora que sabemos cuántos jugadores están vivos, ahora tomemos vivos a estos terroristas y preguntemos si esto es igual a cero. Podemos hacer lo mismo por el terrorista. Pregunta si esto es igual a cero, justo desde aquí Y di y usa éste o lingotes Si el terrorista o los antiterroristas son cero. Esto significa que necesitamos este texto aquí porque no hay más antiterroristas ni terroristas en el mapa y tenemos que decir o decir quién ha ganado el juego o la ronda por aquí, nos estamos preguntando, ¿es esto igual a cero o es esto igual a cero? Si uno de ellos es cierto, hagamos una rama y sigamos adelante y la conectemos. Si uno de ellos es cierto, necesitamos jugar el anuncio. Entonces volvamos aquí como recordatorio y veamos cómo llamamos el anuncio. Entonces aquí lo llamamos actualización equipo ganar anuncio. Yo ahora para jugar esto, no podemos hacerlo directamente en el modo de juego porque recuerda que el modo de juego siempre se ejecuta en el servidor. Y es por eso que aquí nunca estamos replicando al servidor porque no tiene sentido Ya se está ejecutando en el servidor. El cliente no puede acceder al código dentro del modo de juego. Además, recuerde que la interfaz de usuario se está ejecutando en el cliente. cliente y el servidor no pueden comunicarse así, como tú no puedes. El cliente no puede simplemente saltar al modo de juego porque el modo de juego solo existe en el servidor y no puede comunicarse con el cliente Stuff aquí la interfaz de usuario, en realidad necesitamos como un medio para ejecutarlo. O necesitamos ejecutarlo a través la base de jugadores o tenemos que ejecutarlo a través del control del jugador. Como estamos controlando la interfaz de usuario dentro del control del jugador, estamos creando una interfaz de usuario dentro del controlador del reproductor. Dentro del mando de juego. Tiene más sentido hacer cosas dentro de aquí con la interfaz de usuario. Hagámoslo. Vamos a hacer clic derecho. Lo que realmente tenemos que hacer es simplemente tomar el WB principal. Tenemos que llamar a este anuncio de victoria de equipo de actualización. Volvamos al anuncio de victoria del equipo de actualización del controlador de juego . Esto es lo que estamos tratando de hacer. Vamos a crear una función o un evento para eso. Hagamos un evento personalizado llamado anuncio de ganancia de actualización. Déjame copiar esto para no tener que a escribirlo porque ahora tenemos que hacer un nuevo evento para clientes corriendo a través de los clientes porque necesitamos ejecutar algunas cosas de la interfaz de usuario y hacer clic en Propietar cliente confiable Vamos a ejecutar el cliente uno aquí arriba. Bien, vamos a bajar esto. Vamos a conectarlo aquí. En realidad no la M, esta es la equivocada. Actualizar anuncio del equipo I. Eliminemos esto y conectemos esto en su lugar. Ahora tenemos que pasar esto por aquí y también necesitamos ejecutar el tiempo de visualización. Haz lo mismo aquí arriba, solo continuando con el flujo. Y ahora tenemos que llamarlo aquí a través del modo de juego. Ahora funciona. Podemos simplemente llamar a éste porque se ejecuta a través del servidor. Recuerda, solo puedes llamar a eventos de clientes si actualmente estamos en el servidor. Estamos en el servidor porque si este evento aquí, si vuelvo, si llamas este evento aquí a través del modo juego, seguimos en el servidor. Esto es decir que solo puedes ejecutar este servidor, solo puedes ejecutar eventos de cliente si estás en el servidor. Nosotros estamos haciendo eso. Volvamos al modo de juego. Ahora aquí, después de que comprobamos que uno de ellos es cero, ahora tenemos que jugar esto. Necesitamos obtener el controlador o todos los jugadores, porque necesitamos mostrar para todos los jugadores, necesitamos mostrar este texto aquí arriba para todos los jugadores. Lo que tenemos que hacer es que necesitamos un bucle for. Es por ello que hicimos que estos jugadores engendraran. Tomemos esto y digamos por cada uno, porque realmente no nos importa quién está vivo y quién no, en realidad solo queremos jugarlo para todos los jugadores engendrados. aquí para cada uno de los jugadores spawn, vamos a conseguir el controlador It controller Entonces podemos volver a decir get player controller reference lo mismo que lo que hemos estado haciendo hasta ahora. Y ahora podemos llamar a este llamado anuncio de victoria de equipo de actualización. Llamémoslo actualizar anuncio del equipo. Éste de aquí. Ahora necesitamos saber cuál es el equipo. También necesitamos saber cuál es el tiempo de visualización. El tiempo de visualización, de nuevo, ya te lo dije antes, esto en realidad es solo el temporizador de respuesta. Mientras estamos respondiendo, queremos mostrar esto en la pantalla. Déjame hacer una nueva variable aquí en el modo de juego y decir. Temporizador de respuesta. Y podemos simplemente convertir esto en un flotador y conectarlo a aquí. Ahora también necesitamos conocer el equipo para este equipo. Tenemos que mostrar quién ganó el juego. Para eso, solo necesitamos tomar con vida a estos jugadores, porque quien esté vivo es el equipo que ha ganado. Podemos tomar esto y decir valores. Adelante y selecciona esto. Simplemente golpee desde aquí y diga que se pone. Porque ahora es como una matriz. Podemos obtener este valor. Sólo lo vamos a conseguir del primer jugador que encontremos dentro de aquí. No es realmente importante saber quién es el jugador porque están todos vivos, el mismo equipo que ha ganado. Así que sólo vamos a conseguir el primer jugador que podamos encontrar. Y entonces podemos enchufar esto aquí. El jugador vivo es el que ha ganado. Adelante y conecta todo. Y yo sólo voy a hacer apuntes de ruta trasera aquí. Y aquí lo tienes. Entonces ahora estamos realmente terminados. Así que estamos llevando al juego a todos los jugadores que han sido engendrados Estamos tomando todas sus leyes de control de juego. Y estamos mostrando para todos ellos, este equipo de actualización lo anunciamos. Y lo que estamos mostrando es quien esté vivo, este es el equipo que ha ganado. Por lo que ahora hacemos clic en el temporizador de respuesta. Y voy a configurar este temporizador de respuesta a tal vez algo así como 3 segundos por ahora va a compilar. Y ahora vamos a hacer clic en Reproducir y probarlo. Y vamos a jugar el juego aquí. Voy a seleccionar terroristas aquí, o antiterroristas. Y voy a seleccionar terroristas, voy a moverme frente al antiterrorista. Ahora soy el antiterrorista, voy a disparar al terrorista. Ahora debería decir uno antiterrorista, Pero ahora mismo no se muestra nada. Entonces déjame cerrar esto y ver qué está pasando. Bien, antes de continuar, solo recuerda configurar este temporizador de respuesta a algo que no sea cero, tal vez algo así como 3 segundos. Además, tenemos que configurar a los jugadores para que estén vivos cuando engendren, porque ahora mismo no está pasando nada Nunca hemos llamado a estos eventos Aquí, compilemos todo, guardemos todo, y vayamos a la base de jugadores cada vez que este jugador genere. Y esto está dentro de esta gráfica de eventos. Comienza a jugar cada vez que este jugador genere y establecemos la salud de este jugador También quiero ponerlos a este mapa vivo. Recuerda ahora mismo en el cliente, este juego de inicio se ejecuta tanto en el cliente como en el servidor. Nos va a dar un dólar si llamamos a esto directamente. Debido a que solo se puede acceder al modo de juego a través del servidor, no podemos acceder a él a través del cliente. En realidad necesitamos hacer un evento de servidor. Hagamos un nuevo evento personalizado a través del servidor. El primero necesito agregar dos capas vivo mapa y ejecutar esto a través del servidor. Confiable. Necesitamos hacer el otro también, llamado server two layers spon array porque tenemos ese también Y tenemos que ejecutar esto también en el servidor. Bien, aquí necesitamos obtener la referencia del modo de juego. No creo que hayamos hecho una variable para esto, como hicimos para la ley de control de jugadores. Hagamos eso también para el modo de juego. Voy a alejar esto. Digamos obtener modo de juego. Esta es en realidad la referencia. Consigamos el modo de juego aquí abajo. Esta función, ejecutarlo a través de esta referencia del modo de juego get. Vamos a mover esto hacia abajo. Sigamos adelante y conectémoslo. Promocionemos esto a nuestra variable y llamémoslo modo de juego. Bien, vamos a conectarlo. No necesitamos replicar esto porque esto solo se ejecuta en el servidor de todos modos Vamos ahora por aquí, tomemos esta variable de modo de juego. Llamemos al agregar a los jugadores un mapa en vivo. Conectemos esto para éste. Digamos modo de juego. Nuevamente, tomemos esta variable de modo de juego que tenemos. Digamos agregar a los jugadores engendrar matriz. Vamos a ir a y conectados como antes. Ahora lo que podemos hacer con esto es que podemos llamarlo aquí en la obra Begin. Podemos llamar servidor agregar capas a un mapa en vivo. Y también podemos llamar al adypawnarray. Tenemos que definir al jugador. Recuerda, ya estamos dentro de la base de jugadores, así que solo podemos decir auto y arrastrar desde la distancia misma otra vez. Ahora los hemos agregado cada vez que engendran. Estamos agregando al jugador al mapa en vivo, pero también agregamos el jugador a los jugadores que han generado Así que hacemos un seguimiento de cuántos jugadores hay realmente dentro del mapa. Siempre que muere el jugador, tenemos que agregarlos a la muerte también. Si sólo voy aquí arriba, vaya a la armadura de salud y daño. Si solo bajamos a esta muerte, recuerden que hicimos la reaparecer aquí después de esto donde dice que no hay armas que dejar Y nosotros respondemos, el jugador. Ahora desconectemos esto y solo alejemos esto. El jugador, cada vez que el jugador muere y deja caer todas las armas. Agreguemos al jugador a ese evento del modo de juego. Esto ya se está ejecutando en el servidor, por lo que no necesitamos hacer un evento de servidor. Esta referencia del modo de juego la hicimos, digamos Agregar jugador, o déjame ver cómo lo llamo. Si voy al modo de juego, agrego dos jugadores mapa muerto. Golpeemos desde aquí y digamos sumar dos jugadores muertos y conectados. Ahora tenemos que decir ¿quién es el jugador? Es yo, seguimos en el jugador. Ahora vamos a agregar a este jugador al mapa muerto cada vez que muera el jugador. La razón por la que no me está imprimiendo es que en realidad agregué este código aquí arriba en el mapa a jugadores vivos. Y necesito llamarlo aquí abajo porque necesito revisar cada vez que muere un jugador. Déjame simplemente desconectar este código aquí. Déjame copiar todo esto que he escrito y voy a moverlo hacia abajo a éste en su lugar y conectarlo. Un pequeño error, solo asegúrate de que no te suceda a ti también. Agrégalo al deadmp del jugador, porque necesitamos verificar cada vez que muere un jugador Vamos a compilar y dar clic en jugar ahora. Y sólo voy a maximizar esto. Seleccione Contraterrorista aquí, terrorista aquí. Y luego me voy a quedar aquí a la intemperie como el antiterrorista. Ahora voy a disparar al terrorista. Sólo voy a acercarme un poco más. Si le disparo al terrorista, ahora dice victoria antiterrorista en ambas pantallas. Ahora va a desaparecer después de 3 segundos porque esto es lo que he puesto en mi temporizador. Y tratemos de probarlo con más jugadores. Si elijo cuatro jugadores y juego el juego, aquí están. Voy a seleccionar terrorista, terrorista, y éste antiterrorista. En mi otro monitor, creo o detrás de éste. Hay uno más. Aquí está. Y voy a seleccionar antiterrorista para éste también. Ahora tenemos dos antiterroristas y también tenemos dos terroristas. Permítanme pararme aquí a la intemperie para todos ellos y como los antiterroristas se paran por aquí. Ahora como terrorista para éste, en realidad voy a ir al engendro, intentemos matar aquí y veamos qué dice Ahora bien, si mato a este antiterrorista, nada se va a exhibir porque aquí no todos los jugadores están muertos. Como antiterrorista que están vivos, voy a disparar a este terrorista. Ahora este terrorista está muerto y todavía somos dos jugadores que quedan vivos aquí como el antiterrorista. Si ahora voy al terrorista y le disparo a este terrorista, ahora dice victoria antiterrorista. En todas las pantallas, todo está funcionando perfectamente. Ahora podemos seguir adelante y sumar los puntajes del equipo antes de responder a los jugadores. 182. 13.09 Añade la puntuación de equipo: Lo que tenemos que hacer ahora es sumar la puntuación del equipo. Si volvemos a la Ui principal, recuerda que hicimos el marcador del equipo aquí. Hicimos que estos dos eventos actualicen la puntuación terrorista UI. E hicimos esta actualización antiterrorista score UI. Vamos a agregarlos también a la ley de control negro porque de nuevo no podemos acceder al modo de juego como cliente aquí. Vamos al controlador del reproductor cuando éste se muestre, Siempre que se juegue. Siempre que estemos mostrando el anuncio de victoria del equipo, por lo general queremos incrementar uno de esos Déjame en realidad solo editar aquí después del anuncio de la victoria del equipo de actualización. Qué podemos hacer aquí, podemos preguntar qué equipo tiene uno. Podemos arrastrar esto y decir igual esto. Si esto es igual a antiterrorista, hagamos una rama aquí, conectémosla. Tomemos esta principal de WB una vez más y sigamos adelante y peguémosla. Siempre que sea el antiterrorista, queremos actualizar la IU de puntuación antiterrorista siempre que sea el terrorista, Siempre que esto sea falso, queremos actualizar la IU de puntuación terrorista. Adelante y conecta esto a lo falso. Ahora también necesitamos conectar el score score. Sigamos adelante y hagamos un alfiler aquí. Porque lo necesitamos. Vamos a convertirlo en un entero, llámalo puntuación. Yo sólo voy a moverlo por debajo del equipo de aquí. Mueve esto hacia abajo. Entonces voy a arrastrar esto a la partitura. Sólo vamos a alejar esto para que se vea mejor. Y voy a dar click aquí para hacer un nodo de re ruta y hacerlo así. Y adelante y conecta esto también. Bien, ahora también tenemos el marcador. Y vamos a compilar. Y también aquí arriba, recuerden arrastrar la partitura hasta aquí. Voy a moverlo arriba uno aquí debajo del equipo. Lo último está dentro del modo de juego. Dentro del modo de juego ahora tenemos este pin de puntuación. Y tenemos que sumar el puntaje para el puntaje. Es o el antiterrorista o el marcador terrorista lo que necesitamos tapar dentro de aquí. Nuevamente, tenemos que tomar de esto y decir, ¿es esto igual al terrorista? Y alejemos todo esto para que tengamos más espacio para trabajar. Estamos preguntando ¿esto es igual a terrorista o es igual a antiterrorista? Dependiendo de eso. Vamos a seleccionar arrastrar de esto y decir seleccionar Entero y enchufar este toro. Esto lo hemos hecho antes, vamos a seleccionar A. Si esto es cierto, hagamos nuevas variables. Hagamos dos variables, una llamada Da, terrorista, marcador terrorista. Hagamos esto en un entero. Hagamos uno nuevo. Voy a llamarlo marcador terrorista. Y esto es un entero también para estos dos puntajes, Siempre que sea el antiterrorista. Entonces va a elegir una, vamos a poner el puntaje antiterrorista aquí arriba. Siempre que sea el terrorista, vamos a tomar el marcador terrorista y enchufarlo aquí. Y luego lo va a seleccionar dependiendo de lo que sea este sondeo, y enchufar aquí este número de puntaje Bien. Ahora solo movamos esto juntos. Lo que tenemos que hacer ahora es fijarlos porque ahora mismo el puntaje terrorista y antiterrorista es apenas cero. En realidad no estamos haciendo nada ahora mismo. Hagamos una nueva función, y yo sólo voy a hacer una nueva función aquí arriba. Llamemos a este un marcador de equipo. De hecho, podemos usar esto vivo si los antiterroristas están vivos aquí. Podemos tomar este y decir si esto es igual a cero y hacer una rama y seguir adelante y conectarlo. Si la cantidad de antiterrorista vivo es igual a cero, esto significa que necesitamos otorgar un punto a la puntuación antiterrorista. Podemos tomar esto de nuevo, digamos más, más a incrementado en uno No obstante, si éste es verdadero o falso, significa que el antiterrorista está realmente vivo y no es igual a cero. Eso significa que podemos tomar este puntaje antiterrorista y decir más, además porque probablemente sea el conteo de terroristas los que están vivos y no el terrorista. Como nos gusta llegamos a este punto del código, solo vamos a conectarlo. Ahora volvamos a la gráfica de la camioneta y la vamos a agregar después de esta, porque después de que hayas comprobado que una de ellas es en realidad igual a cero, entonces podemos premiar a una de ellas con un punto. Podemos tomar esta función, enchufarla aquí. Ahora tiene sentido porque ahora nos estamos preguntando ¿quién es el que es cero? ¿Es el antiterrorista vivo es igual a cero, entonces tenemos que darle un punto al terrorista? No obstante, si esto es falso, esto significa que el terrorista en realidad es igual a cero. Entonces tenemos que otorgar un punto a los antiterroristas y ahora otorgamos un punto y va a quedar encerrado por aquí. Bien, eso debería funcionar perfectamente. Ahora guardemos todo y hagamos clic en Reproducir. Y comprueba si esto está funcionando. De hecho voy a reducir la cantidad de jugadores a tal vez algo así como tres. Va a seleccionar terroristas en éste, terrorista en éste, y antiterrorista en este de aquí. Ahora como antiterrorista, voy a ir a los terroristas de base. De hecho voy a minimizar esto. Para que pueda ver aquí arriba y descomponerlo. No sé por qué sigue desove encima de mi pantalla, así que déjame matar ahora a uno de ellos. Bien, no pasó nada porque uno sigue vivo y voy a matar a este tipo de aquí. Se puede ver al terrorista ahora se le otorga un punto. Esto no es cierto, porque ahora mismo soy en realidad un antiterrorista. Si echas un vistazo aquí abajo, el puntaje antiterrorista está enchufado incorrectamente El marcador terrorista está enchufado incorrectamente. Si vuelvo a este puntaje de premio y le echo un vistazo, este es el antiterrorista, y si es igual a cero, vamos a otorgar un punto a la puntuación terrorista. Todo parece correcto. La otra cosa es porque esto se ha desconectado porque aquí escribimos este jalón. Volvamos a conectar esto porque en realidad es el antiterrorista el que tiene uno, pero es seleccionar terrorista por defecto Déjame arrastrar esto de nuevo aquí, igual que antes y puedes hacer un nodo de ruta. Ahora está conectado. Comprobemos para estar seguros. Aquí en el controlador de Apple, esto también está conectado. Este de aquí está desconectado porque de nuevo, lo hicimos aquí abajo. Vamos a conectarlo. Ahora debería funcionar. Asegúrate de que todo esté conectado. Y volvamos a hacer clic en reproducir y seleccionar Terrorista, Terrorista , Contraterrorista una vez más. Y sólo voy a volver a ir al spawn. Bien, aquí maté a los primeros terroristas y voy a ir al segundo terrorista y matar a este jugador. Y si solo maximizo la pantalla para que puedan ver ahora dice contraterrorista ganar. Y agrega un punto para todos los jugadores. También agrega el punto para el terrorista también. Agrega un punto al antiterrorista. Esto está funcionando correctamente ahora. 183. 13.10 Reaparece a los jugadores: ¿Correcto? Entonces lo que nos falta ahora es responder a los jugadores, hagámoslo aquí abajo. Lo que podemos hacer aquí abajo es que podemos hacer un retraso porque no queremos responder de inmediato a los jugadores. En realidad queremos responder después de este temporizador de respuesta. Este temporizador de respuesta en este momento está configurado en 3 segundos, por lo que va a retrasar el código 3 segundos. Después de eso, vamos a responder una vez más a todos los jugadores. Tomemos a este jugadores el camino para cada bucle con este que vamos a llamar a este repawn que hicimos en el jugador en esta armadura de salud y daño Recuerden, hicimos esta reaparición, llamemos a eso. Vayamos al jugador y reapareceremos. Ahora en realidad estamos respondiendo a todos los jugadores y podemos comunicarnos con él. Porque éste se está ejecutando a través del servidor. Va a correr por aquí. Corriendo por el servidor y haciendo todo esto que hicimos antes, respondiendo a los jugadores. Recuerda, también tenemos estas variables, los datos de los jugadores y los jugadores vivos. Y tenemos que actualizarlos también. Antes de que me demore, sólo voy a hacer avanzar esto. Voy a llevar vivos a estos jugadores y a los jugadores muertos, y los voy a limpiar aquí. Voy a despejar con vida a los jugadores, y voy a alejar esto. Voy a despejar el mapa para los jugadores muertos también. Ambos se restablecen. Entonces vamos a retrasar el código. Así de aquí. Voy a mover esto hacia abajo conectado aquí. Ahora vamos a retrasar el código. Siempre que lo hayamos retrasado, necesitamos sumar de nuevo a los jugadores vivos a los jugadores, lo contrario nadie estará vivo aquí. Y reservará aquí para la respuesta. Antes de que respondamos a los jugadores, quiero agregarlos. Recuerda, dentro del jugador, acabamos de hacer esta gráfica de eventos. Acabamos de hacer este recientemente, el agregar a los jugadores un mapa en vivo, necesitamos llamar a este en el servidor, el rastrillo de lista, y decir servidor agregar a los jugadores un mapa en vivo Tenemos que especificar quién es el jugador, es solo este de aquí. Entonces podemos seguir adelante y responder. Sólo voy a arrastrarlo hacia abajo. Y nuevamente, haz doble clic aquí para hacer una nota de ruta para que veas la diferencia entre esos dos. Aquí vamos. Ahora vamos a limpiar esos mapas, asegurarnos de que no tenga errores. Entonces podemos demorar por el temporizador de respuesta. Entonces vamos a esperar un poco y luego vamos a responder a los jugadores y agregarlos a este mapa vivo. Una vez más, seguir adelante y compilar ahora dentro del reproductor lo que hicimos antes aquí en el responder este código aquí, solo podemos eliminar. En realidad, en realidad no lo estamos usando, éste, solo voy a borrarlo porque ya no me sirve esta cadena de impresión. Esto es lo que tenemos. Compilemos, guardemos todo y volvamos a hacer clic en play. Seleccione Terrorista. Seleccione Terrorista, Contraterrorista, por ejemplo. Ahora sólo voy a ir a la base. Déjame tomar este AK y ya voy a disparar a este jugador. Ahora dice victoria terrorista y voy a tener un punto. Entonces estamos todos respondemos. Aquí estoy como el terrorista engendrar con el otro terrorista de aquí Este también es el terrorista. Aquí está el antiterrorista. Responde aquí como el terrorista. Ahora bien, si voy al antiterrorista y le disparo al antiterrorista, entonces debería decir victoria terrorista. Vamos a conseguir el segundo punto y todos vamos a responder de nuevo. Bien, entonces esto está funcionando perfectamente y este es el antiterrorista y ahora voy a matar a este tipo de aquí. Ahora ves victoria antiterrorista. Bien, así que todo está funcionando correctamente y también estamos respondiendo aquí en el engendro terrorista y en el aterroristpaon, estamos otorgando la cantidad correcta de puntos o los puntos de ronda aquí ronda cada el engendro terrorista y en el aterroristpaon, estamos otorgando la cantidad correcta de puntos o los puntos de vez que ganemos la ronda 184. 14.01 Añade impulso en la caída de armas: Bien, entonces en este momento ya casi hemos terminado. Y lo que quiero hacer en esta sección es mejorar el juego con algunos pequeños elementos que necesitan algunos ajustes. Por ejemplo, ahora mismo cuando dejamos caer el arma, cayendo justo debajo de nosotros. También para esta arma está cayendo justo debajo de nosotros. En lugar de hacer eso, quiero dejar caer el arma frente a nosotros como si la estuviéramos lanzando frente a nosotros. Para ello, volvamos a la base de jugadores y echemos un vistazo a la lógica de lanzamiento de armas de aquí. Creamos el arma de caída, si solo extiendo esto e incluyo esto también, esta es la lógica del arma de caída que creamos. Esta es el arma para avisar si pincha sobre ella, nos lleva a esa función. Agreguemos el código aquí. Cada vez que lanzamos el arma, estamos de adjuntar el arma del jugador. Establecer la colisión para que sea física solo para el arma, y luego estamos simulando la física Después de simular la física, entonces podemos agregar un impulso porque si no tienes física, no puedes agregar un impulso. No podemos agregarlo antes de este paso. Ls, obtendrás un error. Bueno, solo agrégalo después de esto. Básicamente tomando esta arma para dibujar y luego tomar esa variable de arma que hemos estado usando. Es la misma que ésta. Básicamente, golpeemos a partir de esto y digamos impulso. Entonces agrega este impulso que es la física. Puedes ver aquí si lo conectas, haz doble clic aquí para hacer un nodo de reencaminamiento Lo que podemos hacer ahora es agregar física. Si solo escribes algo, digamos uno o 5,000 algo muy extremo, podemos tomar este cambio de velocidad. Lo que esto hace es que le quita la masa al actor. No estamos echando un vistazo a la masa, estamos ignorando la masa, estableciendo este cambio de velocidad en verdadero Si lanzas algo ahora mismo, puedes ver que voló por allí e incluso me volvió. Ya ves que puedo lanzar esto. E incluso me volvió, ese es un mecánico bastante genial. Este es el cambio de velocidad que hemos creado aquí para hacerlo así que en realidad estamos ahora mismo, estamos lanzando de lado Miramos aquí y en realidad estamos lanzando allá para que se lance delante de nosotros donde estamos buscando. Podemos hacer clic derecho y decir obtener actor adelante vector. Recuerda que hemos estado usando esto. Si vuelves a la gráfica de la camioneta y al movimiento, aquí la hemos usado. Obtener actor forward vector para obtener el vector forward para el jugador para que podamos avanzar. Volvamos a la caída repoify y llevemos a este vector hacia adelante el actor Y ahora vamos a romperla. Para que pueda volver a usar la X, Y y Z. Puede simplemente hacer clic derecho si lo desea y decir pin de estructura dividida Eso es lo mismo, solo lo estoy haciendo de esta manera. Entonces voy a hacer directo desde aquí y decir make vector. Y hacer este vector, también tienes el XY y Z porque lo único que quiero modificar es la x. Andy, voy a dejar que z sea lo que sea ahora mismo. No quiero tirar hacia arriba. Modifiquemos el xy x ahora mismo. Tomemos esto. Ahora necesitamos impulsar. este momento es cero. Tomemos esto. Y es cero. Es uno. Multipliquemos éste por 600. Multipliquemos éste por, digamos 600 también, así. Y entonces podemos conectarlos de nuevo a la x. Lo que hicimos aquí es simplemente tomar la x, multiplicarla por 600, y volver a poner el valor dentro de aquí. Ahora hemos agregado algún impulso, pero por el valor Z nos estamos quedando igual. Bien, solo organicémoslo aquí y alejemos esto. Bien, vamos a compilar. Vamos a hacer clic en jugar Ahora, veamos qué pasa si solo tomo algo y lo tiro frente a mí. Verás, ahora en realidad estamos lanzando el arma frente a nosotros. Sea cual sea la dirección que estemos mirando, estamos lanzando el arma frente a nosotros. Bien, genial. Es mucho mejor que simplemente tirarlo aquí debajo de nosotros. Eso es un mecánico genial para tener. Bien, eso fue todo. Vamos a guardar todo. Muy sencillo, arreglo o mejora. Pero hace mucho por el juego. Pasemos al siguiente. 185. Mejora el peso del arma: Así que aquí estoy de nuevo en el juego ahora mismo. Se puede ver cuando tiro algo, si tiro esta arma, cuando aterriza en el suelo, rebota por ahí. Y éste también. Se siente como si el arma no fuera realista. Es como demasiado ligero. Esto no debería rebotar tanto en el suelo. Simplemente debería, tal vez se detiene mucho más rápido. Al igual que el peso de esta arma es demasiado bajo y es demasiado ligero. También es un poco poco realista. Lo segundo es que puedo ver la cápsula. Creo que aquí un juego oculto. Quiero llevar eso también en el juego oculto cápsula base de armas. Entonces no lo veo porque el arma sea liviana. Lo que puedes hacer es algo nuevo con lo que no hemos trabajado antes. Si abres el arma aquí, base de armas. En la base del arma, puedes hacer clic en el arma y puedes desplazarte hacia abajo hasta la colisión. Tienes algo que se llama material de física. Con el material físico, puedes ajustar los ajustes de fricción y los ajustes de rebote también. Lo que queremos hacer es en realidad, vamos a crearlo dentro de esta carpeta porque no tenemos ninguna carpeta para esto. Podríamos hacer una nueva carpeta, pero vamos a hacerlo dentro de la base de armas. Podemos escribir, dar clic en Ir a Física y luego agregar este llamado Material Físico y Creado. Adelante y selecciona éste. Sólo voy a llamarlo PM por material físico, podemos llamarlo base de armas o algo así. Sólo dale un nombre. Ábrela ahora puedes ver aquí podemos ajustar la fricción y podemos ajustar la fricción estática. También podemos ajustar la restitución. Y se puede ver que la restitución también se llama la bounciness de Si solo pongo esto a cero y guardo, y voy a la base de armas en lugar de a la base de armas. Si haces clic en el arma y en la colisión seleccionas este nuevo material físico. Lo llamamos Pm. Esta base de un arma. Adelante, compilas y haces clic en jugar. Ahora puedes ver si se me cayó esta arma al suelo, está rebotando mucho menos que antes La otra cosa que quiero hacer es en lugar de tener esto a cero, en realidad voy a ponerlo a tal vez algo así como 0.15 Inicialmente era 0.3 tal vez la mitad de él. Entonces por la fricción, sólo voy a ponerla a 25.25 Así que cuanto más alta sea, mayor será la fricción y además no va a rebotar y moverse por el suelo Bien, sigamos adelante y hagamos clic en play y veamos qué pasa. Fi deja caer este AK ahora esto es lo que pasa, bien. Se siente como que tiene mucho más peso al arma así. Se siente mucho mejor que antes. Si quieres, incluso puedes aumentar esta fricción, fricción estática, puedes jugar con ella. Y creo que esto está bien por ahora. Cerrémoslo y pasemos al siguiente. 186. 14.03 Elimina Recarga SFX en Arma Drop: Muy bien, entonces una cosa aquí ahora mismo, un dólar es si intentamos disparar algo y recargamos y soltamos el arma, por ejemplo Ya ves puedo escuchar la recarga Sonido Incluso cuando lo equipo y me caigo, puedo escuchar la recarga Sonido así como Puedo oírlo cuando incluso dejo caer el arma al suelo. Tenemos que arreglar esto. Si vamos a la base de jugadores, y echemos un vistazo a lo que sucede cuando equipo un arma. Es tocar un sonido. Si vas al botín, equipas y sueltas arma, y vas a tu lógica de equipamiento Aquí estamos tocando este montaje de animación. Recuerda que los efectos de sonido están en realidad dentro de los montajes de animación Si voy a las animaciones de activos dentro de aquí, si buscamos, podemos tomar el rifle de recarga por ejemplo Recuerda que los efectos de sonido están dentro de aquí. Realmente no podemos detener el efecto de sonido aquí porque está dentro del montaje de animación cuando dejamos caer un arma De hecho, quiero evitar que este montaje de animación reproduzca este montaje de animación porque no quiero reproducir todos estos efectos de sonido Si voy a la base de jugadores. Ahora vamos a la lógica del arma de caída. Aquí vamos a soltar el arma y estamos buscando un arma en el inventario. Siempre que encontremos un arma en el inventario, vamos a dejar caer aquí. De hecho quiero agregar el código aquí que tendrá sentido cada vez que realmente encontramos un arma en el inventario y estamos listos para soltar el arma. Déjame alejar todo esto un poco y déjame organizar esto aquí. Ahora lo que queremos hacer es hacer una multidifusión para esta arma de caída Ya no tenemos uno, así que en realidad puedo crear uno solo si solo muevo esta parte hacia abajo y puedo hacer clic derecho y hacer una multidifusión de eventos personalizados Porque quiero detenerlo para todos ellos y decir soltar arma para esta multidifusión Lo que quiero hacer es primero simplemente configurarlo en multidifusión y confiable Entonces tomemos esta malla para encontrar el montaje de animación que se está reproduciendo actualmente Tenemos que encontrar primero la clase de animación. Si buscas, creo instancia de animación, consigue una instancia. Entonces hay que obtener primero la instancia de animación. Entonces se puede decir montaje. Entonces puedes ver que tienes muchas funciones que puedes usar con el montaje Pero lo que queremos hacer es detener el montaje. Montage, stop and go y conectado. Para este necesitamos conectarlo de nuevo aquí arriba. Entonces no podemos hacer esto ahora mismo. Para el target, es la instancia, podemos simplemente llamarlo instancia para el montaje Podemos simplemente enchufarlo y voy a llamarlo equipar, Equipar montaje, por ejemplo Equipa el montaje de armas. Incluso podemos llamarlo arma aquí, así que tiene sentido. Bien, ahora tenemos este, podemos llamarlo aquí arriba. Llamemos a MC drop weapon. Y vamos a moverlo por aquí. Ahora podemos conectarnos desde el servidor. Podemos conectar la instancia de animación. También podemos conseguir el montaje. Si rompemos de aquí y decimos montaje, veamos aquí. Podemos decir obtener montaje activo actual. Y vamos a tomar este montaje que se está reproduciendo actualmente y podemos enchufar esto aquí Permítanme solo tomar notas de ruta para esta. Bien, ahora que está enchufado, guardemos todo. Ahora mismo. Te da una época diciendo algo aquí. Simplemente hagamos clic en Archivo y actualicemos todas las notas. Creo que algo anda mal. Solo necesitamos refrescar todas las notas y desconectar esto y enchufarlo aquí, compilarlo hace caja a veces así no tiene sentido, no tengo idea de por qué, pero solo asegúrate refrescar todas las notas y ya podemos hacer esto. Bien, vamos a jugar ahora. Porque ahora debería suceder. Si juego, cojo un arma, tome esto por ejemplo. Ahora cambiemos de arma y dejemos caer. Ahora puedes ver que la animación de recarga o equipamiento se está deteniendo Eso está bien. ¿Qué pasa si recargo ahora si recargo y caigo Eso ya está arreglado. Bien, eso ya está arreglado. No tiene ningún sentido reproducir el sonido. Si vamos a dejar caer el arma ahora, vamos a agregar más adelante algunas cosas que podrían molestarlo. Lo que quiero que hagas es antes de que hagamos esta lógica, quiero que tomes de este conjunto montaje activo actual, asegúrate de que sea válido Antes de que realmente hagamos esto preguntando, ¿es válido esto? Solo alejemos todo esto. Déjame en realidad solo mover esto hacia atrás también y preguntar primero ¿ es esto válido? Si es válido, adelante y detente theta, o detente aquí este montaje Y si no es válido, sólo tienes que seguir adelante y hacer lo que hayas hecho antes. Permítanme crear algunas notas redireccionadas para ésta y acercarlas, así como esto Y ahora esto está terminado. Vamos a hacer caso omiso de esta arma de caída MC. Si esto no es válido, aquí no tenemos nada. Vamos a compilar, vamos a guardar todo. Y ahora esto está terminado. Podemos pasar a la siguiente. 187. 14.04 Añade anuncios de equipo Gana SFX: Entonces ahora mismo lo que quiero hacer es cada vez que jugamos aquí y cuando matamos a alguien y ganamos la ronda, cuando dice victoria antiterrorista o victoria terrorista, quiero tocar un efecto sonoro. Sería más genial que ahora mismo donde no tenemos nada. Lo que quiero que hagas es ir al mercado e ir al contenido gratuito de Epic Games dentro de aquí. Creo que estaba en la página siete, hay algo que se llama Peagon mail on Solo puedes buscarlo si quieres también. Este Perregon Ono, puedes tomar esto y agregarlo al proyecto Voy a decir mostrar todos los proyectos porque ahora mismo no es compatible con el motor N 5.2 voy a mostrar todos los proyectos. Selecciona el proyecto Cada strike y selecciona la última versión aquí. Adelante y da clic en un proyecto de dos. Déjame solo minimizar esto o simplemente esperarlo hasta que termine. Una vez que haya terminado, minimicemos esto. Vamos a entrar en nuestro propio proyecto. Yo sólo voy a bajar aquí. Y aquí está, los anones del correo Paragon. Vamos a agregar esto a la carpeta Marketplace. Nos mantenemos organizados igual que antes. Ahora podemos abrir la carpeta Marketplace e ir dentro de este correo de Paragon Sonidos Vamos al Sonido. Ahora tenemos el sonido para esto ons, solo podemos hacer algo genial primero. Antes de hacer esto, en realidad puedo seleccionar todo lo que hay dentro de aquí. Haga clic con el botón derecho en Activos y edite masivamente a través de la matriz de propiedades. Porque quiero reducir el volumen del sonido para todos ellos para que no sea demasiado ruidoso dentro de este curso, solo voy a reducirlo a un multiplicador de volumen 20.1 Ciérrelo, y sigue adelante y guarda todo dentro de aquí Sólo hay dos sonidos que necesitamos ahora mismo. Necesitamos el de la derrota. Tenemos este llamado derrota. Estás derrotado. Esto es cuando pierdes. Y también tenemos algo llamado victoria. Creo que es éste, eres victorioso. Quiero jugar a estos dos. Hagamos eso. Vamos a los planos. Y lo mejor está por aquí en el modo, porque dentro del modo de juego jugamos a esto. Recuerda que acabamos de hacer esto. Y va a actualizar el anuncio del triunfo del equipo. Hagamos doble clic en eso y vayamos al controlador del reproductor. Ahora dentro del controlador del reproductor, estamos ejecutando este cliente vidente. Queremos reproducir el cliente de sonido ubicado porque cada vez que pierdes, va a reproducir un sonido Siempre que ganes va a reproducir otro sonido. No queremos tocar el mismo sonido para todos. Esto es lo que hiciste con una multidifusión. Tocaste el mismo sonido para todos a través de una multidifusión Pero para esto, queremos jugar un efecto de sonido ganador cuando ganemos y queremos perder Efecto de sonido para el jugador que ha perdido. Es del lado del cliente. Para ello, en realidad podemos hacerlo aquí porque sabemos quién ha ganado. Aquí conocemos al equipo ganador del equipo. Lo que queremos hacer simplemente es tocar sonido. En lugar de reproducir un sonido en una ubicación, toquemos un sonido dos D, solo para el jugador que está escuchando este sonido en este momento. ¿Qué sonido estamos tocando? Arrastremos de esto y digamos Seleccionar, entonces hagámoslo así cuando pierdes, escuches un sonido. Cuando ganas, escuchas algo más. Ahora podemos usar esto en realidad podemos arrastrar de esto y decir igual así. Recuerda volver a conectar esto. Siempre que la savia en vende. Esto va a fallar. Vuelva a conectarlo. Ahora queremos comparar a este equipo ganador. ¿Este equipo ganador es igual al equipo en el que estoy actualmente? Ahora estamos comparando este equipo ganador con cualquier equipo en el que estoy ahora mismo. Si es lo mismo, siga adelante y solo conecte esto ahora mismo al selecto. Estamos comparando al equipo ganador con el equipo en el que estoy ahora mismo. Si estos son iguales, si tengo, seguimos adelante y jugamos esto. Sonido. El equipo ganador es mi equipo. Quiero jugar la victoria. Sonido. Y creo que es este congreso. Éste. A lo mejor eres Victoria. Sí. Entonces esta quiero jugar la victoria. Sonido. Porque el equipo ganador es en realidad el equipo en el que estoy ahora mismo. No obstante, si no es así, quiero jugar la derrota de equipo de la derrota. Sonido Y es éste. Bien, entonces ahora estamos tocando el Sonido correcto. Adelante y compilar. Y eso debería ser. Sigamos adelante y juguemos. Y en realidad voy a ponerle dos jugadores. Ahora voy a jugar, y voy a minimizar este por delante. En realidad sólo puedo hacer esto aquí. A lo mejor así y esto. Y sigamos adelante y seleccionemos terrorista, antiterrorista. Ahora como antiterrorista, voy a ir allá, disparemos al terrorista. Estás victorioso. Dice que eres victorioso. Siempre que ganes, ahora voy a disparar al terrorista. Y cada vez que le disparo al terrorista y muera, voy a cambiar rápidamente a la ventana terrorista. Entonces puedo escuchar si el terrorista está diciendo derrotado. Para que se oiga que dice derrotado aquí en el bando terrorista. Siempre que me cambio a él rápidamente, ahora está funcionando. Es decir derrotado cada vez que pierdes y decir victoria para el jugador ganador. Pasemos al siguiente. 188. Añade un indicador de golpe enemigo: estos momentos, es un poco difícil saber si has golpeado al jugador desde lejos. Si le disparo a este jugador, puedo ver el pequeño efecto. Pero si hay muchos jugadores y estás disparando por ahí, es un poco difícil saber si has golpeado al jugador. Necesitamos un indicador para saber si realmente hemos golpeado al jugador o si hemos golpeado detrás del jugador. Sigamos adelante y agreguemos eso. Vamos a cerrar esto. Y lo que quiero que hagas es abrir los materiales de causa dentro de aquí. Quiero que entres a la carpeta UI en iconos, y he incluido este para ti, el icono chispa. Vamos a la carpeta de la interfaz de usuario y dentro de tus íconos, y pongamos esto en la carpeta. Ábrelo, ve al grupo de texturas, cámbialo a UI y cambia la configuración de compresión a la interfaz de usuario. Vamos a cerrarlo. Ahora vamos a abrir la cruz, ésta, el widget, plano que hicimos dentro de aquí Vamos a agregar esta imagen. Sólo voy a buscar la imagen agregada al panel del lienzo y voy a darle click ahora. Ponlo al centro, igual que la crossa. Poner el punto de anclaje al centro. Y la alineación debe ser 0.50 0.5 así que está en el medio Y establece la posición 0.0 Y luego haz clic en Tamaño Dos contenido también. Y ahora es totalmente correcto. Puedes dar click en la otra imagen, la cruz aquí, para ver la diferencia. Si quieres hacerlo más organizado, puedes llamar a esta imagenes, puedes dar click sobre la otra. Voy a llamarlo imagen Spark. Adelante y compilar sobre la chispa de la imagen. Voy a cambiar la imagen a este icono de chispa que acabamos de importar. Y voy a hacer el tamaño de la misma a algo así como 70 por 70, creo. El Crosier. 60 por 60. Así que sólo voy a hacerla un poco más grande y la voy a poner detrás del crosier No voy a ponerla frente a la cruz. Así es como se ve cada vez que filmamos. Vamos a conseguir que aparezcan los marcadores. Vamos a hacer clic en el Spark. Por defecto está oculto. Hazlo oculto por defecto. Vamos aquí, Establecer es variable, Asegúrate de que podamos editarlo. Ahora vamos a la gráfica. Voy a borrar todo esto. Esto es muy, muy sencillo. Vamos a hacer un evento personalizado y llamarlo Show. Es que me gusta esto. Ahora tomemos esta chispa de imagen. Vamos a establecer visibilidad. Establezca la visibilidad del mismo para que no sea comprobable, modo que sea visible y el mouse no pueda interactuar con él Ahora después de un retraso muy pequeño después de 0.1 segundos, quiero que desaparezca. Va a aparecer en la pantalla por 0.1 segundos y luego va a desaparecer. Sólo nos va a indicar que hemos golpeado al enemigo. Esto es lo único que queremos hacer. Vamos a cerrar esto. Ahora abramos al jugador y pasemos a donde sea que golpeemos a otros jugadores del enemigo. Pero vayamos al rodaje y recarguemos el arma por aquí. Siempre que disparamos el rastro de línea y de hecho golpeamos al jugador aquí. Recordamos que comprobamos si no es el compañero que estamos disparando Si no es el compañero, entonces estamos disparando a alguien En este punto, queremos jugar a este sitio cliente porque solo quiero mostrarlo para el jugador que en realidad está disparando. Esta se llama Arma Disparar. De hecho voy a hacer que un cliente se siente. Solo quiero agregarlo aquí abajo, clic derecho. Haz un nuevo arma de disparo CL de evento personalizado, de lado ciego. Ejecutarlo en ser dueño del cliente confiable. Simplemente voy a bajar aquí y tomar la referencia del controlador del reproductor que hicimos. A ver si puedo encontrarla. Este controlador de un jugador. Vamos a conseguir el controlador del reproductor, vamos a obtener el cruce B una referencia que hicimos antes para que podamos obtener el plano del widget Ahora desde el plano widgit llama al que acabas de hacer llamado show enemigo yo adelante y Y eso es lo único que va a hacer. También quiero reproducir un efecto de sonido porque podemos mostrar la interfaz de usuario, pero también quiero indicarlo con un efecto de sonido. Jugar. Recuerda, dentro de esto tenemos este llamado Bullet Impact Player. De hecho voy a tocar este único efecto de sonido. Lo que queremos hacer es que primero necesitamos el arma. El arma de referencia. Sólo voy a escribir Arma base seleccione la referencia de clase basada en armas. Voy a llamarlo arma igual que antes, solo quiero el efecto de sonido. Voy a copiar y pegar todo esto. Adelante y conéctelo. Ocultemos los pines desconectados. Y sólo voy a mostrar el efecto de sonido del jugador bullet impact. Quiero tocar un efecto de sonido sólo para el jugador que está disparando de nuevo. Reproduce Sonido Dos D, sólo para el jugador que está disparando. Y sigue adelante y toca este efecto de sonido. Ahora bien, esto debería estar funcionando si solo muevo esto hacia adentro y necesitamos tocar el sonido aquí arriba Si solo arrastras de aquí y dices CL, dispara arma. Para que podamos llamar a este evento cada vez que filmaremos. Se puede ver que esta entrada se llama algo diferente a esta. Nuevamente, tengo que dar click en Archivo y refrescar todos los nodos, se muestra correctamente. Voy a alejar esto un poco, así puedo alejar esto también así. Y tengo más espacio inicia sesión esto aquí. Bien, todo se ve bien. Bajando esto, enchufándolo. Y también tenemos que enchufar el arma. Tenemos la referencia del arma, creo. Sí, es ésta. Va todo el camino hasta aquí. Todo el camino hasta aquí. Y puedo hacer doble clic aquí. Ahora puedo enchufar en realidad uno, creo que es este. Haga doble clic en él y conéctelo. Vamos a compilar, y ahora debería funcionar. Ahora antes de jugarlo, en realidad voy a aumentar el volumen también, así puedo escucharlo claramente para encontrarlo rápidamente, ir a la tabla de datos, abrir la información del arma, y es esta. El impacto de bala, efecto de sonido claro. Haga clic en el pequeño icono aquí. Me lleva ahí automáticamente. Así es como suena ahora mismo. De hecho voy a aumentar el sonido tal vez como 0.5 tal vez eso es demasiado alto. 0.4 Ahora puedo oírlo con claridad, así que vamos a guardar todo. Juguemos ahora el juego y veamos cómo suena. Como servidor, solo voy a engendrar un antiterrorista Y ahora como terrorista, oigamos como el antiterrorista. Déjame simplemente moverme frente todo para que pueda ver al jugador. Ahora cuando le disparé al jugador, se puede ver este efecto de sonido. Y también se puede ver este marcador que aparece en mi pantalla cada vez que le disparo al jugador, le da un marcador cada vez que hay una bala extendida, como si estuviera golpeando justo detrás de él. Recuerden que agregamos un disparo de bala antes, así que no va a golpear al 100% cada vez. Siempre que le pega al jugador ¿quiénes son Victoria? Cada vez que golpea el jugador en realidad va a mostrar este marcador. Si simplemente voy delante del jugador, una vez más así y le disparo al jugador, va a mostrar me va a mostrar el indicador cada vez que golpee al jugador, cada vez que no le pego, no me va a mostrar nada. También puedo escucharlo en el efecto de sonido. Aquí también se puede escuchar la diferencia. Un vencedor, eso es mucho mejor agregar que no tener nada, porque entonces el jugador en realidad sabe si le ha pegado al jugador o no. Eso fue. Vamos a guardar todo y pasemos al siguiente. 189. 14.06 Añade SFX de ambiente: Ahora mismo, es un poco demasiado silencioso dentro del entorno. Se puede oír. Está bien. Tenemos los efectos de sonido para caminar, tenemos el rodaje y todo, y sonará muy bien. Imagínate si tienes cinco contra cinco aquí, como cinco jugadores, y todos están disparando y cargando y cosas así, sonará bien. Sin embargo, no hay efectos de sonido para el medio ambiente. Necesitamos como un efecto de sonido ambiental si vuelves a abrir la configuración de tu proyecto. Aquí volvamos al audio. Yo he incluido esto para ti. El ambiente de las aves Puedes agregar cualquier ambiente que quieras, pero para este, usemos esto Volvamos al audio aquí, efectos de sonido. Si solo arrastras esto a aquí y voy a hacer click derecho, conviértelo en un. así que solo voy a llamarlo, así que ambiente, adelante y ábrelo Permítanme simplemente reducir el volumen. Algo muy bajo, como 0.01 lo probé y creo que 0.03 es bueno. Déjame solo guardarlo. Y sólo voy a hacer click y arrastrar este ambiente al nivel Simplemente juega instantáneamente para todos los que se conectan. Ahora bien, si hago clic en Reproducir, se puede escuchar el efecto de sonido de los pájaros. Si solo selecciono terris ahora es realmente agradable porque tengo algo de ruido de fondo Incluso puedes reducirlo aún más si así lo deseas. Ahora, todo está sonando genial. Puedo andar por ahí, puedo disparar, y podemos jugar. Pero también tengo algún efecto de sonido aquí para el medio ambiente. No es silencio. Se siente bien. Se siente bien. No es un silencio incómodo el que tengas en el nivel. Esto es lindo. Bien. Entonces es una gran adición. Adición muy rápida, pero hace que todo el entorno se sienta más vivo. Bien, así que eso fue todo. Vamos a guardar todo de nuevo. Puedes agregar cualquier ambiente que desees para tu nivel, y pasemos al siguiente 190. 14.07 elimina Mag cuando recargas: Bien, entonces lo último que nos falta en este momento es si seleccionas Terraza por ejemplo, y tomamos un arma. Ahora cada vez que disparo y recargo, se puede ver que la mag no se está quitando Se ve un poco raro porque estamos recargando y no se está quitando la mag Entonces tenemos que hacer algo al respecto. Lo que podemos hacer es abrir el montaje de animación. Si vuelves a tus animaciones para el jugador y buscas tus montajes de animación que creaste anteriormente Vayamos al rifle. Empecemos con éste. Ahora lo que puedes hacer dentro de aquí, puedes agregar notificar. Empecemos a hacer esto. Quiero agregar notificar cada vez que esté recargando, cada vez que saque esta mag aquí. Intentemos agregar esta mag que eliminamos. No puedo hacer clic derecho encima de esto, así que solo voy a hacer click derecho aquí. Lo que puedes hacer, también puedes agregar otra pista de notificación, para que no la agregues encima de los efectos de sonido, puedes agregar otra pista. Y sólo voy a llamarlo recarga tal vez, algo así Lo que prefieras por aquí. Voy a escribir Click y luego Agregar. Notificar y agregar un montaje. Notificar a éste. Podemos usar código para hacer lo que queramos para éste. Sólo voy a llamarlo de labios. Agreguemos uno para clip out, o esto es clip out. En realidad esto no es clip in. Vamos a llamarlo Lip out. Vamos a agregar uno para clip in. Tal vez aquí, vamos a dar clic derecho a Montage Notify, y dar clic en él y llamarlo Lip in Bien, ahora tenemos esos montajes o notifica. Minimiquemos esto. Vamos a los planos. Eliminar esta búsqueda. Vamos a abrir la base de la capa del jugador. Y vamos al código donde en realidad estamos recargando. Adelante y da click en este de aquí. Este es el código de recarga. Recuerden que lo comentamos, Recargar arma. Estas son todas las cosas que hemos hecho calculando balas. Aquí en la multidifusión, estamos jugando el montaje, el montaje de recarga Ahora lo que podemos hacer es en realidad podemos usar esta llamada unnotifiedgin Este unnotifiedgin comenzará a reproducirse cada vez que llegue a un notifiedgin dentro de un montaje de animación Siempre que llegue a esta notificación aquí, entonces se activará este código. Ahora puedes tener múltiples notificaciones para diferentes cosas en la misma zona, y es por eso que esto está aquí Podemos tomar esto y decir, es esto igual a, por ejemplo, lo llamaste clip in o clip out para empezar. Y hagamos una rama, golpeemos desde aquí. Si esto es igual a clip out, entonces podemos hacer algo con él. Lo que queremos hacer es, permítame que me lleve esto aquí arriba. Lo que queremos hacer es que queremos esconder el hueso para el meg. Si vuelvo y encuentro el arma en el mercado, abro el arma FPS, abro las armas, las mallas y vuelvo a mi AK 47 Déjame simplemente abrir el esqueleto aquí ahora, igual que antes donde escondemos la cabeza del jugador. Ahora idealmente como si tienes un proyecto serio, podría ser mejor simplemente hacer una animación como una animación de recarga donde la Mac entra y sale. En realidad se puede ver esto en el otro paquete. Hemos descargado el arma militar doc. Si vuelvo a una de las armas aquí, en realidad tienen animaciones aquí. Ms por ejemplo, tienen una animación para recargar este rifle Y se puede ver aquí tienen esta animación baja, así que sólo voy a cerrarla rápido. Pero tienen esta animación de recarga que puedes usar y será más ideal, pero en este caso no tenemos ninguna animación y realidad todavía podemos hacerlo realidad Queremos esconder el hueso, igual que el jugador donde golpeamos la cabeza. Para este, vamos a esconder la pistola mag. Bien, se llama pistola mag. Lo que vamos a hacer es que primero necesitamos la referencia de arma. Esta es el arma equipada. Tomemos el arma equipada que tenemos ahora mismo. Vamos a arrastrar desde aquí. Necesitamos las variables del arma. Necesitamos la malla esquelética dentro de aquí. De nuevo, solo escribe hueso. Si no sabes cómo se llama, escribe hueso y luego podrás ver a través de él y tienes este hueso de ocultar por nombre, igual que antes. Si esto es cierto, adelante y esconde este hueso. Ahora bien, como se llame este hueso, mag, si quieres, puedes escribirlo estáticamente aquí Pero lo mejor otra vez, es solo agregarlo a tu estructura. Si solo vuelvo a dos estructuras, información de armas. Sólo tienes que seguir adelante y agregar una nueva variable y yo solo le llamo nombre. Digamos nombre aquí, nombre, variable, guardar y guardar todo. Adelante, abre tu tabla de datos. Sólo voy a hacer espacio entre esto de aquí y abrir mi tabla de datos. Vayamos a la derecha aquí. Voy a llamarlo Mag Name. Entonces le podemos dar el nombre de mi AK. Se llama Mag. Lo mismo para mi info. Creo que esta es mi pistola. Para mi pistola. No estoy seguro si necesitamos hacer algo porque para la pistola, no creo que puedas ver a Mac. Si sólo voy a armas, armas oscuras y abro mi pistola, está aquí pero no estoy seguro como si se puede ver la mag completamente. Así que sólo voy a dejar esto fuera para éste. Simplemente puedes escribir ninguno por ejemplo, y no necesitas nada dentro de aquí. Nuevamente, es mejor simplemente hacer animaciones como lo han hecho aquí para estas armas. Y es mucho más limpio. Se ve mucho mejor. Vamos a guardar todo ahora. Volvamos aquí y descarguemos esto como un archivo CSV. Déjame seguir adelante y subir a las tablas de datos. Y déjeme importar esto. Ahora he importado el archivo CSV y se actualiza. Y déjame guardarlo todo Ahora puedo volver a mi base de jugadores. Y lo que podemos hacer aquí ahora es simplemente usar esa referencia. Podemos simplemente agregar una variable aquí llamada name. Y podemos cambiarlo por un nombre aquí. Podemos volver a donde sea que reproduzca la multidifusión. Sólo voy a hacer clic en esos y esconder pines desconectados para que no tengamos que ver todo esto Déjame ver dónde jugamos la multidifusión. Déjeme esconder éste también. La multidifusión se reproduce aquí en el evento del servidor. Lo que podemos hacer es simplemente hacer clic aquí, clic en el Nombre del Mag, y conectemos el nombre Mag. Bien, ahora bajemos por aquí. Lo que podemos hacer ahora es simplemente tomar este nombre mag y conectarlo a Bone Name. Vamos a hacer doble clic aquí, hacer algunas notas traseras para que también se mantenga limpio. Aquí vamos. Siempre que sea clip out, vamos a ocultar el nombre de la mag cada vez que sea clip in. Entonces podemos tomar esto aquí. Ahora para este caso, sólo tenemos dos notificaciones. Sólo tenemos esto y esto. Técnicamente, podemos simplemente hacer el código ins fuera de aquí. No obstante, si tienes múltiples notifica, recuerda que puedes volver a arrastrar, decir igual, y decir como se llame, luego hacer una nueva rama, y luego puedes conectarla y decir si es verdad, puedes hacer esto No obstante, en nuestro caso, sólo tenemos dos notificaciones. En fin, en realidad sólo voy a arrastrarlo de aquí. Simplemente alejando esto. Si es falso, vamos a tomar de nuevo esta arma. Y si solo arrastras y derechas el hueso y ves que hay algo que se llama unhide bone por su nombre, usemos éste Volvamos a conectar este nombre óseo. Vamos a conectarnos. Esto cae hasta aquí y haga doble clic para hacer un nodo trasero hacia afuera. Ahora debería estar funcionando si compilo y guardo todo. Ahora probémoslo y veamos cómo se ve si hago clic en play. Ahora recuerda que solo funciona en la recarga. Esta es la animación de equipar. Esta no es la animación de recarga. Ahora bien, si recargamos, se puede ver que se está quitando mag . Bien, increíble. Vamos a probarlo con como una M cuatro aquí si debo Y recargar Impresionante, eso también funciona. Se ve mucho mejor. Y nuevamente, es mucho mejor solo tener animaciones para esto, pero también puedes ocultar nombres de huesos cuando estés recargando el arma 191. 14.08 Arregla un error de recarga en el cambio de arma: Paso una hora probando mi juego para ver si hay algún error o algo que necesitamos arreglar antes de terminar esto. solo había un pequeño problema Ya ves si hago clic en jugar ahora y saqueo algo Ahora bien, si estoy disparando con esta arma, por ejemplo, si cambio y luego recargo al mismo tiempo ves que cambio y luego recargo, en realidad está molestando Ahora estoy tratando de disparar, pero no es disparar, la recarga está molestando Sigamos adelante y arreglemos eso. Antes de que terminemos, vayamos a la base de jugadores dentro de aquí. Vayamos a nuestra recarga la lógica aquí y esta es el arma de recarga dentro de Lo que va mal es que podemos recargar aunque estemos equipando el arma Esta es una solución muy rápida por aquí. Cuando intentas presionar el botón de recarga, las cosas que estamos comprobando También tenemos que verificar si estamos equipando el arma. Recuerda si hago clic derecho y digo equipar, hicimos este lingote antes Cuando equipamos el arma, get es equipar arma Y luego lingotes cuando no estamos equipando el arma, podemos seguir adelante y No obstante, si seguimos equipando el arma, realmente no tiene sentido recargar Sólo voy a copiar esto que hemos hecho antes solo para que se vea mejor Estoy copiando pegando este código donde escondemos la revista. En realidad voy a la animación lutequip aquí. El arma MC Equip. Voy a pegarlo aquí. Creo que va a ser mucho mejor. Tal vez no necesites hacer eso si tienes como otra animación equipar. Pero mi animación de equipamiento es la misma que la recarga. En realidad sólo voy a enchufar esos de aquí para que se vea mejor. Y también voy a enchufar esto aquí y llamarlo nombre mag, igual que antes. Entonces voy a, veamos aquí, es éste, así que sólo voy a conectarlo aquí. Y eso también debería arreglarse. Bien, lo último está bien aquí, dentro del arma de lanzamiento. Cuando sueltes el arma y detienes el montaje, recuerda no hacer que el sonido de recarga Aquí paramos el montaje, obtuvimos la instancia de animación y así sucesivamente No obstante, a veces se confunde de la instancia de animación, vamos a golpear desde aquí porque dice acceso N. A veces podemos simplemente golpear desde aquí y decir que es válido y seguir adelante y agregar este nodo es válido, nos estamos asegurando que sea válido antes de continuar. Si no lo es, no hagas nada. Y nuevamente, solo haz algunas notas traseras aquí para sea más limpio y eso debería arreglar todos nuestros problemas. Probé el juego como una hora, hora y media, y naturalmente había más problemas con los que jugar. Confío en decir que hemos quitado toda la caja del juego. No tenemos ninguna caja cuando jugamos el juego también. Voy a limpiar este proyecto para ti, crear comentarios y cosas así. Y entonces te proporcionaré este proyecto. A lo mejor ya la has descargado. Esto es en el futuro. Vamos a guardar todo. Y Leah, pasemos al siguiente. 192. 14.09 ¿Qué pasa ahora: Entonces enhorabuena por llegar hasta el momento. Ha sido un curso muy largo a lo que estoy acostumbrado, pero ha sido muy divertido crear esto para ti y crear todos estos elementos para ti. Entonces ahora tenemos como un buen comienzo para un tirador de FBS. Y tenemos las armas cayendo. Tenemos el inventario, podemos recargar, podemos cambiar de arma, fusil de pistola, tenemos las balas, tenemos la salud y la armadura, y tenemos los efectos de sonido de partitura Por lo que hemos sumado muchas cosas a este entorno. Ahora ya terminamos con esto actualmente, pero en el futuro quiero agregar más artículos. Por ejemplo, podemos agregar un menú Bi. Podemos agregar más armas como un lanzacohetes. Podemos agregar un lanzagranadas. Podemos agregar granadas. agregar un marcador para el jugador. Podemos agregar un menú principal y cosas así. Y con lo que puedes continuar ahora mismo es si vas a mi canal de Youtube, Y dentro de ahí, en realidad puedes lanzar este juego a Steam. Entonces te enseñaré de forma gratuita cómo puedes convertir este juego ahora mismo que tienes. Puedes guardarlo, puedes convertir cualquier juego que tengas ahora mismo a Steam. Para que puedas agregar un menú principal, un navegador de servidor. Puedes agregar una barra de búsqueda y cosas así. Y en realidad puedes hacer como anfitrión un juego en Steam para que otros jugadores se unan. Entonces te voy a enseñar eso dentro de mi canal de Youtube. Así que asegúrate de seguir adelante y visitar eso también. Y siempre puedes visitar mi sitio web también y mi servidor de Discord Yo les ayudaré a todos 2047. Así que asegúrate de seguir adelante y hacer eso. También es muy agradable hablar con la comunidad. Y si, solo nos estamos divirtiendo con el desarrollo de juegos, tan agradable tenerte aquí. Gracias por ver. Y asegúrate de estar atento para más actualizaciones. Y también asegúrate de ver mis otros tutoriales y otros cursos sobre motor real y multijugador. Adelante y guarda tu progreso y espero verte pronto.