UE4 para principiantes: cómo crear una plataforma bidimensional con Unreal Engine 4 | Dev Enabled | Skillshare

Velocidad de reproducción


1.0x


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

UE4 para principiantes: cómo crear una plataforma bidimensional con Unreal Engine 4

teacher avatar Dev Enabled

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.

      01: introducción de curso

      2:22

    • 2.

      02 - configuración de proyecto

      9:39

    • 3.

      03 - entrada de jugador

      18:05

    • 4.

      04 4

      7:08

    • 5.

      05 - Flipbooks

      13:27

    • 6.

      06 - TileSets

      6:22

    • 7.

      07 - TileMaps

      10:06

    • 8.

      08: configuración de animación de jugadores

      14:37

    • 9.

      09: mejoras de animación de animación

      11:10

    • 10.

      10 - salud de jugadores

      10:39

    • 11.

      11: Widget de salud de salud de jugador

      16:30

    • 12.

      12: Base enosa

      8:28

    • 13.

      13 - bat de Enemy

      9:01

    • 14.

      14 - Movimiento plano

      8:43

    • 15.

      15 - Cambio de orientación enemigo

      17:14

    • 16.

      16 - Damen

      24:57

    • 17.

      17

      12:53

    • 18.

      18 - Base interactiva

      10:35

    • 19.

      19 - salud interactiva

      9:07

    • 20.

      20 - resortes interactivos

      9:00

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

853

Estudiantes

3

Proyectos

Acerca de esta clase

Comienza a partir de UE4 aprendiendo a hacer un juego a partir de uno de los géneros clásicos, el platformer. 2D.

- Aprende a utilizar el sistema de Paper2D incorporado

- ver algunos de los beneficios de aprovechar los juegos 2D

- Cubrimos los fundamentos de programar un personaje de jugadores, enemigos, pickups y mucho más.

Conoce a tu profesor(a)

Teacher Profile Image

Dev Enabled

Profesor(a)
Level: Beginner

Valoración de la clase

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

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

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

Transcripciones

