Usa 'Launch Character' para efectos de retroceso y el Jugador Vuele Atrás al Ser Atacado en Unreal Engine

Video thumbnail

Esta configuración implementa el comportamiento clásico de los juegos de plataformas donde, al ser golpeado por un enemigo, el jugador es empujado una corta distancia hacia atrás.

El retroceso del jugador (o knockback) no es solo un efecto visual, sino una mecánica de gameplay crucial con un razonamiento lógico detrás:

  • Evitar Daño Constante: El empuje saca al jugador inmediatamente del área de ataque del enemigo. Sin este salto, si el daño se aplica por simple contacto, el jugador seguiría recibiendo daño y podría morir al instante, incluso con un breve periodo de invulnerabilidad.
  • Prevenir Atascos (Stuck): Un problema común en la física es que, al colisionar, los meshes (jugador y enemigo) pueden quedar atorados uno dentro del otro, impidiendo el escape del jugador. El retroceso asegura que se separen.

Desactivación Temporal de Colisiones:

  • Para evitar que los meshes queden atorados, inmediatamente después de que se detecta el golpe, se realiza una acción clave:
  • Acción: Se desactivan las colisiones del Mesh del enemigo (la planta).
  • Efecto: Al buscar la propiedad Collision en las propiedades del Mesh y ajustarla a "No Collision", la planta se vuelve "transparente" a nivel de física, permitiendo que el jugador sea empujado sin quedarse atrapado.

2. Cálculo del Vector de Retroceso

La parte fundamental es determinar la dirección exacta del empuje, que debe ser la dirección opuesta al enemigo.

a. Obtener el Vector Dirección

  1. Posiciones: Obtenemos la posición del jugador y la posición del enemigo (la planta).
  2. Resta Vectorial: Restamos el vector de posición del jugador menos el vector de posición del enemigo:
    1. {Vector Dirección} = {Posición del Jugador} - {Posición de la Planta}
  3. El vector resultante tiene tres componentes $(X, Y, Z)$ y apunta del enemigo hacia el jugador.

b. Normalización y Aplicación del Empuje

El dilema de la resta vectorial es que la magnitud (longitud) del vector resultante varía en función de la distancia y escala de los objetos. Esto haría que, si la planta está más lejos, el salto sea involuntariamente mayor.

  • Normalización: El vector resultante se normaliza, convirtiéndolo en un vector de longitud 1.
    • Esto asegura que el vector solo contenga la dirección pura.
  • Cálculo Final: El vector normalizado se multiplica por una magnitud controlada, lo que define la fuerza final del knockback:
    • {Empuje Final} = {Vector Dirección Normalizado} x {Magnitud de Empuje}

Importancia: Al normalizar, la distancia o la escala del Mesh (una planta grande generaría vectores más largos) ya no afecta la dirección, permitiendo un control consistente sobre el empuje aplicado al jugador (por ejemplo, $1800$ para el salto vertical y un valor menor para el retroceso).


Y si no normalizas, el salto variaría de forma no deseada.

Normalizando, siempre trabajas con un vector de magnitud 1 y puedes controlar mejor el cálculo final:

Nodos para saltar atras

En la práctica, esto permite que el salto del jugador sea siempre el mismo, sin importar la distancia o escala del enemigo.

Así que, en resumen, esa es la lógica del salto hacia atrás.

También recomiendo desactivar las colisiones del enemigo durante el ataque, para evitar errores o bugs visuales al momento del contacto.

Acepto recibir anuncios de interes sobre este Blog.

Aprende a empujar al jugador hacia atrás cuando una planta enemiga ataca en Unreal Engine 5 usando Blueprint y mejorar la jugabilidad y añadir reacciones a tus enemigos. Ideal para juegos de acción o aventura.

| 👤 Andrés Cruz

🇺🇸 In english