Implementar un sistema de daños y salud en Unreal Engine 5

Video thumbnail

Voy a explicar cómo puedes implementar y emplear el sistema de daños aquí en Unreal Engine.

Para comenzar, puedes observar que en la interfaz de usuario tengo una barra azul que hace referencia a la salud del jugador. Además, he dispuesto unas cajas en el nivel que son similares a las cajas Nitro (elementos destructibles que infligen daño y explotan) y que interactuarán con este sistema de salud.

UI

Estas cajas son similares a las que encontramos en el juego Crash Bandicoot: al tocarlas, explotan e infligen daño al jugador.

  • Efecto Clave: Como pudiste observar, el efecto principal es el decremento de la barra de salud del jugador al entrar en contacto con la caja.
  • Implementación Adicional: Los efectos visuales, el sonido de la explosión y la vibración de la pantalla serán explicados en otro video, ya que son opcionales al núcleo del sistema de daño.

Blueprint para hacer daño

La funcionalidad principal de la caja explosiva reside en su Blueprint:

Aplicar dano

Al tocar las cajas, la lógica se activa al momento de la colisión y aplica daño al jugador como puedes ver en la imagen anterior.

  • Nodo Clave: La funcionalidad central es el nodo llamado Apply Damage .
  • Implementación: La forma en que desees implementar esto es completamente opcional y depende del efecto que busques.

Aunque esta caja desaparece después de explotar (lo que garantiza que la lógica se ejecute solo una vez), el uso del Do Once tiene por objetivo hacer la ejecución ligeramente más eficiente al asegurar que la rama de código solo se active una vez por interacción. Si lo deseas, puedes omitir este nodo, ya que el Blueprint se destruirá inmediatamente después.

Apply Damage

  • Daño Base (Base Damage): Es el valor numérico del daño que se aplicará.
    • Configuración: En esta implementación, se ha establecido un daño de 25 (considerando que la salud total del jugador es de 100). Este valor es totalmente configurable.
  • Actor Afectado (Damaged Actor): Se refiere al objetivo que recibirá el daño.
    • Implementación: Conectamos la referencia de nuestro personaje o Player (obtenida del casteo inicial) directamente al pin de Damaged Actor.

Aplicar el daño al jugador

Ahora debemos configurar al jugador para que pueda recibir y procesar el daño que le aplica la caja explosiva.

1. El Evento Clave: Event Any Damage

En Unreal Engine, existe un evento que se invoca automáticamente cuando un actor recibe daño:

  • Evento: Utilizamos el nodo Event Any Damage.
  • Activación: Este evento se invoca automáticamente gracias al nodo Apply Damage que configuramos en la caja, siempre y cuando el actor objetivo sea nuestro jugador.

2. Procesamiento del Daño Recibido

Si no configuramos nada en este evento, la barra de salud no descenderá. Por lo tanto, aquí es donde definimos qué sucede con el valor de daño recibido.

  • Oportunidad para Efectos: Este es el punto ideal para implementar lógica adicional, como:
    • Invulnerabilidad temporal (similar a las máscaras en Crash Bandicoot).
    • Animaciones de dolor o retroceso.
  • Lógica Principal: En esta implementación, lo que hacemos es llamar a una función interna (que veremos a continuación) para procesar el daño y, consecuentemente, actualizar la salud del jugador.
Recibir dano

Resumen del Sistema de Daño Completo

El sistema de daño se basa en la interacción de dos nodos clave:

  1. En el Objeto de Daño (Caja Nitro):
    1. Se utiliza el nodo Apply Damage y se le indica el valor del daño y el Damaged Actor (el jugador).
  2. En el Actor (Jugador):
    1. Se utiliza el evento Event Any Damage para capturar el daño.
    2. Dentro de este evento, se llama a la función de manejo de salud que decrementa, clampea y verifica la condición de muerte del jugador.

Aprende a crear un sistema de daño en Unreal Engine con Blueprints. Tutorial paso a paso para usar los nodos Apply Damage y Event Any Damage y gestionar la vida del jugador.

Acepto recibir anuncios de interes sobre este Blog.

Andrés Cruz

EN In english