1. 01: introducción de curso: Todos, y bienvenidos a este breve resumen de la sección de videos. De lo que vamos a estar viendo hacer un juego de plataformas 2D dentro del Unreal Engine. Unreal es conocido por ser un motor muy potente, pesado, basado en 3D, pero sí tiene algunas características únicas y herramientas muy poderosas que también nos permite hacer estos proyectos 2D dentro de Unreal. Ten un ejemplo aquí de algunos en qué proyectos incluso en algunos proyectos completos que se han realizado usando el Unreal Engine, esto usando el sistema de animación preconstruido y algunas de las herramientas de diseño de nivel que vienen preempaquetadas con Unreal. Algunas de las razones por las que podrías querer usar este tipo de motor enfocado en 3D para hacer un juego como estos que puedes ver en segundo plano. Irreal viene con alguna iluminación poderosa hacia que definitivamente puedes implementar los efectos de iluminación, como puedes ver en algunos de los juegos tienen edificio fuera de cosas como normales y consiguiendo esa calidad superficial reflectante normal que tú estaría esperando ver en otros juegos 3D. También tienes cosas como el viajero de ApiPath, que se hizo de nuevo dentro de Unreal. Y esto es aprovechar un poco de tipo de lo mejor de ambos mundos y crear un juego algo único que realmente no se ha visto antes, donde es una especie de juego 2.5 D donde el mundo es 3D, pero todo está funcionando fuera de 2D animaciones para levantarse raramente sentimiento original JPEG, pero llevándolo a una especie de público moderno y revitalizado aquí. Otros juegos están usando 2.5 muy similares, el mundo 3D, pero animaciones 2D también. Todo lo que tenemos juegos como has visto, que un puramente 2D y vamos a estar buscando en este curso cómo podemos empezar a entender cómo aprovechar algunos de estos sistemas para hacer juegos similares. Para ello, estaremos trabajando desde un proyecto vacío y estaremos llevando a este tipo de enfoque completo tipo corte vertical de un juego de plataformas 2D, ancho completo, un jugador, animaciones de jugadores alguna IA enemiga básica, automatizada también. Tendremos algunas clases intratables diferentes como los resortes y la camioneta de salud. Por lo que tenemos un sistema de salud completo y entonces todo esto se hará con un enfoque en código de blueprint limpio, estructurado, mantenible. Y sólo crear este juego prototipo muy sencillo nos va a permitir mirar todas las características que entran en los sistemas 2D, como el sistema de animación flip book, conjuntos de toallas y los mapas de teselas, que serán un visión general del sistema de pintura de diseño de nivel incorporado que viene con el Unreal Engine por defecto. Por lo que ojalá estos temas e interesantes para ustedes, y espero verlos en el resto de estos videos. 2. 02 - configuración de proyecto: Para intentar salvar a todos un poco de tiempo, sólo voy a repasar un breve resumen de lo que tengo aquí. Por lo que he creado un proyecto totalmente nuevo. No voy a pasar por nuestros pasos. Asumo que tienes algo de experiencia con el Motor Unreal. Tengo cosas instaladas y lanza tu proyecto. Entonces el proyecto que tengo aquí sin embargo, si quieres seguir con exactitud, es una base de blueprint, proyecto completamente vacío, por lo que aquí no se necesitará ningún contenido de estrellas. Se han establecido los ajustes de calidad para el escritorio, ajustados a la más alta calidad. Por lo que debería estar bastante bien a pesar de que estamos trabajando con los activos 2D. Y yo antes de saltar y conseguir que las cosas se muevan y conseguir nuestra configuración de clase y traer texturas y todas esas cosas buenas para el juego. Yo sólo quería pasar por unos pasos de limpieza que tiendo a tomar en cualquier proyecto nuevo que yo cree. Entonces va a haber algunas cosas que quería poner mi proyecto para hacer solo por conveniencia y no quería auto cribado caso, lo estás siguiendo. Yo quería los mismos resultados. Entonces lo primero que tiendo a hacer es ver cómo si abrimos un nuevo blueprint o activo por defecto, esto se abrirá en una especie de ventana flotante que puede ponerse un poco molesto. Prefiero que todo esté acoplado aquí arriba en la parte superior de mi pantalla. Entonces tiene este resultado. Te mostraré lo que obtenemos en este momento. Tenemos un plano que podemos usar aquí, que es el rascacielos. Y se puede ver en realidad que no ha abierto una herramienta. Esto está en mis segundas ventanas en extraer esta idea de un. y como dije, tenemos esta pantalla flotante. Si queremos eso, oye, tenemos que arrastrar eso hasta la cima y tendremos que hacerlo por cada nuevo plano o activo que queríamos abrir. Por lo que idealmente, me gustaría que todos se abastecieran aquí por defecto. Por lo que voy a ir a la Edición, Editar Preferencias. Y entonces justo aquí podemos ver al editor de activos ubicación abierta cambiar eso desde default. Y cambiarán esto por ventana principal. Tienes un montón de opciones diferentes aquí también si quisieras. Pero prefiero que esto sea sólo la ventana principal por defecto. Entonces esto significa que si no tenemos nada abierto una herramienta, podemos volver a hacer clic en esto y podemos ver que los cielos fed blueprint ahora está abierto exactamente donde yo quería eso. Entonces eso va a ser lo primero que tendo a cambiar. Entonces a continuación, solo hay algunos otros pequeños problemas que encuentro con el proyecto por defecto. Por lo que esto es un poco difícil de ver en la grabación. Sé que ya he probado esto antes, pero se puede ver mientras acerco aquí, el piso parece ir de una especie de gris más oscuro a un gris más claro. Y sucede lo mismo si presionamos Inicio y miramos a su alrededor. Podemos ver alguna adaptación ocurriendo con la iluminación aquí. Ahora esta es la autoexposición está tratando de recrear lo que los ojos generalmente hacen cuando vas de un ambiente claro a un ambiente oscuro o viceversa. Y es algo muy útil tener puesto, pero generalmente como algo que vas a querer controlar en un efecto post-proceso o 30 cámara directamente. Y a lo que esto puede llevar es que puedes empezar crear algo en la Odessa que crees que se ve bastante guay. Y luego cuando presiones play, los colores se verán saturados y se lavarán la noche. Entonces para evitar que esto suceda, vamos a tener básicamente lo que vemos en el editor sea exactamente lo que vemos cuando presionamos Play también, a menos que anulemos eso manualmente en alguno de ese sistema post-proceso. Entonces es elige esto, podemos ir a Configuración del proyecto, iremos a auto o simplemente buscaremos toda la exposición en tiempo. Entonces Auto III, vamos a plantear esto. Aquí no hay otros resultados. Entonces la exposición automática es lo que buscamos apagar. Y eso significa que si volvemos ahí, aunque te acerques bastante, podemos ver que no estamos consiguiendo ese piso de color más oscuro ya que eso no es lo que vamos a ver en el juego. Entonces si presionamos Play, eso ahora también será exactamente lo mismo que en el editor. Entonces ahora sabemos que si queremos que nuestro mundo Dhaka cuando te toque, actualiza eso en nuestra ventana gráfica justo aquí. A continuación, solo queremos parte de nuestra configuración de estructura de carpetas. Entonces esto nos va a permitir si hacemos esto ahora, podemos saltar y simplemente empezar a agregar planos, traer activos, configurar materiales, y todas esas cosas buenas como y cuando los necesitemos. Y no necesitamos preocuparnos por nuestra estructura de proyectos. Porque generalmente sabemos que vamos a tener una estructura muy similar para casi cualquier proyecto que los trabajemos. Entonces lo que voy a estar haciendo es en la carpeta de contenido, que es nuestra carpeta raíz, voy a crear una nueva carpeta llamada activos. Entonces aquí será donde todas nuestras cosas externas, texturas, modales, cualquier cosa por el estilo, que podríamos traer, efectos secundarios irán dentro de esta carpeta. Ahora para este conjunto de videos, sé que vamos a necesitar algunos tipos de archivos diferentes. Estaremos trabajando con texturas, sprites, flip books, y diferentes activos de azulejo. Entonces voy a crear una carpeta para cada uno de estos. El atajo, por cierto, si querías agarrar nueva carpeta es Control Shift and Enter cuando estás seleccionado dentro de la carpeta, quieres que esto sea hijo de. Y eso debería hacerlo por activos por ahora. Si terminamos agregando algo más, siempre podemos volver y añadir nuevas carpetas más adelante. Entonces de nuevo dentro de la carpeta de contenido también tendrá una carpeta Blueprints. Y nuevamente dentro de la carpeta de contenido, también podríamos hacer con una carpeta de mapas. Ahora que tenemos carpeta soy mapas, también podemos seguir adelante y guardar esto en ese mapa apretado que podemos ver tiene sin título y podemos presionar Control ns, colocar esto dentro de la carpeta de mapas, y solo llamaremos a esto Principal . Y este será nuestro mapa principal desde el que estaremos trabajando para el resto del proyecto. Eso también nos permite hacer otra cosa, que es establecer algunos valores predeterminados del proyecto. Y entraremos en eso en un momento. Básicamente, queremos que este sea el mapa que cargamos en cuanto cierremos y reabramos el proyecto. Antes de hacer eso, también podemos establecer algunos de los otros valores predeterminados como el personaje que estará controlando y Game, y también el Modo Game que está controlando los diferentes controladores, los personajes, y cosas así, que se engendrará en, y el dentro del juego en lógica que será un poco rastreado si tenemos cosas como pastillas, anotaciones, o cualquier tipo de sistema objetivo. Si quisieras encarnar este proyecto yo y llevarlo más allá por ti mismo. Entonces para hacer esto, voy a ir a la carpeta de Planes. Crearemos un nuevo plano y cómo se hace esto haciendo clic derecho yendo a Clase de Plano, encontrando la base del modo de gobierno, que va a ser la clase de Modo de Juego. Queremos usar un nombre, este, la ganancia de subrayado de BP podría basar. Entonces algo más a notar en estas selecciones de videos que estaré siguiendo la convención de nomenclatura irreal estándar. Entonces puedes estar seguro de que si querías poner algo en el mercado o simplemente trabajar con otras personas familiarizadas con el ecosistema irreal, esta convención de nomenclatura, esa debería ser una manera bastante buena de empezar. Por lo que BP para blueprint, subrayan el nombre de la clase. Y por si acaso queríamos hacer alguna clase infantil de este modo de juego, vamos a especificar que esta es la versión base o padre de las clases. Y eso va a tener un poco más de sentido cuando nos metamos en el resto de los videos, ya que estaremos usando ese tipo de estructura jerárquica un poco más tarde. Por ahora sin embargo, podemos abrir esto. Y lo que queremos hacer aquí se establece en el cabezal de clase por defecto que estará controlando cuando tengamos un personaje creado. Por supuesto que aún no tenemos ese personaje. Por lo que sólo voy a volver a la carpeta Blueprints, haga clic con el botón derecho de nuevo, crear una nueva clase de blueprint. Y queríamos encontrar que el tipo de personaje que podemos controlar. Por lo que tenemos un par de las bases controlables. Tenemos el tirón o el personaje. Ahora ninguno de estos está realmente creado específicamente para personajes 2D y en realidad tenemos una clase lista para eso dentro de Unreal. Entonces si escribimos papel, básicamente todo estará usando es parte del sistema 2D de papel. Entonces tenemos flip books, que serán nuestras animaciones, sprites. Si quieres algo que no anime, tenemos cosas como apps de Tom, editores capacitados. Y podemos ver aquí abajo tenemos un hijo del porno es el personaje, que es sólo un porno controlable con algunas cosas extra como el colisionador de cápsulas en él espera una malla esquelética y cosas así. Y entonces tenemos la alternativa, que es el personaje de papel, que es el hijo de la clase de personajes. Pero en lugar de tener una malla esquelética 3D, predefinió algunas propiedades, como un libro de volteo en papel 2D, que es exactamente lo que queremos. Por lo que vamos a seleccionar este, vamos a llamar a este uno BP underscore base jugador. Entonces de nuevo, si alguna vez tenemos algún tipo de versiones alternas del jugador en el que queremos potencialmente engendrar, entonces podemos hacer de esos niños de nuestra clase base. Toda la lógica básica que estaré en nuestra clase base de jugador, como las variables de salud y movimiento y cosas así que podemos poner aquí. Entonces con eso podemos tener una mirada rápida y cabeza, pero no hay mucho que podamos ver en este momento. No tenemos ningún sprites ni flip books que podamos asignar. Como dije, esto va a ser controlando con la animación como I. Pero lo que tenemos es un colisionador de cápsulas y un componente de movimiento de personajes, lo que nos va a permitir configurar muy fácilmente el movimiento para nuestra clase de personajes. Entonces, ¿qué no está listo? Ahora podemos volver a nuestro modo de juego. Vamos a ir a la clase de porno por defecto, y cambiaremos esto a la base de jugadores de subrayado de BP. Entonces esto no hará nada por el momento. Si presionamos Play y vemos por aquí todavía estaba consiguiendo que el gobierno podría basar. Entonces esto no está usando yo estaba en este momento, lo que significa que también estamos recibiendo el Pune predeterminado, que si nunca lo habías visto antes, es la esfera gris. Entonces, si alguna vez ves esto, este es el Pune predeterminado, lo que significa que si no esperas que esto se use, significa que probablemente te has perdido un paso en alguna parte y no has seleccionado tu clase personalizada para ser seleccionada. Y esto nos da ese tipo de vuelo alrededor de movimiento tipo modo espectador. Entonces lo que queremos hacer es ir a la configuración del proyecto. Queremos que el Modo de Juego sea el predeterminado, el que hemos creado para que sea el predeterminado para que el proyecto utilice. Eso lo hacemos a través de la sección de mapas y modos. Vamos a ir a la base del modo de juego aquí. Cambiamos esto de una base de modo de juego a base de modos de juego no calificados de BP, que es nuestra. Podemos ver que automáticamente sabe usar a nuestro jugador como el jugador predeterminado. Y ahora si entramos y presionamos Play, la diferencia aquí es que no tenemos ningún movimiento porque al lado derecho, podemos ver que estamos usando el juego no hábil de BP podría basar. Y debido a que tenemos un jugador arranca en el mundo, se creó la base de jugadores de subrayado BP en esa ubicación. Entonces solo estoy presionando F8 tuvo que expulsar del jugador, lo que me permite volar por ahí. Podemos ver su cambio para poseer aquí. Y podemos ver que tenemos la base de jugadores al inicio del nivel. Y la razón por la que no podemos mover esto a nuestro alrededor porque no hemos puesto ningún código en nuestra clase para darle algún entendimiento de qué es el movimiento. Se puede ver que tiene cosas como la gravedad cabello ya procesado aunque. Entonces si poseemos, siempre vamos a estar en el piso en este momento, pero eso es un buen comienzo. Eso ahora significa que cuando lo hacemos agregando ese código a nuestra jugada una clase, el proyecto sabe seleccionar eso como la clase predeterminada para intentar poseer y ejecutar la lógica a través. 3. 03 - entrada de jugador: Con toda esa configuración y fuera del camino, ahora podemos entrar y empezar a proporcionar algún tipo de referencia visual para nuestra clase. Entonces dentro de la base de jugadores, como no tenemos los flip books, así las animaciones listas sí, se importan de nuestras texturas. Sólo voy a agregar un cubo simple componentes empezar con. Entonces si vamos a agregar componentes, vamos al cubo. Esto sólo va a ser una malla estática para al menos tipo de representar visualmente dónde va a estar el jugador. Y esto significa que también podemos empezar a mirar la configuración de la cámara. Entonces yo, para la cámara, voy a usar algo festival llamado primavera en componente. Esto va a ser como una cámara. Boom es un palo largo, esencialmente un palo virtual planea nuestra cámara, se apoyará, podemos ver que está representado aquí. Por lo que la corriente va a estar al final de nuestro palo. Y esto sólo nos da un poco de flexibilidad con lo lejos que se va a mantener la cámara. Tiene alguna funcionalidad incorporada para que lo animemos o diferentes tipos de cámara rezagada para obtener un sistema de cámara de sensación ligeramente más dinámico. Ahora acabo de notar que todavía tengo mi cubo seleccionado. En realidad quiero que esto sea un hijo de los componentes de la cápsula. Arrastraré y soltaré eso en los componentes capitalinos solo para que sigamos la rotación de la cápsula y no el partido estático. Si le hacemos algo a eso, entonces con la primavera sigo seleccionada. Iré a Agregar Componente, encontraré la cámara, y luego colocaremos el componente de la cámara encendido, el resorte encendido. Por lo que ahora siempre que nos pongamos el resorte, la cámara seguirá. Estábamos apretados esto o moverlo alrededor ya que la cámara está unida al brazo. Esto sólo significa que tenemos que hacer mucho menos con la cámara también. No vamos a estar girándolo o haciendo cosas accidentalmente con la cámara que no queríamos. Y yo, porque tenemos esto, podemos ver que está dentro de Unreal. X siempre está hacia adelante. Izquierda y derechos de X. ¿ Por qué es comida y compra? Por lo que en realidad queremos estar moviendo la mitad izquierda y derecha como obviamente en una plataforma 2D sobre ir de izquierda a derecha, zed, arriba y abajo. Y como dije, Y4 a espalda. Por lo que eso significa que actualmente la cámara está mirando en la dirección equivocada en este momento, estaría mirando desde la parte posterior del personaje si el frente hacia esa flecha cuando traemos el flip book animado. Entonces lo que vamos a hacer podemos conseguir fue primavera y esta es una de las primeras cosas que veremos es bastante útil. Podemos girar el brazo de resorte a 90 grados. Eso va a seguir la cámara. Yo estoy mirando el, cuál sería nuestro frontal de Animación de Jugador. Ahora, esto también va a ser un poco clefs. Imagino que si presionamos Play , por defecto usará esa imagen de cámara. Y vamos a estar viendo muy, muy cerrar nuestro cubo. Entonces lo que podemos hacer es que podemos venir haber agarrado la primavera. Voy a subir esta primavera objetivo. Tengo longitud a alrededor de 600. Y eso significa que cuando presionamos Play now podemos ver un poco más del nivel así como solo al jugador que vamos a ignorar por el momento que los componentes de la cápsula un poco apagado. No estaremos usando esta Malla Estática por mucho tiempo porque puramente con fines de demostración cuando nos metamos en la parte base de la configuración de la cámara. Pero creo que eso va a ser bueno para mí. A continuación, vamos a querer configurar nuestras entradas de proyecto para que los encuadernaciones aten teclados y gamepads para que realmente podamos conseguir que nuestro personaje se mueva. Para ello, vamos a ir a nuestra configuración de proyectos. Navegaremos a la sección de entrada. Y justo aquí tenemos dos opciones. Tenemos el mapeo de acciones y el mapeo de ejes. Entonces como una visión general rápida para aquellos de ustedes nuevos en el motor, la cabeza de diferencia que tenemos mappings reales serían cosas como entradas de una sola prensa, como saltar lobo, CMake, saltar una vez, o teclas de interacción como presionar E para recoger sería un mapeo real es algo que presionas y sueltas. Y en general como una especie de interruptor de encendido-apagado. A continuación tienes mapeos de acceso, que proporcionarán un valor devuelto en función de si se presiona o no la entrada. Entonces si no se presiona nada, está devolviendo constantemente 0. Si lo tienes completamente presionado, como una tecla está encendida, se presiona un teclado y tal vez nunca si tienes la tecla Daniel devolviendo una o menos una. Y entonces también podemos trabajar las cosas en como palos de descarga que tienen un rango. Entonces sería entre menos 11. Entonces si solo estás empujando el palo de sobres tipo de a mitad de camino hacia adelante, entonces estarías devolviendo un valor de como un redondeado por 0.5. Entonces otra vez, esto es un poco, que sea un poco más de sentido. Cuando nos metamos en esto en un momento, vamos a tener sólo unas muy pocas entradas diferentes para este juego. Vamos a querer que nuestro personaje salte. Por lo que vamos a tener que saltar mapeo de entrada. Voy a querer que se muevan hacia adelante y hacia atrás o de izquierda y derecha. Entonces vamos a tener un mapeo de eje derecho de movimiento. Entonces, si hacemos el mapeo de acciones, en primer lugar, agregaremos aquí un nuevo mapeo de acciones presionando el icono más se caerá esta vez. Voy a nombrar esta noche de salto para esto, vamos a decir salto va a ser, podemos agregar muchos botones diferentes, hay que manejar solo una sola entrada. Entonces esto va a ser útil si quisieras hacer la propia posesión un poco más flexible. Entonces como ejemplo, podríamos decir para las personas que usan Ws y D, Podríamos tener w como una opción para saltar. Para aquellos que aún les gusta usar la selección irlandesa, podríamos usar la flecha arriba del teclado. También para saltar. Para las personas familiarizadas con la barra espacial, podríamos usar el espacio para saltar. Y también podríamos decir que usaremos una cuenta de testamento para gamepads también. Entonces usaremos el gamepad y estos van a ser la cara Watson, izquierda, derecha, inferior y superior ser x, y, a y B, o triángulo, ciclín cuadrado x por ejemplo. Entonces si solo visualizas dónde están en el gamepad, voy a ir con el esquema de mando Xbox. Entonces vamos a usar un y quiero un para ser salto, que será botón abajo. Entonces ese será el gamepad. Por lo que ahora podemos usar un como el gamepad salto también. Entonces así es como una entrada de salto. Entonces si presionamos alguno de estos y asignamos esto a la funcionalidad de salto en la clase de personaje. Haremos que nuestro personaje salte por ahí Siguiente. Entonces queremos permitir que nuestro personaje se mueva. Entonces vamos a añadir un mapeo de ejes. Entonces el mapeo de ejes, como dije, va a devolver un valor. Entonces podemos ver la diferencia aquí es que estas son solo prensas individuales. Podemos agregar combinaciones, pero no devuelve un valor, mientras que para el Acceso estamos devolviendo un valor de eje. Pero este, sólo voy a llamar a esta jugada ¿verdad? Y en realidad sólo estará creando la función mover derecha. Y verás por qué en tan solo un momento. Entonces lo que vamos a hacer es por la izquierda y derecha en movimiento del personaje, tenemos un valor positivo. Entonces digamos que nos estábamos moviendo en una, queremos que el personaje se mueva justo a través de la pantalla, que será nuestro valor positivo. Asignaremos esto a D para la entrada WASD. Por lo que encontraremos D en el teclado. Así es como un movimiento de derechos básicos aquí. Ahora también queremos que puedan moverse a la izquierda. Entonces vamos a agregar otro enlace de entrada, y encontraremos éste como a.Y una vez que hayamos definido la entrada a, queremos cambiar esa escala a menos 1. Ahora la razón de ser es que vamos a estar moviéndonos en un valor positivo a través de la pantalla para movernos a la derecha. Y queremos movernos en el valor negativo a través de la pantalla para movernos a la izquierda. Y por eso no necesitamos movernos a la derecha. Y me muevo a la izquierda, sólo podemos crear y mover a la derecha, que será la asignación positiva. Y entonces es una especie de tomado o intuido que mover a la izquierda es el valor negativo. Y entonces podemos hacer lo mismo que teníamos para el salto. Por lo que podemos crear un número de estos, permitirse las teclas de flecha que flecha derecha. Cuando tengamos la flecha derecha, podemos volver a asegurarnos de que sea positiva. Y luego se fue. Va a ser nuestro menos uno y podemos asignar algún movimiento subestimado también para el gamepad. Por lo que caería esta vez. Y nos queda el gamepad. Thumbstick es cuando queremos usar en el mundo gamepad, x es izquierda y derecha, y está arriba y abajo. Por lo que queremos que el eje x del pulgar izquierdo sea controlado en la cadera. Ahora recuerda lo que dije, que el valor del eje está devolviendo un valor de ya sea menos 10 o uno o entre ese rango. Ahora cuando el stick analógico no se mueve en el medio, y eso va a ser 0 si el usuario lo empuja hacia la derecha y eso va a estar hasta un valor de uno. Y si lo mueven a la izquierda, y eso se va a hacer a un valor de menos uno. Entonces este tipo de aquí, en realidad una amabilidad por todo eso dependiendo de la forma en que el cliente esté moviendo el sobre. Por lo que eso es todo listo para la funcionalidad de movimiento correcto. Entonces si los movemos de nuevo a nuestra base de jugadores, se moverá al Event Graph y podemos hacer un poco de ordenar tiene, por lo que podría necesitar esto un poco más ligero para el Begin Play. Podemos deshacernos de todo lo demás por ni fuimos Ordenados el solapamiento o el tic del evento en este momento. Y en lugar de volcar todos nuestros encuadernamientos de entrada en el Gráfico de Eventos general, lo que haré es en estos sexualmente, pero sí, crearé un gráfico totalmente nuevo. Voy a nombrar a este una entrada. Y pondremos aquí todas nuestras cosas relacionadas con la entrada. Ahora recuerda los nombres que acabas de enfriar, estás enfatizando sus manos. Entonces tenemos saltar y movernos ¿verdad? Porque vamos a estar enfriando y esos en tan solo un segundo. Entonces para levantarse mover función correcta, solo teclearemos mover ¿verdad? Y se puede ver que tenemos dos opciones. Tenemos el eje o el evento. Entonces si empezamos con los eventos y tal otra vez para mí de derechos, y luego conseguir el eje sólo algo que pueda confundir gente nueva, contrate un poco. Básicamente, el eje es el valor devuelto cuando estás presionando algunas cosas como las he mencionado, menos 10 o una o entre eso. Y entonces el evento es la opción que nos da el pin de ejecución. Por lo que podemos ejecutar algo de funcionalidad fuera de esto. Entonces hagamos una cadena de impresión rápida. Entonces lo que esto está haciendo, y podemos imprimir el valor del eje. Entonces si vengo componente, presiona Play, cuando estoy presionando nada en absoluto, podemos ver que esto se está ejecutando constantemente, así que es como una función de actualización o un tick de evento. Cuando presiono D, que es mi movimiento correcto, entonces consigo uno. Cuando presiono un, obtengo menos uno. Lo mismo para la flecha derecha a la izquierda y a la derecha, podemos decir, Bueno actualizar, no estoy en la forma más simplista es alta. El enlace del eje funciona. Entonces solo estoy conectarme al gamepad aquí. Y ahora me muevo a la izquierda en lápiz labial ligeramente a la derecha. Y podemos ver que tenemos algún valor entre 01. Y luego si lo muevo a la izquierda, tenemos ese valor entre 0 y menos uno. Entonces así es como vamos a estar impulsando el movimiento de nuestro personaje en un momento. Lo que quería demostrar, la única diferencia aquí, el valor de la x es exactamente el mismo que el valor de retorno del valor de derechos getMethod aquí, la única diferencia entre los dos es si necesita sólo el valor para un cálculo como este, si necesita los eventos para que el pin de ejecución llame a otra función. Por lo que podemos ver volveré a usar esto y obtenemos exactamente las mismas opciones o respuestas. Conseguimos uno cuando presiono D menos uno cuando presiono a. Y tengo de nuevo el panel de control, y podemos ver que tenemos ese valor dependiendo de qué manera estoy moviendo lo poco realista. Entonces exactamente lo mismo. Esto es simplemente agradable y práctico si estás usando un cálculo y estás tratando la velocidad se multiplique por la dirección de algo y no quieres tener que enfriar los eventos. Simplemente puede comprobar el valor que se devuelve de la asignación de entrada. Entonces con eso hecho, especie de tener una mejor comprensión de lo que esto está haciendo. Lo que podemos hacer ahora es a partir de esto, enfriaremos nuestra entrada de movimiento add. Y esto es realmente tan difícil como lo es. Un personaje en movimiento. Esto está tomando algunas funcionalidades incorporadas de la clase de jugador en el Componente de Movimiento de Personajes. Y básicamente solo va a sumar movimiento en una dirección que le damos en base a una escala. Entonces si decimos que la escala está fijada en una permanente, eso significa que vamos a ser incluso una frase esa dirección opuesta al valor constantemente. Entonces sabemos que queremos movernos de izquierda a derecha y vamos a decir uno en la x porque recuerden, ya hemos visto ese es el eje x es este rojo, y esa es la forma en que queremos estar moviendo. Entonces justo aquí, y estaría hacia adelante y hacia atrás. No queremos entrar y salir del fondo y dicho sería arriba y abajo. No queremos subir y bajar a menos que estemos saltando. Entonces si presionamos Play now, eso va a mover una unidad y un valor positivo x, porque hemos codificado duro esto para que se base en nuestra dirección multiplicada por la escala, se va a estar moviendo constantemente en esa dirección si no cambiamos eso. Entonces la forma en que vamos a alterar que puede haber adivinado ya está basada en el valor del eje. Lo que significa que si estamos suprimiendo algo, en realidad estamos multiplicando eso por 0, lo que va a detener nuestro movimiento. Si presionamos, D se moverá a la derecha. Si presionamos un testamento se moverá a la izquierda. Lo mismo para los árabes, y de nuevo, lo mismo para el palo de desbloqueo. Por lo que realmente es tan difícil como lo es conseguir que el movimiento pase a un personaje. Ahora esto es un poco mágico porque aquí están pasando algunas cosas de fondo. lo que tal vez te estés preguntando por qué un valor tan bajo como uno nos está haciendo movernos relativamente rápido en base a la dirección que queremos moverlo. Ahora la razón que es, es que en realidad no estamos moviendo una unidad en el Componente de Movimiento de Personajes aquí, realidad estamos moviendo 600 unidades. Entonces lo que esto está haciendo en una forma muy simplificada hace mucho más pasando en la clase de padres C más plus. Pero para traspasar lo básico, lo que está pasando es que estamos multiplicando la dirección mundial por voy a caminar velocidad. Por lo que en realidad estamos moviendo 600 unidades multiplicadas por el valor escalar. Entonces estamos tomando nuestro valor de 600 y estamos diciendo que si no estás presionando nada, entonces multiplica eso por 0, que es de nuevo llega a ese movimiento. Si estás presionando D o lo que sea que se le asignó, muévete a la derecha en el valor positivo, entonces estamos multiplicando 600 por uno. Por lo que estamos moviendo 600 unidades en esa dirección. Y si estamos sosteniendo un valor negativo, así que a o a la izquierda, entonces estamos multiplicando 600 por menos 1. Y eso nos hará mover en un valor negativo o a la izquierda a través de la pantalla. Entonces solo para que sepas que aquí hay mucho por lo que mirar si querías jugar con cosas diferentes y confirmar que eso es lo que se está controlando aquí. Si bajamos esto a algo realmente lento, como 50, entonces podemos ver que el movimiento está completamente obstaculizado por ese cambio de velocidad. Entonces hay mucho que puedes jugar con ella. No voy a pasar por todo esto. Creo que mucho el nombramiento es bastante tipo de sentido común. Y si miras a través de ella, puedes ver de qué es responsable. Y eso definitivamente sería algo con lo que jugar entre videos y solo tener una mejor sensación de lo que está haciendo el Componente de Movimiento de Personajes. tienes mucha flexibilidad usando esto, puedes hacer cosas como cambiar la aceleración para que te lleve más tiempo si quisieras, para tener como una acumulada hasta esa velocidad, 2048 es más o menos 0 al completo velocidad. Si cargamos esto a algo extremo como 512, entonces de nuevo, vas a ver un gran cambio en tiempo que nos lleva alcanzar ese impulso máximo. Entonces puedes tener como un, supongo que esa sería tu vieja forma de juego de Sonic. Tendrías la animación de trotar que conduce a la carrera, lo que lleva al sprint cuando llegues a ese 2014 completo. Entonces esa es la aceleración máxima. Nuevamente, dejaré eso igual esta noche, pero puedes modificar todos estos valores diferentes y realmente cambiaste la forma que tu personaje me siente por lo correcto? Ahora, lo último para la entrada entonces es que vamos a sumar nuestras entradas de salto. Entonces otra vez, muy sencillo. Queremos enfriar el nombre de eso. Mapeo de acción que hicimos antes, simplemente saltar. Se puede ver que en realidad es un montón de retornos diferentes aquí para saltar. Y eso es porque hay bastante construido en nuestra clase de personajes que nos permitirán alterar cómo saltamos y cómo reacciona eso. Pero queremos que empiece nuestro salto de evento de acción, con el que hemos creado en los encuadernaciones de entrada. Y se puede ver de nuevo, esto es ligeramente diferente al mapeo del mapa del eje. El principal diferencia es que no estamos devolviendo un valor. Entonces como he dicho, esto o bien está prensado o no prensado. Entonces cuando pulses W o la flecha arriba o un en el gamepad, esto se enfriará y cuando lo sueltes, esto será genial ver que ya tienes estos dos estados. Ahora de nuevo, sencillamente, hay toda esta función en la que ya está incorporada. Voy a tirar de aquí. Voy a llamar a la función de salto. Tenemos una función heck saltaría. Esto es a través de la clase de personajes y tiene de nuevo, algún tipo de magia pasando bajo el capó, pero solo es aplicar fuerza en el eje z para nosotros. Entonces si entro y presiono W, entonces saltamos arriba. Y lo mismo para una noche en el gamepad porque esto tiene algunas cosas listas para que podamos manipular y jugar con. Podemos venir aquí a la base de jugadores, buscarlo, saltar en el panel Detalles aquí. Y tenemos un par de cosas diferentes que podemos cambiar. Por lo que realmente podemos cambiar el salto. Podemos establecer esto en un máximo de cinco. Y podemos conseguir esto haciendo un salto de tuplet de sincronización. Por supuesto, si solo querías un doble salto, tenemos que hacerlo, tienes un doble salto, tan súper fácil. Por lo que ya consigue un doble salto implementado. Y entonces tenemos el máximo HoldTime aquí también. Ahora esto va a ser relevante para el siguiente spot, algo que queremos hacer si vamos a utilizar la base construida en sistema de salto. Siempre que soltemos esto, también queremos llamar al stop jumping. Por lo que esto actualizará esa clase de padres estaba revisando todo esto y actualizará el sistema para hacerle saber que se ha liberado el botón de salto, que luego entra en este salto mantenga apretado. Entonces si has jugado juegos como los viejos juegos de Sonic, juegos de Mario, o plataformas y juegos modernos también. Tendrán algo que muchos diseñadores se enfriarán, altura de salto variable. Entonces si mantienes pulsado el botón diagonal cuatro, o si solo tocas el botón una vez que hayas alcanzado ese mínimo a la altura de salto. En tanto que si lo sostienes durante un cierto periodo de tiempo, llegarás a pico ligeramente más alto en tu sitio de salto como. Por lo que de nuevo, sistema muy flexible listo para ir dentro de Unreal. Tenemos esto ya contabilizado. En el momento en que no tengamos esa altura variable de salto. Vamos a conseguir lo mismo independientemente de cuánto tiempo sea un servicio de asistencia, porque tenemos el salto máximo de antaño establecido en 0. Ahora si pongo esto a algo extremo, como 55 es demasiado alto para esto. Pero si lo pongo por tanto tiempo como un todo hasta cinco segundos, aquí se está aplicando fuerza de salto. Y la forma en que usaríamos esto, por lo que el jugador tiene un poco más de control es que en cuanto presionemos este comunicado y detengamos la función de salto, esto se activará y vamos a estallar temprano y no llegar a ese pico . Entonces tengo hasta cinco segundos para aguantarlo. Pero se puede ver si sólo lo sostengo como un segundo, entonces empezaremos a saltar arriba, a caer de nuevo hacia abajo. Si lo sostengo por más tiempo que hasta que lo suelte, vamos a conseguir esa altura variable de salto. Por lo que siempre recuerda por razones como esta, porque se están haciendo cosas bajo el capó que tal vez no veas. Quieres recordar llamar siempre a tu stop jumping cuando estás llamando a una función de salto, si estás usando la funcionalidad incorporada, ahora baja esto a algo un poco más bajo. Al igual, creo que algo así como 0.25 suele funcionar bastante bien para el salto variable. No va a ser una gran diferencia. Pero sí le da a ese jugador un poco de esa sensación de un poco más de control sobre la forma en que saltan y los analiza para abordar diferentes tipos de obstáculos de diferentes maneras. Y creo que para este juego, lo haré un poco más difícil. Voltearemos el salto máximo hacia abajo a uno. No pienses realmente que necesitamos un doble salto para este. Entonces otra vez, sólo ven a probar esto. Esto está trabajando con todas las entradas y tengo el movimiento para el gamepad saltando con una. y otra vez, tenemos ese VAB, saltamos altura si lo sostengo hecho. Por lo que envié mis sistemas. Empecemos con, está bastante claro qué están haciendo estos, pero solo entra en ese tipo de buenas prácticas de programación. Podemos lanzar unos comentarios, correcto, bonito. Entonces si selecciono los nodos, presione C, Entonces llegamos a un comentario. Este sólo diría que está controlando el movimiento direccional. Y volveremos a hacer lo mismo. Entonces seleccionaremos estos presione C y diremos que éste está controlando el salto. Ahora puede parecer obvio, pero la forma en que los comentarios lo que es muy útil. Por lo que incluso para cosas que son muy obvias, cuando has echado mucho, no vas a poder ver el nombre de los eventos, pero los comentarios sí escala en base al Zoom. Por lo que puede ser útil solo poner comentarios como este aunque sea lo muy simple. Entonces si alguna vez quisiste sumergirte directamente en la sección de salto, tienes montones de noches por todas partes. Y solo Herman, estoy encontrando que el salto muy, muy rápido. Entonces con eso hecho que podemos compilar y guardar eso. Eso es más o menos lo básico del movimiento del plan. 4. 04 4: Con algunas de las cosas divertidas ya implementadas, podemos llegar a trabajar en lo visual para que podamos dejar de traer los activos, específicamente las texturas para empezar a cambiar la clase para que realmente podamos ver un poco más y escalar cómo se va a ver y cómo se va a representar en la noche de juegos. Para esto, estaré usando un paquete de activos gratis que puedes obtener de cada punto io. Se llama pixel adventure. También hay un pixel adventure to, está hecho por pixel rana, y es completamente gratis para descargar. Por supuesto, si disfrutaste el paquete y querías apoyar ese trabajo, estoy seguro de que más que aprecia algunas donaciones pequeñas, más grandes, si eres capaz de hacer eso cuando termines de escribirlas. Ahora, también proporcionaré algunas dihalidas que se pueden obtener de abajo, que tienen todos estos activos o algunos de los activos, los que estaremos usando específicamente para estos videos, que han sido reutilizados, alterado en base a la escala y las cosas. Y te explicaré eso en tan solo un momento por qué he hecho esos cambios. Pero si quisieras destacar estos, sí vienen en un tamaño muy pequeño, que forma parte de una de las clases. Un poco del problema cuando se trabaja en un motor como Unreal. Pero de nuevo, ojalá entiendas el proceso de descargar algo de cada uno, si quisieras conseguir todo el camino como viene aquí. De lo contrario parece que tiene la descarga para que los archivos del proyecto sigan junto con los videos de la misma manera exacta. Entonces lo que voy a estar brindando estos, vamos a conseguir el bate, las alturas, dos formas de juego, o sólo estarán montando la rana, el resorte, y las piezas niveladas. Estos los he configurado de una manera particular para que pueda mostrar ciertos enfoques diferentes para extraer estos, animarlos y ponerlos en marcha en un proyecto. Y también estos han sido redimensionados. Entonces esta es la forma en que encontrarás las cosas o descargadas si lo consigues de la página web. Entonces estos son los que no han sido tocados. Podemos ver que son 32 por 32 pixeles. Si miramos la animación de salto o la animación de doble salto, podemos ver eso un poco pequeño. Y si comienzas a intentar aumentar esto, entonces vamos a conseguir ese efecto borroso. Ahora, he aumentado el tamaño de los activos que voy a estar usando. Te recomiendo seguir junto con de una manera que no hace esto, que básicamente es ejecutarlo a través de un paquete 2D como Photoshop o Krita. He optado por aumentar la escala en un 400 por ciento y asegurarme que configuramos el algoritmo al vecino más cercano, lo que significa que obtendrás el pliegues de escala basado en el porcentaje de píxeles y no obtienes nada de ese tipo de suavizado alrededor de los bordes, por lo que todavía obtienes un pixel perfecto tipo de imagen. Ahora la razón de esto, un par de cosas que quería mencionar. Bueno, esta no es una forma muy optimizada de llevar las cosas a un motor como Unreal. Porque Unreal tratará de comprimir las cosas. Comprimirá los tamaños de imagen para el rendimiento más adelante solo si lo proporciona en una potencia de dos. Entonces eso es algo así. Por qué las he juntado todas en una hoja de estilo grande. Se puede ver como 1024 por 1024 dimensión, que es el poder de dos. Entonces 512 por 512, 256 por 256, y así sucesivamente. Y yo, por eso, es capaz de tomar estos activos con los que he hecho eso, y tratará de comprimirlos si están en ese poder de dos. Por lo que probablemente se fue a hacerlo con estos. Pero como dije, esto es más una manifestación. Yo quería mostrar algunas maneras diferentes en caso de que sí lo consigues, nos den como así este no es el fin del mundo. No va a romper tu proyecto. Y será útil saber extraer las cosas de esta manera también. Entonces eso es lo primero que he cambiado es web o escuela. Les he hecho un poder de dos láminas sprite. Ahora lo otro es obviamente el tamaño y la razón por la que he elegido ir por la talla más grande. Entonces, en lugar de obtener el 32 pixel por 32 pixel, estamos trabajando más con un 128 por 128 por espacio de cuadrícula, así que por imagen. Y la razón es que esto evitará como necesidad de anular algunos de los predeterminados del proyecto, como la navegación AI, volumen de búsqueda. Si consideras eso hoy en día, estamos trabajando con cosas como, de acuerdo, resoluciones. Tendrás imágenes que cada imagen individual podría ser estilo de vida de ley, y 24 incluso 2048 por sí mismo para conseguir esas imágenes de alta resolución. Por lo que trabajar con algo que es sólo una imagen de 128 píxeles todavía va a ser relativamente pequeña, definitivamente no va a ser rompedor. Podemos ver toda esta hoja de sprite tiene sólo 31 kilobytes de tamaño. Y esto significa que va a ser mucho más fácil trabajar con. No necesitaremos cambiar las tallas mundiales. Todavía podemos trabajar con un centímetro por centímetro tamaño de soldadura. Fuimos necesidad de anular cualquiera de los sistemas de IA también. Entonces creo que en este caso, trabajar con un conjunto de imágenes un poco más grande va a hacer las cosas mucho más convenientes. Entonces como ya he mencionado, si cuenta, definitivamente recomendaría seguir junto con los activos que aquí proveo. Deja que estos, una vez que los tengas extraídos, vuelvan al motor y estamos buscando meter algunas de estas texturas en el motor y trabajar. Por lo que podemos hacer esto de varias maneras. El que vamos a estar importando es una textura. Entonces voy a ir a la carpeta de texturas. Podrías navegar hasta donde las encuentras o almacenas en tu sistema. Ve a Importar activos de juego, texturas, que va a ser la ubicación, y solo los encuentras y seleccionas todos y elige Abrir. Y eso los traerá. Otra forma es simplemente tener la ventana abierta aquí. Podemos arrastrar, seleccionar todos estos y simplemente dejarlos caer en nuestro proyecto. Entonces están mirando un poco apagado en este momento, pero eso está bien. Estaremos arreglando esto en tan solo un segundo. Yo soy lo que queremos hacer. De hecho, en primer lugar, si abrimos uno de estos, podemos echar un vistazo a algunos de evaluar. Entonces en su mayor parte estos lucen bien, tal vez un poco borroso alrededor de los bordes. Es difícil de decir, pero podemos hacer algo para mejorar esto en un momento. Entonces tenemos el Alfa que estamos listos, tienes que hacerlo. Entonces lo primero es que esta es una textura lo que significa que no podemos arrastrarla al mundo que no puede ver esto en el mundo en este momento, necesitamos algo llamado sprite para poder hacer eso. Entonces voy a volver a la principal, esa carpeta Texturas. Y lo que quiero hacer es que podamos agarrar todos estos. Y básicamente queremos cambiar los detalles aquí y conseguir que actualice automáticamente esto para que se adapte mejor a nuestro proyecto. Y lo podemos hacer seleccionando todos estos. Así que cambia y selecciona, haz clic con el botón derecho en nuestros activos y ve a las acciones Sprite y aplíquelo en papel ajustes de textura 2D. Y lo que eso hará, se puede ver que todos los alfas han sido contabilizados. Se ha deshecho de ese fondo negro. Y justo aquí podemos ver lo que ha cambiado es que eso solía ser el dx t predeterminado una mano, se decidió que la interfaz de usuario sería Claire y creo que eso sí se ve un poco más nítida. Y luego aquí abajo, lo importante es que ha cambiado esto para que sean píxeles 2D. Y esto funciona perfectamente bien porque no vamos a ir por ese suave pintado a mano o los contactos deberían tipo de aspecto. La imagen perfecta de píxel es más o menos lo que queremos aquí. Y de nuevo, creo que eso empezó fuera de su mundo por defecto. Por lo que hacer eso en todos nuestros activos nos ahorra mucho tiempo de configurar esto manualmente. Ahora lo siguiente que queremos hacer es convertir estos en sprites para que realmente podamos empezar a extraer cosas de ellos. Antes de saltar a eso, sólo quería darles un ejemplo rápido de lo que quería decir con estos escalados. Entonces si empiezo con las chozas, no hace falta seguir aquí. Y vamos a hacer esto de una manera particular ese momento, pero sólo voy a extraer los sprites, que elija cualquiera opción a la vez. Vamos a entrar más en las opciones en el momento. Y son los sprites, no las texturas, como mencioné, que podemos arrastrar al mundo. Por lo que puedes ver esto es en realidad más o menos del mismo tamaño que esta planta detuvo si presionamos Play no está demasiado lejos del tamaño de nuestro cubo. Entonces esto, como dije, ya se está alineando con las opciones de escalado mundial basadas en centímetro. Entonces me voy a deshacer de esos para NIH. Y de manera similar, voy a deshacerme de los activos de rana ninja. No vamos a necesitar las versiones más pequeñas, las que no han llegado con las actualizaciones listas incluidas. Nosotros sólo vamos a mantener para NIH nuestras texturas aquí. Ahora por el momento, sólo voy a deshacerme de los hots probablemente hará el mismo proceso en tan solo un momento. Pero quería pasar por un poco más de detalle sobre cómo podemos extraer estos en nuestro juego. 5. 05 - Flipbooks: Entonces la razón por la que esto nos pone y tema a la hora de extraer cosas de estas texturas, es que hay algunas maneras diferentes en las que puedes hacerlo. Y dependiendo de cómo te hayan proporcionado los activos, que dependiendo de tu equipo o del proyecto en el que estés trabajando, puede que no siempre te sean dados de la manera ideal o de la misma manera. Es posible que tenga algunos problemas con el punto de pivote altamente está funcionando lo que puede afectar su animación. No es un ejemplo perfecto para esto. Si vamos a la rana jugador, cuando queremos extraer todas las imágenes individuales, vamos a, hacemos clic derecho en las acciones de sprite de textura y extraemos sprites. Ahora es por eso que lo hice muy rápido hace apenas un momento en la textura caliente por aquí. Y yo solo lo dejo elegir la auto extracción. Por lo que se puede ver la forma en que esto está funcionando. Tenemos el color del contorno, que es el delineador y cada imagen que encuentra en base a la transparencia que lo rodea. Entonces va a encontrar cada píxel final y clase que es el botón. Esto extraerá todos estos. Entonces podemos volver a hacer esto. Si querías cambiar la plantilla de nomenclatura, puedes cambiar este pelo y luego a cada uno le llamarán algo así como t underscore jugador rana, guión bajo, sprites, etc. Así que podemos hacer eso. Podemos ver que aquí las convenciones de nomenclatura bastante útiles porque agrega los números. Por lo que sabemos que tenemos 25 de estas imágenes se han basado en una matriz de imágenes basada en cero. Y lo que quería mostrar es básicamente, tenemos la animación ociosa, que son estos primeros 2€. Entonces tenemos la animación corriendo. Tenemos la animación de salto y la animación de caída o al revés. Entonces los primeros 11, así de 0 a 10, la animación inactiva. Entonces la forma en que luego hacemos nuestra animación desde los sprites es hacer clic derecho en una selección de sprites que queremos construir la animación, asegurándonos de que la numeración sea notada I, este va a ser el inicio de la animación hasta el final . Por lo que esto automáticamente lo pondrá en el orden correcto para nosotros y luego creará un libro de tirantes a partir de esto. Tan agradable y simple. Recuerda el flip book es nuestra animación. Los sprites son la imagen que podemos traer al mundo y las texturas construyen toda esa información. Ahora si traemos esta animación, podemos ver de inmediato hay un poco de problema. Entonces voy a arrastrar esto hacia arriba, voy a presionar extremo. Por lo que la llave final bajará esto al piso. Y podemos ver que los pies están como saltando hacia arriba y la cabeza se mueve hacia abajo. Y eso es porque se basa en este punto central de pivote. Entonces parece que está flotando un poco. Idealmente, la forma en que esta animación estaba destinada a funcionar es que los pies permanezcan perfectamente quietos y todo se mueve hacia arriba y hacia abajo alrededor de ese punto de pivote. Entonces si vamos y aquí podemos ver de nuevo, eso no es del todo ideal, no es del todo alto. Se suponía que se ejecutara la animación. Por lo que podemos arreglar manualmente esto si quisiéramos, seleccionando todos estos activos. Entonces de nuevo, de 0 a 10, podemos hacer clic derecho en estos y podemos ir a acciones de Activos y luego editar a granel vía Property Matrix. Lo que esto nos permitirá hacer es arrastrar y seleccionar todos estos, cambiar y seleccionar todos estos, ir a las opciones de sprite. Y recuerda dije que es porque el punto de pivote es que he colocado eso está roto porque esto va desde el centro y porque cada imagen no era del mismo tamaño, se basaba en el clima, los píxeles y no lo hizo post-its va a cambiar de imagen a imagen es un poco confuso si es así, entonces lo que queremos hacer es cambiar esto desde el centro, centro a centro inferior. Ahora si hacemos eso, podemos ver los pivotes saltar aquí abajo y eso es más alto la animación estaba destinada a mirar. Entonces esa es una solución fácil si nos consigues que es así y así es como tienes que trabajar con las cosas, entonces eso está perfectamente bien. Tenemos formas de arreglar esto. Tan solo para unirnos a otro ejemplo, podemos cambiar esto por algo como la parte superior izquierda y eso lo romperá por completo. Animaciones y yo tocando desde la parte superior izquierda de los sprites. Entonces todo se está moviendo de nuevo a ese punto de pivote. Entonces esa es una forma en que podemos arreglarlo. No, no voy a quedarme con estos porque en realidad lo he configurado de una manera específica. Por lo que eliminaré estos finitos. Si tienes que hacer ese tipo de proceso también, asegúrate de quitar la cosa del mundo. Todavía tenemos lo que es un icono de una referencia nula a un activo que ya no existe. Entonces nos desharemos de t para todos t del mundo. Y lo que haré a continuación no es prácticamente el mismo proceso, pero les mostraré la forma en que pretendía que esto funcionara. Entonces voy a hacer clic derecho en la rana jugador otra vez. Iremos a las acciones de sprites, extraeremos sprites de nuevo. Pero esta vez, la razón por la que he puesto esto en una cuadrícula es que me he asegurado de configurar todo lo que ella arrastró todo a 128 unidades de cada última imagen. Entonces podemos cambiar esto de auto a grid, y podemos ver que encuentra toda la cuadrícula. No es del todo sitio web donde están las imágenes. Y podemos cambiar el ancho de celda de 1024, que es el tamaño completo a 12 ocho. Por lo que podemos ver los hemos separado y luego la altura a 128. Y que cuando extraigo todo, ese es exactamente del mismo tamaño. Entonces tenemos un poco de margen de cabeza en estos, pero podemos ver que todos los pies siendo cortados en el mismo lugar. las animaciones donde se supone que esté la corriente. Sí, De nuevo, eso se contabilizó con ese mismo tamaño espacio de cuadrícula. El problema con esto sí viene que obtienes estas células extra, estas se convertirán en sitios y clasificado como un sprite. Podemos arreglar algo de eso por el número de celdas a las que queremos reducir, que voy a poner en seis, porque sólo tenemos estas seis que realmente queremos. Pero verás que también hay nos ayuda con la convención de nomenclatura. Y podemos crear muy fácilmente nuestras animaciones mediante el uso de esto. Entonces lo que haré es extraer esto. Por lo que ahora tenemos, como dije, esto está separado bastante bien. Sabemos que todos estos son los inactivos hasta el primer espacio vacío. Todos estos se ejecutan hasta el siguiente espacio vacío. Entonces tenemos lleno y tenemos salto. Entonces lo que vamos a hacer, recrear ese flip book. Voy a hacer clic derecho en este gran libro de tirantes. Ahora voy a mantener este, así que voy a nombrar solo quiero FB, full flip book underscore inactivo o jugador inactivo. Por lo que de nuevo, la convención de nomenclatura para los libros de flip es FB subrayado nombre del flip book, texturas, un nombre de subrayado t de la textura, y así sucesivamente. Porque hay tantos sprites tanto que te vas a poner un poco perezoso y no renombrar estos. Yo sólo voy a Shift seleccionar todos estos y arrastrar eso a la carpeta sprites sólo para hacerlos bien de la manera que ahora sabemos que podemos eliminar estos sprites vacíos también. Y podemos simplemente seguir adelante en este orden y hace que el proceso sea bastante indoloro para nosotros. Ahora se puede ver que porque eso tiene el tamaño exacto que sabe que cada imagen que realmente ha funcionado para nosotros correctamente para empezar, no estamos recibiendo esa animación de caída no deseada. Por lo que a continuación podemos hacer lo mismo con nuestro running. Por lo que cambiará, seleccionará todos estos clic derecho, crear, flip book, cojera. Quieres correr jugador de subrayado del FBI. Y tenemos nuestra animación de running. Ahora creo que esta velocidad funciona bastante bien. Lo primero que viene a la mente aquí es que el ocioso se ve un poco intenso porque se anima tan rápido. Y en realidad sólo está destinado a ser cuando el jugador no está haciendo nada. Voy a cambiar los fotogramas por segundo de 15 a algo así como ocho. Y eso me parece un poco mejor. Puedes cambiar eso por lo que quieras que sea, pero esto es básicamente cambiar la velocidad de reproducción. Entonces si quieres que sean muy enérgicos, entonces tenemos algo más alto. O como dije, algo un poco más de detalle, podemos ir un poco más bajo. Nuevamente, arrastraremos todos estos a la carpeta sprites que no volveremos a usar estos, pero claro que eso se referenció en los flip books, así que sí necesitamos que esos sigan existiendo. De igual manera con las texturas, no hace falta decir que esperaría. Y eso deja a estos dos. Entonces tenemos la animación caída. Ahora esto es bastante interesante cuando estás trabajando con algo como esto, incluso como un solo fotograma, aún necesitamos hacer de esto un libro de volteo porque eso es lo esperan nuestros componentes en la clase de caracteres 2D. Entonces llamaremos a este uno FB subrayado completo y llamaremos a éste, crearemos éste, lo siento, y llamaremos a éste f ser subrayado salto. Ahora si abrimos ambos, así que solo estoy turnos seleccionando y presionando Enter. Podemos ver que esto sigue jugando. Podemos ahorrar un poco de memoria, supongo. Sí, adiós. Es hora de 0. Entonces eso no va a bucle. En realidad no ha sido reproducir la animación, pero este no es el tipo de activo que necesitamos para estas dos animaciones, ya que técnicamente son animaciones. Entonces eso es todos nuestros libros de volteo de jugador listos para salir. De nuevo, podemos agarrar estos sprites y lo dejaremos caer en la carpeta sprites. Y luego podemos quitar todas estas celdas vacías. Eso nos deja con, voy a voltear libros para que podamos mover nuestro jugador flip books a la carpeta de flip book. Y esa es básicamente la configuración del proyecto que vamos por con la estructura. Ahora lo siguiente es nuestro jugador de máscaras. El motivo por el que tengo esto, solo quiero mostrar otro ejemplo de West ciertas cosas fueron. ¿ Qué se puede necesitar para tipo de salto en el medio? Por lo que estos han sido montados exactamente de la misma manera, un 128 unidades aparte entre sí. Pero por el tamaño de este jugador y la pieza de cabeza que tiene, si entramos en la opción de extraer sprites, de nuevo, el automático no funcionaría aquí en la escuela porque estos dos, las hazañas en realidad están tocando la cabeza pieza. Por lo que estos siempre se extraerían juntos y romperían por completo esa primera configuración. Entonces de nuevo, aunque para la rana eso fue una especie de trabajo alrededor, para esta, eso no sería una solución alternativa. Y tendrías que conocer las rejillas escalando. Y otra vez, separar esto por un 128 en cada uno. Y se puede ver que corta a través sólo si el pie en la pieza de la cabeza tipo de tocarse entre sí. Entonces tengo sólo algo que me di cuenta de lo que va a ser un ejemplo útil. Como dije, no voy a usar la máscara. En realidad me voy a deshacer de este NIH, pero sólo quería mostrar ese rápido ejemplo. De igual forma, en realidad sucede lo mismo con el bot. Harán éste juntos. Iremos a las extracciones de sprites bot y extraeremos esto. Entonces otra vez, porque estas alas se están tocando en las clases, estas dos como un solo murciélago y luego el resto de éstas están funcionando perfectamente bien. Entonces lo que vamos a hacer es cambiar esto a una grilla. Este es un ancho completo de 1288 y tenemos imágenes de murciélagos sureños, así que lo divido por siete y tendríamos una celda con un 184. Es bueno estar, sí. Entonces esa sería exactamente la cantidad que necesitamos cortar. Entonces ahora podemos ver que no son del mismo tamaño, pero eso está perfectamente bien. Recuerda que tenemos esas anulaciones de pivote si las necesitamos, pero ese es mi corte de derechos en medio esas dos alas subiendo a eso nos vincula el tamaño que necesitamos. Está perfectamente bien. A 120 se recoge lo que es el máximo, todos esos. Entonces otra vez, extraeremos estos. Crearemos un flip book y para este uno FB caja no divulgada. Y sólo comprobaremos que eso ha funcionado. Y de hecho, no necesitábamos hacer ningún desplazamiento de pivote. Cómo eso se ve perfecto. Entonces otra vez, mueve estos a los sprites. Podemos tejer eso en el libro de tirantes. Y básicamente vamos a hacer esto por el resto de ellos. Entonces para las chozas, como hemos visto anteriormente, esto realmente funciona si solo hacemos la guía de extracción de sprites para extraer sprites. Y éste en realidad funcionará con el auto extracto. Por lo que podemos hacer clic derecho en este Crear flip book llamado FB someten hots. Y sólo dos veces verifica eso es. Postear desde el medio, que es lo que queremos de todos modos. Por lo que eso se ha puesto perfectamente bien. Y la última, voy a elegir la opción aquí de que vamos a la primavera, vamos a volver a hacer clic derecho. Iremos a la opción de extracto y que ella no pueda recordar si configuré esto para que esté basado en cuadrícula, así que vamos a echar un vistazo a esto creo que podría haber hecho. Y sin embargo podemos ver que todos estos en el suelo. Si haces una cuadrícula de 128 por 128, significa que solo necesitamos deshacernos de las celdas vacías. Y luego podemos seleccionar todos nuestros puntos de animación primaveral. Grant flip book llamó a este uno FB primavera no divulgada. Y eso funciona perfectamente por lo que se mantiene conectado a tierra y hace una pequeña animación de empuje. Entonces solo para ordenar, de nuevo, flip books en una carpeta de flip book y sprites en la carpeta sprites. Y puedes Control click para anular la selección de las cosas que no quieres. Tejer esos adentro y estamos tan bien hecho, eso significa que podemos cerrar todas estas ventanas. Hemos terminado con esos a menos que quisieras cambiar las velocidades de reproducción. Ahora podemos ir a nuestra clase base de jugadores. Dentro de esto, queremos ir a nuestro sprite. Y de hecho, en primer lugar, quería deshacerse de este cubo. Entonces borra el cubo, iremos al sprite. Y aquí dentro, ahora podemos cambiar nuestro flip book fuente por defecto a nuestro subrayado FB, digamos jugador inactivo, lo que nos da una idea del tamaño del jugador. Ahora sé que vamos a necesitar mover esto un poco hacia arriba debido a que el punto de pivote no está del todo en medio de la cápsula, así que vamos a mover el arriba sólo un poquito. Y luego podemos agarrar nuestra cápsula y arrastraremos la cena tamaño cápsula. Y queremos que esto sea probablemente justo dentro de las hazañas. No queremos que parezca que el plan está flotando y vamos a hacer la cápsula un poco más pequeña que el jugador. Por lo que parece como si estuviera descansando bastante bien en el piso. Y si lo intentamos, esto debería caer en el mundo. Y luego nos vamos, podemos ver que nos estamos moviendo. No se ve tan flotando. Y a medida que llegamos al borde, eso se ve bien? Por lo que obviamente queremos empezar a tocar diferentes animaciones cuando nos movemos. Pero este definitivamente es un buen lugar para por qué necesitamos serlo. Tenemos el sistema de animación 2D ahora en, y podemos empezar a tener una idea de lo que es estar en el mundo. Entonces esto es como de lo que estaba hablando en el tráiler a estos videos. Tenemos el juego hasta el viajero camino, que es un flip book 2D, esencialmente moviéndose en el mundo 3D. Entonces podríamos, si agregamos nuevas dimensiones a las muertes, tener un juego muy similar usando estas animaciones 2D, pero teniendo este tipo de mundo 2.5 D o 3D con el que interactuar. Entonces otra vez, otro beneficio de hacer todo esto, aunque no es un motor que la gente realmente considere ser una especie de 2D 3D o 2D optimizado. Tenemos algunas características bastante geniales que podemos hacer con el Unreal Engine, con el tipo de híbrido 2D. Entonces de nuevo, en esta etapa estamos llegando bastante lejos y asegurarnos de que estás guardando tu proyecto a medida que avanzas para mantener todas esas actualizaciones que estamos haciendo. Es decir, otra cosa que acabo de recordar, si cierras y abres el proyecto, probablemente te estén saludando con un nuevo mapa cada vez. Entonces qué podemos hacer para eludir eso para mi ir a la sección de mapas y modos, porque tenemos nuestro mapa principal guardado, podemos cambiar el editor Mapa de inicio. Estás obteniendo la plantilla predeterminada, que es sólo el mapa vacío similar a lo que tenemos, pero no el que le hemos estado trabajando. Entonces lo que podemos hacer es cambiar esto a principal. Entonces ahora cada vez que cerremos y abramos el proyecto, ese será por defecto el mapa a abrir. Y de igual manera, si alguna vez quieres darle esto a alguien más para que juegue, podemos cambiar el juego en el mapa predeterminado a Maine también. Por lo que de nuevo, ahí será recibido con este mapa en el que estamos trabajando y vamos a empezar a hacer cambios a esto pronto. Para hacer esta base más 2D estará usando nuestro mapa de azulejo pintado y viendo bodega de eso funciona. 6. 06 - TileSets: Antes de que podamos llegar a pintar cosas dentro de nuestros mapas de teselas sin embargo, necesitamos algo llamado conjunto de teselas. Y para conseguir esos, vamos a volver a reprometer nuestras texturas. Por lo que desde los activos y la carpeta de texturas, lo último que no hemos utilizado, puede que te hayas dado cuenta es el terreno no revelado T. Lo que queremos hacer esto es algo un poco más único. Entonces vamos a volver a hacer clic derecho. Anteriormente hemos estado extrayendo cosas como sprites individuales. De lo que queremos hacer si éste es, vamos a cambiar esto para crear un conjunto de teselas. Esto significa que se puede decir que se ve prácticamente exactamente igual en este momento. Esto nos permite establecer específicamente cosas como el tamaño de cada célula individual y luego dar a estas diferentes células cosas como colisiones desde esta opción aquí arriba. Por lo que por el momento el tamaño predeterminado del azulejo es de 32 por 32. Y para aquellos de ustedes poniendo atención en base al tamaño de la textura, si han mirado esto, esto no va a funcionar. Entonces cada uno de estos cuatro, básicamente quise ser lo que seleccionamos. Entonces podemos ver que 32 por 32 es un poco demasiado suave cuando estamos pintando cosas, se espera que estemos pintando cosas en bloques de este tamaño. Entonces lo que queremos hacer para lograr eso es sólo esto hasta 64 por 64. Y esto es muy importante que hagamos este cambio nueve ya que este tipo de transporte a través de nuestro mapa de teselas cuando creemos eso un poco más ligero. Por lo que nos va a ahorrar tiempo y automatizar un poco el proceso. Entonces con eso, eso significa que ahora tenemos el tamaño de selección correcto, lo que tendremos nuestras diferentes piezas así, así que ese es el primer paso importante. Ahora lo siguiente a tener en cuenta es que solo voy a estar trabajando con esta selección aquí arriba si quisieras hacer diferentes niveles y usar estos diferentes activos que he proporcionado, entonces puedes usar uno de estos, solo seguir el mismo proceso que voy a estar haciendo en esta selección aquí arriba para las diferentes macetas abajo abajo. Y luego podrás llegar a tus propias creaciones para los niveles con estos botones. Ahora lo siguiente es que queremos considerarlos contratan estos serán utilizados en el mundo. Entonces cosas como esta, voy a clase esto como un poco de información de antecedentes. Por lo que cosas como la molienda de espalda no necesitarán ninguna colisión no va a interactuar con el jugador ni nada más. De manera similar, tenemos pedacitos en el medio justo aquí. Entonces estos de nuevo, que probablemente nunca va a entrar en contacto con los jugadores. Por lo que probablemente no necesitaremos agregar colisión cosa diminuta como esta, los bits alrededor del exterior. Gracias. Por lo que estas paredes y los pisos y las cosas, éstos tendrán potencial con el que interactuar. Por lo que queremos agregar colisión a estos azulejos. Ahora la forma en que hacemos esto es un poco de un proceso repetitivo, pero vamos a seleccionar cada ficha individual y veríamos que esto aparece aquí arriba. Ahora desafortunadamente, si seleccionamos múltiples cosas que desaparecen y no hay ningún tipo de copia pegada que haya visto. Entonces lo que queremos hacer es seleccionar cada bit que queremos tener una colisión, ir a agregar libros. Y se puede ver por aquí una caja blanca es solo una almohadilla alrededor de nuestro azulejo de colisión, que nos muestra dónde se está estableciendo la colisión. Si quisiéramos actualizar un poco eso. Entonces tal vez eso es un poco demasiado, subir un poco demasiado lejos, en un poco demasiado alto, podemos mover la flecha alrededor y eso cambiaría el tamaño de una caja colisionante. O podemos extender eso si queríamos, pasar la imagen visible. Y he oído hablar de estos, estos en realidad funcionan bastante bien si solo lo dejamos muy ajustada alrededor del tamaño de la cuadrícula que tenemos aquí. Entonces solo voy a pasar y básicamente seleccionar cada bit y golpear el cuadro Agregar. Entonces ese es el primero que se hace. Básicamente todos los exteriores ahí. Yo quiero todos los lados. Por lo que estos tops y la ciencia y luego todos estos individualmente pueden tener esa colisión también. Entonces pondré eso en una especie de montaje acelerado de fondo aquí. Entonces no tengo que verlo en tiempo real y puedes seguirlo y jalarlo si se adelanta. Vale, Así que todo hecho, he dado estos colisionadores también porque estos no pueden algún bonito detalle alrededor del borde de los niveles que todavía puedes saltar arriba sobre él solo para romper la monotonía de solo ver este 1-bit de Lund y la frontera. Entonces lo último es que una vez que tienes toda tu colisión, crees que lo tienes configurado de la manera correcta. Podemos ir a la opción de fichas colisionantes aquí. Y en realidad cambiará todo para ser una cuadrícula azul basada en lo que tiene colisión y luego en lo que no tiene colisión. Entonces podemos ver que todo lo que dije necesitaría colisión tiene un F. No creo que los jugadores alguna vez vayan a llegar a esto. Entonces probablemente no vale la pena hacerlo. Definitivamente no podrán llegar a esto a menos que se hayan ido un poco con buggy. Y de igual manera, esto es sólo una especie de relleno visual para que entre las diferentes rejillas cuando la pintura para hacer las cosas un poco más interesantes, todas estas necesitarán colisión ahí alguna realmente va a ser usado como plataformas o ladrillos para saltar arriba de ellos. Entonces eso es más o menos perfecto. Ahora, probablemente no usaré estos. Pero sólo para mostrarles un ejemplo final, sí tenemos estas dinámicas. Entonces si quisieras usar plataformas flotantes o algo así, estas probablemente no serán ideales para usarlas en un mapa de teselas de todos modos, porque si quieres trazar cuando normalmente queremos poder saltar a través de ellas. Y no se puede hacer eso muy fácilmente con un mapa de teselas. Probablemente quieras hacer ese plano de su hierro en tu colisión de configuración de una manera diferente. Pero si por alguna razón sí querías usar esto, si solo quieres que sean como un puente sólido por el que no puedes saltar. Entonces otra vez, de manera muy similar, sólo vamos a añadir colisión aquí. Entonces todos estos, y entonces aquí es donde esto viene muy bien aunque. Obviamente el hola MOOC con esta abridge definitivamente es demasiado grande desde abajo aquí. Entonces vamos a seleccionar esto y podemos simplemente arrastrar esto hacia arriba y tal vez arrastrarlo hasta un poco más para que no haya una gran manera de solapar esto. Podemos cambiar la cuadrícula chasqueando dinastía, algo así como 1. Entonces nos ponemos menos snob y yo iría, podemos dar la vuelta al contorno a la perfección y eso lo hicimos. Pero todos estos, así que pensé que esto solía actualizarse. Parece que solo tiene información sobre todos los tamaños de cuadrícula. Esperaba que aquí representara visualmente esto, pero no puedo confirmar de experimentos anteriores que en el juego tomará la colisión de este tamaño de libro aquí. No soy necesariamente lo que ven aquí. Entonces eso significa que si haces estas adentro, el personaje no estará chocando hasta que alcancen el fondo absoluto de esto en lugar de D, el espacio de píxel muerto a su alrededor. Eso es realmente todo lo que necesitas hacer para conseguir una configuración de juego de toallas que esté lista para ir las colisiones ya que los necesitamos. Y como dije, si quisieras tomar ese mismo enfoque, puedes hacerlo por todos los diferentes activos. Probablemente ya veas por qué no voy a hacer eso por todos los activos aquí, por el bien de los tutoriales es que sería un poco repetitivo. Y esto será más que suficiente para mostrar las principales técnicas y principios que entran en la creación de nuestro mapa de teselas. Por lo que ahora podemos cerrar los Taus que prácticamente hemos terminado con esto para el resto del curso, dejaré esto en los activos de azulejo. Por lo que sólo vamos a tener un conjunto de teselas en un mapa de teselas. Por lo que probablemente no vale la pena tener carpetas separadas para ellos. Por lo que acabo de crear un tipo de abarcar una carpeta de activos de teselas. 7. 07 - TileMaps: Con nuestro túnel puesto en su lugar y listo para salir, ahora tenemos el activo en el que necesitamos basar un mapa de toallas. Tan similar a con nuestras texturas, si hacemos clic derecho en esto, tenemos una opción sensible al contexto. Por lo que ahora podemos crear un mapa de teselas a partir de nuestros conjuntos de teselas. Por lo que podemos elegir esta opción. De nuevo, esto creará un nuevo activo aquí abajo. Voy a entrar en esto y podemos ver cómo funciona esto. El primero es que el conjunto de teselas activo se ha recogido automáticamente del que hemos creado un poco antes. Si tuvieras más de uno, podrías cambiar eso aquí y está tomando alguna información. Nuevamente, lo importante al lado derecho, podemos ver que tenemos estas flechas de deshacer y el ancho y la altura del túnel se ha ajustado a 64 por 64. Si tuviéramos esto por defecto, habría sido 32 por 32. Y como dije, eso significaría entonces que fue seleccionar tamaños incorrectos de cabeza cuando estamos tratando de pintar cosas. Entonces si entráramos y seleccionáramos esto, vamos a estar obteniendo el trozo equivocado como podemos ver. Entonces por eso era importante que estuviéramos usando el ancho y la altura correctos del azulejo para empezar para cuando seleccionamos cosas desde pintura de setos hacia el mundo. Entonces ahora como selecciono estos, se puede ver cómo está cambiando el pincel y tenemos la opción aquí, pintar Asia y llenar. Tan sencillo, pero probablemente estés familiarizado con lo que hacen estos. Y entonces esta cuadrícula blanca es como como Canvas va a ser el mundo en el que estamos pintando. Entonces lo siguiente probablemente sería cambiar lo grande que queremos que sea esto en este momento, si fuéramos, por ejemplo, agarrar todas las muertes, colocar esto en, eso sería esencialmente del tamaño de nuestro mundo. Entonces veamos cómo funciona esto. Podemos arrastrar en nuestro mapa de teselas con nosotros al mundo, y eso es probablemente un poco demasiado pequeño para que los planetas los corrijan. Entonces tengo algo de colisión fuera de la cámara, se enseñó que un poco más tarde lo que queremos hacer esos hacen esto más grande podamos cambiar eso con el ancho del mapa y la altura. Por lo que cada cabeza de unidad de red va a ser de 64 por 64 como cabría esperar. Y si arrastramos eso, podemos hacer que esto sea mucho más grande. Pero probablemente no querrías que esto fuera enorme, lo contrario tienes un espacio muy grande que llenar. De hecho, creo que algo así como 60 por 40 podría ser bastante bonito aquí. A lo mejor un poco más pequeño en mis pruebas, creo que pasé más de 80 por 20. Entonces algo más amplio hecho es herramienta. Simplemente vamos a hacer un muy tipo de nivel horizontal. Y entonces podemos empezar por lo menos tipo de trabajar cómo funciona el sistema. Entonces lo primero es que voy a conseguir la herramienta de borrador y deshacerme de éstas. Y queremos enfocarnos un poco como si estás familiarizado con Krita o de nuevo, Photoshop, tenemos un último sistema muy flexible aquí. Entonces la capa uno es la que no tenemos momento. Podemos agregar nuevas capas a esto porque algo bastante sencillo. Entonces voy a crear un fondo y un nivel de primer plano. Entonces el de arriba en realidad va a ser el primer plano. Esta es la capa más frontal, y luego tenemos ocho capa de fondo. Solo estoy presionando F2 para renombrar estos y dados esos son nombre rápido. Ahora como ejemplo rápido para mostrar cómo se verá esto, voy a conseguir este color negro aquí. Por lo que al seleccionar eso, selecciona la herramienta de relleno y en el fondo, solo rellena esa voluntad en negro. Y luego para probar, tenemos al derecho al frente. Agarremos un poco de cambios de colina para pintar. Y por supuesto, todo lo que selecciones se va a pintar aquí. Y sólo nos aseguraremos de que esto pinte sobre el fondo. Entonces así es más o menos como vamos a estar usando esto. Ahora tenemos nuestros antecedentes está bastante listo y listo para salir. Por lo que todo detrás de nosotros va a ser montones. Color pintado en negro. Y entonces podemos empezar a dibujar en primer plano, que sería la parte con la que va a estar interactuando el personaje con el pastel, con nuestras piezas colisionantes. Por lo que algunas cosas festival, estas se les ha dado una colisión por alguna razón. Por lo que voy a sumar estos como una especie de contorno al nivel. Entonces, idealmente lo que estaba pensando es que tendríamos una especie de cuota alrededor de todos estos. Y esto es para contener también la cámara. Por lo que la cámara sólo va a ver este tipo de contorno negro, que nivel necesita ser más ancho porque la cámara puede ver bastante lejos horizontalmente, por lo que necesitamos algo bueno. Y algo así como 16 unidades era más o menos cuando la cámara empezaba a ver que ese era espacio vacío a su alrededor. Entonces tendremos como una esquina por aquí. Solo estoy presionando zed para rotar esto y x lo volteará horizontalmente. Entonces voy a rotar ese derecho, el correcto aproximadamente ahí. Y sólo podemos borrar esa y luego agarrar una de estas piezas laterales. Recuerda, queremos que los jugadores estén chocando con esta pieza de aspecto de piedra aquí. Entonces, de nuevo, sólo voy a voltear eso y sólo podemos pintar ese comensal por aquí. Puedes usar diferentes piezas si quieres. Todos son más o menos de la misma manera. Entonces sólo voy a voltear eso para reutilizarlo. Y así es básicamente como vamos a armar el nivel. Entonces esto va a ser un montón de voltear cosas, arrastrarlo. Si cometes un error, entonces vamos a matrices eso. También puedes venir en herramienta de pintura selecta y de ancho. En tanto tengas seleccionada la herramienta de pintura, shift select, copiaremos eso. Y de nuevo, podemos voltear eso y simplemente pegar estos él. De nuevo, asegurándote de que tienes más o menos a 16 puntos de distancia del borde aquí. Y deberías estar bien con que la cámara no vea el espacio vacío que vamos a tener de fondo. Porque recuerden, todavía vamos a tener todo esto a su alrededor en segundo plano. Podemos simplificar un poco esto para el estilo artístico. Pero lo principal es que todavía no quieres ver ese tipo de 200 obviamente que este no es el mundo entero. Lo siguiente, así que eso es una especie de las fronteras hechas. Podemos seleccionar esto también. Y sólo voy a voltear eso otra vez usando zed. Eso no es un poco tonto. El siguiente es que queremos nuestro cerro. Entonces esto es más o menos sólo va a ser y esto hasta un poco demasiado corto muchos para agregarlo un poco de altura extra a esto. Ya veremos cómo va esto. Entonces pega esto aquí abajo. Entonces vamos a querer que estos bajen al piso y se puede ver que sí tiene un poco de contorno. Por lo tanto, ten eso en cuenta que estos deben estar yendo por el piso siempre y cuando quieras que se vayan. Y entonces esto se estará uniendo con las otras piezas, asegurándose de que la pieza media ahí por el contorno. Y luego como dije, este es el bit, esto es sólo relleno que el jugador fue a verlo temprano el autista. Entonces me habré ido piso es cuando queremos una nueva repisa solo usando un tipo similar de configuración que luego podemos pegar estos a lo largo. Y otro consejo es que si arrastramos, seleccionamos estos dos a la derecha y luego simplemente arrastramos eso a lo largo. Eso. Y la paz siempre será arrastrada hasta el final. Y para que puedas ver, solo ahorra un poco de tiempo ahí al seleccionar diferentes piezas una y otra vez. Nos ha faltado flexibilidad, así que puedo simplemente pegar eso. No quiere decir que necesitemos eso para bajar un poco más de esquina pieza. Y entonces podemos hacer algo como seleccionar la herramienta de relleno y llenar eso ahí dentro. Entonces, de nuevo, probablemente vas a querer hacer algo un poco más creativo de lo que yo tengo. Por lo que no voy a seguir corriendo esto y hacer todo el asunto con comentario. Entonces tienes la idea base de que podemos arrastrar y seleccionar diferentes cosas para tener algunos looks Interesantes aquí, como se dijo, en lugar de tener solo una pieza constante a nivel de hierba, así es como se puede fingir algún primer plano y se ve de fondo con las diferentes conexiones ahí. Y entonces lo último que voy a hacer también es el área dentro de este tipo de encuadernación que he hecho. Voy a volver al área de fondo, agarrar la goma de borrar, y sólo asegurarme de que nos llevemos esto. Porque encuentro que ese color sí choca un poco demasiado con el contorno del personaje. Y pueden parecer un poco desordenados, un poco confusos. Y es agradable obtener ese bonito sólido contorno negro del personaje. Entonces solo voy a borrar todo lo que tenía osteo, alguna otra cosa que me veas hacer? Para lo siguiente que vas a ver es un desvanecido a los resultados finales. Si estás en el Reino Unido, una especie de pizza azul, aquí hay una que hice antes. Y aquí hay uno que hice antes. Entonces como dije, es muy, muy sencillo. He limpiado el fondo. Si hiciera unas cuantas capas diferentes de plataformas tenía algunas cosas superpuestas cabezas seguras de que puedes hacerlas lucir así que la intersección que tendría que es un poco contabilizada en la forma en que los contornos se hacen aquí. Hice una plataforma para que nos brinquemos. No he hecho uso de la plataforma de madera, pero puedes agregar eso si quisieras. Y luego sólo un ladrillo aquí abajo para que juguemos también. lo que así el resultado final, se puede conseguir algo muy, muy similar a eso si se quiere. Lo principal como he dicho es que cuando arrastramos esto al mundo, esto va a dar cuenta de la, lo que la cámara podemos ver en cualquier punto y cuando no sería capaz de llegar más alto o más bajo en la cámara tipo de punto de vista o campo de visión para el lado vertical no es tan alto como el plano horizontal. Entonces si volvemos al mapa ahora, podemos empezar a ver alto, esto va a funcionar. Entonces vamos a arrastrar esto al mundo. Podemos ver que es mucho más grande. Voy a 0 este sitio podemos ir 000. Y debido a que el punto de pivote es de arriba a la izquierda, sólo querría arrastrar esto. Y realmente queremos que esto se alinee con los puntos de plástico. Yo sólo voy a arrastrar esto por debajo del punto de los planetas y podemos empezar a deshacernos de cosas como que ya no queríamos necesitar este piso. También fuimos necesitamos la esfera de reflexión o la gente, para que podamos deshacernos de algunas de las cosas del mundo esbozan por aquí. Ahora si presionamos Play, siempre y cuando eso esté en línea con el plástico al jugador debería caer sobre esas rejillas y colisionar. Entonces tenemos algo que podemos lucir al azar. Podemos ver que el plasma es una especie de flotando, razón por la que queríamos conseguir esto en agradable y temprano. Podemos volver al plan rápidamente, subir un poco más ese componente de captura. Y como dije, podemos hacer ese tipo de falso en tamaño y tipo de tener ese lado del pie un poco ahí para que cuando estamos descansando, parezca que estamos descansando en el piso. Y no soy un gran fan de esos clientes realistas en un juego de pixel art. Entonces lo que voy a hacer es por la esfera del cielo, punta pequeña aquí, voy a hacer los colores determinados por el sol, no basados en el tragaluz que tenemos. Entonces tenemos nuestra fuente de luz. También fuimos necesitamos el recast suficiente malla. Volver al rascacielos. Voy a bajar el brillo Lightspeed y la opacidad de Clyde a 0 y el brillo de la estrella. Lo que todos esos no va a ser relevante, lo que ahora nos da un tipo de clase. Creo que eso no es un poco cegador y un poco brillante. Entonces parece como me fui realmente al cielo o algo así. Entonces lo que queremos hacer es cambiar el color cenit a uno más oscuro, tal vez un gris azulado más oscuro. Voy a copiar eso porque vamos a reutilizar este valor hexadecimal en un momento. Voy a cambiar el color del horizonte por el mismo color. Y esto sólo nos da un buen tipo de rascacielos planos. Si alguna vez has querido los cielos veggies solo ser una especie de color plano mínimo. Creo que eso funciona un poco mejor. No entra en conflicto con los contornos. Por lo que todavía podemos ver claramente los contornos que se han sumado a todos los activos, pero tampoco es demasiado brillante. No tiene el Clyde. Se ve un poco más ajustada con el estilo. Y sólo una prueba podemos ver la cámara, no podemos ver más fondo por aquí. No voy a ver nada por encima de nosotros. Y no vamos a ver nada al lado derecho esperemos. Entonces eso se ve bastante bien. Soy una colisión con todo lo que esperaríamos que colisionáramos. 8. 08: configuración de animación de jugadores: Con nuestros conjuntos de mapas de azulejos y listos para ir. Ahora tenemos algo lleno en el jugador para correr. Entonces tenemos nuestro lugar basado, esencialmente, lo que queremos hacer ahora se vuelve a la clase de jugadores y vamos a pasar por el movimiento y la configuración de animación. Entonces vamos a encarnar ese sistema podría ser un poco más. Por lo que de vuelta dentro de la base de jugadores no revelada de BP, queremos volver a marcar el evento. Entonces una posible, obviamente queremos tratar de evitar el tick evento enfría muchas funciones constantemente, algunas cosas como la animación y chequeando ciertos estados, vamos a querer estar prácticamente actualizados constantemente por lo que obtenemos eso inmediato retroalimentación. Por lo que vamos a estar sacando esto del tick del evento. Este es el tipo de cosas que va a ser sutil, ligero a este Rooney no va a agregar ningún tipo de rodamiento de rendimiento aquí. Ahora realmente lo que queremos hacer, va a haber dos cosas diferentes que queremos estar constantemente revisando y actualizando en el tick del evento. Vamos a querer controlar la animación en base al estado actual del movimiento en si están en el aire, en el suelo, inactivo, movimiento y así sucesivamente. También vamos a querer actualizar la animación de los jugadores en función de la dirección, el movimiento o la entrada que está presionando el planeta. Entonces para hacer esto, porque sabemos que tenemos esas dos cosas principales que queríamos comprobar. Corro este festival fuera de una secuencia. Entonces básicamente vamos a tener nuestra secuencia de movimiento y nuestra secuencia de rotación. Podemos tener una noche de redireccionamiento medio que queríamos. A veces es agradable como autodocumentarse a medida que avanzas. Entonces sabemos que cuando regresemos, dejaremos un comentario y diremos que esta será nuestra rotación. Entonces mi simple comentario solo para recordarnos lo que estamos haciendo es pasar por la mentira del movimiento, esta va a ser la animación basada en el movimiento. Esta será la cosa un poco más compleja que voy a correr por esto en dos etapas, se estará dando en esta etapa, la muy básica implementación rudimentaria que podemos meternos en las garrapatas del evento para que podamos muy rápidamente visualizar lo que está pasando. Voy a volver un poco más tarde y vamos a afinar esto con un enfoque ligeramente mejor. Pero quería mostrar ambos enfoques para que podamos ver que Y1 va a automatizar un poco el grupo de tareas. Eso es una. Así que para empezar, lo que queríamos hacer es empezar a revisar todos los estados posibles en los que podemos estar, en cuanto a contratar la playa se está moviendo erecto tan rápido que podemos correr esto de una rama inicial. Y esto será comprobando si estamos o no castigados. Por lo que el Componente de Movimiento de Carácter tiene, de nuevo, todo este tipo de flora del tracto. Y en lugar de, que muele bien, vas a comprobar si estamos engañando, mismo tipo de cosas, pero tipo de lógica inversa. Por lo que tiene una variable siendo rastreada, si el personaje se encuentra actualmente en estado de caída. Entonces si estamos en el aire en un momento dado, si lo estamos, lo que queríamos hacer es agarrar a nuestro sprite para así nuestra animación que tenemos yendo y vamos a configurar el libro de volteo. Pero queremos poner el libro de volteo a ciertos estados, por supuesto, cuando estamos engañando. Entonces moviéndonos al final de todos modos, empezaremos asumiendo que estamos saltando. Entonces cambiamos esto a FB subrayado salto, y vamos a enchufar eso aquí. Ahora esto realmente va a causar un pequeño problema porque esencialmente tenemos dos estados que queremos dar cuenta. Ya sea que nos movamos en un valor de vesícula positivo o en negativo. Entonces si estamos en especie de llegar al ápice del salto o retrocediendo de él. Básicamente cualquier cosa cuando no estás en el suelo se clasifica como engaño. Entonces esto no es del todo lo que necesitamos momento, pero este es un buen comienzo. Ahora, porque vamos a estar reutilizando bastante esto, lo voy a agarrar del flip book y promocionar esto a una variable. Voy a nombrar a este salto FB no revelado. Y necesitaremos todas estas como variables a medida que pasemos por esto como una manera agradable, fácil de configurar esto. Porque ahora que tenemos ese set en nuestra ranura, verás que asigna automáticamente el valor de salto no revelado FB a la animación de salto. Entonces vamos a pasar por este paso a paso y esto tipo de carne fuera algunas de las variables que necesitamos también. O cuando regresemos en orden esta lógica, voy a hacer otra comprobación de sucursal aquí. Y queremos saber si estamos en el suelo. Entonces ahora asumiendo que no estamos cayendo ni subiendo, y de nuevo, volveremos a eso un poco más tarde en carne, el sitio hará las cosas de tierra. En primer lugar sin embargo, no quisiéramos saber si estamos en el suelo y nos estamos moviendo de lado a lado o si estamos completamente estacionarios. Por lo que sencillamente, podemos usar el get velocity cool aquí. Para que podamos encontrar la velocidad que se mueve el personaje. Y queríamos comprobar si esto no es igual o no. Por lo que conseguimos esto como longitud para asegurarnos de que contabilizamos alguna de las direcciones. Por lo que esto devolverá el vector esencialmente como un flotador. Yo soy básicamente esto sabrá que si nos estamos moviendo a la izquierda, a la derecha hacia adelante , una copia de seguridad, si hay retornos 0, entonces sabremos que no nos estamos moviendo en ninguna dirección. Entonces podemos decir que no es igual a. Entonces si esto no es igual a 0, entonces sabemos que nos estamos moviendo, así que esto se moverá o no se moverá. Entonces otra vez, lo que queremos hacer desde aquí, vamos a tener que agarrar a nuestros sprites y flip book. Por lo que voy a Controlar W para copiar esta línea aquí. Y volveré a hacer esto. Por lo que Control W ya que necesitamos hacer esto la tercera vez. Y ojalá puedas empezar a ver por qué esta no va a ser la configuración más ideal que necesitamos para seguir enfriando esta función una y otra vez. Es una especie de lógica replicante. Y de nuevo, verás cómo podemos arreglarlo con bastante facilidad en tan solo un momento. Pero antes que nada, vamos a hacer que las cosas funcionen visualmente. En realidad podemos empezar a probar esto a medida que avanzamos. Entonces por el momento, porque tenemos este set a nada, necesitamos hacer unos pasos más antes de poder probar. Pero si fuéramos a saltar, podemos ver que obtenemos la animación de salto. Cualquier otra cosa va a poner esto para que sea invisible. Entonces lo que estamos diciendo es que si la velocidad no es igual a 0, entonces si nos estamos moviendo, entonces vamos a querer poner aquí nuestro libro de volteo para que se ejecute. Por lo que estableceremos este para que sea el flip book en ejecución o promoveremos esto a una variable nuevamente llamada ésta FB y la carrera escolar. Y vamos a hacer algo muy parecido aquí abajo. Entonces este es por supuesto si no nos estamos moviendo, así que vamos a poner esto en FB subrayado inactivo, o eso es un jugador inactivo solo por la noche un poco al nombrar tema no tener eso. Para que pueda volver atrás y arreglarlo un poco más ligero. Voy a promocionar esto de nuevo a una variable y esa será FB subrayado inactivo. Entonces ahora tenemos algo que está llenando esas ranuras por lo que ahora podemos probar esto. Entonces tenemos nuestra animación inactiva, it, no estamos haciendo nada de animación saltando si estamos en el aire y corriendo animación cuando no estamos estacionarios. Entonces por supuesto que tenemos un poco de rotación de la verdad. No hemos contabilizado los saltos y caídas, pero van a estar subiendo muy pronto. Pendiente para el salto y caída. Ahora les voy a presentar la nota selecta si no lo han visto antes. Básicamente lo que queremos hacer, si sabemos que estamos en alguna forma de estar en el, no sabemos si esa es una velocidad positiva o negativa que nos estamos moviendo aún en el eje z, lo que vamos a hacer es va a desenganchar nuestro salto de subrayado FB, y seleccionaremos un flip book dependiendo de un determinado resultado. Por lo que vamos a conseguir que nuestras utilidades sean selectas. Tomando un comodín, podemos cambiar esto por algunas variables diferentes por defecto. Y queremos que este sea de nuevo el regreso de un booleano. Entonces vamos a hacer un cheque booleano rápido. Podemos copiar, voy a conseguir velocidad aquí abajo. Vamos a comprobar esto en un momento. Podemos dividir esto, no nos interesaron esta vez en uno de los ejes, esa velocidad. Entonces dividiremos el pasador de la estructura. Queremos saber si nos estamos moviendo en un valor positivo o negativo en el eje z. Entonces arriba y abajo básicamente, y lo que haremos es decir que si esto es menor o igual a ciertos vuelos. Entonces vamos a dar cuenta del punto exacto de datos que golpeamos el ápice, luego lo pasaremos a nuestro comodín. Voy a cambiar eso a un booleano y ahora tenemos un cheque para averiguar si nos estamos moviendo verticalmente en un valor positivo o negativo. Bien, porque sabemos que esto es un booleano, conseguimos que esto cambie a verdadero o falso. Entonces si esto es cierto, entonces si somos menos que iguales a 0, eso es cierto. Entonces sabemos que esta va a ser nuestra animación caída. Y a esa se le llama terriblemente. Voy a volver atrás y arreglar estos nueve porque eso es peor de lo que esperaba. Por lo que FB subrayado tonto debe ser juguetón y FB salto a cuadros. De acuerdo, Entonces eso va a hacer mucho más fácil no encontrar en un buen orden adelante. Tan bueno, yo estaba diciendo es que si esto es menor o igual a 0, si eso es correcto, entonces sabemos que estamos engañando. Si es falso, entonces sabemos que tenemos un valor positivo y seguimos saltando, pero aún no hemos llegado a un ápice plano. Para que podamos presionar Play. Volveremos a comprobar que esto funcione. Entonces tenemos saltando y cayendo. Y eso parece bastante perfecto. Por lo que sólo nos da ese tipo de ideal de qué manera se mueven los jugadores. Nos da un poco más de esa retroalimentación visual y se llena un poco más pulida de inmediato que sabemos en qué dirección nos movemos verticalmente. Entonces solo voy a volver a enchufar esto a Jump, promocionar éste a una nueva variable. Y estoy feliz corto entregando estos nombres porque estamos en la clase. Esto es algo obvio lo que va a ser esto. La convención de nomenclatura aquí es más para que se alinee de una manera agradable, precisa en el Navegador de contenido y es fácil de encontrar como viste las opciones de lista entonces ese es el movimiento configura. Este es el enfoque rápido, tipo de sucio para poner en marcha el movimiento. Ahora tenemos un poco de sólo por casi todo lo que no tenemos flujo de animación. Entonces saltando, bolos, mudarse. Y yo hago eso. Entonces tendré listo para irme. Para terminar esto. Queremos abordar este comentario de rotación aquí abajo. Entonces voy a subir estos sólo un poquito, sólo para darnos un poco de espacio y mover esto un poco más hacia abajo. Para la rotación, lo que queremos es que nuestro sprite básicamente hace algunas maneras diferentes en las que podemos hacer eso. Podemos introducir el tamaño de nuestros sprites. Por lo que enfrentar derechos sería positivo en la escala x aquí y menos uno esencialmente nos haría voltear. Ahora si tenemos algo que está apegado a nuestro personaje, si algo tiene como un punto de proyectil o un PowerApp que queríamos lanzar, esto puede ponerse confuso porque los power-ups todavía van a estar aquí. Yo también tendría que dar cuenta de eso. Y también podría cambiar la escala de las cosas que se están dividiendo. Y así en general, voy a evitar hacer este tipo de enfoque más sencillo supongo que en cambio que queríamos hacer es en realidad sólo vamos a rotarlos por completo. Y podemos ver con esto que queremos hacer eso en el eje z, estamos afectando la vista de nuestra rotación de personajes. Entonces volveré a ajustar esto a 0 por defecto solo para que tengamos como una idea ahora de lo que estamos apuntando y lo que podemos hacer. Podemos hacer esto impulsado ya sea por nuestro insumo. Por lo que ya sabemos que tenemos. Mover eje de derechos. Y podemos comprobar si esto es más o menos de 0. Si es más de 0, presionando a la derecha, porque menos que con presionar la izquierda. El tema de eso es que si cambiamos esto cada vez que el jugador presiona un botón, podría ponerse un poco agitada si la planta está presionando constantemente. Entonces en cambio voy a sacar esto de la velocidad otra vez. Entonces vamos a cambiar esto de buena gana para que coincida con donde se mueve el personaje en el mundo. Algo así como ¿cuál es la velocidad vertical? Podemos dividir esto ya que sólo nos interesa la velocidad de movimiento que tenemos aquí. Voy a sacar de esto y usaremos un comparador. Por lo que podemos conseguir que los flotadores de comparación operen y esto se ejecutará. Podemos ejecutar este movida nodo reescrito para mantener este ordenado de todos modos, así que conseguimos una linda línea tenia, de hecho, haré lo mismo aquí arriba. Hola, estoy ocupando un poco de espacio. Entonces solo estoy haciendo doble clic que si no estás familiarizado con ese doble clic en un cable te dará una noche de redireccionamiento. Y lo que queremos hacer es básicamente que podemos comprobar si esto es más que un cierto valor. Entonces si es un valor positivo, nos estamos moviendo, ¿verdad? Entonces queremos que esto enfrente la comida. Si es un valor negativo, entonces cuando se mueve a la izquierda. Entonces si es más de 0 o menos de 0, que es nuestro compuesto con valor aquí, entonces o nos estamos moviendo en una dirección derecha positiva o negativa izquierda. Por lo que podemos establecer la rotación del personaje ni la forma más segura de hacerlo porque el controlador de planta está rastreando muchas de nuestras actualizaciones de rotación. Nosotros queremos conseguir, voy a jugar un mando. Y queremos establecer la rotación de control de esto. Entonces esto significa que nosotros, porque ya tenemos una clase que es una especie de visión general y viendo la configuración de rotación de la clase, en lugar de tener cualquier tipo de lógica afligente contra eso, sólo podemos usar la información que es ya siendo rastreado en nuestro controlador de jugador y actualizar eso. Van a dividir eso y enchufar esto aquí. Ahora, recuerden que queríamos afectar a la UE, la rotación zed, los valores por defecto se están moviendo a la derecha es correcta como es. Entonces voy a dejar eso a las 0. Podemos copiar esto aquí abajo, y podemos ajustar esto a 180 si el personaje se mueve en dirección izquierda. Por lo que podemos volver a probar esto. Entonces déjame escribir eso está sucediendo como esperábamos. Y a la izquierda. Eso es voltear absolutamente todo. Y eso es un problema con la cámara, pero eso no significa que nuestra lógica esté funcionando. Entonces voy a volver a la primavera en adelante. Básicamente esto está sucediendo porque como acabo de mencionar todo esto como ser cheques y actualizados en el controlador. No voy a incluir también alguna de la cámara y primavera, um, configuración. Entonces básicamente lo que está pasando si no estás seguro de cuál es el momento mientras presionamos Izquierda, todo el actor está siendo dado la vuelta. Las cámaras siguen mirando en la misma dirección. Pero cuando estoy mirando esto desde detrás del mapa de azulejo en lugar de al frente. Entonces para evitar que esto suceda, vamos a agarrar nuestra primavera. Cambiaríamos esto para usar la rotación de control. Entonces de nuevo, este es otro beneficio de usar esta rotación de playa y fro porque algunas cosas dentro de nuestra propia clase podrán hacer referencia a esto. Entonces ahora queremos que yo estaba primaveral para heredar la misma rotación es que el controlador está rastreando. Y eso significa que no tenemos que preocuparnos por heredar nada del terreno de juego. Terminarás fila. Entonces básicamente lo que esto significaba es si tenemos estos tip cada vez el componente en el que se coloca se está moviendo alrededor, gíralo o cualquier cosa. Entonces como ejemplo rápido, si traemos esto al mundo y presionaré la cabeza F8. Por lo que usando Backpack to the, podemos ver cómo la cámara está heredando la rotación si movemos esto alrededor. Entonces no necesariamente lo hacemos. Y esto también sería si estuvieras rodando un personaje. Si tocas una animación en algún momento, por supuesto que no quieres ese resorte encendido. Seguir la misma rotación que el personaje está tomando en todas estas posibles direcciones diferentes. Siempre queremos que esto esté frente directamente. Entonces lo que vamos a hacer es emprender todos estos y asegurarnos de que se siga que la Puna controle la irritación. Entonces eso significa que si presionamos Play, se puede ver que podemos girar y mover a izquierda y derecha. Y la cámara sigue mirando hacia adelante porque se está actualizando correctamente a través del controlador del jugador. Tenemos toda nuestra animación va. Nosotros desearíamos. Entonces la fuente de la cosa sólo para ordenar el código, es que voy a entrar, deshacerme de ese comentario. Y lo que creo que podemos hacer es que podríamos hacer con poner estas nueve funciones. Por lo que esto está ocupando un poco de espacio y potencialmente podemos ahorrar un poco de rendimiento al dejarlos caer estos en funciones también. Entonces vamos a hacer uso de eso. Lo que haría es agarrar todas estas notas. Por lo que respecto al movimiento y la animación hará clic con el botón derecho en uno de estos nodos, colapsará esto a una función. Y vamos a llamar a este libro de actualización ya que eso es realmente de lo que esto es responsable. De acuerdo, Entonces esto es lo que va a permitir que un flip book lógicas ir y podemos decir que no nos ha ahorrado mucho espacio y el gráfico de eventos. De igual manera, podemos hacer lo mismo y cambiamos esto para actualizar la irritación del juego colapsando eso en una función y nombrando esa actualización cavitación. Y de nuevo, sólo un poco de orden para que esto sea agradable y fácil de leer. Probablemente no necesitemos redirigir notas, así que me desharé de esas. Y con eso hecho, podemos ver que hemos ahorrado una justa cantidad de espacio aquí. Y iba a ser muy fácil saltar de nuevo a través nuestro código si queremos actualizar la animación es lo que vamos a hacer en un momento, sabemos que necesitamos buscar en la función flip book. Y si alguna vez queremos cambiar la forma en que funciona la rotación, podemos saltar directamente a nuestra sección de rotación. 9. 09: mejoras de animación de animación: Como mencioné, las actualizaciones de animación de flip book no se han hecho de la manera más ideal. Esto es muy tipo de manual sobre una situación por acción. Tenemos que seguir enfriando esta misma función. Y de nuevo, eso tampoco es realmente ideal. Entonces lo que vamos a hacer es intentar automatizar parte de este proceso con algo llamado enumeración o numerador. Si no has escuchado ese término antes, básicamente significa que podemos crear un valor diferente cual se puede rastrear representado por valores enteros. Es muy fácil iterar y tendremos un estado de enumeración para cada uno de los diferentes estados en los que puede estar el jugador. Esto significa que podemos almacenar un estado para el jugador basado en lo que está sucediendo y establecer la animación de flip book una sola vez, basado en el estado en el que nos encontramos actualmente. Nuevamente, como con cualquier cosa, si no lo has visto antes, tendrá mucho más sentido a medida que vayamos y creamos este bonito. Entonces volvamos a nuestra foto de planos. Esto es esencialmente un tipo de plano. Nos encontramos con esto haciendo click derecho, yendo a planos y enumeración. Voy a llamar a este e, aplicar un movimiento. Observe aquí que no hay guión bajo. El convenio de nomenclatura para enums es E sin subrayado aquí. Y luego el nombre de lo que están representando, podrías llamarlo algo así como estados del movimiento E, estados , lo que quisieras. Creo que este tipo de traspasa la idea. Y como dije, básicamente queríamos entrar aquí y vamos a crear un nuevo estado de enumeración. Por lo que se puede ver que está bastante vacío Berlín. Por último, tenemos que, podemos presionar el botón Nuevo algunas veces y conseguir algunos enumeradores diferentes. Entonces eso sólo va a nombrarse automáticamente. Estas son sólo una especie de representación con nombre y simplemente vamos a crear una para cada uno de los diferentes estados. Entonces voy a renombrar, necesita para Idle, correr, saltar al máximo. ¿ De acuerdo? Por lo que notarás que estos no están asociados a nada. No están proporcionando cierto libro de tirantes. No estamos asignando nada a estos. Estos son puramente una representación para permitirnos actualizar fácilmente el estado actual y seguirlos convenientemente a medida que pasamos por nuestra lógica. Como que les damos descripciones si quisiéramos, pero eso no es necesario. Y algo que suele ser una buena práctica de hacer también es proporcionar una especie de estado nulo o por defecto. Entonces voy a añadir un estado más y nombrar a éste que por defecto. Generalmente si tenemos un hit el estado, por lo que eso significa que algo salió mal. Por lo que esto puede ser como un cheque de que algo no se ha actualizado correctamente. Por alguna razón esto sería un, por ejemplo, todos nuestros controles de movimiento de fieltro y no hemos regresado que estaban en ningún estado en absoluto. Entonces eso significaría que estamos como en algún lugar entre Idle run, jump y full, que es algo que no hemos contabilizado. Entonces vamos a establecer esto por defecto, y sólo voy a dar clic a esta flecha para subir esto, porque generalmente este será el primer, um, estado que proporcionamos. Entonces si eso se hace, podemos cerrar esto. Ahora tenemos nuestra nueva variable, y eso es lo que vamos a usar esto como un tipo variable en nuestra clase de jugador. Entonces si bajamos a la opción de variables, haremos clic en este nombre, este estado de movimiento. Y para el tipo variable, queremos utilizar el desplegable, encontrar nuestros movimientos E o movimiento de plan E. Entonces la cosa que acabamos de crear un llamado nosotros mismos, y podemos ver ahora, si arrastramos esto, obtenemos nuestro pin variable. Y si hacemos algo como usar nuestra nota selecta que hemos visto un par de veces 9, podemos ver que podemos seleccionar cosas entre default, Idle, run, jump, y full. También podríamos establecer esto como una variable. Entonces otra vez, idealmente lo que quieres hacer. Vamos a entrar. He bebido esto al lado del evento. Empieza a jugar, mueve esto un poco, y solo vamos a asegurarnos de que cuando empiece el juego, vamos a establecer esto en el estado predeterminado es un poco establece valores predeterminados de todos modos. Pero de nuevo, si tenemos algo de prueba, digamos que queríamos simplemente probar el salto, entonces podríamos olvidar reiniciar esto en algún momento. Por lo que es bueno establecer esto a un valor predeterminado para empezar. Entonces cuando estemos actualizando nuestro flip book, haremos un seguimiento de esto y estaremos actualizando esto en base a lo que esté haciendo el jugador. Entonces de vuelta dentro de las actualizaciones de flip book, voy a deshacerme de este finito, podemos dejar esto a un lado. Vamos a reutilizar algo de esto a medida que pasemos. Pero ratones a muertes serán destripados y retirados en tan solo un momento desde el libro de actualización, podemos volver a configurar el estado del movimiento. Nuevamente, si no estás familiarizado con esto, si solo establecemos una variable aquí, se van a crear las plumas de ejecución entre las picaduras de éstas. Y básicamente queremos que este sea el regreso de un conjunto de cheques. Por lo que vamos a estar muy familiarizados al final de esto con nuestra nota selecta ya que esto puede proporcionar algún código automatizado realmente útil, fácil de leer de diferentes maneras. Entonces lo que queremos hacer es que vamos a establecer esto para que sea el retorno de un conjunto de lógica utilizando nuestro nodo selecto. Ahora lo primero que podemos comprobar, de nuevo, tenemos mucho de esto listo para salir. Podemos empezar comprobando si la plaza en el suelo. Entonces así es como una lógica molida. Entonces sólo voy a Control X y Control V. Así que fuimos necesitamos esto otra vez, para que podamos simplemente reutilizarlo. Entonces esto es lindo es que si estamos en el suelo, esto es falso, claro que eso significa que estamos ociosos. Entonces vamos a poner esto en falso. Entonces vamos a asumir que no nos estamos moviendo. Eso sí nos deja con algo más de lógica que necesitamos aquí. Entonces esto va a ser, esta verdadera variable se basará en el retorno de la siguiente nota selecta que utilizamos. Por lo que utilizamos otra nota selecta aquí. Podemos ver que está pasando por los estados del movimiento a todos estos. Por lo que estos pasadores están todos esperando los estados del movimiento. Y lo que queremos hacer ahora es comprobar si nos estamos cayendo o no. Entonces si este no ha sido el caso, lo que significa que vamos a sacar adelante y comprobar la siguiente nota de selección. Ahora queremos saber si estamos engañando o no. Entonces de nuevo, podemos controlar X y Control V para que sepamos qué estamos reutilizando y contabilizando todos los movimientos Estados que ya hemos investigado sobre gastos generales. Nuevamente, si esto es cierto, estamos engañando. Estamos listos, sepan que queremos saber en qué dirección estamos plegando. Por lo que no podemos poner esto para saltar o lleno porque esto podría ser dos opciones. Entonces eso nos deja saber esta es otra opción selecta aquí u otro escenario donde el selecto y yo solo voy a trabajar y ese va a ser el regreso de este imbécil. Recuerda que fue nuestro cheque positivo o negativo permite el movimiento vertical. Entonces otra vez, Control X, Control V. Así que ahora tenemos todos nuestros cheques. Entonces sabemos que si esto regresa, no necesitaremos ninguna mitad selecta. Esto significa que si esto devuelve cierto, entonces estamos engañando porque estamos obteniendo un, un valor negativo justo aquí. Entonces diremos lleno por verdadero y saltaremos por falso. Entonces eso da cuenta de nuestro movimiento de salto. Las diferentes opciones que pueden venir de eso, eso nos deja solo una opción aquí. Entonces para este selecto, sabemos que esto no se mueve. Entonces tenemos ídolo, eso significa que esto se estaría moviendo pero en el suelo, lo que significa que esta va a ser nuestra lógica de correr. Entonces vamos a entrar en el estado de movimiento de R1. Y entonces esto es que yo estaba cayendo lógica. Entonces vamos a estar en el estado de movimiento ya sea de salto o de lleno. Por lo que podemos dejar algunos comentarios sólo para que podamos volver fácilmente a esto un poco más tarde. Entonces voy a decir que éste está revisando específicamente el movimiento. Supongo que esa sería la velocidad en la que nos estamos moviendo fallando que sepamos que no estamos en el aire, así que vamos a comprobar el movimiento terrestre. Entonces deja una mitad común de eso. Y éste, si no nos estamos moviendo en el aire o en la tierra y entonces vamos a volver ociosos. Por lo que vuelven algunos buenos comentarios. Entonces solo como que nos recuerdas qué están haciendo estos y la mejor manera de pensar en estos, si esto vuelve a ser completamente nuevo para ti, es que estos son un poco engañando. Entonces a medida que esto se está actualizando, el primero y esto se va a hacer, se va a seleccionar a qué movimientos les gusta establecer esto. Entonces si la velocidad no es igual a 0, entonces no sólo vamos a devolver cabeza falsa, vamos a ir a revisar la siguiente nota de selección porque eso significaría que es verdad. Entonces vamos a revisar esta lógica. Otra vez. Si ese no es el caso, que si eso es cierto, entonces vamos a volver atrás y ver cuáles podrían ser nuestros cheques finales y aria. Y eso nos va a dar algún tipo de movimiento. Entonces esto en realidad ya está funcionando si tuviéramos la etapa final, que va a estar evaluando nuestro libro de volteo, y ojalá este sea el bit que tipo de solidifica por qué esto puede ser tan útil. Por lo que podemos desenganchar todo esto seleccionado, solo uno de estos set para voltear notas de libro aquí. Por lo que Control X, Control V, idealmente capaz de hacer crecer el sprite con eso también. Entonces engancharemos a este sprite en esto. Enchuparemos esto aquí y vamos a utilizar ese útil nodo selecto una vez más. Entonces lo que vamos a hacer es seleccionar el flip book que queremos mostrar en base a nuestra enumeración de que tenemos tracto. Por lo que va a tirar de aquí otra vez y seleccionar. Bastante sencillamente. Esto va a ser realmente, de nuevo, bastante interesante, creo para aquellos de ustedes que quizás no lo hubieran visto antes, pero podemos controlar el arrastre en los estados de movimiento hacia el índice. Entonces vamos a conseguir el estado, y veremos que eso leerá automáticamente cuántos estados diferentes tiene éste y para proporcionar un nodo selecto para cada uno de esos estados. Entonces eso significa que podemos vivir set este flip book solo una vez basado en lo que se está devolviendo aquí. Esta va a ser una buena señal de cuenta otra vez, así que vamos a dejar el defecto vacío, deliberadamente dejando esto vacío. Entonces de nuevo, si alguna vez vemos que nuestro sprite no está tocando nada que sabemos que algo salió mal y no hemos actualizado el estado. De lo contrario, podemos tomar todos estos valores que empezamos de nuevo aquí. Vamos a enchufar el inactivo en inactivo, el salto en Jump, correr en r1 e intervalo completo casi como cabría esperar. Y entonces sólo asegúrate de que podamos verlos. Y esa es realmente nuestra máquina estatal tipo de configuración y lista para ir. Tenías que comprobar qué hacer con la Animación del Jugador. Significa que no necesitamos toda esta lógica de ramificación. Podemos deshacernos de todas estas noches. Estaremos llamando a la función de flip book set una sola vez y pasando en el resultado de lo que pase con nuestro movimiento Estados y cómo se rastrea eso. Por lo que también podemos ver esto en un poco cómo voy a agregar una secuencia aquí abajo, y verás que esto se está actualizando constantemente para que podamos imprimir cadena, solo que podamos especie de visualizar también. Hola, Esto está operando. Podemos convertir el estado enum en una cuerda y esto hará, cuando toquemos esto, hacer un seguimiento de esto por nosotros. Entonces no estamos pasando nada, lo que significa que estamos en estado ocioso. Si salto, entonces estamos saltando y luego engañando, Saltando, doblando y corriendo. Por lo que todo esto se está rastreando en base exactamente a los movimientos de Highlight. Estado se está actualizando y en base a prácticamente los mismos cheques que teníamos anteriormente. Pero en lugar de tener cheques de ramificación yendo a todas partes, ahora acabamos de obtener este único tipo de flujo lógico de tres estados completos basado en lo que se está seleccionando y el cálculo siendo abstinente para seleccionar nodo. Entonces todo esto se ha ultimado configurando el libro giratorio basado en el estado actual del movimiento. Nuevamente, muy fácil de leer, muy fácil de manejar. Y esto también significa que si alguna vez quisiéramos agregar algo más, si agregamos cosas como un doble salto o un tobogán de lobo, todo lo que necesitamos hacer, no necesitamos agregar declaraciones extra de sucursal. Por lo general necesitarías interrumpir otro cheque en otro lugar. ¿ Listo? Rompe el tipo de flujo de la lógica que teníamos yendo por encima. Todo lo que necesitamos hacer es regresar a nuestros movimientos. Agregarían dos cosas nuevas. Yo diría whoo, slide y double jump. Eso agregaría de inmediato dos nuevos libros justo aquí. Y entonces sólo podemos sacar alguna otra lógica de aquí. Entonces otra vez, si estamos en el aire y también estamos va a deslizarse, entonces tendríamos otro selecto nodos comprobar por eso y volveríamos ya sea saltando lleno, casi como o si estamos saltando y es la segunda vez que lo hemos presionado con escrito otra ligera nota aquí que acabamos momentáneamente en doble salto, cambiar ese estado de movimiento. Y de nuevo, esto se actualizará bastante automáticamente para nosotros. Y no había un sistema real como automatizado para esto. Pero creo que esto es una especie de llegar a ese estado donde suena poco reutilizable y flexible ya que podemos hacerlo para este tipo de proyectos. Entonces justo antes de envolver esto, asegúrate de que volvamos. No queremos esprint constantemente. Si alguna vez tuviste otra secuencia, otra ejecución Ben de la secuencia, podemos hacer clic derecho en esto y quitar el pin de ejecución siete, solo hago el libro de volteo y la actualización de rotación. Y siempre hay asegurarnos de que compilamos y guardamos esto. Ya no necesitaremos que el movimiento del jugador esté abierto. Y creo que eso nos pone en un estado bastante bueno donde el jugador es más o menos linterna. Nosotros los tenemos haciendo todo lo que queremos de la manera más robusta que se me ocurra hacerlo por un pequeño proyecto como este. Creo que lo que podemos hacer ahora es pasar a la interacción con otras cosas para la casa, camionetas y cosas para tener algún uso o los enemigos para realmente proporcionarnos cualquier tipo de peligro o peligro para nosotros. Vamos a necesitar empezar a implementar una característica de salud. 10. 10 - salud de jugadores: Entonces con el movimiento más o menos plenamente implementado en el escenario, creo que es un buen momento para empezar a mirar cómo podemos interactuar con otras cosas en el juego que hemos planeado. Entonces los enemigos, las camionetas, nos van a especie de asear para tener este concepto de salud y daño. Para que podamos empezar agregando un sistema de salud a nuestro jugador, que es lo que estaremos haciendo ahora. Y luego veremos cómo podemos visualizar esto y conseguir que se actualice aquello en base a lo que se está interactuando en el mundo. Entonces comencemos con la salud es concepto muy sencillo. Vamos a rastrear esto en carrozas sólo porque sé que será más fácil para nosotros implementar eso con el sistema de widgets un poco más tarde, podríamos representar esto como un valor entero, sobre todo si has tenido un sistema de salud donde es al igual que corazones o algo así, estarías tomando una manera de un solo calor a la vez que sería perfecto como un int. Pero por ahora, voy a crear dos nuevas variables de tipo float, una llamada salud predeterminada, y otra llamada Salud. A continuación podemos compilar esto para que tengamos acceso a estas dos nuevas variables. Y lo que queremos hacer es que voy a establecer la salud por defecto a un buen valor redondo de 100. Por lo que empezaremos con un 100 de salud, y la salud misma dejará a 0 para empezar. Ahora en el guión de construcción, podrías hacer es en el evento comenzar a jugar también. Pero en general cosas como esta, a la gente le gusta poner en el guión de construcción para que sepamos incluso antes de empezar a jugar, vamos a restablecer nuestra salud actual a la máxima salud que podemos tener o la predeterminada salud. Por lo que vamos a obtener el valor predeterminado arrastrando el control y configurando la salud arrastrando y simplemente configuraremos Salud para que sea la salud predeterminada. Entonces ahora sabemos que de nuevo, podemos hacer algunas pruebas si queremos desenganchar esto. Pero en el juego principal, en el juego completo, si en cualquier lugar jugando con las cosas aquí y queríamos probar rápidamente algo entre los widgets y ponerlo a un valor diferente. Sabemos que cuando dejamos de jugar o cuando esto se actualice y el constructor que estaremos poniendo nuestro principal valor de salud de nuevo al máximo que queremos que tenga eso. Para demostrar esto de nuevo, si solo presionamos el Begin Play, empezaremos a depurar mucho, creo que con cadenas de impresión, solo para asegurarnos de que las cosas estén teniendo sentido a medida que avanzamos. Por lo que sólo podemos decir que nuestra salud se imprimirá en la pantalla y estamos empezando con los 100 de salud. Entonces ese es mi hijo sencillo, esa es nuestra actualización a tener salud. Ahora tenemos ese concepto. Por supuesto que a continuación queremos tener el concepto de daño. Por lo que el daño es muy sencillo, y de hecho, estaremos usando un evento que viene preconstruido con cualquier clase de actor en el juego. Y esa es una función llamada cualquier daño. Entonces tenemos el evento cualquier daño, podemos ver que el objetivo es un actor. Y lo bueno de esto es que podemos eludir un poco de casting y saber exactamente con qué nos estamos comunicando cuando se trata de sistemas de daño. En realidad podemos simplemente decir si algo tiene una función en él la cual está esperando tener daños manejados, cool La función cualquier daño, pasando algo de información, por lo general las cantidades de daño y dejar que esa clase de entrenamiento y un manejar, esa lógica que se supone que esté controlando. Es una muy especie de enfoque orientado a objetos a la programación. Desacopla muchas referencias, puede mantener sus proyectos en IDEO y más fácil de mantener y también ahorra, en algunos casos en el rendimiento también. Entonces lo que vamos a estar haciendo cada vez que se pase una cantidad de daño, vamos a poner la casa actual en un nuevo valor. Entonces vamos a estar evaluando esto y queremos que esta sea la salud actual. Entonces vamos a conseguir la salud actual menos un flotador, que será el daño que se está pasando. Entonces si tenemos un 100 salud 20 se pasa adentro. Vamos a pasar eso a nuestro valor de salud aquí, y tendríamos 80 de salud. Ahora, de nuevo, podemos hacer algo de depuración aquí. Siempre es agradable depurar las cosas a medida que pasamos. Entonces voy a crear un temporal y pone, generalmente no crearía y pone en el Gráfico de Eventos o incluso fuera de la configuración del proyecto. Pero debido a que esto va a ser temporal, sólo recordaré quitar esto más adelante. Y digamos que vamos a presionar H. Así que vamos a encontrar la encuadernación clave para h, H para outs. Y siempre que presionemos esto, vamos a llamar a la ply cualquier daño o aplicar daño. Y la razón por la que esto se llama cualquier daño si no te resulta familiar, es que sí tenemos diferentes tipos. Por lo que podríamos atar esto al daño de punto de evento, daño radial. Entonces si usamos algún daño, significa independientemente del tipo de daño que se nos pase, esto será despedido y le quitará la salud. Por lo que sólo vamos a llamar a la función default apply damage, el actor al que queremos dañar. Es un poco extraño, pero este va a ser nuestro yo. Entonces recuerden esto solo es una función de depuración aquí para que podamos revisar nuestro sistema de salud está funcionando y el daño que queremos pasar, digamos que 20 unidades de daño que mencioné hace un momento. Y si quisiéramos si quisiéramos revisar cosas diferentes como quién fue causado por o instigado por el daño también. Estas serían para cosas como si tuvieras diferentes compensaciones, cuatro tipos de daños. Por lo que el daño balístico versus daño explosivo y cosas por el estilo. Podrías averiguar cuál es el inicial. Entonces no fue si deberías aplicar la cantidad total de daños o como una versión modificada basada en eso. De nuevo, sólo vamos a estar yendo por un tipo de daño muy simple. Sí, Veinte unidades de vuelo de daños. Y lo que queremos hacer es siempre que esto se enfríe, voy a hacer otra cadena de impresión. Y vamos a imprimir el valor de nuestra salud actual. Y esto va a tener algunos problemas que voy a arreglar en un momento y ya verás cuáles son esos ya que estamos depurando. Por lo que comprimimos H y podemos ver que el daño se está enfriando a 0. Entonces el plan no debería estar muerto? Si presionamos de nuevo te odiamos unas cuantas veces más, vamos a entrar en valores menos. Entonces lo que queríamos hacer para detener cualquier rareza como esa que sucediera donde potencialmente podríamos matar al jugador después de que ya lo mataran, iban a agruparlo a cierto valor. Por lo que tiraremos de aquí, sujetaremos esto a un vuelo, aseguraremos de que el mínimo sea 0. Por lo que ahora nunca podemos pasar ese umbral 0. Y el máximo que voy a establecer para ser salud por defecto. Entonces si tenemos un usado esto de una manera donde nosotros, algo muy común que verás es que los sistemas de salud básicamente pueden estar pasando en daños negativos. Por lo que podrías pasar en menos 20 daños. Obviamente, un menos, menos y menos será un positivo, por lo que empiezas a agregar de esa manera salud a tu jugador. Probablemente no nos metamos en nada tan confuso en esta lista de reproducción. Simplemente vamos a añadir una función AddHealth muy sencilla. Hay temas que vienen con tratar de usar el sistema de daños como sistema de curación también. Algunas de las lógicas, sobre todo si comienzas a agregar modificadores e intentar cambiar las cosas como y llegar a ser un poco confusas. Pero para dar cuenta de eso, podríamos asegurarnos de que no permitimos que nada pase un valor a satis, esencialmente engañando, supongo que más allá de nuestro máximo en el valle de salud por defecto. Y el paso final que queremos sumar nuevamente en el concepto de morir realmente. Entonces cuando sí lleguemos a este valor de salud 0, vamos a revisar algunas cosas para si los jugadores murieron y crear una nueva función lista para eso. Entonces crearemos un nuevo valor booleano aquí, y llamaré a éste B está muerto. Por lo que puede ser útil rastrear los estados de los jugadores parece un poco obvio, pero queremos volver a evitar cosas como si se mata la planta y luego se levanta, ¿cómo permitimos que revivan? Y si es así, y el daño de nuevo, ¿pueden morir por segunda vez? Por lo que para evitar algo raro así, se asegurará de que esto por defecto sea obviamente falso. No queremos que comiencen a morir, pero después. Llegamos a cierto valor, entonces vamos a querer que esto sea cierto. Entonces lo que haremos es hacer un cheque de sucursal aquí. Y vamos a decir si la salud actual, en lugar de tirar de este pin, podrías, si quisieras. A mí me gusta bastante tener la variable extra, cómo podemos controlar arrastrar esto en mi más caro o nada, y entonces podemos hacer una comparación. Entonces si esto es menor o igual a, y de nuevo, algunas personas encontrarán este programa un poco extraño. Esto es lo que quieres, puedes decir menos que o igual a si quisieras, porque tenemos este valor de aglutinamiento tenemos nunca deberíamos ponernos por debajo de 0. Pero de nuevo, esto puede cambiar en cualquier momento y podría entrar otra programación, encontrar que no quieren que esto se agrupe. Pero por supuesto que todavía probablemente quieras que algo menos de 0 esté muerto. Entonces contabilizando cosas así, sólo voy a decir menos o igual a 0 la salud va a ser clasificada como muerta. Entonces eso no es un descuido de programación. Es sólo algo que me gusta hacer porque nunca sabe cómo va a ir el proyecto en el futuro. Como dije, podrías trabajar con alguien más. Podrían entrar y decidir que este agrupamiento es irrelevante, no útil, o quieren usar la pinza de una manera diferente, en cuyo caso podrías empezar a entrar en números negativos y aún así no tener tu trozo a cuadros. Entonces si eso es cierto, entonces vamos a decir que este es un jugador muerto. Y de nuevo, sólo por esta seguridad añadida, probablemente no algo que necesitemos en un proyecto tan sencillo, pero voy a decir que sólo podemos hacer esto si la salud es menor o igual a 0. Y con ella en un cheque Y booleano. Y no estamos ya muertos. Entonces podemos decir, es que no es igual a verdad. Y una manera fácil de decir eso, lo siento, es simplemente decir no es cierto, así que NO es booleano. Entonces si no estamos muertos ya y la salud es menor o igual a 0. Entonces, de nuevo, este es el tipo de cheques que quieres lanzar solo para asegurarte de que puedes tener cosas extrañas. Y lo he visto en algunos juegos donde no han hecho este tipo de cheques. De la forma en que estoy planeando hacer esto, creo que tendremos como una animación de muerte de Mario o sónica. Entonces cuando mueras, serás lanzado al aire. Tendrás la entrada eliminada del jugador. Y vas a animar la pantalla de lo que he visto en algunos juegos porque no han hecho un simple cheque como este, otro proyectil les golpeará. Adivino que tampoco hicieron desigual para chequear o aglutinar cheque. Y lo que pasa es que la automatización de la muerte sigue jugando y esencialmente siguen reingresando al bucle de la muerte hasta que dejen de ser golpeados por algo, pesar de que técnicamente ya murieron esa vez. Por lo que puede parecer un poco exagerado, pero estos son simplemente un poco bonitos, simples cheques en el anuncio que la seguridad. No van a tener un juego de aspecto bogey donde puedes morir varias veces en una sola vida y eso es lo peor también. Especialmente si tienes un juego basado en la vida, entonces eso podría empezar a quitarle vidas a la mayoría de las personas, pesar de que ni siquiera has respondido a esa etapa. Entonces si eso es falso, no necesitamos hacer nada una herramienta. Por supuesto, si eso es falso, sólo vamos a estar corriendo alrededor del nivel de hacerlo bien. Podrías, si quisieras, aquí podría ser donde, si eso es falso, has recibido algún daño. Es posible que desee reproducir un efecto de retroceso o una animación parpadeante. Entonces en algún tipo de tiempo de invencibilidad, ese tipo de cosas que se pueden hacer aquí. lo que sí queremos considerar, si eso es cierto, vamos a jugar una nueva función. Por lo que agregaremos una nueva función aquí y solo llamaremos a este jugador murió. Y ahora en el momento en que no tenemos nada que colocar realmente en el cabello, así que voy a añadir otra cadena de impresión. Esto será como soy tema un poco más tarde. Pero de nuevo, sólo para que podamos probar esto va a estar funcionando. Haremos la función de yoduro. Enfréntate de esto y solo tocaremos botones, imprime cuerda. Entonces entrando de nuevo, comprima h hasta que la salud haya bajado todo el camino y podamos ver que otro jugador ha muerto, y eso ha sido rastreado correctamente. Entonces sabemos que todo esto está funcionando como queríamos. Y lo importante otra vez, para asegurarnos de que las que he valido la pena, podemos seguir presionando H y no estamos recibiendo múltiples llamadas a función de yoduro. Por lo que sabemos que no es seguro con licencia. No somos capaces de seguir entrando en algún tipo de infinita muerte. Entonces eso es más o menos tan complejo como nuestro sistema de salud necesita ser. Podemos volver y hacer algunas mejoras más adelante. Creo que lo siguiente va a ser agregar algún tipo de visualización al sistema de salud a través del uso de widgets. Entonces esto es probablemente todo lo que necesitamos hacer a la mitad. Y ahora podemos cerrar la clase de jugadores. Yo de nuevo, asegúrate de compilar y guardar algún punto. Pareciera haber tenido un mapa de azulejo sobrante para la justicia. Yo sólo voy a borrar el viejo y asegurarme de que tenemos es el correcto aquí. Eso es perfecto. Y eso significa que cuando yo bueno para seguir adelante y crear nuestros widgets para la salud del jugador. 11. 11: Widget de salud de salud de jugador: Para empezar con este proceso, sólo vamos a crear una nueva carpeta, que voy a enfriar UI estará colocando esto en la base de carpeta Blueprints. Y luego dentro de aquí solo estaría creando una nueva clase de widget. Encuentra estos, vamos a hacer clic derecho. Iremos a las opciones de interfaz de usuario, así que no bajo Blueprints esta vez, voy a ir a la opción Widget Blueprint aquí, la convención de nomenclatura para estas clases será WPP underscore. Por lo que Widget Blueprint subrayan, y luego el nombre de la clase, solo voy a llamar a éste que salud del jugador. Dentro de la clase. Si no estás familiarizado, vamos a tomar una muy especie de breve resumen aquí. Pero lo que tenemos en medio aquí es un Lienzo. Entonces esto es algo así como el espacio de trabajo en el que podemos sumar nuestros diferentes elementos para conformar la interfaz. En este caso, eso sólo va a ser un bot de salud. Pero esto también podría maquillar cosas como menús. Podríamos agregar botones, texto, y muchas otras cosas. Entonces este lienzo aquí, y podemos ver que está representado al lado izquierdo. Tenemos nuestro lienzo. Y si fuéramos a arrastrar las cosas al lienzo, veremos que sí aparece dentro de este espacio de pantalla justo aquí. Dibujando la molestia de salud. Lo que vamos a necesitar es una barra de progreso. Por lo que esto está prácticamente configurado perfectamente. Tenemos control sobre llenar esto. Por lo que podemos llenar esto con un valor que en este caso va a representar nuestra salud. Yo sólo voy a arrastrar esto para que esto sea un poco más largo. Y creo que ese debería ser un tamaño bastante decente. Ahora la forma en que esto funciona es que tenemos a este valor porcentual justo IN aquí en el lado derecho cuando tenemos esto seleccionado. Y básicamente a medida que arrastramos esto hacia arriba y hacia abajo, tenemos control sobre lo lleno que está esto. Ahora podemos ver que se trata de un valor normalizado entre 01. Por lo que tendremos que hacer un cálculo rápido un poco más tarde para tener en cuenta nuestro valor de salud y conseguir que esto se muestre entre un valor de 01 basado en la cantidad de salud que le queda el jugador. Ahora otra cosa es que si has visto alguno de mis otros contenidos o tutoriales, puede que estés familiarizado con mi desdén hacia este voto gradiente tipo de textura paraguas aquí. Entonces lo más importante y lo primero que vamos a hacer es que vamos a bajar a los padres, iremos a la opción de estilo por aquí. Y queremos cambiar la imagen de fondo y la imagen federal. Entonces no conseguimos que esta cosa extraña del gradiente pasara en la parte superior de aquí, y también lo hará zoom. Esta es una buena manera de saltar pista y descubrir cómo actualizar y cambiar el estilo de tu barra de salud. Si tuvieras algo personalizado que querías traer al motor para usarla. Entonces no tengo nada hecho para éste. Generalmente estoy harto con estos solo para que se vean un poco más Modernos e ir por ese enfoque mínimo es que vamos a bajar el festival de fondo. Idealmente, tendríamos una textura que hemos traído, especialmente para algo como esto y yo un poco de textura de píxel, ¿sería bastante bueno ya que no tenemos eso? Y por supuesto, usar las imágenes que tenemos realmente no va a mojar gorra. Lo que voy a hacer en su lugar es ir a estas Opciones de Ver aquí abajo. Voy a cambiarlos para mostrar el contenido del motor. Yo sólo voy a buscar un cuadrado blanco. Y podemos ver aquí, tenemos la textura cuadrada blanca y eso va a estar perfectamente bien. Realmente no importa lo grande que sea porque eso está todo escalado en base a estas opciones justo aquí, las podemos ver. Acabo de obtener una textura blanca lisa en el fondo que todavía está deja esta cuña. Entonces una cosa de gradiente para el relleno. Entonces otra vez, al estilo, solo voy a copiar esto, podemos hacer clic derecho. Copia esto y luego pega esto en la imagen federal aquí. Y podemos ver que eso también está siendo reemplazado. Ahora en este caso, por cualquier razón que en realidad no haya funcionado correctamente. Entonces si eso sucede, entonces podemos simplemente seleccionar uno de los otros y tal vez volver a seleccionar solo para que estemos usando la misma textura en ambos. Por lo que tenemos que tirar menos del contenido del motor de esa manera. Entonces vamos a usar los mismos cuadrados blancos extra en ambas ranuras. Entonces podemos amablemente, eso sí luce inmediatamente mucho mejor de lo que lo hizo y aún funciona y exactamente de la misma manera porque ese escalado está sucediendo automatizado basado en las imágenes que se están pasando. Por lo que todavía obtenemos la opción completa de cambiar esta barra porcentual y que o bien fallará o agotará por completo nuestra salud por ahora una vez que hayas dado este paso, lo siguiente que queremos hacer es asegurarnos de que volvamos a bajar a la Vista Opciones y luego Mostrar contenido del motor. De lo contrario, vamos a obtener mucha más información en esta barra de búsqueda. Entonces queremos, generalmente, creo que cosas como la salud tienen un color bastante uniforme, que creo que la mayoría de la gente estaría de acuerdo tan verde como voy a cambiar esto de azul y cambiar esto a algún tipo de tinte verde a amarillo aquí. Y de nuevo, creo que eso va a ser bastante bueno para nuestro sistema de salud. Ahora otra cosa que puedes cambiar si nunca has usado la barra de progreso antes, también puedes cambiar. Esto va a actualizar el color de la salud a medida que cambiamos ese porcentaje más ligero. Si también quisieras cambiar el color de fondo, podemos darle a nuestro estilo el color también. Entonces vamos a cambiar el tinte del fondo y podemos hacer que este algo más oscuro o más claro o algo completamente diferente funcione dependiendo de cómo quisieras que se viera esto. Y sólo voy a ir por un bonito fondo gris sencillo. Desliza esto a un gris ligeramente más oscuro justo aquí. A lo mejor no negro completo, pero un gris oscuro con un bonito bot de salud verde brillante debería verse bastante bien. Entonces por el porcentaje podemos dejar eso porque estaremos haciendo todo esto en código. Pero esto nos da una buena manera de visualizar lo que está pasando antes de que pongamos en marcha el código. Ahora lo que yo quería hacer en este momento, claro, si sólo seguimos adelante con esto, no tenemos esto siendo enfriado. No vamos a estar viendo esto en juego. Entonces antes de añadir alguna lógica aquí, y volvamos a pasar a nuestra clase de jugadores. Y dentro de la clase de jugador, podemos empezar a crear nuestro presupuesto de salud y asegurarnos de que mostramos esto. Entonces es bastante sencillo. Si antes no has trabajado con widgets, lo que queremos hacer es en el Begin Play, queremos crear un widget. Por lo que sólo vamos a llamar a la función de crear widget. Y a partir de esto queremos pasar en el widget para crear, que va a ser nuestro WPP subrayan salud del jugador. Y mucha gente puede pensar que esto estaría funcionando ahora si presionas play solo para volver a comprobar que no lo es. Y esto es porque hemos creado el objeto, pero no hemos hecho nada con él. Entonces esto sí existe, pero simplemente no le hemos dicho que se muestre ni cómo comportarse. Entonces lo que queremos hacer es desde el valor de retorno ahora que tenemos eso, vamos a promocionar esto a un festival variable porque vamos a estar usando esto un poco más tarde. Vamos a querer enfriar varias funciones y actualizar valores en nuestro sistema presupuestario más adelante. Por lo que va a ser útil tener una referencia a esto. Entonces vamos a llamar a este uno widgets de salud, ref. Por lo que tenemos una referencia y I2, el presupuesto de salud Siempre que necesitamos hacer algo con esto otra vez. Y luego a partir de aquí, estaremos llamando a una función específica del widget, que es Agregar a Ventana. Entonces tenemos la opción de viewport y eso simplemente toma este objeto y le diremos al sistema que lo muestre en la pantalla actual del jugador. Entonces eso significa ahora por venir, podemos ver que tenemos nuestro widget. Por supuesto, algo acaba de pasar un poco extraño ahí. Pero podemos ver en la parte superior izquierda tenemos nuestra salud, que se está mostrando como se esperaba. Parece que en algún lugar a lo largo de la línea, la función de actualización libro de volteo se ha roto algo con la animación de salto. Entonces parece que simplemente no tengo nada lleno en el lote de saltos, si acaso tienes ese mismo tema. Mantendré esto en el video. Eso debió haber sido asignado. Ah, sí, creo que eso funcionaba anteriormente, pero eso solo duplicaría cheques. Ahora podemos saltar ante el andrógeno y todo eso está perfectamente bien por si acaso estás consiguiendo el mismo tema ahí. El principal fue el foco de la salud Bahasa, pero no tener la parte de salud exhibiendo. Por supuesto que podemos sufrir daños. Todavía tenemos nuestra función de enfriar nuestro daño, nuestro tipo de depuración. Entonces podemos ver que he presionado H varias veces que tenemos en depurar a que el jugador ha muerto. Pero claro que eso no se está hundiendo con nuestros widgets de salud. Ese va a ser el siguiente paso. Por lo que de vuelta en la clase de widget, solo necesitamos agregar alguna funcionalidad para registrarnos cuando se haya actualizado un valor de salud. Y quería mostrarles en primer lugar, la forma en que aún veo a mucha gente haciendo esto en este tipo de tutoriales online. Y es un hábito del que un poco quiero ayudar a la gente salir y es una especie de mala práctica. Y te mostraré por qué a medida que pasamos. Entonces lo vamos a hacer de la mala manera festival sólo para que, ya sabes, para evitar esto en los caminos que rodean esto, si lo dices en el futuro, y lo que podrías ver es que la gente bajará al valor porcentual aquí y tenemos un enlace y combinamos esto con una nueva función. Entonces si presionamos ese botón, esto solo nos está llevando del diseño unos cuantos aquí al gráfico si tú. Entonces el diseño de años donde agregamos toda nuestra visualización, todos nuestros elementos, y encarnamos ese widget. Y entonces la gráfica es algo así como nuestro gráfico de eventos esencialmente en cualquier otro plano. Entonces aquí es donde ponemos toda nuestra lógica y básicamente agregar que el enlace es solo crear automáticamente una función para enlazar el valor de retorno de esa función a nuestros elementos de widgets. Entonces en este caso es un valor, valor flotante porque esto se vincula al valor porcentual reprobado. Ahora la razón por la que esto es malo, lo que encontrarás que hace la gente es que van a conseguir el poema de jugador. Por lo que utilizamos la funcionalidad predeterminada. Y digamos que solo harán algo sencillo como casting para asegurarnos de que sea la base de jugadores. Sabemos que dentro de la base de jugadores tenemos nuestros valores de salud. Para que luego puedan llegar al valor Salud. Y luego van a enchufar eso, potencialmente enchufar esto. Ahora esto no va a funcionar porque ese cálculo que mencioné necesitamos, para normalizar este valor. Pero de nuevo, no vamos a quedarnos con esto. Esto es bastante malo. Esto es sólo una especie de ejemplo de cómo no hacerlo para que sepas qué evitar y luego veremos por qué. Entonces lo que esto está haciendo ahora estamos devanando esto a la clase negra con casting y luego comprobando cuál es el valor de salud actual. Entonces si presionamos Play, podemos ver que ahora se está actualizando. Y voy a necesitar presionar bastante esto y luego la Salud va a bajar a 0. Por lo que sabemos al menos tener la actualización. Pero veamos por qué esto no es tan buena idea. Entonces lo que realmente está sucediendo aquí es que esto está funcionando algo como un evento de tic. Entonces si tiramos cadena de impresión aquí, y solo vamos a imprimir elemento no coincide con lo que esto está diciendo. Y luego presiona play. Incluso cuando no se está actualizando la salud, incluso cuando simplemente estamos completamente ociosos y no hacer nada una herramienta. Tenemos nuestra funcionalidad encuadernada aquí, solo comprobando que se ejecuta constantemente. Y en este caso, no solo corriendo constantemente sino lanzando constantemente a otra clase, constantemente refrescando este tipo de ubicación de memoria y todas las variables que podrían estar dentro esta clase de ser pasadas a él desde sólo para volver a comprobar que el valor de la salud no ha cambiado. Entonces ese fue realmente el punto completo de esa tangente lateral aquí es cada vez que ves a la gente si te estás cayendo fuera del contenido y te recomiendan usar un encuadernación, poco salta esa parte, Brady, no muy buena práctica. Y lo que queremos hacer es que vamos a desvincular esto, así que vamos a quitar este enlace. En realidad simplemente nunca use este botón. Creo que fue una especie de legado de acarreo cuatro. Pruebas que simplemente nunca se eliminaron ya que realmente no pretendía ser parte de la tubería de desarrollo. Y mientras que las garrapatas de casting y evento no son completamente sacrilegios, se pueden usar en juegos perfectamente bien si te imaginas que tenías un widget completo y yo solo quiero botón Health Bot y empate que Amanda, todos tocan un texto. El íconos y todo alrededor de un tipo de widget de linterna más totalmente. Etapa, no solo haciendo este encuadernación y casting una vez podrías estar haciéndolo cinco, 10, 15 veces por widget solo para comprobar que no ha pasado nada. Entonces ojalá eso tenga sentido por qué no vamos a hacer eso. Entonces lo que tenemos que hacer para ordenar esto, vamos a simplemente eliminar por completo esto, se deshará de esa función porcentual. Podemos volver también, y cambiaremos el nombre de nuestro bot de salud de barra de progreso para jugar un bot de salud. Sólo porque cuando volvemos a la sección gráfica que no muestra el nombre y una forma más lógica sabemos exactamente lo que estamos viendo. Entonces sí queremos otra funcionalmente, lo que vamos a hacer es que vamos a bajar esto a una función. Vamos a nombrar a esta actualización salud. Y esto es un poco más de un enfoque manual que sí toma un poco más de tiempo para hacerlo de esta manera. Pero de nuevo, estamos ahorrando ese rendimiento y ya tipo de control total dentro del óvalo cuando esto se enfría. Entonces en cambio lo que haremos es arrastrar en la salud del jugador por referencia los activos que se están utilizando en el diseñador. Vamos a tirar de él. Me voy a enfriar con estas función de porcentaje establecido, ¿verdad? Entonces el porcentaje, recuerda es lo que podemos arrastrar arriba y abajo normalizado entre 01 y solo queremos enganchar esto. Por lo que siempre que esta función se enfríe, cual sólo debe hacerse cuando la salud realmente está cambiando. Entonces cuando estamos recogiendo un bono de salud o cuando estamos recibiendo daño, entonces vamos a pasar este pin a la función de salud y podemos llamar a eso a través. Ahora de nuevo, recuerda esto está esperando un número entre 01 y nuestra salud actualmente está entre 0100. Entonces como hemos visto anteriormente, lo que esto hace es que en este momento si seguimos enfriando, esto sólo va a cambiar cuando ya sea sea por encima de uno o menos de uno, que es en nuestro caso va a ser cuando llegue a 0. Entonces no vamos a ver al, el Bot de Salud moviéndose arriba y abajo. En cambio, lo que queremos hacer para normalizar el valor es bastante sencillo. Vamos a arrastrar esto es porque no tenemos un valor de vuelo llamado en porcentaje y sólo vamos a cambiar este para que se llame Salud. Y entonces sencillamente queremos otro valor, que es la salud por defecto o máxima. Entonces voy a agregar otro valor aquí y cambiar esto a un flotador y nombrar a este max health. Básicamente un valor normalizado sólo va a ser nuestro valor actual dividido por el valor máximo. Entonces tiraremos de esto desde aquí. Y vamos a dividir nuestra salud por nuestra salud máxima y plug-in que normalizó valor. Entonces eso siempre va a devolver un valor entre 01. Si eso no tiene sentido del todo, basta con lanzar una cadena de impresión al final de esto y hacer algunas pruebas y ver qué sucede cuando pasamos y llamamos a esta función en un momento. Pero básicamente si tenemos una salud de 50 y dividimos eso por un 100, claro que vamos a conseguir 0.5. Entonces así es como estamos obteniendo ese valor de 0 a uno cuando nunca vamos a pasar por ese rango. Entonces la forma en que usamos esto, entonces esta es en realidad la función de salud lista para ir por nosotros. Recuerda que tenemos esa referencia en la clase de jugadores, así que regresaremos aquí. Y lo que queremos hacer es cuando empecemos a jugar, vamos a crear una función que vamos a llamar al Begin Play Festival llamado actualización salud. De acuerdo, y dentro de la salud de actualización, vamos a conseguir nuestra referencia de widget. Vamos a llamar a esa función aquí, que fue de nuevo actualizar la salud. Y sólo queremos pasar en lo que es nuestra salud actual. Y luego recuerden que se va a dividir por máxima salud, que en este caso es nuestra salud por defecto. Porque recuerda en el guión de construcción con establecer la salud para que sea por defecto Salud. Y también estamos en el sistema de salud, nos estamos asegurando de que nunca pasemos el máximo nunca va a ser más que la salud por defecto. Entonces es por eso que hemos montado de esta manera. Y así nos vamos a juntar nueve. Y la razón por la que estoy haciendo esto en Begin Play es recordar la forma en que podemos jugar con el widget aquí. Entonces, como dije, es realmente agradable que podamos entrar, comprueba los diferentes estilos si alguna vez queremos revisar el color del fondo de nuestra Barra de Salud, siempre podemos jugar con este porcentaje por aquí. Podemos entonces entrar y jugar con diferentes colores fuera algunas imágenes diferentes. Y podemos olvidarnos de restablecer esto a completo o mínimo. Entonces lo que queremos hacer en nuestra clase de jugadores es asegurarnos de que tenemos control total sobre esto. Por lo que sólo empezaré a jugar una vez que hayamos creado los widgets. También vamos a enfriar nuestra actualización, nuestra función, y vamos a dejar que eso haga su. Ahora. El siguiente es cuando recibimos daños, también podemos hacer esto aquí abajo. Tan en medio de nuestro brunch para comprobar si hemos muerto o no. Nuevamente, siempre que tengamos la salud siendo actualizada, vamos a querer enfriar esa actualización de funciones de salud. Por lo que solo sacaremos de él, enfríe la función de actualización aquí. Y recuerda si estás haciendo eso entre dos pines de ejecución, siempre llenará ese enviado de ejecución de embudo. Entonces ahora lo que debería pasar es aunque no hemos actualizado ni cambiado nuestro widget aquí. En el otro tipo de elemento visual de esto, vamos a llamar a ese juego de inicio funcional que descubrirá que tenemos salud plena para los trabajos de salud. Y luego si jugamos sin depurar sistema de salud, por lo que el botón Depurar que hemos tenido el daño aplicado, entonces deberíamos ver nuestro widget a ser actualizados. Entonces aquí tenemos prensa de salud completa H, y esto va a bajar un pequeño por ciento en base a lo que tengo aquí. Entonces 20%, que está buscando derechos de byte para ese valor normalizado. Si hago estos 50 daños, así que la mitad de nuestra salud, entonces vamos a perder la mitad de un bar, y luego la siguiente mitad Hemos muerto. Por lo que de nuevo, podemos simplemente comprobar que nuestra boca definitivamente está haciendo lo correcto. Y digamos que 1909, deberíamos tener como la más pequeña astilla de Salud. Y podemos ver que nos queda más o menos una casa y otra vez, una vez más y hemos muerto. Por lo que sabemos que esto está funcionando correctamente. Esto es lo principal. Es por ello que queremos que este tipo práctico de funciones de depuración en solo para comprobar cuando estamos haciendo nuevos sistemas, que se están implementando correctamente antes de que incluso tengamos enemigos y cosas así, podemos probar fácilmente cosas con esta noche. Lo que voy a hacer es también, esto es un poco difícil de encontrar. Sólo voy a llamar a esta depuración en un comentario y voy a hacer esto rojo. Por lo que nunca olvidaré que en algún momento probablemente queremos quitar esto. No queremos que esto sea enviado porque por supuesto no queremos que las plantas estén jugando con el teclado y luego de repente tomando salud. Por lo que volveremos y recordaremos quitar esto cuando hayamos terminado por completo con el sistema de salud. Entonces de vuelta en los widgets, eso es casi todo. Por lo que solo comprobamos dos veces. Tenemos todo esto, ordenadlo y tenemos realmente necesidad de entrar aquí. Podemos ver Vamos a normalizar un valor, asegurándonos de que no tengamos nuestro enlace ojalá otra vez, eso tiene sentido por qué no vinculamos nada a una función de widget, ya sea un botón, texto ACEF, progreso comprado y nada realmente necesita ser bind es más agradable tener este control total. Y se puede ver ahora que esta función sólo se está enfriando en estos momentos específicos que pensamos que algo podría necesitar ser actualizado en los planes salud, así en el inicio de juego. Y por el momento en el sistema de daños debe ser lo que necesitamos hacer en la clase de widget y el jugador por un rato. Entonces lo que haremos, de hecho, vamos a usar al jugador en solo un momento para el daño enemigo. Por lo que podemos simplemente cerrar el widget clasificar, asegurarnos de que hemos compilado y guardado todas nuestras actualizaciones. 12. 12: Base enosa: Por lo que antes de saltar al sistema de salud y daño del jugador al interactuar con los enemigos, tratando de encarnar eso antes de que incluso tengamos algo contra lo que realmente probarlo. De nuevo, creo que lo mejor que hay que hacer es en realidad tomar un descanso de la clase de jugadores a esta etapa. Y vamos a implementar la clase de anatomía básica para empezar. Y luego volví a clase y podemos comprobar eso contra el jugador cuando interactúan entre sí. Entonces por el momento, hecho cerraremos la clase de jugador si aún tienes el abierto y dentro de todos los planos foto OCR añadir otra carpeta, esto vamos a tener unas cuantas clases anidadas aquí. Oh cool, este enemigo. Y aunque sólo estaremos creando un enemigo en este conjunto de videos, sí quise introducir la idea de herencia y mostrar cómo podemos crear una especie de jerarquía, todos los diferentes tipos de entidades donde la clase base contabiliza mucha de las funcionalidades y variables más genéricas. Por lo que nos tomaremos el enfoque y luego podrás extender esto fácilmente a tus propios enemigos como personajes de setas o tipo estacionario de arte, enemigos o cualquier cosa que realmente hayas querido agregar. Entonces, desde una clase base, vamos a hacer clic derecho y ahora vamos a crear una nueva clase de blueprint. Y en realidad voy a reutilizar de nuevo la clase de caracteres 2D en papel. Entonces si encontramos que con carácter de papel, siendo la razón es que si alguna vez hicimos una para agregar un tipo detallado de implementaciones de IA a esto y esto tendrá todo listo para ir en ese sistema de movimiento de personajes, que automáticamente estar configurados para contabilizar volúmenes de navegación y altos para interactuar con ellos. No sólo eso, esto también tendrá nuestros flip books y todo lo demás así, que necesitamos ir para animar y configurar las cosas e incluir la gravedad que es el cliente cápsula y todo lo que hemos estado usando. Entonces para este, esta va a ser nuestra clase base. Esta será la clase padre de la que heredan todos los demás enemigos. Entonces vamos a llamar a este uno BP subrayan base enemiga. Ahora lo que hacemos dentro de la clase base, tratamos de mantener aquí la lógica lo más genérica posible. Por lo que damos cuenta de todo lo que todo niño de esta clase pudiera necesitar hacer. Entonces eso serían cosas como movimiento intencionalmente, pero tal vez incluso eso es un poco demasiado específico porque como ya he mencionado, una de las dos primeras ideas que me vinieron a la mente fueron las setas enemigas que necesitarían algún tipo de movimiento bastante probable. Y luego el segundo fue el enemigo tartas. Entonces ya se me ocurrió la idea de un personaje que pudiera querer poner en eso no mueve una herramienta que podría ser demasiado específica, pero sólo van a cosas como valores de salud, una victoria, perder tipo de estado de muerte cuando la planta y trampas con ellos, tal vez un estado causante dañado y cosas así. Entonces eso es un poco más genérico que probablemente necesitarán las clases infantiles. Pero lo otro bueno de usar este personaje de papel, también tenemos todas las otras cosas que las clases infantiles que necesitamos también. Por lo que tenemos nuestro colisionador de cápsulas. Por lo que de nuevo, ya tenemos las propiedades de colisión de toda clase infantil está configurada y lista para ir. Y también tenemos los componentes sprites. Entonces de nuevo, todas nuestras clases infantiles van a necesitar ser representadas visualmente de alguna manera, probablemente con el sprite 2D de papel porque estamos usando un juego de plataformas 2D tienen, así que de nuevo, esto tiene algunos de los componentes ya aquí que estamos va a necesitar en el futuro. Y en realidad no voy a llenar esto. El motivo de ser es que esto va a asegurar que si tenemos un olvida brindar una representación visual para nuestro hijo o clases heredadas. Entonces al dejar esto vacío, eso va a ser un indicador muy claro de que en la clase infantil hemos cometido un error y olvidado hacer algo. Lo que necesitaremos inhalar es un par de variables. Entonces estos van a ser nuestros rastreadores de salud. Esto va a ser muy similar a nuestra obra una clase de personajes. Tendremos un valor flotante. El primero, voy a nombrar un defecto Salud. Y yo copiaré esto. Entonces el control y w para copiar esto y sólo llamaremos a este uno salud. Y de la misma manera, queremos que esto siempre establezca la salud en el inicio para que sea la salud predeterminada. Y vamos a establecer el valor predeterminado les dará un valor predeterminado de 100 también. Podemos cambiar esto en clases infantiles, como verás un poco más tarde. Pero sólo asumimos que todos empiezan con un piso al 100, como lo hace el jugador. Lo siguiente que vamos a querer hacer es volver a agregar en un sistema dañado, todas nuestras clases infantiles, cualquier cosa que hereda de esto probablemente va a necesitar recibir daños en algún momento. Podemos volver a entrar aquí en el Gráfico de Eventos. Podemos quitar las funciones que no vamos a necesitar, que deberían ser prácticamente todo desde naturalmente y entrar y agregar el en cualquier daño. Entonces esa función que hemos usado antes, el evento cualquier daño, básicamente queríamos hacer los mismos cálculos, quitarle la salud a lo que se está pasando. Y de hecho, diciendo que sólo podemos saltar de nuevo a nuestro jugador y dentro de aquí porque hemos, si has hecho lo mismo que yo lo he llamado todo de la misma manera, realidad podemos simplemente pellizcar esto, así que vamos a copiar esto de una clase. Se dará cuenta de que los nombres coinciden y sólo podemos pasar esto a la mitad. Por lo que a diario en esta etapa, de nuevo, vamos por un muy tipo de mínimo básico, MVP, mínimo viables productos para este proyecto. Pero aquí es donde podría querer empezar a buscar cosas como componentes, componentes razonables como un componente de salud, porque ya tipo de copia lógica entre clases. Por lo que esto significa que esto podría usarse como una especie de componente o interfaz. Por lo que no necesitamos seguir leyendo. Pero para esto de nuevo, sólo queremos que las cosas funcionen. Y esto no es necesariamente mala práctica de codificación, pero tampoco queremos tomar cientos de videos solo para que una plataforma simple esté funcionando. Por lo que esto va a actualizar la salud enemiga cada vez que recibamos daño. Y ya tenemos lista la siguiente parte de la lógica también aquí. Entonces no vamos a mostrar ninguna representación visual de salud. Podemos saltarnos este bit, pero bien podríamos seguir adelante y revisar la salud de nuevo para asegurarnos de que estamos rastreando si con eso, también podemos copiar esto y nos aseguraremos de que no copiamos la función del jugador murió, pero estaremos implementando algo muy similar en nuestra clase enemiga. Por lo que copiaríamos todo esto regresará aquí. Pegaremos esto en el Gráfico de Eventos. Podemos tener un pequeño tema. Y es que aún no hemos hecho este booleano. Pero si alguna vez lo consigues, puedes ver que tenemos una línea ligeramente blanca por encima de esto, lo que significa que este valor no existe. Si presionamos compilar, tenemos ahora agradable y fácil de arreglar esto. Podemos hacer clic derecho en algún lugar cerca de esa línea blanca y podemos decirle que cree la variable. Es eso. Por lo que no tenemos esos tractos ahí también sin costo extra para nosotros. Entonces no estamos haciendo lo mismo para que no tengamos la habilidad como no queríamos, pero el jugador donde no queremos morir más de una vez, podríamos tener algo donde el jugador salte continuamente sobre un enemigo y lo pone en un tipo constante de Loop de la Muerte. Lo cual podría ser bastante gracioso ahora que digo eso, pero también podría parecer un poco buggy. No del todo ser la mecánica ni los resultados que quieras, pero estamos haciendo la misma mitad de cheques. Entonces si la salud es menor o igual a 0, entonces estamos muertos. Nuevamente, soy plenamente consciente de que con aglutinar esto, pero solo para probar nuestro código futuro, también vamos a asegurarnos de que nada se deslice a través de este caso de uso y no tenemos un, un enemigo en algún momento con menos 50 salud que sigue viva. Y también si no está muerto, así que no podemos matarlo varias veces, entonces eso mataremos a nuestro enemigo. Asegúrate de que nos fijamos, es que para ser verdad. Y entonces vamos a hacer que esa función de nuevo. Y llamaremos a este enemigo muerto. Este va a ser un poco diferente. No voy a poner ninguna lógica aquí en absoluto. De lo que voy a hacer, sólo voy a añadir un blanco reescrito, sólo para que tengamos algo visual y un comentario alrededor de la noche de reruta. De acuerdo, así que un agradable comentario simple, sólo una especie de dinos qué está haciendo esta función. Por lo que hemos hecho esta función la cual se va a dejar completamente vacía en la clase padre. Y esto esperaba ser utilizado en completamente sobrescrito justo en las clases infantiles. Ahora podríamos hacer algo aquí como enfriar la función de destruir. Pero en la clase infantil es que quizá queramos hacer algo como poner el pelo común, jugar animaciones, partículas firmadas, y cosas por el estilo. Entonces no queremos destruir la clase antes de que eso suceda. Y no podemos cambiar la forma en que se llaman las funciones. Por lo que podríamos Kuhn nuestro hijo fundir primero y luego heredar la función de los padres después y destruir. Pero de nuevo, puede haber algunos casos de uso en los que ni siquiera queremos que se destruya. A lo mejor vamos a tener cadáveres rebosados alrededor de la arena. A lo mejor eso va a ser parte del mecánico donde necesitan mantener existente. Entonces para evitar cualquier tema como ese, generalmente no me gusta. Destruir funciones en la función padre llama a una herramienta cuando las clases padre. Pero yo habré configurado la función están listos para que eso se enfríe para que la salud quede atrapada y sabemos que el enemigo ha muerto. Nos ahorra implementar la misma funcionalidad una y otra vez en todas nuestras clases infantiles. Pero obtenemos esa libertad y flexibilidad para agregar a las funciones la lógica y funcionalidad únicas basadas en la clase que está llamando a esa función. Entonces lo que vamos a hacer, vamos a llamar a esto. Todavía queremos que esto se enfríe a pesar de que no pasa nada. Porque en cualquier niño de esta clase y yo cuando la salud como ser rastreada y está siendo catalogada como un enemigo muerto. Y esto todavía se va a enfriar. Estaremos viendo en breve alto. Esto todavía se puede utilizar en la clase infantil es si no estás familiarizado con eso, pero eso es más o menos eso. Entonces esa es nuestra clase enemiga base lista para ir. Ese es el proyecto, al menos las variables y funcionalidad que creo que van a ser las más genéricas. Las cosas que cualquier clase que pudiera imaginarse asintiendo necesitaría. Y definitivamente son las únicas cosas que volví a clase va a necesitar para evitar que implementemos manualmente esto también en esa clase. 13. 13 - bat de Enemy: Así que basta con echar esa siguiente mirada al sistema de herencia, cómo podemos conseguir que diferentes clases hereden funcionalidad y variables y propiedades de sus clases padres, ahora podemos empezar a crear nuestros murciélagos enemigos. Y podemos hacerlo volviendo a nuestra carpeta de enemigos. Y aquí desde la base enemiga, vamos a hacer clic derecho en esto. Y aquí tenemos una opción para crear una clase Child Blueprint. Por lo que esta clase ahora hereda todo lo que acabamos de implementar en nuestra clase base. Yo sólo voy a nombrar a este uno BP subrayan bate enemigo. Y hasta podemos ver aquí. Entonces si de nuevo, no estás familiarizado con la irreal estructura de herencia de clases, podemos ver que la clase padre es la base enemiga. Podemos navegar a esto, que será justo aquí. Podemos ver que las clases de padres base enemiga, el personaje de papel, que es el que elegimos originalmente, hacemos clic en esto. Esto nos llevará a una clase C plus, que definiremos todas estas cosas. Por lo que básicamente estamos heredando el componente de captura, componente sprite y todo así de nuestra clase de padres C Plus Plus en este caso. Entonces me desharé de la clase planetaria. No volveremos a necesitar eso dentro del enemigo. Pero lo que queremos hacer, podemos empezar a sumar algunos de los visuales aquí, para que podamos sumar nuestros sprites en este. Entonces recuerda, vamos a deshacernos de esto, mi versión para padres. Esto se ha dejado vacío a propósito. Entonces podemos llenar esto con lo animado, pero también querremos cambiar el tamaño de Componente Cápsula para que solo podamos hacer de esto un círculo perfecto. Por lo que 34 y 34 parece estar bien. Significa que no nos van a golpear de la envergadura. Pero creo que eso va a ser aceptado fue querer parecer demasiado viejo en este tipo de juegos. Y luego solo para revisar algunas cosas como de nuevo, si acaso no te resulta familiar. Dentro del festival de guiones de construcción, podemos ver que tenemos un cool para tener guión de construcción normal, que luego está enfriando el guión de construcción padre. Entonces qué está haciendo esto, si hacemos doble clic en esto, eso nos llevará a la clase de padres. Y podemos ver que básicamente el orden de ejecución es que vamos a enfriar nuestro propio festival de funciones que podríamos hacer es agregar algo así como una cadena de impresión aquí, lo que significa que lo haríamos en el guión de construcción imprime lo que se vaya a estar en la cadena de impresión. Y entonces nos enfriaríamos la versión de padre hora, que se va a simplemente establecer la salud. Sí, Si nosotros lo que hace las diferentes formas. De hecho, voy a mostrar esto sólo para que este punto pase. Entonces diremos cadena de impresión. Diremos que esto es niño ROM. Y luego en la clase base haremos una cadena de impresión aquí también. Y simplemente se dan cuenta de que esto va a ser un poco confuso porque la forma en que se desplaza por la pantalla, pero ojalá esto tenga sentido. Diremos aparente. Entonces esto va a dejar claro si estas escuelas vienen de ningún cambio esta para ser naranja. Sólo para que sea un poco más obvio. Y eso ya lo podemos ver. Tenemos un montón de cosas diferentes que los guiones de construcción se ejecutan casi constantemente cada vez que estás cambiando algo, compilando algo en el editor. Entonces si traemos solo a los padres sólo obtendría ese código de función de los padres. Yo estoy moviendo esto porque de nuevo, el guión de construcción se enfría cada vez que movemos algo en el otro set. Entonces lo que eso está haciendo es que se está poniendo en la salud y luego enfriando esa cadena de impresión. En comparación, si traemos el murciélago, podemos ver que esto está enfriando al niño. Se desplaza hacia abajo para que podamos ver si lo dejo un rato. El primero debe ser azul, hijo padre-hijo. Entonces eso es llamar primero a la función del niño, luego a los padres. Y tipo de looping que cada vez que compras un cierto número de unidades. Entonces este es el Oda, él, Mi, podemos cambiar esto si engancho esto rápido y luego engancho de esta manera, este me caigo en el chaleco de Construccion Script de los padres. No debería leer un padre y luego un hijo porque vamos a enfriar nuestro guión de construcción en el parent Fest y enfriar esta cadena de impresión. Y luego vamos a enfriar nuestra cadena de impresión en la clase de la que en realidad la estamos llamando directamente. Entonces de nuevo, solo traeré a los murciélagos enemigos y es un poco difícil de ver contra la nada. He sentido la página, pero no lo estoy haciendo ninguna otra auditoría. Entonces tenemos padre e hijo y padre e hijo. Por lo que podemos ver va en el orden correcto ahí. Entonces ese tipo de tiene sentido cómo tenemos la estructura del orden en el que las cosas se enfrían cuando estás heredando cosas de otras clases. Porque estaremos haciendo uso de esto a medida que pasemos con la clase de botón. Y eso es exactamente lo que quise decir con que podemos anular cosas en los eventos muertos enemigos. Podríamos haber hecho algo así como colocar aquí la función de destruir. Solo estoy asegurándome de que cuando sobrescribamos esta función, hagamos el festival de versión infantil, que estará jugando los efectos. Y luego llamar a la función padre, que manejaría la destrucción de la clase. Pero como he mencionado, incluso con ese tipo de anulación, puede haber situaciones en las que no queremos que todo se destruya de inmediato, tener cosas como ese tipo de permanente y el juego puede ser bastante agradable con los cuerpos y tener diferente interactable es cuando murieron los enemigos. Entonces por esa razón otra vez, solo voy a saltarme haciendo eso y asegurarme de que hagamos toda la funcionalidad que queremos dentro de la clase infantil. Entonces la forma en que esto va a funcionar, podemos conseguir que una función tengo la manera de empezar, por lo que realmente podemos buscar en anular otra función que será nuestro enemigo muerto anular. Entonces aquí en las funciones, en lugar de recrear eso, podemos ver que tenemos algunas cosas que ya se han definido en la base enemiga. Por lo que podemos anular la, cualquier función de daño en la base enemiga y podemos anular la función murió desde la base enemiga. También tenemos un montón de funciones que podemos anular desde la clase de actor. Todos estos nuevamente, ya se están haciendo en la Ley General a conjuntos de clases. Pero el que nos interesa es que el enemigo murió. Entonces como dije, vamos a mantener esto fresco para el padre por si alguna vez hacemos algo un genérico que queremos que suceda en la clase base en este sencillo ejemplo, no va a suceder, pero por si acaso nosotros sí, entonces nos quedaremos con esa cadera. Y ya has visto cómo funciona eso con el guión de construcción tenía esto se llamará primero, eso esencialmente va a entrar, no hacer nada raíz de historia, nodo, y luego llamaremos aquí nuestra propia lógica. Ahora contra todo lo que acabo de decir, lo que vamos a hacer dentro de la clase trasera enemiga se destruye la clase. Entonces en este caso, no vamos a entrar en vigor, dice un montón de tutoriales sobre efectos de partículas y efectos secundarios y cosas por el estilo. Yo sólo voy a visualizar el personaje que se está retirando. Por lo que estará enfriando la función Destruir Actor cada vez que el jugador salte encima del enemigo. Pero de nuevo, si querías hacer algo como agregar una animación rápido, entonces puedes agregar eso aquí, tener un go off screen y luego después de un segundo para, para destruirlo de esa manera. Pero de nuevo, esta va a ser una bonita representación visual, veremos que saltamos sobre la espalda y luego desaparecerá. Bueno, esto parece que en este momento, si entramos, podemos traerlos al mundo. Si intentamos arrastrarlo en algún lugar del mapa de teselas aquí, podemos verlo simplemente descansar justo encima de él. Pero lo suficientemente cerca, queremos establecer esto en 0 y en el eje y. Y para evitar eso como asesorar, sólo vamos a asegurarnos de que no se meta en el suelo y podemos dejarlo en algún lugar así. Por lo que se convierte en impresionar avión I. Tenemos un poco de un problema de streaming aquí que tomará un segundo y luego eso debería arreglarse por sí mismo. Y ya podemos ver que va a ser un par de temas que esperaba aquí. Y es que podemos saltar sobre esto y nos van a mover, potencialmente ser empujados hacia atrás, que es lo que esperaba que pasara ahí. Entonces debido a que tenemos que spec la luz está interactuando entre sí, básicamente no sabe de qué manera resolver la colisión. Y no podemos tener ese tema donde nos movemos hacia adelante y hacia atrás en el eje y. Entonces una vez que tengamos ese tipo de tema en mente, sólo voy a volver a la clase de jugadores y podemos resolver esto podría sonar la clase de jugador en los movimientos de personajes. Tenemos la opción aquí. Si buscamos restricción o simplemente comenzamos a escribir restricción, tenemos la restricción para jugar una opción. Básicamente queremos que esto tenga un valor positivo en el eje y, lo que significa que no vamos a permitir que se mueva ninguna dirección en el eje y. Todavía tenemos movimiento en la X y en la XIX, que se deja a derecha y arriba y abajo. Pero lo que esto debe hacer es que si volvemos a entrar y saltamos de nuevo a los murciélagos, podemos ver que solo empujamos a ojo izquierdo y derecho. Entonces va a tomar suficiente velocidad. Y no deberíamos, lo que ayuda a esto tantas veces como queramos sin preocuparnos por ser empujados hacia adelante o hacia atrás. Entonces ese es el primer número. Ahora lo siguiente que habrás notado es lo de Bernstein, ligeramente más arriba, pero siempre está terminando en el piso. Entonces por supuesto que no lo haremos. Estoy a punto de poder volar. Y de nuevo, podemos hacerlo fácilmente dentro del enemigo. Volver a clase esta vez, volviendo al movimiento de personajes. Y tenemos un montón de diferentes tipos de ácaros del movimiento. Podemos establecer el movimiento por tierra predeterminado extrañamente como para estar volando. Entonces, básicamente, cuando esto se inicialice, establecerá el tipo de movimiento por defecto en Lund. Y cuando somos una especie de impagos en esta tierra, queremos que esto sea clasificado como un movimiento volador. Entonces es una especie de contradecirse eso, pero solo ten en cuenta. El principal es que este es el modo de movimiento por defecto, que es Lund. Y no vamos a estar volando entonces de la manera que eso va a funcionar, porque si entramos y simulamos esto, podemos ver que eso quita la gravedad. Y esta es mi clase como personaje volador, por lo que puede moverse de lado a lado. Podemos movernos arriba y abajo. Y va a ignorar por completo la gravedad a menos que la anulemos para tener algún tipo de animación burbujeante con alguna gravedad, una especie de forma. Pero por lo demás esto se va a quedar completamente en la aplicación. Aunque la poseamos, entonces podemos subir y empezar a saltar sobre la cama. Entonces en este punto tenemos una bastante estacionaria, pero lo siguiente que vamos a querer hacer es agregar algún tipo de lógica de movimiento a esto. Simplemente voy a hacer esto muy sencillo. Se va a volar de izquierda a derecha. Escogerá al azar si quiere moverse en cierta dirección. Y entonces va a ser uno de esos enemigos que cuando golpea una pared o algo así, choca con ella, mientras que a su paso sólo cambiará de dirección y volará al revés. 14. 14 - Movimiento plano: El movimiento real para esta clase debería ser bastante sencillo de implementar porque de nuevo, estamos usando aquí el componente de movimiento del personaje. Eso significa que, al igual que con nuestra clase de jugador, sólo para una especie de recapitulación de lo que estábamos haciendo, realmente podemos aprovechar parte de la lógica de movimiento ya disponible dentro del movimiento del personaje proporcionan una dirección que necesita para moverse. Y esa será más o menos la lógica que necesitamos para hacer eso. Entonces eso estaba en el movimiento de entrada, y podemos ver que tenemos las entradas de movimiento. Entonces vamos a hacer algo muy, muy parecido. De hecho, si tienes la clase de jugador lista abierta, podemos copiar esta nota. Vamos a usar exactamente lo mismo, vamos a pasar de nuevo a la batuta enemiga a clase. Y la única diferencia, por supuesto, es que porque no teníamos un drive de entrada esta sala. Vamos a pegar esto junto al tick del evento, OK, esta copia de seguridad. Y entonces todo lo que realmente necesitamos hacer es averiguar cómo vamos a obtener este valor de escala. Entonces por el momento tenemos la x, bueno, la dirección para avanzar. Entonces otra vez, nos estamos moviendo a izquierda y derecha. No necesitamos ningún movimiento hacia adelante o hacia atrás ni vertical para nuestros botones. Entonces si realmente vamos y jugamos esto ahora mismo, esto estaría haciendo al menos el movimiento muy básico que necesitamos. Podemos simular ese cabello. Podemos ver un par de cosas son probablemente un poco. El primero es que el murciélago está fluyendo hacia atrás. Al segundo diría que se está moviendo un poco demasiado rápido. Y el tema final es el principal tipo de punto de esto, que siempre va a estar moviéndose en esa dirección hacia adelante o correcta. Entonces lo que vamos a hacer es resolver estos diferentes pasos a medida que pasamos por esta clase. Entonces lo primero va a ser lo más fácil de acercarse, cual estaremos cambiando la velocidad del movimiento. Ya hemos visto de nuevo en el pasado que esto está en el Componente de Movimiento de Personajes. Entonces con este D seleccionado, Recuerda que estamos usando los movimientos por defecto para estar volando, lo que significa que no estaremos cambiando con la velocidad de caminata como hicimos con el jugador. En cambio, tenemos que bajar a la sección voladora y bajar esto. Entonces voy a hacer de esta rotonda la mitad a las velocidades de los jugadores en movimiento. Creo que los jugadores fallan a 600, así que haremos la velocidad máxima del viento en 300. Esto sólo significa que debería ser un poco más fácil para el jugador o nosotros mismos ponerse al día y jugar con los enemigos para las pruebas y también para los juegos. Normalmente quieres que el jugador se sienta un poco más controlable y poderoso que los enemigos. Entonces podemos ver y eso es fijo, la velocidad de movimiento, que es el primer y tipo de simple paso que hay que hacer aquí. Seleccionar de la dirección del movimiento. Lo que podemos hacer es tirar de aquí y usamos otra de esas notas dormidas a las que nos hemos estado acostumbrando. Nuevamente, voy a ir por las utilidades seleccionar porque me gusta la forma en que esto imprimirá lo verdadero o falso. Cuando volvemos esto a un booleano. A partir de aquí, solo voy a arrastrar y crea o promocionar esto a una variable. Y voy a nombrar a éste que se mueva B, ¿verdad? Entonces, de nuevo, estamos incumpliendo la denominación positiva de esto, que los derechos de movimiento serán el tipo de incumplimiento esperado. Y lo que podemos hacer es que vamos a establecer esto. Entonces si esto es cierto, vamos a poner esto para que sea uno. Y si esto es falso, pondremos esto para que sea menos uno. Tan muy similar a lo que estamos haciendo con el eje de entrada. Uno va a ser positivo moviéndose a la derecha menos uno sería negativo moviendo a la izquierda. Lógica muy similar, solo una forma diferente de conducir esto desde un booleano. Ahora para probar esto, podemos muy sencillamente tomar el ojo. Por lo que haremos público esto lo compilará. Y veremos que esto por defecto será falso porque el índice aquí era falso. Y esto significa que si agarramos nuestro bate en el editor, deberíamos tener control total sobre la dirección del movimiento aquí encontrando a ese booleano, tenemos la jugada derecha Boolean aquí. Por lo que esperaríamos si dejamos esto sin control cuando me mueva a la izquierda. De acuerdo, entonces primera prueba hecha. Y si tomamos esto, deberíamos estar moviendo derechos. Y podemos ver que ahora tenemos control sobre el murciélago como se esperaba. Entonces esa va a ser la siguiente parte de la dirección de movimiento controlada. Por lo que ahora tenemos una variable que controlar. Esto funciona. Ahora bonita manera sencilla de que podemos actualizar esto en el lugar de inicio para que podamos especie de aleatorizado la forma en que se estarán moviendo los murciélagos. Yo sólo voy a eliminar la superposición de acceso. No vamos a estar necesitando eso. Lo que podemos hacer es arrastrar en nuestra variable, enganchar esto, y podemos simplemente tirar de aquí y usar una función booleana aleatoria. Por lo que sencillamente, esto tendrá una probabilidad 5050 de escoger verdadero o falso cuando empecemos a jugar, no tendríamos ningún control sobre esto. Simplemente usaremos esta asignaciones completamente aleatorias del valor booleano. Y luego cuando llegue al tick del evento, eso se tomará en cuenta y nuestro bate se estará moviendo en diferentes direcciones. De acuerdo, Así que lo he intentado un par de veces y en realidad se puede ver algo alto, sí conseguimos una división exactamente 5050 de la aleatorización que no esperaba eso. Entonces, sin embargo, que por lo que es y lo que podemos hacer aquí es asegurarnos de que fuéramos necesitamos estar probando esto más para que podamos hacer esto privado de nuevo de C. Simplemente no queremos demasiado para ser expuestos si no hace falta que sea. Y lo último para el tipo de implementación de movimiento básico que yo diría es conseguir que se enfrente de la manera correcta. Entonces por supuesto que sí queremos que esto colisione con la superficie en este momento. Si conseguimos que esto se mueve a la izquierda, entonces lo que va a pasar es chocar con ese muro y simplemente volar indefinidamente hacia ese muro. Por lo que estaremos cargando esto un poco más tarde para que el bate cambie de dirección tan pronto como golpee una pared como ésta. Pero por ahora creo que sólo podemos conseguir que el personaje se enfrente de la manera correcta. Por lo que tan pronto como lo hagamos en cambiar una dirección, podemos tomar en esta variable de movimiento derecha que estamos rastreando. Y podemos hacer que se vea ya sea a la izquierda o a la derecha dependiendo de la forma en que se esté moviendo. Entonces otra vez, para hacer esto, Es muy sencillo, creo que en este caso, lugar de tratar de trabajar irritaciones de control y cosas así. Esta es una de esas cosas donde puedes hacerlo de cualquier manera. No hay un verdadero camino correcto o incorrecto. Especialmente si algo así como un enemigo, sé que no vamos a tener nada como un murciélago. Las fibras escupiendo son algunas cosas que no necesitamos preocuparnos por la dirección de rotación. No estamos sumando en subcomponentes. Por lo que quería mostrarles la otra forma que he mencionado para hacer esto, que es usar el escalado sprite. Entonces yo completamente opcional, pero me gustaría mostrarles tantas formas diferentes de hacer las cosas como sea posible para que tengan esas opciones en su arsenal listas para ir. Entonces lo que vamos a hacer es dependiendo de la dirección que nos movamos, vamos a conseguir nuestro componente sprite. También puedes hacerle esto a todo el actor completamente hasta ti cómo manejas esto para que puedas establecer la escala del actor. Pero sencillamente, recuerda que una dije una opción que podríamos haber hecho con nuestra jugada un personaje, en lugar de cambiar la rotación, es simplemente conseguir nuestra X gal, poner esto en menos uno y estamos enfrentando el otra dirección. Entonces eso es lo que vamos a hacer. Un buen enfoque sencillo aquí. Y como dije, sólo otra opción que quería mostrarte. Entonces para manejar esto, lo que haremos es que primero obtendremos la escala actual ya que necesitaremos este nuevo cálculo en tan solo un momento. Y podemos hacer esto con la escala mundial GET, el sprite. Podemos dividir el pasador de la estructura. Entonces tenemos la x, y, y zed. Y luego de la manera similar, vamos a entonces establecer la escala en base a esto. Nuevamente, podemos establecer la escala mundial 3D para nuestro sprite. Y de nuevo, vamos a querer dividir el pin de estructura sólo porque si lo piensas, no queremos que esté volteando la y o el zed. Por lo que podemos simplemente enganchar automáticamente estos para que estos nunca cambien. Podrías codificarlos a uno. Puede que se olvide la forma de hacer eso. Lo principal es que queríamos elaborar el cálculo en base a nuestro valor x. Entonces lo último es que vamos a tirar de aquí, y vamos a multiplicar esto por unas carrozas. Flotadores multiplicados por un flotador. El valor de retorno será lo que queríamos establecer la escala de este para ser. Y como siempre, vamos a tirar de este pin final y usaremos una nota selecta. De nuevo, vamos a ir por la opción de utilidades. Sólo para recapitular, no queremos que a o B. Eso es un poco ambiguo. Y por supuesto, en cuanto volteamos esto para usar el valor booleano, obtenemos lo verdadero o lo falso. Entonces eso de nuevo, es muy legible por humanos. Ahora sabemos que si nos estamos moviendo a la derecha, si eso es cierto, entonces queremos que esto se escale de una manera. Si es falso, entonces queremos que se escale el otro. Y como acabamos de ver, esto en realidad es un poco diferente por la forma en que se dibujan los activos. Es correcto, tipo de común que los activos, el jugador se dibuje de frente a la derecha, los enemigos retirados de cara a la izquierda es sólo algo que he notado en 2D artistas cavan, lo que significa por defecto moviéndose a la derecha? Por lo que en realidad necesitamos invertir esto. Por defecto es pronto como el enemigo comienza a moverse justo a través del nivel. Entonces si eso es cierto, en realidad queremos que este sea un valor negativo. Entonces pondremos esto en menos uno. Y si esto es falso, entonces si nos estamos moviendo a la izquierda, entonces pondremos esto en uno positivo. Con eso hecho, podemos enchufar eso aquí, ordenar un poco esto, y eso será igual de bueno ir a probar este ite. Ok, y ahí vamos. Entonces el bate no lo es, estoy enfrentando en la dirección correcta dependiendo de qué manera se seleccione ese booleano aleatorio en la jugada inicial, si nos estamos moviendo a la izquierda, entonces está volando fluido hacia la izquierda. Y si nos estamos moviendo a la derecha, da la vuelta y se está moviendo o madera a la derecha. 15. 15 - Cambio de orientación enemigo: Para que los botones reaccionen ante los lobos, como tipo de esperamos, va a haber un par de diferentes tipos de reglas y expectativas que voy a ponerlo en la lógica sólo para que sepamos que tenemos control total sobre cómo el trasero podría interactuar potencialmente con las diferentes partes de los niveles, como el piso del jugador, diferentes objetos intratables como lobos y así sucesivamente, así que de vuelta dentro del enemigo. Pero a clase dentro del gráfico de eventos, lo primero que queremos hacer es la forma en que vamos a manejar esto va a ser de los eventos de colisión, como ya he mencionado, el esquema básico de esto es cuando el bate golpea algo, queremos que decida si debe o no estar dando la vuelta. Por lo que ya tenemos el componente principal que vamos a necesitar para esto, que por supuesto va a ser el Componente Cápsula. En el componente de captura, podemos desplazarnos hacia abajo y podemos encontrar el componente hits eventos y podemos agregar esto en. Ahora sólo voy a ir por el camino que tengo este estanque morir. Por lo que tal vez quieras que tu personaje enemigo interactúe de manera diferente con el mundo. En general, sin embargo, hay algunos tipos de reglas cuando se trata de la forma en que el, tipo de mirar el diseño de juegos en una premisa más basada en el concepto y la teoría que sólo la mecánica rural detrás de él. Entonces lo primero que más me destaca siempre es que una de las cosas con las que este enemigo podría colisionar potencialmente será la clase plantadora. Una cosa que siempre encuentro muy casada cuando esto sucede es cuando el enemigo golpea la playa y luego tiene este tipo de lógica automática activada para que se dé la vuelta y se mueva en la otra dirección. Especialmente cuando lo descompongas y piensas que el enemigo es poco temprano en el nivel solo para cazar, cenar, encontrar o interactuar con la clase de jugador de alguna manera para proporcionar daño. Sobre todo porque me acerco a esto como un juego iónico de la escuela muy vieja o Mario, no algunos de los más recientes por donde pueden pasar los enemigos y el hub específico tipo de montaje es donde lanzan un ponche el personaje, como un ejemplo, estos son los que van a proporcionar puramente daños por contacto. Por lo que tiendo a pensar que se siente un poco extraño si lo único que se pretende que el enemigo haga es entrar en la jugada y causar daño para luego dar la vuelta. Entonces lo que voy a hacer es lo primero que vamos a conducir de esto es que vamos a sacar del otro acto para arriba y averiguar a qué hemos golpeado. Y sólo queremos hacer nuestra comprobación de colisión si no es igual al Peón de Jugador. Por lo que no necesitamos hacer ningún casting ni nada. Cómo podemos comprobar literalmente si lo único, el único jugador en el juego va a estar controlando si lo que hemos golpeado no es igual a eso. Por lo que el otro porno o el plasma correrán un cheque de brunch desde aquí. Y si eso es cierto, entonces podemos seguir adelante y hacer nuestra lógica de volteo de dirección. Ese es el primer paso que se hace para este tipo de lógica. El siguiente cosa va a ser encontrando. Entonces si hemos pasado este criterio, esa manera queremos ser completamente gustados e ignorar cualquier lógica futura. Lo siguiente que podemos ver es comprobar la superficie contra la que hemos golpeado o interactivo. Y podemos hacer eso dejando caer el hit Pin justo aquí. Esto proporciona mucha más información sobre lo que hemos golpeado, como el tipo de material al que podría tener su nombre si tiene un zócalo de hueso, la distancia y se pueden ver todos los bolígrafos extra que tenemos aquí. Ahora la que nos va a interesar es la normal. Y esto nos puede dar una idea de la dirección en la que se tomó el hit. Lo siguiente que quería contabilizarlo como si algo viniera de arriba o abajo. Entonces techo o un piso, o incluso otro tipo de enemigo o una clase interactiva. Todas estas cosas también deben ser ignoradas. Para que podamos ver cómo se ve esto. Si arrastramos desde aquí, voy a imprimir cadena. Y dentro de la cadena de impresión, solo podemos enchufar el hit. Normal va a ser la que queremos aquí. Entonces, solo tengamos una rápida recopilación de éste y podemos ver qué van a ser retornos dependiendo de si eso está siendo golpeado. De acuerdo, Entonces si estamos golpeando una superficie como esta directamente, podemos ver que estamos recibiendo muchos retornos de golpe de esta sola colisión. Básicamente mientras esto esté colisionando, algo así como un desastre terrible, vamos a estar devolviendo esta función hit. Ahora lo importante que podemos ver aquí es que esto está siendo golpeado en uno positivo en el eje x. Entonces esta no es en realidad la posición de hits de la culata de SES va a ser menos uno en el exterior izquierdo, como ya estamos conscientes, lo que realmente estamos recibiendo es la ubicación positiva de la cosa que estamos golpeando, que está en uno en el eje x de esta regla. Entonces volteando esto, solo voy a pausar esto en cuanto lleguemos ese pedacito de una esquina que, y de hecho, lo que haré es volver a entrar. Voy a parar esto porque eso no va a ser lo suficientemente largo y podemos aumentar esto a algo bastante alto. Entonces lo primero que quería mostrar son los hits de esta esquina porque eso no está del todo recto, pero no está abajo. Podemos ver cuando obtenemos estos valores como 0.25.9 o entre 0.8, podemos ver que esto nos da una idea. Y también no, perdón, menos 0.2, porque esto viene del lado izquierdo de este pequeño cerro justo aquí. Pero este también tipo de en la esquina que es la cima de los cerros han conseguido un positivo en el zed, su mayoría positivo en el zed dándonos una idea de que esto es una esquina y un recorte el costado, solo pelo también. Entonces en este caso, lo que haría es que voy a tomar este tipo de valores y podemos agrupar ciertos rangos que vamos a ignorar en base a lo que se está devolviendo. Entonces si dejamos que esto vaya un poco más allá, podemos ver algo similar ya que hemos golpeado esto desde, de lo que nos han golpeado desde arriba es la forma en que queríamos mirar esto. Podemos ver cuando estoy obteniendo un valor negativo en el Zed porque es el fondo de la plataforma más que la cima de este cerro. Y de nuevo, en la x estamos obteniendo un valor negativo porque es del lado izquierdo de esa plataforma. Y vamos a esperar más o menos el mismo tipo de cosas de ese ladrillo y de la pared. Y así podemos usar nuestro hit Normal para obtener alguna información sobre la dirección en la que nos han impactado. Entonces lo primero que queremos hacer es en lugar de hacer que nuestro ánodo de golpe de un solo componente sea mucho, mucho más grande al dividir el lápiz de estructura. Porque recuerda donde sea que realmente te interesa uno de estos, que va a ser el eje x. Entonces solo voy a recombinar esto solo para mostrarles que si seguimos haciendo esto, se va a hacer bastante grande. Otra forma de escribir esto como podemos tirar de aquí. Y si no te resulta familiar, podemos romper esto en una noche separada. Entonces hacen lo mismo. Podemos romper este vector. Simplemente significa que vamos a tener esto en una ubicación un poco más separada. Ya hemos hecho esto bastante largo, así que probablemente podamos ahorrar un poco de espacio solo separando este poderío en una luz diferente. Ahora desde la X, sólo voy a ser bastante estricto con esto. Entonces si esto no es igual a 0, entonces cualquier cosa que no sea 0 en el eje x se va a clasificar como un resultado hit al que quiero responder. Por lo que de nuevo, estamos ignorando el viento es agregar un ligero defecto y ese tipo de colisiones de fondo de molienda completa potencialmente serán ignoradas. Y cualquier cosa que sea mayor o menor que Xerox, se puede ver de dónde devolver un valor de punto. Entonces aunque sea como voltear una esquina, entonces voy a clase eso como razón para dar la vuelta. Entonces como ejemplo aquí, si volviéramos a golpear esa esquina, pesar de que es como apuntar es algo seguiríamos dando la vuelta y cambiando de dirección. Ahora podrías sumar en rangos sobre está entre menos 0.4 o 0.4, entonces eso podría ser la parte inferior de un resultado hit en el zed. Y quizá no quieras responder a ese tipo de cosas que depende completamente de ti si quisieras agregar ese nivel de complejidad y ojalá tenga sentido cómo podemos usar esta diapositiva. Pero sólo para conseguir la mayor parte de la lógica y vamos a mantener esto agradable y sencillo por ahora. Entonces lo que queremos hacer ahora, ahora que tenemos esta comprobación de condición y vamos a fijar nuestro movimiento en la dirección correcta. Y simplemente no hay truco aquí es que vamos a conseguir la corriente dejando la dirección correcta. Y pondremos esto para que sea lo que las corrientes que se mueven en condición correcta no sea. Entonces diremos mover a la derecha es igual a no moverse ¿verdad? Y podemos usar el cheque NOT booleano aquí, pasar eso, y esencialmente es simplemente invertirlo. Entonces esto va a decir si te mueves a la izquierda y te mueves a la derecha, si te mueves a la derecha, muévete a la izquierda , siguiente te vamos a querer dar la vuelta a la dirección de los murciélagos y ya tenemos alguna lógica arriba para hacer esto. Entonces por supuesto que no queremos copiar este código. En cambio, lo que vamos a hacer es agarrar esto como lo hemos hecho antes, clic derecho en cualquiera de estos nodos y colapsarlo a una función. Por el nombre de esto, técnicamente no estamos cambiando la rotación. En lugar de llamarlo cambiar rotación o actualizar rotación o algo así. Voy a nombrar a éste que Togo enfrenta dirección. Simplemente creo que ese es el descriptivo más preciso para lo que estamos haciendo aquí. Y entonces ahora tenemos esto como una función. Podemos agarrar esto y podemos enchufar esto de nuestra función aquí. Ya sé que aquí va a haber algunos temas por la forma en que funcionan las colisiones. Este tipo de te da una idea de lo que podría estar sucediendo porque obtenemos más de una de estas llamadas de función por colisión esencialmente antes de que incluso tengamos oportunidad de rotar, porque estamos recibiendo más de estos rendimientos por lesión de los que podríamos querer. Podemos conseguir que algo de choque o volteo suceda demasiado rápido. Por lo que sólo podemos comprobar lo que está pasando para empezar. Se puede ver como que trató de girar y luego no se calló. Y luego tenemos un poco de cara hacia atrás aquí para que pueda verse un poco tergiversado. Por lo que queremos asegurarnos de que tenemos un poco más de control, sobre todo en este tipo de ubicaciones estrechas aquí. Y para asegurarnos de que no tengamos demasiadas actualizaciones ocurriendo a la vez. Entonces para manejar esto, voy a usar algo llamado un do una vez conocido como el nombre indicaría que esto sólo nos va a permitir hacer algo en ese momento hasta que restablezcamos algo. A esto se le conoce como puerta de control de flujo. Entonces vamos a pasar esto en het. Vamos a hacer esta funcionalidad sólo una vez después de esto, y he puesto esto en el lugar equivocado. Queremos que todo esto sea después de que lo haría una vez. Y nosotros, para que esta rama regrese como cierta, entonces sólo queremos cambiar todo esto una vez y cambiar la dirección una vez más, esto va a causar un problema porque esto no se restablecerá automáticamente. Entonces si golpeamos algo ahora, esto va a ser un largo camino para comprobarlo, pero vamos a golpear este muro. Y luego si tocamos esta esquina, esperemos verte este flip o hacer algo. Pero debido a que tenemos ese do una vez en su lugar, significa que sólo vamos a seguir avanzando y que la funcionalidad nunca se volverá a comprobar. Entonces lo que queremos hacer a continuación es una vez que esto haya sucedido, queremos hacer un retraso. No quiero que esto se restablezca de inmediato. Recuerda la bomba, el problema es que estamos teniendo demasiados impactos colisionando con la pared inmediatamente hasta que tipo de volteo, ¿verdad? Entonces vamos a añadir un nodo de retardo aquí. Y el retraso puede ser algo muy, muy pequeño. Algo así como 0.1 debería estar perfectamente bien. Y luego cuando veas a otras personas usando mucho esto, la vez que solo tirarán un nodo reescrito por aquí mientras pasa a y hat y arrojado para revertir nota. Intenta hacer esto un poco más legible. Muéstrale una forma de que podamos evitar esto en tan solo un momento. Algo bastante sencillo de hacer y simplemente mantener el código más legible, pero esto funcionará. Entonces ya podemos ver que a medida que entramos, vamos a pegarle a éste. Entonces tendremos ese código. Y entonces tenemos otro problema que podemos ver ha dicho que vamos a arreglar un poco estos a medida que pasemos. Pero lo principal es que cuando vuelvo a dar la vuelta y esa funcionalidad se está enfriando y comprobando más de una vez, siempre y cuando hayamos tenido ese retraso de 0.1 segundos. Y deberíamos verlo volver a suceder cuando tenemos algo aquí. Y eso es una bienvenida Perfecta. Bueno, aparte de que el murciélago está fluyendo hacia atrás como perfecto que funciona. De acuerdo, Entonces antes de finalizar y arreglar ese último problema, una cosa otra vez, estamos buscando bastante en esta serie de videos a una especie de limpio lejos para codificar esperanzadamente. Entonces si bien tenemos algunas cosas bonitas anidadas en funciones, todo aquí está muy bloqueado para hacer lo suyo. Yo soy una de las cosas que tienes bastante ya que un restado de planos es alto. Obtienes código de espaguetis y puede ser difícil de leer y mantener tu base de código. Y eso es cierto en definitivamente vienen ser si nada se pone en una función, si todo se coloca en el Gráfico de Eventos, si tienes looping y está aquí, lo que puede hacer mucho más difícil averiguar qué escolaridad, qué cuando viste agregar cosas diferentes en diferentes ramas y secuencias saliendo de esto y todo está buceando alrededor de las que algún punto se va a poner muy duro para trabajar en qué dirección está fluyendo tu lógica. Entonces, en cambio, lo que vamos a hacer es quitarle esto y esa no es una gran manera de salir adelante. Vamos a crear un evento personalizado aquí abajo. Entonces yo soy agradable, simple arreglo, cool este. Restablecer, dirección, comprobación de cambio. Por lo que lanzarlo se restablece en la convención de nomenclatura apropiadamente ayuda a simplemente golpear. Sabemos que esto va a estar enfriando algún tipo de funcionalidad de reset incorporado bastante del tiempo y Unreal, En este caso va a ser esta puerta de flujo y que lo hacen una vez por la noche. Entonces por supuesto a partir de aquí sólo vamos a tirar del retraso y estaremos enfriando y eso restablece la comprobación de cambio de dirección. Entonces nada demasiado salvaje. La mayoría de ustedes probablemente saltó a eso como el primer tipo de solución para ese tipo de función de looping. Ahora veamos. No soy sólo lee mucho, mucho más claramente. Lo mejor es que mientras aquí, ya que estás leyendo esto, si comienzas a agregar código más adelante, luces parpadeantes y expandiendo esa lógica. Y esto se está poniendo mucho más tiempo yendo a diferentes funciones. Lo principal ahora es que no tenemos que comprobar si este Ys aleatorios va de una parte de tu blueprint a otra, haz doble clic en el nodo, y te llevará aquí y podrás ver qué va a enfriar esto. Tratando de mantener el código lo más limpio, legible y reutilizable posible. Entonces eso va a hacer lo mismo. Sabemos que todavía hay un error para solucionarlo. Y seré honesto, no estoy muy seguro de por qué lo que hemos pasado es que el bate sigue volando un poco hacia atrás en algún momento. Entonces sucedió eso, así que me pregunto si tiramos aquí una cadena de impresión, asegurándonos de que solo estamos haciendo esto una vez. Puede que aún sea algún alto cayendo a través de esto, tal vez éste no sea lo suficientemente largo. Y podría ser que estamos alterando esta mayoría de los tiempos de espera de CPU, pero tal vez no totalmente en la dirección de algo. No estoy seguro de lo que está pasando, así que vamos a imprimir esto, a ver qué está pasando. A medida que Ernie invitado viendo un hola regresa allí. Eso parece estar sucediendo mucho más en esta esquina. Sólo están consiguiendo uno también. De acuerdo, entonces eso no está pasando, lo que significa que lo haría una vez está funcionando correctamente. Entonces eso es algo bueno al menos. Y voy a mantener este bit y como una especie de tutorial de depuración, esto no se pretendía que a veces, quiero decir, así es como va la programación. El desarrollo no suele ser demasiado sencillo. Por lo que esto podría ser bastante útil ojalá como ejemplo de aprendizaje. Entonces la única otra cosa que estamos haciendo, estamos volteando nuestro cheque booleano, oye, no tuvimos ni una sola vez me retrasé, que sabemos que está funcionando. Entonces significa que esto Va a tener que ser algo que ver con la lógica en nuestra dirección de giro frente. Entonces solo haremos doble clic aquí y echaremos un vistazo a lo que está pasando. Entonces si entramos, estamos tomando la dirección actual y ya puedo ver el problema, ¿de acuerdo? Entonces porque tenemos este tipo de rareza que mencioné antes, al menos creo que eso sería porque tenemos al enemigo potencialmente enfrentando la dirección opuesta. Y cuando nos movemos en cuanto empezamos a jugar, potencialmente estamos volteando esto. Es que también tendría sentido por qué ocurre algo cuando nos movemos en la dirección derecha. Porque ya aplicamos la mayoría de las aplicaciones en base a la escala actual del sprite. Entonces porque estamos tomando eso en contexto y volteándolo de esa manera, bueno, creo que lo estamos haciendo es que estamos multiplicando un negativo por negativo en algunos casos, lo que no está cambiando la dirección que tenemos que ir. Entonces si lanzamos en una pesadilla absoluta, así aún queremos obtener el valor, pero nos aseguraremos de que adivinemos el valor absoluto devuelto. Entonces eso significaría que en los casos en que eso está sucediendo, deberíamos estar recibiendo un negativo multiplicado por un positivo y luego todavía no voltear en la dirección correcta. Entonces, sin embargo, déjame ir. Podríamos ver que esa era la dirección problemática antes. Y luego nos vamos de nuevo. Por lo que solo vuelve a revisar un par de veces más. Dejaremos que esto golpee todos los diferentes movimientos. De acuerdo, entonces el tiempo de retardo que tal vez fue un poco demasiado bajo porque pudimos cambiar rápidamente plomería eso lo hizo ver como yo estaba interactuando con el nivel bastante orgánicamente de una manera donde volteó que estoy volteando derecho hacia atrás moler y seguir adelante. Entonces creo que voy a seguir jugando. Ese retraso más pequeño parecía funcionar bastante bien, que un poco de un toggle, posiblemente podríamos haberlo tenido, así que es un poco más largo. Pero lo principal era el valor absoluto sólo un problema ahora. Por lo que no era un tema para empezar porque rara vez tienen una regla siseando una. Pero una vez que hemos volteado un par de veces, queremos asegurarnos de que estamos tomando en cuenta la multiplicación correcta aquí para la suma de los casos donde podemos estar tomando esto ya moviéndose a la derecha? Porque hemos tenido que voltear esto al principio porque técnicamente el sprite está enfrentando la manera equivocada de estar avanzando para empezar, solo queremos asegurarnos de que esto se actualice para dar cuenta de eso. Y con eso, eso parece estar funcionando. Por lo que solo comprobaremos dos veces cómo funciona esto cuando lleguemos al útero lejano. Y luego iremos con la izquierda en una especie de bucle infinito. Creo que esto es más de algo para que arreglemos en el diseño de nivel aquí o en la colocación del bate. Creo que eso se ve mejor. Por lo tanto, apuntan a retraso. Creo que al menos hacerlo ir entre este punto y este punto se ve mejor que tenerlo voltear y luego ir arriba y otra vez. Idealmente, lo que vamos a hacer de todos modos es que no lo vamos a colocar en algún lugar donde pueda meterse en ese tema. Yo lo colocaría directamente en línea con esto y yo aunque golpee eso, vamos a ir entre estos dos muros. Y de hecho, podríamos también, podríamos mantener 1.5 y así poner uno aquí abajo. Por lo que ahora tenemos múltiples enemigos y el nivel. Y de nuevo, así se puede ver que realmente no estoy teniendo ese tema. Van a estar pegándole a las cosas bastante cara. que yo creo que va a ser un arreglo bastante bueno con eso hecho que estamos bastante listos para saltar a las situaciones de combate entre el jugador y el enemigo, El causar y recibir daño entre las dos clases diferentes. Lo único que sobresale es que ya hemos hecho nuestras anulaciones para la clase enemiga. Tenemos nuestra funcionalidad enemiga murió. Y en la clase de espalda desde la clase base, solo quieres volver a comprobar que los murciélagos enemigos también han ayudado. Por lo tanto, de nuevo, hemos establecido esto en un valor predeterminado 100 en la clase base. Si quieres cambiar eso, oye, podrías cambiar eso para ser anulado en cada clase personalizada, cada clase hijo del cliente anulando el estado predeterminado. Y recuerda que dejamos la salud sola ya que eso estará adivinando ambientado en la construcción del guión a través de la clase cool to the parent antes de que realmente terminemos jugando. Entonces si quisieras que los murciélagos tengan muy baja salud o algo así, entonces podrías cambiar eso. Pero con eso hecho, creo que ya estamos listos para irnos y empezar a ver cómo podemos conseguir que el jugador y el enemigo interactúen entre sí. 16. 16 - Damen: Antes de saltar de nuevo a la clase de jugador para conseguir parte del daño entre el enemigo sobre el propio jugador tipo de enganchado y trabajando. Me doy cuenta de que tipo de cepillado sobre una cosa que puede haber dejado a algunos de ustedes preguntándose por qué estábamos haciendo cierta cosa en nuestro giro de dirección de frente. Entonces dentro de esta función, acabamos de ver que necesitábamos este valor absoluto para multiplicar la escala actual, la escala que queremos que sea la escala objetivo. Es posible que hayas pensado que esto fue un poco más de complicar las cosas. Y lo es, probablemente has visto que lo más fácil que podríamos haber hecho es simplemente enchufar esto. Entonces para movernos a la derecha, vamos a establecer la escala para que sea una cosa. Y si nos movemos por la izquierda, vamos a fijar la escala para que sea otra. Lo que me olvidé de mencionar hace un momento es la razón por la que haría esto. Bueno, la razón por la que he montado de esta manera es si te imaginas un juego como Mario, lo que podrías tener una especie de súper poder que te escalará o la forma en que funciona el sistema de salud. Incluso tú tienes mini Mario y yo soy más grande Mario. Podemos hacer esto simplemente cambiando la escala del sprite. También podemos hacer cosas como la animación. Si no tuviste el dron frames para agregar squash y stretch, es posible que estés haciendo algo donde estés animando la escala para comprimirla cuando saltes y algo así como aplastarla cuando estás aterrizando. Entonces la razón por la que estoy haciendo esto es que podemos dar cuenta esas actualizaciones si el sprite se está cambiando alguna vez durante una animación, durante un poder, no estamos obligando a que esto sea uno porque quizá hayamos duplicado la escala de nuestro sprite. Lo que vamos a hacer en su lugar es que vamos a averiguar cuál es la escala actual. Entonces si nos hemos duplicado en tamaño, entonces vamos a multiplicar esto por el 1, 1 negativo. Por lo que todavía estamos recibiendo esa escala aumentada o disminuida de nuestros sprites. Estamos tomando eso en cuenta y multiplicándolo juntos para voltear la báscula. Entonces por supuesto, si sabes que eso es algo que nunca harías. Si estás seguro de que no vas a estar jugando con la escala del sprite o lo que sea que estés usando esta lógica, puedes muy segura entonces simplemente enchufa el retorno de tu nota selecta en el cráneo y trabajalo de esa manera . Sólo algo que quería mencionar, como me acabo de dar cuenta, eso podría ser un poco confuso y dejar a la gente preguntándose por qué no solo lo estamos haciendo ese tipo de forma manual y rígida con la línea de direcciones. Lo que vamos a hacer es saltar a nuestra clase de jugadores. Vamos a empezar a mirar a grabar la dirección en la que hemos estado golpeando. Se habrán golpeado las cosas. Y dependiendo de cómo se registre esto al momento del impacto, vamos a decidir o bien si la placa está recibiendo daño o proporcionando daño. Ahora en este caso, para volver a simplificar las cosas, voy a poner todo esto en una sola clase. Por lo que tendremos al jugador completamente en control si se está aplicando el daño, recibió qué duda, de nuevo, en un proyecto más grande, más lleno, quizá quieras tener algo así como una clase dañada en daño ahora para disparar alguna comunicación entre las clases, pero vamos a tratar de mantener toda la lógica en un solo lugar en esta instancia. Por lo que lo primero que necesitamos hacer muy similar a nuestra configuración de detección Vamos. Vamos a conseguir el componente cápsula, pero cualquier colisión que se registre en esta clase, vamos a usar el hit no compartimental ya que sabemos que estos se están bloqueando entre sí. Por lo que estos serán eventos golpeados, no eventos superpuestos. Y lo primero que quería hacer es lanzar contra la otra cosa que estamos golpeando y comprobar que es un tipo de enemigo al que hemos golpeado. Entonces lo estamos haciendo usando el elenco a guión bajo BP. Y voy a usar la base enemiga en lugar de enemigo. Pero así de nuevo, si tienes una subclases creadas de la clase base, eso significa que eso dará cuenta de todos los diferentes tipos de enemigos heredados con este elenco comprobado si eso es cierto. Entonces si lo que hemos golpeado es un enemigo, vamos a necesitar hacer algunas cosas, revisando algunas variables. Trabajando con los datos basados en esa clase a medida que pasamos. Entonces no voy a hacer es más que poner constantemente de este pin o esta luz de pin a, sólo vamos a promocionar esto a una variable. Y yo, esto también nos ahorra el potencial de necesidad de refundir también. Le daré un nombre a éste, solo llamaré a éste hit y luego a la href. Y luego desde aquí queremos empezar de nuevo tirando de parte de esta información de hit. Entonces vamos a dividir el bolígrafo de estructura para el hit. Y queríamos encontrar alguna información sobre la dirección en la que se ha proporcionado el hit. Entonces en lugar de retroceder en el hit Normal que hemos utilizado en el pasado. Te voy a mostrar otra forma de que puedas ver este tipo de cálculo hecho son algunas matemáticas vectoriales muy simples para encontrar o determinar en qué dirección se ha detectado un impacto de colisión. Entonces es muy, muy sencillo. Todo lo que necesitamos hacer es que vamos a conseguir la ubicación de nosotros mismos, o en este caso, la ubicación de lo que hemos golpeado y luego quitarnos de la ubicación de nosotros mismos. El valor devuelto de ese cálculo vectorial va a ser la dirección en la que el hit de código. Entonces tenemos esa información aquí. Podemos ver la ubicación golpeada. Entonces esa es la primera parte del cálculo. Y un tirón de esto y conseguir el vector menos un vector. Y luego como mencioné, la segunda parte del cálculo es nuestra propia ubicación. Por lo que podemos tirar de este pin y sólo podemos buscar el acto get at location return value. Es un bonito y sencillo. Entonces esto va a tomar la ubicación mundial de lo que hemos golpeado, quitarnos nuestra ubicación lejos de eso. Por supuesto, el valor devuelto de eso será la dirección en la que nos han golpeado. Ahora vamos a hacer otra depuración y vamos a imprimir cadena esto porque esto no va a ser muy legible, supongo o hacer que sea muy fácil trabajar con este valor. Entonces en la cadena de impresión, simplemente bajaremos esto aumentaría la duración aquí para que podamos ver por qué esto puede no funcionar, porque queríamos encontrar a partir de esta información desde la dirección en la que nos han golpeado. Y queremos una especie de valor simple con el que siempre podamos probar, que nunca estaremos dentro de un cierto rango. Y básicamente vamos a estar buscando para ver si el hit ha sido detectado desde abajo al jugador o ha sido detectado desde el lado del planeta. Si está por debajo del jugador dentro de esta tolerancia, entonces sabemos que eso se clasificará como causando daño al enemigo. Entonces tenemos, de nuevo para ese tipo de Mario preguntar, saltar sobre algo que ha tenido causará ese daño. Y si camina hacia el lado de nosotros, entonces eso será clasificarnos como dañándonos a nosotros mismos. Y veremos cuando probemos esto, por qué este puede no ser el tipo de valor con el que queremos trabajar de inmediato. De acuerdo, así podemos ver algunas cosas. Probablemente ver lo que está pasando en segundo plano es que estamos recibiendo algunos números bastante grandes devueltos. Lo que realmente queríamos hacer es otra vez, nos estamos familiarizando mucho con trabajar con valores normalizados están entre un rango de 01. Sólo un poco lo que estoy tratando de señalar aquí es que necesitamos recordar siempre lo que sería 67 en relación al eje x va a ser 67 grados, estaba trabajando en la escala de algunas cosas. Entonces lo que vamos a hacer es ir a clase tipo del fondo de esto como ser 0. Y entonces tenemos un grado de entre 01 a un lado, o entre 0 y menos uno al otro lado. A modo de ejemplo, eso es realmente lo que vamos a estar buscando hacer. Entonces la forma en que podemos hacer esto es en lugar de usar el número directamente, vamos a sacar de esta estructura aquí. Y sólo vamos a normalizar este valor. Esto nos dará algo muy parecido a lo que tuvimos con el hit normal sabio entre 01, dependiendo de la dirección que esté teniendo esta información proporcionada. Aquí la principal diferencia es cuando enchufemos esto, voy a darle a esto una tolerancia de 0. Y la principal diferencia que verás aquí es que cuando estemos haciendo el cálculo de esta manera será adivinar el cálculo relativo al ACTA. Entonces la cosa que estamos controlando. Es la dirección desde la que vamos a ver el hit. Entonces deberíamos estar esperando ver un número menos si estamos saltando encima de algo y un número positivo, si nos está golpeando desde arriba, si saltamos con la cabeza y viceversa, entonces podemos decir si nos está golpeando desde la izquierda o la derecha Muy, muy fácilmente. tanto que con el enemigo, pero lo que estábamos haciendo es este golpe Normal en realidad estaba devolviendo la dirección a la que se enfrentaban los objetos que impactamos. Si recuerdas eso. Voy a saltar de nuevo en 90 pulsa Play. Ahora se despejaron las depuraciones. Y este es un poco demasiado alto para que nos peguemos, pero podemos ver que eso es como se esperaba. Hemos golpeado desde abajo, así que estamos obteniendo un valor menos en el zed. Y le pegamos a que desde arriba es un poco difícil deshacernos de estos trabajando. Entonces podemos ver que tenemos otra cosa útil en el piso, hay que decir es que estamos recibiendo menos 0.15 cuando nos está golpeando ligeramente desde el costado del eje z. Y estamos consiguiendo nuestro entre 0. Entonces si lo dejamos, nosotros de la izquierda es casi menos uno, así que sabemos que es de la izquierda. Y si te golpean de la derecha, entonces estamos recibiendo uno casi positivo. Entonces lo que queremos hacer es trabajar este tipo de tolerancia donde podamos saltar sobre ella. Podemos ver que mientras salté sobre la cabeza del murciélago que estamos consiguiendo casi menos 1 o simplemente tengo exactamente menos uno. Por lo que ese sería el punto ideal para aplicar daño a la y clase que tiene signo de odometría para que el bot lo haga. También queremos tomar en cuenta con estos valores que podemos conseguir mi, bueno, queremos que nuestro alcance reciba daños también lo sería. Entonces podemos ver que estamos obteniendo muchos valores diferentes aquí. Algunos de ellos pueden estar justo entre una toma y recibir daños. Entonces eso es lo que vamos a hacer en este paso. Entonces eso es lo que necesitábamos hacer para conseguir nuestra ubicación que ahora tenemos la información con la que trabajar. Lo que haré es promocionar esto a otra variable. Y voy a nombrar esa nueva variable dirección de golpe. Nuevamente, vamos a necesitar este completo múltiplo cálculos a medida que nos acercamos más a la derecha de notas que mantengan las cosas bonitas y ordenadas. Los faros iban a todas partes. Simplemente estaremos promoviendo estas dos variables a medida que avancemos. Este, voy a poner unos comentarios por ahí sólo para que recordemos lo que está haciendo esto. Por lo que es agradable y simple sólo recordarnos, esto es conseguir el cálculo desde qué dirección nos han golpeado. Y lo más solo va a agarrar estos y mover esto un poco hacia abajo. Ya sé que vamos a necesitar alguna lógica de ramificación para decidir qué hacemos con el enemigo cuando el golpe o la planta cuando los golpes, dependiendo del valor que se devuelva. Entonces desde aquí, vamos a hacer nuestra comprobación de sucursal y esto sería y. primero dividimos la lógica para ver si estamos proporcionando o recibiendo daños. Y la forma en que lo haremos porque conseguiremos nuestra dirección de golpe, partirá el pasador de la estructura. Y la forma más fácil de comprobar esto es que vamos a basar la mayor parte de esto fuera del eje z. Ver uno muy sencillo para empezar. Vamos a modificar este valor a medida que pasemos. Pero por ahora voy a comprobar si esto es menor o igual a exactamente 0. Entonces podemos dejar esto cuando yo, esto podría necesitar algunos retoques a medida que avanzamos. Entonces si conseguimos que se devuelva ese valor, entonces lo que vamos a hacer esto sería clasificado como el daño a la clase enemiga. Entonces podemos tirar de aquí. Entonces si esto es cierto y conseguimos que se devuelva ese valor, esto sería clasificado como el daño al enemigo. Por lo que voy a muy sencillamente desde su alberca, desde el verdadero pin de ejecución tanto por el daño aplicado. Recuerda, no necesitamos saber a qué clase le está aplicando daño. Y ya tenemos en el blanco piojos o el médico de daños en este caso será nuestro enemigo golpeado. El daño mental en este caso, sólo voy a garantizar que matamos al enemigo. Entonces tiraré de esto, buscaré conseguir salud. Entonces un poco de una forma engañosa de hacer esto, pero sólo vamos a pasar en lo que sea que sea la salud actual de los enemigos como la cantidad de daño a aplicar. Esto por lo menos dos. Probemos esto muy rápidamente y van a haber algunas cosas que quiero hacer además de las muertes. Pero tenemos el sistema de muerte instalado en el enemigo. Por lo que esto debería funcionar como pasamos y probamos que conseguimos. Tenemos un enemigo desapareciendo. Y si golpeamos a éste desde algún lugar arriba, menor o igual a, recuerda, así que tenemos un tipo de alcance muy amplio que entonces podemos ver que el daño se está aplicando al enemigo y están siendo destruidos porque tenemos esa funcionalidad En el enemigo, pero clase justo aquí sobre el enemigo murió. Ahora algunas cosas que quiero hacer antes de esto, y esto es una especie de pulido y refinamiento. Paso 2, el sistema de impacto que vamos a tener. De nuevo, cuando veas cosas como Mario y Sonic seguirán cayendo de nuevo sobre estas bastante. Hacen algunas cosas sencillas, que es, le quitarán un tipo momentáneo de golpe de impulso, tal vez detengan la entrada por un milisegundo muy pequeño, y eso aplicará impulso. Entonces parece que me sale rebotando porque por el momento, estamos pasando por estos. Y a medida que pasamos por el enemigo, realmente no se siente como si hubiera pasado mucho. Simplemente un poco de relleno está desapareciendo. Y éste es difícil saber si eso se debió a lo que estamos haciendo, si realmente hemos interactuado con ellos o si acaban de salir de la existencia. Entonces lo que vamos a hacer, hay unas cuantas cosas que queremos, así que empieza con tipo de carrozas. Entonces lo primero es que la velocidad siempre se está rastreando en el movimiento del personaje. Y creo que porque esto no está basado en la Física, puede que esto no sea un problema, pero por si acaso cambiemos algo en el futuro, vamos a llegar al movimiento del personaje y establecer la velocidad en 0. Entonces muy simplemente consiguiendo cómo, por qué se está rastreando la velocidad en el movimiento del personaje y lo que sea que sea en este momento, vamos a poner eso en 0. Creo que lo más importante para la forma en que hemos archivado configurar es que vamos a arrastrar de nuevo del movimiento de personajes y vamos a detener el movimiento de inmediato. Toma la entrada que hemos proporcionado actualmente, ya sea yendo de izquierda a derecha, Sarah está fuera de la velocidad y detiene cualquier forma de movimiento que se rastrea en el actual componente de movimiento Too. Entonces esto nos va a dar esa congelación momentánea. Y luego lo último antes de destruir al enemigo, he dicho que vamos a sumar algún impulso. Entonces de nuevo, voy a Control W, el movimiento del personaje ya que va a necesitar esto otra vez, voy a tirar de aquí y llamar a la función de impulso add. Simplemente conectaré estos en el medio para asegurarnos de que esto haga algo que vamos a necesitar para tomar el cambio de velocidad. Y solo para mostrar una muy especie de respuesta extrema a que esto suceda, agregaré algo así como 500 unidades auto impulso para añadirle al jugador cuando se une está fuera del sombrero enemigo. Ah, ahí vamos. Entonces me toqué en el lugar equivocado, pero ustedes vieron que conseguimos el impulso hacia arriba que así que prueba este. Y luego conseguimos, quiero decir, ella se ve como, oye, pensé que iba a ser un poco más extrema 500 looks ya que podría ser un valor bastante bueno para ir con eso. Entonces estamos deteniendo ese impulso que tenemos. Estamos planteando el, el personaje momentáneamente y luego aplicando ese impulso hacia arriba. Y de hecho, creo que eso se ve bastante bien. Iba a hacer algo más complejo con esto. Tomando en la dirección que hemos golpeado a las cosas de agregar un impulso o derribar. Pero creo que por ahora eso se ve bastante bien como respuesta a saltar de la cabeza del enemigo. Entonces con eso, creo que esta es una sección casi envuelta. Entonces vamos a poner un comentario alrededor de esto sólo para otra vez. Eso es lo que está haciendo esto. manera muy sencilla, sólo voy a decir que esta es la lógica, contabilizar lo que pasa cuando dañamos al enemigo? Ahora han venido a la mente un par de cosas aquí. Algo que podríamos querer hacer similar a nuestro enemigo, pero vamos a Festival, tirar un debido una vez por noche alguien tiene. Entonces fui a asegurarme de que no estamos repitiendo esto una y otra vez. Y otra cosa es que queremos asegurarnos de que estamos rastreando esto menor o igual a consultar aquí. Ahora por el momento lo estoy adivinando. Con lo que estamos trabajando, algo muy sencillo que podríamos haber hecho se queda en esa cadena de impresión. Y cada vez que golpeamos algo, cuando estamos probando cosas diferentes, cómo podemos tomar nota de lo que se siente bien, que tendría clase hace algo que habríamos sentido como algo más indulgente para clasificar ya que el planeta enfría el daño , um, cuál de esos pudo haberse sentido mejor para ser un daño que recibe del enemigo. Entonces voy a tirar de aquí y hacemos una cadena de impresión y muy similar a antes, solo voy a poner esto para que sea mucho más alto durante la duración para que podamos leer esto un poco mejor. Y lo que haré es tirar en dirección cadera pero el pasador de estructura y en lugar de conseguir toda la información, porque eso se ve un poco engorroso en pantalla. Sólo estamos realmente interesados en esta etapa en el eje z. Entonces vamos a enchufar eso al zed. Y como he dicho, una vez que hayamos hecho esto, sólo vamos a asegurarnos de que solo hagamos todo esto una vez. Y no creo que tengamos que restablecer esto por el momento, al menos por el momento cuando solo estamos probando, esto significa que solo podremos probar contra un enemigo, pero eso está perfectamente bien. Es decir, si quisieras, podríamos, mientras no tenemos todo listo y listo para salir, siempre podemos sacar de estos. Entonces si esto es verdadero o falso, esta etapa siempre restablecerá esto y sólo vamos a desenganchar esto más adelante porque por supuesto nunca queremos que esto sea una especie de código listo de producción con el que estaremos trabajando. Entonces voy a entrar aquí y podemos volver a probar. Sabemos que esto está funcionando pero el 0, 1, 2 que se siente por ello, ¿no? A lo mejor un poco indulgente. Y por supuesto 0.9 es definitivamente lo suficientemente alto que así emparejado directamente en la parte superior de la culata. Es ahora a medida que pasamos, podemos probar esto, podemos retocar y podemos empezar a ver. Entonces digamos que el valor de menos 0.1 podría sentirse bien. Entonces ahora si empezamos a hacer algunas pruebas más con el daño del jugador y encontramos que eso no se está activando cuando sentimos que será, entonces obtendremos alguna información siendo alimentada por cuidados con los que podemos trabajar. Entonces por el daño, vamos a hacer alguna lógica muy similar. Vamos a querer una vez más detener todos los movimientos. Por lo que vamos a entrar en cuenta para la velocidad y el movimiento desde el Componente de Movimiento de Carácter al mismo tiempo y también le aplicaremos algún impulso. Por lo que en realidad podemos copiar y pegar todas estas dinámicas presionando de nuevo Control W, para copiar todas esas, voy a quitarle esto. Entonces necesitamos realmente enganchar esto, en tan solo un momento. Y, y lo que queremos hacer, creo que esto va a ser exactamente lo mismo. Vamos a querer hacer un poco de cálculo para el impulso de que no queremos que esto vaya recto arriba. Lo que queremos cuando la planta está dañada. Y sobre todo porque el se ha fijado para moverse constantemente hacia nosotros. No queremos que sea en este estado donde se pare el movimiento y estaremos atrapados en este tipo de estado de ser constantemente golpeados por el enemigo, lo cual obviamente va a ser bastante molesto para el plan. Simplemente voy a mover el bate Dine ya que esto es muy difícil de probar contra. Entonces si entramos a tipo de demostrar cómo sería esto y los murciélagos se quedaron un poco atascados. De acuerdo, estamos probando, es éste, ese. Por lo que ya podemos ver en realidad esto es en esta etapa. Tenemos esa etapa en la que no miré cuáles eran esos valores. Pero sabemos que esto va a ser un poco demasiado indulgente. Entonces no intentaba matar a una de las mejores puñaladas. Sí lo mató. Por lo que 0.4. Y de hecho, para NIH, vamos a saltarnos por completo a los estudiantes porque puedo ver que eso va a causar algunos problemas. Entonces sólo voy a asegurarme de que los murciélagos se alinearon. Y quiero que éste sea fácil de probar. Entonces lo voy a poner aquí abajo. De acuerdo, así que no queremos que el jugador vaya directo hacia arriba. Porque si subimos así hacia arriba, se puede ver que como que conseguimos una matanza gratis después de perder un poco de Salud. Vamos a conseguir esa matanza libre en el enemigo. Entonces no es un tipo ideal de respuesta a eso. Y lo que vamos a hacer es asegurarnos de que tomemos en cuenta la dirección que nos han golpeado y vamos a aplicarla algo derribada para nosotros. Por lo que empujándolo al jugador lejos del enemigo, lo que va a dar al enemigo tipo de ponerse al día con nosotros y no ponernos en un bucle constante de perder salud y ser golpeado por el enemigo sin tener ningún control sobre nuestro jugador. Entonces para hacer esto, voy a sacar del impulso y hacer un vector. Lo principal que queremos cambiar aquí va a ser el valor x al que, eso va a estar aplicando una fuerza. Entonces lo que vamos a hacer es conseguir la dirección de hit. Dividiremos aquí el pasador de estructura, tiraremos de aquí y obtendremos un flotador multiplicado por un flotador. Y entonces realmente vamos a necesitar otra multiplicación por flotación. El motivo es que queremos asegurarnos de que vamos en una versión negativa la dirección opuesta desde la que nos han golpeado. Entonces vamos a tomar lo que fuera esto, multiplicarlo por menos uno, y luego multiplicar esto por un valor que creo que va a ser más o menos igual que nuestro golpe de vuelta aquí. Entonces si ponemos esto en 500, veamos cómo se siente eso, y podemos entrar y probar eso contra el murciélago. De acuerdo, entonces eso no va a funcionar porque nos están empujando por el piso. Necesitaremos algo de ese empuje vertical hacia atrás también. Por lo que vamos a ser empujados hacia arriba y hacia atrás para asegurarnos de que podemos conseguir aquí se acumule algo de velocidad. Y eso es más o menos exactamente lo que quería. Por lo que se puede ver que ahí como la SS tipo de cabeza encendida, empuja hacia atrás y hacia arriba, lo que nos da esa velocidad que necesitamos para escapar y escapar del murciélago. Y significa que no vamos a tomar múltiples golpes constantemente y estar en este tipo de estado de estar atascado con el enemigo. Entonces queremos asegurarnos de que esto suceda también desde el otro lado. Entonces porque estamos invertiendo ese impulso que está funcionando perfectamente. Y de nuevo, creo que ese es más o menos el tipo correcto de fuerza que se aplica a ambos lados. Obtenemos ese lindo hit desde arriba. Entonces creo que lo que podemos hacer, porque los que trabajan, solo promocionaré esto a una variable, las 500 que tenemos, y llamaré a esto nuestro derribado para nosotros. Podemos cambiar esto por diferentes casos si quieres. Bueno, creo que en este estado todos funcionan bastante bien al mismo valor. Por lo que también dividiré el pin de estructura este en lugar de usar estos números mágicos. Por qué podríamos olvidar lo que eso está haciendo en realidad. Podemos controlar dragón, ojalá estos valores aquí, que simplemente no me deja hacerlo. Y podemos enchufar eso para que sepamos que lo que estamos haciendo es aplicarnos un knock back para nosotros como un impulso al personaje cuando los enemigos son golpeados. Por lo que agregar estos nombres de variables solo mantiene cosas que de nuevo, un poco más legibles y fáciles de mantener el código. Entonces paso final, tenemos nuestro impulso calculado. Ahora, otra cosa que queríamos hacer, vamos a volver a Controlar W, el daño. Y como lo hemos hecho en el pasado con nuestra prueba para la salud, recuerda que teníamos esto en la entrada. Sabemos que podemos esencialmente sólo toma esto en realidad. Este sería un buen momento para cortar el código de la base a Stein aquí, porque queremos volver a aplicarnos daños a un cierto valor. Entonces diremos que es cuando t va a estar perfectamente bien. Y como dije, no queremos que esto esté en el juego final, así que vamos a quitar eso. Y ese es un momento perfecto para ver recordar hacer eso. Para que podamos entrar. Y si estamos siendo golpeados desde un costado, cuando empiezo a perder salud, igual si nos golpean desde arriba, ahí sucedió algo extraño. Entonces veremos eso en un momento. Pero que conseguimos de un lado, al menos estamos consiguiendo que nos quiten ese daño. Si nos golpean desde 0, si los golpeamos desde arriba, entonces nos estamos quitando esa salud. Echemos un vistazo final aquí. Vamos a desenganchar este nueve. Creo que engancharemos la copia de seguridad del V1 y necesitamos encontrar un buen nombre para lo que esto está haciendo. Y llamaremos a eso desde ambos el, por lo que queremos que ambos de estos se restablezcan que hagan una vez que post-Civil establezca un comentario en torno a esto. Tan bonito y sencillo, sólo recuérdanos esta es la razón por la que se está contabilizando el daño de la planta. Esto es una especie de hacer un cheque de éxito aquí. Entonces lo que haré, y de hecho, sólo para asegurarme de que esto no se esté actualizando más de lo que debería. Yo sólo voy a cambiar la dirección o el lugar que estaba, caso de que lo hagan una vez se enfríe. Si esto es exitoso, entonces sólo queremos establecer la dirección de golpe una vez por enemigo al que golpeamos. Y si ese es el caso, crearemos otros eventos personalizados. Nombramos a éste, reset, hit check. Como de nuevo, eso es más o menos lo que estamos haciendo. Estamos reevaluando la capacidad de comprobar si hemos golpeado algo reescrito, tenga en cuenta eso, y llamaremos a esa función en ambos casos aquí. Y queríamos asegurarnos de que hacemos esto en lo verdadero y lo falso. Por supuesto, si nos olvidamos de hacer esto una vez, entonces podríamos reiniciarlo después de que los enemigos hayan sido dañados. Pero si recibimos daño, entonces eso no va a ser restablecido y nunca podremos volver a sufrir daño. Asegúrate de enchufar esta copia de seguridad, probablemente pueda omitir la cadena de impresión por ahora. Creo que lo que encontré funcionaba bastante bien, en algún lugar entre menos 0.25. Si piensas por qué eso está en el jugador, eso va a ser cuando silbemos, deambulen por esta zona en la Clase I desde abajo hasta nuestro tipo de esquinas del jugador. Ese va a ser un punto dulce por aplicar daños. En cualquier otro lugar vamos a estar esperando que los enemigos nos dañen. Que estamos recibiendo daños ahí. Y eso es sentirse bastante bien. Entonces creo que así es más o menos como queremos que esto vaya y se aplique. Por lo que eso se sintió como un buen punto tomar daño. Ese era yo chocando con ellos. Allí se aplicó un poco demasiada fuerza. Puede haber algunas rarezas con la fuerza que se está aplicando a algo para que juegues y pruebes eso. Pero creo que en lo que va el resultado hit respuestas, y ¿dónde están los puntos dulces para la aplicación y la toma de daños? Estoy bastante contento con los de esta etapa. Nuevamente, todo esto es un poco pensado para apuntarte en la dirección de la forma en que puedes empezar a buscar crear estos efectos. Ya se va a esperar que tome esto y mejore lo que aquí se está cubriendo. Realmente lo hago tuyo con tu propio tipo de sistemas de daños a la salud y los diferentes efectos y cosas que se están jugando. Algo que me vino a la mente en realidad era mirar esto es que esto todavía va a ser problemático. Esto no es realmente hacer nada. Entonces sólo un retroceso rápido de, acabo de decir que vamos a borrar el reinicio de la cabeza de Jack porque todo esto está sucediendo tan rápido que esencialmente, a menos que los enemigos muriendo, eso funcionaría en que el enemigo muriera porque en cuanto eso ha pasado, hemos perdido nuestra referencia de todos modos. Y cualquier retorno falso, solo voy a restablecer esto para que sea un valor nulo. Pero potencialmente tener la cabeza de juego podría suceder varias veces porque esto está sucediendo en una parte minuto del milisegundo. Esencialmente, lo que queremos hacer es a partir de esto independientemente de la respuesta. Por lo que antes de entrar en nuestro cheque de sucursal, vamos a lanzar una secuencia. Y a partir de la secuencia vamos a permitir que ejecute sus lógicas, compruebe lo que está siendo golpea de nuevo. Y luego muy similar al enemigo, volver a lo que realmente queríamos hacer esto es un retraso. Entonces asegurándonos de que sí tengamos unas pequeñas albercas antes de otro cheque. Y eso fue lo que el enfoque inicial. Entonces yo como que pasé por alto aquí momentáneamente no estaba contabilizando que queremos este tipo de retraso para que por un cierto periodo de tiempo no seamos capaces tomar o incluso calcular nuevos resultados de hit. Y luego vamos a hacer lo mismo. Y esto también significa que sólo necesitamos hacer esto una vez. Por lo que ahora podemos hacer nuestro reinicio hit check aquí abajo. Y podemos hacer eso solo una vez, independientemente de los resultados aquí, voy de nuevo, podemos jugar y asegurarnos de que las cosas no estén pasando demasiado rápido para que este 0.1 de segundo sea demasiado bajo. Pero creo que eso va a estar perfectamente bien. Entonces un poco lo he hecho incluso, se puede ver que por insulina ellos y eso fue un retraso tan pequeño antes de que esto se restablezca que todavía vamos pegado segunda vez. Entonces creo que esto va a estar bien. Lo principal, como dije, este caso habría funcionado. Este caso no hubiera funcionado porque eso sucede tan rápido, lo está restableciendo de inmediato y todavía podemos conseguir que esos múltiples hits se hagan por colisión check aquí. 17. 17: Con el sistema dañado y yo totalmente implementado. Tenemos al enemigo de vuelta a recibir daño y de hecho ser asesinado o sacado del mundo. Tenemos la mayor parte de esa configuración y lista para ir por el jugador. Por supuesto que por el momento la plaza sólo recibiendo daños todavía iba a llamar a esta cadena de impresión predeterminada, que es sólo recordarnos en la función de yoduro de juego, entonces no se ha configurado nada. Entonces vamos a saltar por ahí y podemos empezar a hacer que esto funcione. Y consideraremos lo que hay que hacer para el planeta murió en el escenario y cómo podemos implementar esto. De acuerdo, entonces lo primero es que sabemos que ya estamos rastreando esto. B es valor muerto, que va a ser bastante importante para nosotros. Por lo que eliminaremos la cadena de impresión para empezar. Atacaremos, el B está muerto. Y sólo nos aseguraremos de que esto sea cierto. Entonces otra vez, que sepamos que todos nuestros cheques o si debemos o no tomar algún daño adicional se basa en esto. En realidad podemos quitar esto de, oye, no necesitamos hacer esto dos veces. Esto probablemente encajaría un poco más bien dentro de la función manejando la noche de yodo. Pero esto significa que ahora se rastrea esto y fuimos cualquier daño más grande y fuimos a jugar esta respuesta que podría montarse no más de una vez. Por lo que dentro de alicates muertos, aplican muerto. Vamos a poner el booleano aquí. Esto es justo como mencioné, un poco más limpio. Ahora lo primero que creo que quiero hacer es tomar la onda de entrada de la plaza. No queremos que puedan seguir corriendo en ningún tipo de entrada final a eso. Entonces lo primero que vamos a hacer es llamar a una función en el planeta, controlar eso. Entonces usamos el controlador get planet y llamaremos a la función de entrada de deshabilitar. Tan solo asegúrate de que esto esté enganchado al lugar correcto. Por lo que el controlador del jugador va a ser el control PI, el objetivo, y el objetivo real para que la entrada sea desactivada es nosotros mismos. Entonces ahora cuando morimos, esto significa que si estamos presionando hacia adelante, hacia atrás o algo por el estilo, no podremos saltar ni movernos en ninguna dirección. Y de nuevo, esto es muy sencillo, solo comprobable que voy a hacer es volver al daño y promoverá esto a una variable también, el daño base para cuando el jugador esté dañado. Entonces si promovemos esto a una variable, podemos cambiar esto desde cualquier lugar, lo que de nuevo sólo nos hará un poco más fácil. Y yo solo llamaré a éste aplicar un daño. Ahora, idealmente, vamos a cambiar esto en base a lo que estamos golpeando. Pero de nuevo, proyecto muy sencillo para poner las cosas en marcha. Esto se puede cambiar fácilmente después, pero esto sólo nos permitirá NIH muy rápidamente cambió esto a un 100. Y significa que cuando estamos trabajando dentro de nuestro planeta murió función. Si alguna vez quieres probar esto ahora podemos entrar directamente al juego, vale, golpeado por el enemigo. Podemos ver que hemos muerto. No voy a seguir tratando de moverme, saltar, movimiento, todo así está deshabilitado. Por lo que primero se hace la comprobación aquí tenemos este bit funcionando. Entonces si recuerdas anteriormente, mencioné que quería replicar otra vez ese tipo retro de animación 2D de Mario o sónica donde vuelas arriba al aire y fuera de la pantalla. Por lo que ya tenemos algo muy parecido a trabajar. Pero en lugar de usar el impulso de movimiento del personaje, esta vez voy a mover todo el asunto. Entonces vamos a tomar los componentes conceptuales. Y como estos son los componentes de la raíz, obviamente todo está como anidado debajo de esto para el movimiento. Vamos a agarrar eso e impulso a eso. También vamos a tener que recordar desactivar toda la colisión para permitirnos fusionarnos a través del piso. Entonces si controlamos el arrastre en nuestros componentes de captura, podemos, en primer lugar. Para permitirnos hacer esto, necesitamos establecer el conjunto, simular la física a true. Y sólo engancharemos esta copia de seguridad de golpe. Si no lo hicimos, vamos a recibir una advertencia cuando intentamos hacer algo como agregar fuerzas o impulsos a algo que por defecto no tiene habilitada la simulación física. Podemos ver aquí, simular la física está configurada en falsa, lo que significa que si intentas hacer algo relacionado con la física, obtenemos una advertencia o aparece un mensaje de error. Voy a presionar Control W para volver a obtener el Componente Cápsula. Y ahora que tenemos eso en su lugar, podemos tirar de aquí y vamos a hacer que funcione el impulso publicitario. Tan muy similar a lo que hicimos a través de nuestro movimiento de personajes. Combínalas, podemos hacer lo mismo aquí. Vamos a establecer el cambio de velocidad a verdadero, se dividirá aquí el pin de estructura. Y el imita el impulso esta vez un poco más dramático. Entonces vamos a configurar esto algo así como 800 o tal vez 900. Y así es claramente más alto que solo ser golpeado. Entonces de nuevo, si entramos pulsa Play, podemos probar esto. Y simplemente no está funcionando del todo. Recuerda que mencioné lo otro es la colisión, así que creo que eso va a ser lo suficientemente alto. El problema es que de inmediato fuimos algo así como golpeados fuera del aire porque todavía estamos tomando en nuestras respuestas de hit. Pero quiero decir, esto está bien que obtengamos algunos resultados divertidos al hacer estos. Y estamos probando que las cosas están funcionando y cómo están respondiendo a medida que avanzamos. Por lo que solo actualmente estamos corriendo por ahí. No del todo la respuesta que queremos, pero definitivamente nos estamos acercando. Ahora de nuevo, queremos asegurarnos de que todo esto como estar contabilizado en la dirección correcta. Entonces lo primero que queremos hacer, no queremos que todos estos se jueguen potencialmente antes de que hayamos desactivado, yo colisionaría. Entonces acabo de hacer un poco de espacio aquí. Voy a Control W, el componente capitalino otra vez. Nuevamente, esto es solo para salvar y va desde múltiples lugares. Esto empieza a parecer un poco desordenado. Voy a tirar de aquí, voy a establecer la respuesta de colisión. Podemos establecer esto a todos los canales. No vamos a necesitar preocuparnos de que esto falte nada porque por supuesto en esta etapa con muertos, todo lo que sabemos es que queremos que esto ignore las respuestas de colisión en cada canal. Por canales. Si no estás familiarizado demasiado con la configuración de colisión, tenemos los ajustes preestablecidos de colisión. Estos son los canales que tenemos rastreo, superposición y bloqueo y las diferentes cosas que podemos o trazar, que serían cosas como re-cast, check, casting al agua si te has pegado a algo o buscando en algo que se superpone para cosas que no bloquearán los otros objetos, sino que solo detectarán ese evento el mismo espacio. Y luego bloqueando, que es lo que estamos haciendo mientras estamos moviendo físicamente las cosas, qué potencialmente golpeándolas con una respuesta casi física. Entonces vamos a poner todos estos para que ignoren. Por lo que ninguno de estos bloqueará más. Se puede ver que la mayoría de ellos están configurados para bloquear. Pondremos esto a ignorar, lo que significa que también empezaremos a hacer cosas como caer por el piso. Ni siquiera vamos a responder a la respuesta de colisión de pisos, lo cual es ideal porque recuerdas dije que parte de la configuración nos está haciendo caer del nivel. Entonces con saltar hacia arriba y luego fluir por el piso. Entonces eso es bastante bueno. Podemos volver a ver más temas aquí. Entonces lo que estamos teniendo un problema con cuchillo es la cámara está chocando con cosas con las que no teníamos problemas chocando antes. Entonces lo que queríamos hacer, si querías mantener la cámara conectada y evitar que esto sucediera. Vamos a ir al muelle encendido y podemos ver que tenemos habilitada la prueba de colisión. Y básicamente lo que estaba pasando cuando parpadeaba, el resorte encendido. Recuerda que tenemos este brazo largo aquí, está tratando de ajustarnos fuera del camino si se está enfrentando al mundo y detectando que hay algo que potencialmente podríamos estar colisionando. Entonces como notar que cuando recorto esto y está tratando de mover la cámara, razón por la que se ve un poco GEC. Podemos detener esto emprendiendo la prueba de colisión do. Y de nuevo, volveremos a intentarlo, ver los nuevos resultados. Entonces lo que deberíamos ver ahora es que todavía vamos a fusionarnos tirarnos, pero eso está bien. Podemos cambiar el desplazamiento Y algo si quisiéramos anular eso. Pero lo principal es que no tenemos la cámara saltando por ahí. Generalmente. Esto va a demostrar que no tenemos un nivel entero a nuestro alrededor. Esto no es a lo que estarías acostumbrado en ese tipo de juegos de la vieja escuela. Entonces lo que vamos a hacer en su lugar es sólo uno fijo. El modo en que voy a acercarme a esto es que vamos a agarrar la primavera soy componente. Vamos a tirar de esto y usaremos el desprendimiento del compartimiento. Ready sabe a qué componente se adjunta, se adjunta al Componente Cápsula, como se puede ver aquí en la jerarquía. Pero esto va a tomar la primavera. Se desprenderá de lo que está apegado a la enmienda, va a mantener la ubicación y rotación, tal vez necesitemos actualizarlos y se quedará donde está en el mundo. Y esto es más a lo que estás acostumbrado a decir, es el jugador tipo de volar arriba y fuera de la pantalla. Entonces esto es relativo. No queremos que esto sea relativo porque actualmente es relativo al Componente Cápsula. Queremos que esto mantenga su posición en el mundo. Entonces no tengo donde estaba relativo a sus propios componentes. Si el brazo de resorte se mueve por aquí, queremos que se quede aquí cuando el jugador muera porque viste ese tipo de voló hacia abajo hasta la esquina de la pantalla. Y ahora vamos. Por lo que ahora tenemos al jugador saltando por la cámara diciendo dónde estaba. Y estamos evitando todo ese tema del recorte. Todavía podemos ver como que el jugador está pasando por el piso. Pero de nuevo, en este caso, no demasiado importante si lo quieres. Cuando esto sucede, podrías hacer algo tan sencillo como puedas agregar un impulso muy pequeño en la y Entonces si solo agregamos un impulsivo como uno o algo así, esto nos pondrá ligeramente por delante o detrás del piso. Han desaparecido los enemigos. Ese no me mató. Y van muy pequeño impulso. Y de nuevo, si querías que volaran detrás del piso. Y se puede ver que los diferentes tamaños que cayó detrás del cerro. Y si quisieras, podrías ponerte un poco creativo con esto. Ya has visto cómo agregar diferentes compensaciones. Nuevamente, usando un selecto, podrías agregar algo así como un selecto booleano aleatorio. Y 50, 50% de la probabilidad de que pudieras conseguir que vuelen hacia adelante con una nota selecta aquí. Y lo mismo para la x. Si te parece aburrido que siempre vayan directamente hacia arriba y hacia abajo. Podrías agregar una oportunidad aleatoria para que vuelen a la izquierda o a la derecha. Y las cosas finales que he estado haciendo todas estas pruebas cuando sigo siendo perfecto. Todavía. Si nos estamos moviendo hacia atrás, se puede ver que algo extraño como eso sucede sin embargo. Nos dieron un poco demasiada fuerza con diferentes fuerzas que se aplicaban entre sí. Entonces creo que lo que tenemos que hacer antes de que todo esto suceda, también vamos a detener ese movimiento. Entonces desactivaremos la entrada, detendremos el movimiento que tenemos. Y sólo para decir, volviendo a esto muy rápido, si quisieras aplicar diferentes impulsos a la x y a la y y aplicarlo aleatoriamente. Entonces no voy a pasar por eso en esta etapa, hemos hecho cosas muy similares. La mayoría de las veces, este sería un buen tipo de pruebas de aprendizaje vía Sur entre temas. Basta con dar los videos de tirones y ver si puedes implementar esto tú mismo. Toma algo de esto como noches que hemos estado usando, algunos del chat aleatorio pueden armar esos y prácticamente tienes el resultado para que algunos a los impulsos aleatorios tengan. Entonces lo siguiente con esta parada del impulso que ya tenemos esto haciendo, estamos listos copiando código aquí, lo cual nunca es ideal. Entonces lo que vamos a hacer, probablemente familiarizarnos con esto, no tan bien. Vamos a seleccionar dos de estos. Vamos a derrumbar esto a una función, y vamos a nombrar a ésta que Consejo Movimiento. Por supuesto que vamos a eliminar estos Dine mitad. Podemos arrastrar en nuestros movimientos de consejo y sólo vamos a enganchar esto al falso pin. Por lo que hacer exactamente lo mismo por el impulso es ligeramente diferente. Podríamos pasar en diferentes anulaciones si quisiéramos. Pero creo que en este caso, estos dos son algo bastante únicos, no uno dejando esto en una función. Y creo que eso sería un poco más un obstáculo para nuestro progreso de código, entonces nos ayudaría. Pero en este caso podemos tomar el Consejo Movimiento una vez más, entrar en juego yoduro, tirar de aquí, encontrar que el movimiento del consejo funciona y enganchar estos entre los dos pines de ejecución. Y esto sólo significa ahora si lo intentamos de nuevo, lo que deberíamos tener es que el movimiento canceló. Podemos decir que no es el caso. Entonces esto no es filosofía Up. Creo que el problema ser es que no estamos obteniendo velocidad por el movimiento del personaje. Piensa en cambio estamos obteniendo velocidad del componente cápsula. Por lo que podemos reemplazar o simplemente a tipo de fallos a prueba de fallos y 0 bugs, que es la opción por la que voy a ir. Y lo que queremos está en el componente de captura es un nombre ligeramente diferente. Es la velocidad lineal. Es la vieja velocidad lineal de la física que estamos buscando. Por lo que la forma más fácil es simplemente escribir lineal, ligeramente largo de cuerda. Pero queremos establecer toda la velocidad lineal de la física en 0. Y entonces podemos volver a intentarlo. Y creo que eso debería resolver todo bonito. Entonces si vamos a buscar al bate, sí, ahí tienes. Entonces nos estamos deshaciendo de todo el movimiento. En realidad se estaba calculando la velocidad sobre el componente de captura, no sobre el movimiento del personaje. Pero de nuevo, podría haber casos en los que haya cambios sugiriendo caso en el que voy a dejar esto. Pero podemos ver que mi independientemente de cómo nos estamos moviendo, cuando se trata de eso, voy a aplicar esa fuerza justo al máximo que queríamos hacer, que es que una velocidad vertical para replicar esa vieja automatización moribunda de la vieja escuela. Entonces eso es casi todo lo que puedes, como he mencionado algunas veces ahora puedes entrar. Ya estoy especie de dejado de publicar esto arriba. Otra cosa que podrías haber notado es que cuando morimos, solo estamos entrando en las animaciones saltando y cayendo porque eso es lo que se está rastreando. Realmente no tenemos nada como animación de muerte. Entonces si quisieras importar uno, podrías traer eso. Y como he mencionado, agregar nuevos estados de animación debería ser tan simple como agregar un nuevo movimiento Estados, que son nuestras enumeraciones que hemos expuesto aquí, podrían agregar después del salto, antes de que puedas tener una animación de muerte y luego agregando esto para ser rastreado. Por lo que de nuevo, lo simple como en el jugador actualizar funcionalidad flip book, checa aquí e incluso puedes hacer otra rama por completo. Entonces, en lugar de agregar cosas a esta corriente de lógica, podría ser tan simple como si estuviera muerto, luego reproducir la animación de la muerte o detener toda animación. Si no está muerto, entonces sigue revisando qué animación basada en movimiento deberíamos estar evaluando. Y luego simplemente agregando ese pin extra aquí para la animación de la muerte. Entonces de nuevo, solo para recapitular por qué hemos ido con este tipo de enfoque automatizado, no totalmente automatizado, pero se puede ver cuánto más fácil es enchufar solo un nuevo estado de movimiento. Y hubiera sido tener un conjunto extra de lógica de ramificación a un lado. Entonces entre los temas otra vez, si querías hacer una pausa y hacer ese tipo de cosas solo por ese tipo de pulido refinado, entonces siéntete libre. No es algo que vamos a estar sumando, en los temas. Pero eso sí significa en esta etapa en la que he terminado con los enemigos y el jugador, realmente están interactuando casi como se esperaba. Y como queríamos que lo hicieran, ahora podemos pasar al tema final, que van a ser las clases interactivas, las pastillas para reponer la salud, y que los artículos de primavera para actuar como una especie de plataforma de salto y proporcionar un nivel un poco más interesante para maniobrar alrededor. 18. 18 - Base interactiva: Para moverlos a las clases interactivas estará mirando esto una manera muy similar a nuestras clases enemigas. Entonces vamos a tener algunos tipos diferentes de clases interactivas en el proyecto. Por lo tanto, podemos derivar mucha de la lógica general de una clase base que dice que vamos a tener múltiples clases interactivas donde sólo tenemos al único enemigo. Tenemos el flip book listo para nuestros termas y manantiales que siempre que tengamos dos clases disponibles, y por supuesto puedes ampliar esto para empezar. Simplemente nos aseguraremos de que mantenemos la jerarquía del proyecto, es agradable y ordenado. Por lo que vamos a crear una nueva carpeta llamada interactivos. Dentro de esto, estaremos creando nuestras clases principales. Por lo que la primera va a ser nuestra clase base interactiva. Y por supuesto, lo que realmente necesitamos que esto haga es existir en el mundo con el potencial de interactuar con el jugador. Por lo que para cualquiera familiarizado con Unreal, probablemente ya estés consciente de que en lo que respecta los chicos de la jerarquía de clases o la estructura de clases dentro de Unreal, el tipo de vidrio más básico que puede existir en el mundo con un transformar y ese tipo de entidad física es una clase de actor. Entonces solo vamos a bajar y crear una nueva clase de blueprint de tipo Actor. Y voy a nombrar a éste que BP subraye base interactiva. Como he dicho dentro de esta clase, aquí es donde queremos tomar esas consideraciones. Entonces las cosas que serán genéricas entre las diferentes clases interactivas potenciales para este proyecto, solo puedo ver dos variaciones diferentes que estaremos teniendo. Y entre esos, Sólo hay dos cosas que puedo ver que necesitan hacer. Uno va a ser más un tema con la forma en que se configuran los flip books. Por lo que tipo de trabajo alrededor de eso. Y la segunda es la interacción real de que vamos a necesitar algún tipo de colisión o el jugador para provocar que esa interacción sea disparada. Y el tema viene del hecho de que los flip books se configuran automáticamente para jugar y ese bucle. Entonces vamos a tener que dar cuenta de eso porque el corazón va a quedar bastante bien buceando. Pero creo que la primavera, por supuesto, no queremos que ese jugando constantemente. En primer lugar, si dijimos son los componentes que vamos a necesitar para esto, todo lo que realmente necesitamos es la representación visual para la animación y el Acto colisionante. Y voy a separar estos dos Act o el componente colisionante. Y separaré ambos para que no tengamos que preocuparnos proporcionar una animación sprite en el libro animado. Y eso serían algunos núcleos de rendimiento potencialmente extra que no necesitamos. Lo que haremos es encapsular todo el libro de tirantes dentro de un planeador de cubos. Entonces para que comiencen los componentes, voy a agregar un nuevo componente de escena, solo voy a arrastrarlo y soltarlo encima del componente por defecto o el componente por defecto parecen. Esto es puramente para que tengamos como un punto de anclaje y una transformación para que los demás componentes se sientan. Pero no necesitamos esas representaciones publicitarias esféricas, así que vamos a deshacernos de eso con un componente de escena. Entonces encima del componente pecado colocará nuestro libro de papel volteado. Por lo que esta será la animación para los diferentes sprites. Y después asegurándonos de que tenemos el libro de papel seleccionado. Podemos volver a usar el desplegable y encontrar un colisionador de cajas. Por lo que esto será lo que el jugador potencialmente interactuará con. Y sólo le daré a éste el nombre de colisionador interactivo. Esto sólo hará que sea mucho más fácil de actualizar de nuevo, volver va a ser muy claro por qué tenemos un libro de papel flip es un juego 2D. Necesitamos esa representación visual. Puede que no quede tan claro lo que está haciendo el colisionador. Entonces si nombramos esto con precisión ahora hará las cosas un poco más fáciles cuando volvamos al proyecto. Por lo que lo primero a dar cuenta será esta configuración de colisión. Al mirar el libro de papel para empezar, podemos ver que la colisión que canal está configurado para bloquear todo. Entonces si tuviéramos que añadir un libro de volteo y sí tuviera alguna información de colisión, entonces esto podría potencialmente, de nuevo, tomando en cuenta cosas como el componente de primavera cuando teníamos a EU en, eso potencialmente bloquearía el personaje para moverse en lugar de agregar que lo imponen te iguala, te impide moverte alrededor del nivel. Lo que haremos en su lugar es que bajaremos esa casilla de opción Presets de colisión y cambiaremos esto a ninguna colisión. Por lo que esto no chocará con una herramienta que no proporcionaría ningún costo de colisión. También me aseguro de que desmarcamos los eventos de superposición por si algo cambia. Entonces una de las colisiones se va a hacer eso desde nuestro planeador interactivo. Si miramos por aquí, podemos ver que esto está configurado para superponerse a toda dinámica. Y podemos hacer esto un poco más barato si solo consideramos cómo vamos a estar usando esto. Por lo que al momento podemos ver que el tipo de objeto es un tipo dinámico mundial en sí mismo. Por lo que esto significaría por el momento las otras clases interactivas podrían potencialmente superponerse entre sí como lo harían con los vehículos, cualquier cosa destructiva. Podrían ser cosas como, creo que la clase enemiga es un probablemente bien dinámico también. Por lo que esto podría ser desencadenado por un enemigo. Entonces lo que queremos hacer es que vamos a cambiar esto a personalizado desde el desplegable aquí. Voy a tomar este botón aquí, el ignorar el de arriba. Si tomas la fila superior , cambiará todas las opciones debajo. Entonces voy a hacer que esto ignore todo menos la piscina. Entonces lo que el jugador está controlando es lo único con lo que queremos que esto interactúe. Entonces esto significa que ni nada más en el mundo no activará esta funcionalidad hará que esto sea un poco más barato de correr. Y también significa que no necesitamos considerar tantas eventualidades diferentes con las colisiones. De acuerdo, así que esa es nuestra configuración de componentes. Ahora podemos pasar al Gráfico de Eventos como lo hemos hecho en el pasado. Algunas cosas que podemos hacer aquí, podemos deshacernos de las funciones que sabemos que no vamos a usar, que serán estas dos. Y realmente sólo tenemos esas dos consideraciones que he mencionado que queríamos hacer, o un piso como funcionalidad genérica para toda la clase interactiva potencial. Entonces el primero que creo que abordará es ese arreglo. Por lo que la forma en que esto funciona, sólo vamos a saltar de nuevo a la ventana gráfica rápidamente. Si no estás familiarizado con esto, si seleccionamos un sprites para nuestro flip, tenemos los hots y tenemos el resorte. Entonces cuando coloquemos esto en el mundo, esto hará exactamente lo que tenemos aquí. Esto tipo de post y bombear con la cacería, que creo que se ve bastante cool en el contexto de tipo de acaparar tu mundo. Es bastante bonito tener estos flip books animados y sprites, tener cosas como follaje moviéndose alrededor, los enemigos , retrocediendo y adelante las pastillas tipo de animación en este tipo de manera de publicación aquí trae tu nivel y hace que el laboratorio ya se quedó animado y lo trae a la vida. Entonces esto no es algo que yo quería juntarme. No obstante, si entonces consideramos la primavera del FB, claro, no queremos que esta constantemente salte nada ya que simplemente paseamos por ella. Queremos que esto sólo reaccione. Entonces esto va a ser muy reactivo, razón por la que hemos quitado el tick de eventos. Y queremos que éste sólo reaccione en juego esta animación una vez cuando en realidad está agregando impulso al jugador. Entonces esto será lo primero que arreglemos. Y yo sólo voy a deshacer esto como con los enemigos. Yo quiero asegurarme de que si tenemos un olvido de cambiar esto en las clases derivadas, es muy claro que no hemos dado a esto un libro de tirantes porque habrá, bueno, se fueron a estar mostrando algo. Entonces lo que vamos a hacer es tirar del libro de papel que va a controlar, arrastrar esto hacia adentro. Vamos a tirar de aquí. Voy a buscarlo en un looping. Entonces podemos hacer bien dos cosas tienen, podríamos haber buscado, establecer bucle, o podemos comprobar si es bucle. Todo lo que vamos a hacer es inmediatamente en Begin Play Set si queremos o no que esto bucle. Engancha esto al bolígrafo de ejecución desde el juego inicial, luego el nuevo bucle, voy a seleccionar esto y lo promoveremos a una variable. Y sólo voy a nombrar a éste sea autoplay. Haré esto público también y compilaré esto y solo asegurémonos de que por defecto, supongamos que queremos que todo se autoplay y luego entraremos y cambiaremos este piso, la clase de primavera. Entonces lo que esto va a hacer es que esto va a entrar y se debe comprobar si debe seguir buceando indefinidamente o si debe ser una especie de jugarlo una vez tipo de Sprite. Hemos hecho esto público para que si alguna vez quisiéramos anular algo por alguna razón, tal vez queríamos un tipo de hot muy especial para recoger. Si no se anima por alguna razón, entonces podríamos cambiar eso fácilmente desde el World Outliner. Tan solo tener cuando lo hayamos dejado caer en nuestro mundo, podríamos seleccionar los gastos generales que has visto, pero en otras propiedades públicas. Entonces esa es la primera parte de la lógica genérica creo que tenemos que estar haciendo. El siguiente es que vamos a necesitar esta nueva función, que será cosa que pase cuando interactuemos con el jugador. Voy a crear una nueva función como lo hicimos con los Banks enemigos. Voy a nombrar a éste interactuar. Y muy similar a la clase base enemiga. En realidad no vamos a hacer nada aquí. En cambio, me pondré un recordatorio con un simple comentario diciendo que la funcionalidad está destinada a ser anulada en las clases infantiles con su propio tipo de funcionalidad única. Pero una cosa que, porque esto va a ser muy simple, podrías extender esto si quisieras. Cambiando la configuración del colisionador interactivo, podrías tener estas cosas interactivas como enemigos. Entonces si quisieras implementar sistemas donde los enemigos pudieran usar los resortes o podrían potencialmente recoger salud y compartir ese tipo de alberca de artículos de salud con los playoffs. Daría al jugador algún tipo extra de reto para asegurarme de que mientras dañan a los enemigos, tampoco estén recordando Salud en otro lugar. Se puede cambiar fácilmente esto para ser contabilizado en este proyecto, lo que voy a hacer es que voy a asumir que sólo vamos a estar interactuando con el jugador. Entonces para el insumo, para que tengamos acceso a toda la información de salud y cosas así. Voy a crear un nuevo insumo, tener un cambio. El tipo de variable tenía que ser el objeto base del jugador no revelado BP. Entonces vamos por este objeto de referencia. Y voy a nombrar a éste que el jugador áspero. Y vamos a usar esto en tan solo un momento. Por lo que nos aseguraremos de compilar esto y guardar. Y eso es casi todo lo que necesitamos hacer para nuestra función Interact de vuelta en el gráfico de eventos, vamos a conseguir el colisionador interactivo. Y queríamos bajar aquí. Recuerda que estamos haciendo los eventos de superposición. Entonces los solapamientos y no los hits. El hit es lo que estamos usando en las clases enemigas. El principal diferencia es que SUS eventos actúa como una especie de bloqueador. Entonces si recuerdas que la colisión necesitaba resolverse al escenario donde el jugador fue empujado fuera de su línea en el eje y y fue empujado al fondo. En comparación, cuando estás haciendo solapamientos, puedes hacer que dos cosas se pasen entre sí. No se van a detener físicamente el uno al otro. Pero podemos tener un evento disparado cuando se activa o se nota una superposición y eso es usar el componente en línea para comenzar la superposición. Ahora no vamos a necesitar toda la información como la que tenemos en el pasado. Pero lo que haré es porque queremos enfriar nuestra función Interact y queremos nuestra referencia de jugador, pesar de que sabemos que lo único contra lo que deberíamos estar chocando es la clase de jugadores. Voy a hacer un cheque extra aquí. Entonces vamos a lanzar esto al tipo de jugador no revelado de BP. Ve que tenemos la base de jugadores de subrayado BP y de esa manera la función Interact cuando solo me he enfriado. Si esto es una cosa de cas exitosas, lo que golpeamos es definitivamente el plan. Y no sólo eso, sino que luego podemos pasar en la referencia a la base de jugadores. Lo que significa nuevamente que a la hora de agregar Salud, agregar impulso, tenemos alguna información que podemos usar sobre el jugador. Y eso es realmente todo. Entonces esta es la clase base hecha. Esta es la funcionalidad genérica que las clases secundarias que estamos a punto crear todas pueden heredar y reutilizar de manera muy sencilla. 19. 19 - salud interactiva: la primera clase con la que empezaremos, podemos dejar la clase base Interact si aún lo tienes. Lo que podemos hacer ahora es usar esto, podemos llegar a otra clase de esto como has visto con los enemigos. Por lo que vamos a hacer clic derecho en la base interactiva, seleccionar, Crear una clase Child Blueprint a partir de esto. Y voy a nombrar a este BP subrayan salud interactiva. Pocas cosas que he visto que vamos a necesitar hacer festival es asegurarnos de que los componentes estén configurados ya que necesitamos que estén dentro de la clase infantil. Y todo lo que realmente necesitamos hacer es seleccionar el libro de papel con tapa y establecer que esta sea la salud ese libro que ya tenemos. Y entonces tenemos que asegurarnos de que lo interactivo choquen un encaja bastante ajustadamente alrededor de la imagen. Piensa en Caja Alcance de 25, uno y 25. Debería funcionar bastante bien en eso. Por lo que no necesitamos nada en la y para estar vía profunda. Y es más o menos una imagen cuadrada. Por lo que a los 25, 25 radio parece encajar bastante bien. A continuación, realmente no necesitamos hacer nada. Recuerda, podemos establecer esto si queríamos que no se reproduzca, podemos establecer la reproducción automática en falso. Esto surtirá efecto en el evento comenzar a jugar. Si querías que eso sucediera antes en la clase de padres, siempre puedes poner eso en el guión de construcción, pero creo que el Evento Begin Play, debería estar perfectamente bien por ahora. Lo único que realmente nos queda que tenemos que hacer es agregar funcionalidad al jugador. Y eso se va a hacer a través de nuestra función de anulación que bajemos esto y podamos encontrar aquí la función Interact. Bueno, queríamos hacer es trabajar unas cuantas cosas suceden en el evento Interact. Por lo que esto se va a disparar en cuanto se active la función de clase padre de la superposición si golpeamos al jugador. Por lo que tenemos aquí la información del jugador que vamos a necesitar. Y hay un par de cosas que considerar, así que probablemente puedas ver cómo va a ir esto. Queremos agregar salud al jugador, y luego queremos destruir la camioneta de salud interactiva para que ya no exista en el mundo. Y solo tómate un momento antes de que pasemos por esto juntos y considera qué orden de cool podrías querer hacer esto. Entonces vamos a sumar la destrucción aquí. Sí, um, ¿dónde vamos a llamar a esta actualización de funcionalidad de salud? De acuerdo, así que claro sabemos que lo primero que va a pasar es que podemos dar cuenta de cualquier cosa que pase en el cool de los padres si quisiéramos. Entonces si agregamos el destroy cool aquí, claro que eso va a suceder antes de que incluso podamos llamar a la funcionalidad de los padres. Ahora en este caso, nada está sucediendo realmente en la funcionalidad. Por lo que podemos quitar esto por completo o simplemente enchufarlo y hacer todo después de esto. Realmente no importa en este caso porque sé que no vamos a volver a la clase padre y agregar ninguna funcionalidad base. Entonces en este caso, creo que lo que podemos hacer es solo mostraremos cómo podemos pasar por este proceso sin siquiera hacer una llamada a la clase de padres si no queremos. A continuación, tenemos la referencia del jugador. Y un poco de propina útil aquí. Si no lo has visto antes, porque ahora es una variable local mientras estemos dentro de esta función, podemos buscar la variable por el mismo nombre. Y en lugar de tirar de esto de todas partes como hemos visto en el pasado, queríamos realmente evitar tener y va a todos lados. Podemos simplemente usar el Get play o rref, nota, solo golpea. Eso es exactamente lo mismo. Eso significa que independientemente de cuántas veces a, donde necesitamos enfriar esto, podemos reutilizar esta variable muy, muy fácilmente. Y lo que queremos hacer es ver si tenemos la configuración de funcionalidad de salud. Por lo que sabemos que esta es la base de jugadores de subrayado del BP. Buscamos salud. Podemos ver que tenemos la función de actualización y podemos establecer manualmente las variables de salud. Ahora nunca queremos realmente. Las variables de una clase en otra. Esto puede dificultar mucho el seguimiento de dónde se establecen y actualizan las variables, sobre todo si dejaron de hacerse fuera de la clase de jugador como ejemplo. Entonces lo que realmente queremos hacer, idealmente, haríamos de estos privados para que ni siquiera pudiéramos verlos desde otra clase. Pero idealmente sin eso, que se toma, queremos crear otra función en la clase de jugador similar a actualizar la salud. Pero vamos a llamar a éste AddHealth. Pasemos a la clase de jugadores. Recuerda que la salud de actualización es simplemente encontrar cuál es la salud actual y actualizarla al widget. Por lo que probablemente podríamos renombrar esto para que sea un poco más claro en realidad. Entonces haremos este widget de salud de actualización porque eso es realmente todo lo que está haciendo. Lo que queremos hacer es proporcionar una función de que vamos a crear una nueva función. Vamos a nombrar a éste AddHealth. Y aquí solo queremos aportar un insumo, que es la mente de la salud, que va a tener nuestra camioneta. Entonces vamos a añadir una nueva variable. Sí, vamos a hacer de esto un flotador y vamos a cambiar el nombre de esto para curarlo podría. Por lo que tal vez nunca se vayan a celebrar. Y muy similar a lo que estamos haciendo en los eventos de daños. Si podemos encontrar eso aquí En el único daño, vamos a querer poner nuestra salud en lugar de ser un menos aquí sin embargo, vamos a poner esto para que sea positivo para que podamos copiar mucho de esto. Yo sólo voy a copiar y vamos a pegar esto en la función AddHealth que vamos a poner nuestra salud para que sea salud actual. Y entonces en lugar de usar un menos dirá más otra variable u otro vuelo, el enchufe que en el valor, y que estará aquí. Entonces sea cual sea la salud actualmente, más nuestro ion helio será nuestra nueva salud. Y de nuevo, nos aseguraremos de agrupar esto para que no hagamos nada tonto al extendernos, haciéndolo más bajo que 0. Y fuimos a hacerlo más alto que la salud por defecto. Por lo que es agradable y simple. Copiar y pegar estaba perfectamente bien. Ya hemos visto esta lógica, así que realmente no necesitábamos volver a rastrear esto demasiado. Ahora lo último es que podemos llamar a nuestros widgets de salud de actualización. Y si hacemos esto aquí, esto va a tomar esas variables que acabamos de cambiar. Y esto mostrará en pantalla la nueva salud podría estar comprando ahí, agradable y simple, eso no tardó mucho en una herramienta. Y eso es todo el sistema de salud ahora implementado en la clase de placa. Y algunas cosas que he notado con limpieza sin embargo, es que tenemos varias variables al mismo tiempo, un poco separados y ocupando mucho más espacio y necesitan por aquí. Por lo que esto puede suceder en algunas clases grandes. Lo que podemos hacer para evitar esto es que en realidad podemos ponerlos en diferentes categorías. Esos un ejemplo, seleccionaré el primer tipo de flip book, y lo pondré en una categoría llamada FB. Para que lo podamos mostrar y esto. Y entonces podemos o arrastrar los otros libros de volteo a esto. Bueno, ahora podemos usar la opción desplegable y cambiar la diferente categoría que acabamos de crear. Entonces podemos soltar este diamante para que podamos ver que hemos ahorrado un poco de espacio en los múltiples tipos de variables que hay allí. Y de igual manera, haré lo mismo por los vuelos. Por lo que este es solo un caso de crear nuevos desvíos de nombre de categoría, arrastrarlos hacia adentro, y luego podemos colapsar esos. Pero hecho. Ahora todavía nos quedan unos pocos, pero creo que esto hará las cosas mucho más fáciles para encontrar un yo y luego esos tipos únicos y no ocupar demasiado espacio. Antes de volver a la clase de salud, solo asegúrate de compilar y guardar esto para asegurarte de que esta nueva función pueda ubicarse en la otra clase. Entonces vamos a ir a la clase interactiva de salud. Y luego desde aquí, ahora tenemos nuestra referencia. Estamos listos usando, podemos sacar de esto y ahora podemos encontrar esa nueva función Add Health. Entonces ojalá puedas ver por qué esto va a ser un poco más seguro, pero ahora no estableciendo el valor de salud fuera de la clase donde se está utilizando. Lo que significa dentro de la clase de jugador, justo como recapitulación, ahora sabemos que esta función de salud o esta variable sólo se está actualizando ya sea en la función AddHealth o el daño es conexión del gráfico de eventos aquí, significa que si tenemos una especie de depuración a través de esto, sabemos dónde buscar si algo extraño está sucediendo con la salud. tanto que si comienzas a agregar estas llamadas para establecer variables de otras clases, empieza a ser un poco más difícil localizar dónde podrían estar cambiando los múltiplos de house, algo en algún momento de tu proyecto. El último es que podemos poner esto en algo así como diez para el helio blanco. Y voy a promocionar esto a una variable. Voy a nombrar a este un valor de salud y sólo dejar esto abajo y ordenar un poco a los Unites aquí. También podemos hacer este éxito público Compilar. Y la razón por la que hemos hecho esto público es un ojo cuando arrastramos esto a la naturaleza. Entonces volveré un poco. Encontraremos nuestra salud interactiva. Arrastre esto hacia adentro, asegúrese de que esto está en el eje 0 y el valor y en el eje y. Y si arrastramos esto y agregamos algunos componentes de salud diferentes, Ley, Salud pickup, lo siento, podemos cambiar el valor en la edición a tener haciendo público esto. Por lo que de nuevo, podemos agregar algo de variedad a estos. Por lo que éste puede valer 50. Este puede estar con y dejaremos el primero a las 10. ¿ Podemos entrar y probar esto? Entonces voy a querer encontrar a un enemigo para hacer frente a algún daño. Hemos puesto al enemigo para completar la prueba de nieve asesina. Así que asegúrate de que volvamos a la clase de jugadores. Si olvidaste cambiar esto de nuevo a algo un poco más manejable. Por lo que el daño del jugador se fijó en un 100. Vamos a querer bajar esto a algo así como 20. Nuevamente, empoderar eso para que no moramos de inmediato. Y esto nos da tiempo para probar el valor de la casa. ¿ De acuerdo? Por lo que podemos ver que esto está siendo recogido. También podemos ver lo único que nos olvidamos de hacer eso en la clase interactiva. No hemos terminado del todo. Podemos comprobar los diferentes valores estaban funcionando. Eso todo parece bastante bueno para eso. Lo final, por supuesto, es una vez que hemos interactuado, una vez que hemos agregado cómo, como ya he dicho, sólo queremos destruir el acto de ser interactuados son en realidad no, eso estuvo mal. No destruyas el hielo con el que se interactúa porque con el que estamos interactuando sería el jugador. Obviamente, no queremos destruir la playa. Nos vamos a destruir para que cuando entremos, ahora podamos agregar alguna casa y podamos ver como siendo recogidos, tomar un poco de daño. Y luego podemos venir a recoger nuestras pastillas de salud. Nos están reteniendo que siendo destruidos. Por lo que tenemos un pick up de salud bastante estándar implementado. 20. 20 - resortes interactivos: La clase interactiva final y la clase de embudo que estaremos haciendo en esta selección de videos va a ser nuestra primavera interactiva. En realidad ya tenemos mucho de lo que necesitamos para entrar aquí. Y de hecho, tenemos todo lo que necesitamos afrontarlo. Entonces lo que voy a hacer en lugar de crear una clase completamente nueva, recuerda que ésta, nuestra clase de salud aquí, ya la está heredando de la base interactiva, que es exactamente lo que necesitamos. Entonces lo que voy a hacer en su lugar, en lugar de recrear completamente la rueda, voy a Control W, nuestra salud interactiva. Nombre, esta primavera interactiva. Dentro de, hey, de nuevo, podemos ver que esto tomará los mismos valores por defecto el lado de salud que estamos derivando de la clase padre de la base interactiva, que es lo principal aquí tenemos una variable. Por lo que esta variable de vuelo va a ser muy útil en un momento. Ya podría imaginarme lo que vamos a estar usando. Y tenemos nuestra función indirecta también siendo atrapados. Por lo que las principales cosas que vamos a necesitar ajustar la mitad, podemos volver a trabajar un poco esto. No queremos destruir el manantial siempre que se use. No nos queríamos AddHealth, pero necesitaremos dos variables las cuales van a ser la referencia del jugador. Nosotros queremos hacerle algo a eso y a este valor para la salud, sólo vamos a necesitar cambiar el nombre, pero ya lo tenemos disponible. Realmente queríamos hacer cuando se toca la primavera. Vamos a entrar aquí y vamos a llamar a la función de personaje de lanzamiento. Entonces de nuevo, es por eso que es útil saber que estamos interactuando directamente con la Escuela BPM de base vegetal porque sabemos que es un tipo de personaje que era un háganos saber podemos usar esta funcionalidad incorporada por defecto en el personaje clase para lanzar. Y esencialmente simplemente agregar velocidad a nuestra clase de personajes es algo así como un salto, pero con algunas sobrescrisiones diferentes. El motivo por el que queremos nuestro valor de vuelo, acabamos de trasladarnos esta vez. No queremos tomar ninguna velocidad x o y. Entonces dividiremos aquí el pasador de la estructura. Y básicamente, podemos enchufar esto al zed como el lanzamiento, el personaje. En el eje z. Queremos anular estos, agregar anulación. Entonces tomaremos esto como cierto y podremos renombrar esto a nuestro flujo de lanzamiento. Um, como hemos visto en el pasado, podemos dejar esto público. Entonces nuevamente, en cualquiera de los diferentes resortes que tenemos alrededor del nivel, podemos actualizar y anular muy fácilmente cuánta fuerza se va a aplicar. Creo que por defecto, 20 o 10, incluso, hasta dilema va a ser bastante bajo. Por lo que podemos empezar con algo alrededor de 500 y tener un buen presentimiento por un impulso de 500 y podría ser demasiado bajo. Podemos actualizar eso en un nivel al probar. Ahora lo siguiente es recordar la forma en que van a funcionar los visuales. Por lo que el festival de visuales, queremos cambiar el libro de papel. Vamos a cambiar esto de lo caliente para ser nuestra primavera. Y si solo saltamos a la ventanal, también podemos ver que yo chocaría va a ser un poco pequeño. Creo que realmente todo lo que quería cambiar es el ancho de esta cosa. Entonces voy a ir al colisionador interactivo, cambiar el ancho, que va a ser nuestra x para justificar encajar esto. Y luego recuerda que tenemos un coanfitrión del C9. Por lo que eso nos permite la libertad y flexibilidad para cambiar la posición del flip book, o en este caso, del colisionador interactivo, porque el colisionador interactivo es hijo del flip book. Por supuesto, si movemos eso, el colisionador se moverá con él. Entonces lo que queremos hacer es tomar este colisionador y simplemente movernos esta vez más o menos hasta el fondo del resorte. Pero la idea es que si esto no estaba jugando, se buscará. Justo por encima de la parte superior de la primavera para que se vea como en cuanto lleguemos a la parte superior de esa primavera, vamos a jugar esta animación. Entonces ese es el lado visual hecho ahí y actualizado. El último asunto está de vuelta en la función Interact. Recuerda que vamos a poner esto para que se multiplique para que sea falso. Entonces no vamos a estar jugando constantemente en el nivel. Lo que vamos a querer hacer es en cuanto hayamos interactuado con esto, vamos a poner esto para jugarlo desde el stock. Hacemos eso consiguiendo nuestro libro de papel. Por lo que controla arrastrando en el libro de volteo de papel y estoy encontrando la jugada de función detenida. Simplemente levantamos eso de nuevo y ordenamos un poco la función. No soy tan casi todo lo que realmente necesita hacer la primavera interactiva. Si volvemos al nivel, probablemente tengamos demasiados manantiales. Por lo que voy a agarrar uno de estos con el resorte interactivo seleccionado. Podemos hacer clic derecho en el corazón. Y podemos elegir el Reemplazar Actor Seleccionado con. Y una de las app va a ser la primavera interactiva porque la tenemos seleccionada aquí. Entonces lo reemplazaremos por eso. Podemos ver que hay poco cambio dramático y podemos entrar aquí y mover esto. Ahora en el editor mirándolo, tal vez esto sea un poco molesto que tengamos estos automatizando constantemente. Entonces de vuelta en la base interactiva, lo que voy a hacer es agarrar esto y simplemente meter esto en el guión de construcción. Por lo que esto esperemos que detenga cualquier animación de looping. Y ahora vamos, podemos ver que la primavera se deja de animar de inmediato. Eso nos permite saber que esto está funcionando sólo va a cambiar si movemos esa ubicación. Pero eso es mejor que tenerlo brotando constantemente. Y vamos a añadir un par de estos también para que podamos usar uno por aquí. Cuando pasemos por esta sección, podemos deslizarnos fácilmente los planetas, saltar hacia arriba y llegar a esta sección. Estos también van a funcionar como buenas maneras de tipo de probar diferentes velocidades y el impasto va a estar sumando. Tan perfecto, podemos ver que no animaba antes de empezar a tocar. Salta. Esto va a animar una vez, no va a volver a bucear, necesitamos matar al murciélago. Y podemos saltar de nuevo sobre esto. Creo que el impulso es quizá un poco demasiado bajo. Entonces no parece que nos estén empujando tan alto como necesitamos que podamos entrar y podemos cambiar esto a tal vez 800. Y entonces esperemos que sí. Entonces parece que en realidad iba subiendo con la primavera en lugar de atravesarla. Y eso nos está empujando hacia arriba a menos que la distancia. Para que podamos ir a jugar con diferentes valores. En las otras que podríamos probar, tal vez cómo se sentiría esto con un impulso de los muslos y por lo demás bastante bueno. Pero lo principal que se puede ver es que estos están reevaluando que la animación se reproduce constantemente y todo está respondiendo más o menos como esperaríamos, inesperado. Esperemos que hayas visto el, el tipo de valores de agregar estas propiedades públicas también. Por lo que fácilmente podemos entrar y cambiar los valores de la casa ahora, los valores de primavera para que podamos agregar algo de hilo de lanzamiento extra. Y como he dicho, si de verdad quisiéramos, podríamos poner uno de los resortes por cualquier razón para jugar automáticamente, uno de los calientes para no jugar. Entonces cuando entramos y jugamos al NIH, éste va a seguir publicando desde ninguna verdadera buena razón. Y el calor se va a congelar en su lugar. Entonces tenemos un poco de flexibilidad con cómo nuestra clase es una trabajadora o derivada del mismo tipo de clase base, lo que significa que necesitábamos programar. Me encanta esto sólo una vez y podemos reutilizarlo entre diferentes clases infantiles heredadas. Ahora la única otra cosa que realmente no he tocado es que estamos recibiendo muchos artículos diferentes entrando aquí. Por lo que quizá quieras empezar a renombrar algunas de estas, sobre todo considera la forma en que cambiamos una de las chozas para que sea un componente de primavera o un actor de primavera. Todavía se le llama el nombre por defecto. Entonces podemos decir que es un acto de primavera escuchar, pero sigue siendo genial. Bp subrayan salud interactiva. Entonces cualquier cosa puede ser redactora. Podemos cambiar esto a primavera y eso tipo de actualización correctamente. Y tenemos lo mismo para este porque eso era sólo una copia del original, que era realmente genial para la salud. Y otra cosa que tal vez quieras empezar a hacer es que puedes crear diferentes grupos. Por lo que puedes tener sub carpetas aquí. Entonces nombraremos a un enemigo, y crearemos otro, y nombraremos a éste interactivo. La razón principal es que entonces podemos soltar fácilmente enemigos y enemigos en directivas. Directivas, y si tenemos una, aclaran las cosas y solo miren el nivel, hagan un poco más de diseño de nivel. Podemos esconder ciertas cosas. Por supuesto, cuando presiones play, todos estos van a volver. Esto es sólo las ediciones están relacionadas. Y por supuesto que solo significa también, no vas a tener estos enormes cientos y cientos de artículos caídos en todo momento, sobre todo si solo querías encontrar algo como la fuente de luz, muévete algo alrededor, entonces va a hacer las cosas un poco más fáciles de navegar y podemos soltar estos diamantes. Me trabajan con ellos siempre que sea necesario. Con todo eso hecho, ahora tenemos los fundamentos de un juego de plataformas 2D configurado y funcionando dentro del motor Unreal. Ojalá a lo largo de la serie de videos, hayas venido a apreciar parte del poder que se puede aprovechar de lo irreal. Y aunque hay algunos pequeños obstáculos con el sistema flip book, la forma en que podemos automatizar algunos de los procesos de trabajar con esos realmente no es tan mala. Todavía tenemos esta herramienta de edición de pila realmente, muy útil realmente compatible con colisiones y cosas en las que ni siquiera me he metido. Al igual que podríamos configurar materiales utilizando el predeterminado en editor momentáneamente para tomar en cosas como lo normal para que podamos agregar iluminación y esencialmente replicar técnicas de iluminación 3D en estos sprites 2D. Si tenemos esa información disponible, hay mucho, mucho más que podrías hacer con esto. Pero de nuevo, esto es realmente sólo para sacar a la luz un poco más que eso. Esto es definitivamente más que un motor 2D adecuado así como 3D. Lo que ya estamos haciendo al final del día es quitado y el acceso a dos, de nuevo, irreal tiene todas estas cosas donde podemos restringir diferentes cosas a diferentes ejes para permitirnos trabajar realmente fácilmente en un mundo 2D. Entonces si has disfrutado de este contenido, no asegúrate de seguirme para más contenido como este, estaremos buscando hacer actualizaciones más grandes, más profundas a contenidos similares en el futuro. Así que asegúrate de seguirme aquí para contenidos como ese. Si esto era algo que encuentres útil, quería ver más. Entonces espero que hayan disfrutado de esta serie de videos. Si has llegado tan lejos, entonces gracias por seguir junto con todo y pasar por todo el proceso conmigo. Entonces gracias por su tiempo y paciencia y espero verlos en el futuro.