Knockback en UE5: Cómo usar Launch Character para que el jugador vuele hacia atrás

- Andrés Cruz - EN In english

Video thumbnail

Esta configuración implementa el comportamiento clásico de los juegos de plataformas: cuando un enemigo golpea al jugador, este es empujado una corta distancia hacia atrás. En Unreal Engine 5 esto se logra usando el nodo Launch Character dentro de un Blueprint, y el resultado es inmediato tanto en términos de jugabilidad como de sensación de impacto.

1. ¿Por qué necesitas el Knockback?

El retroceso del jugador —conocido en la industria como knockback— no es solo un efecto visual agradable, sino una mecánica de gameplay fundamental con un razonamiento de diseño sólido 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 o solapamiento, el jugador podría seguir recibiendo hits continuos y morir en décimas de segundo, incluso si tienes activo un breve periodo de invulnerabilidad (iframes).
  • Prevenir atascos (stuck): Un problema frecuente en los motores de física es que, al colisionar, los meshes del jugador y del enemigo pueden quedar superpuestos o "encajados" uno dentro del otro, impidiendo que el jugador pueda moverse. El knockback garantiza que ambos objetos se separen correctamente tras el impacto.

2. Desactivación Temporal de Colisiones

Para evitar que los meshes queden atrapados entre sí, hay un paso previo crítico que debes ejecutar antes de aplicar el empuje:

  • Acción: Desactiva las colisiones del Mesh del enemigo (en este caso, la planta) en el momento exacto en que se detecta el golpe.
  • Cómo hacerlo: Busca la propiedad Collision en el componente Static Mesh o Skeletal Mesh del enemigo y ajusta el preset a No Collision. Esto hace que la planta se vuelva "transparente" a nivel de física durante el instante del impacto, permitiendo que el jugador sea empujado sin que ningún objeto quede atrapado.
  • Importante: Recuerda reactivar las colisiones del enemigo una vez que la animación de ataque haya terminado, o después de un breve Delay en el Blueprint, para que el enemigo vuelva a ser sólido en el resto de las interacciones.

3. Cálculo del Vector de Retroceso

La parte más importante de la lógica es calcular la dirección exacta del empuje. La regla es simple: el jugador debe salir disparado en la dirección opuesta al enemigo que lo golpeó.

a. Obtener el Vector Dirección

  1. Posiciones: Con los nodos Get Actor Location, obtenemos tanto la posición del jugador como la posición del enemigo (la planta) en el mundo 3D.
  2. Resta Vectorial: Restamos el vector de posición de la planta al del jugador usando el nodo de sustracción de vectores (Vector - Vector):
    1. VectorDirección = PosiciónJugador - PosiciónPlanta
  3. El vector resultante tiene tres componentes (X, Y, Z) y apunta desde el enemigo hacia el jugador, que es exactamente la dirección en la que queremos lanzarlo.

b. Normalización y Aplicación del Empuje

Aquí está el detalle técnico que marca la diferencia. La magnitud (o longitud) del vector resultante varía en función de la distancia entre los dos actores: si la planta está más lejos, el vector será más largo y el salto resultante sería involuntariamente mayor. Esto hace el comportamiento inconsistente e impredecible.

  • Normalización: Conecta el vector resultante al nodo Normalize. Esto convierte el vector a una longitud fija de 1, conservando únicamente la información de la dirección pura y descartando la magnitud original.
    • Con un vector normalizado, la distancia o la escala del Mesh del enemigo ya no influyen en el resultado.
  • Cálculo Final: Multiplica el vector normalizado por una magnitud de empuje que tú controles con una variable float. Eso define la fuerza final del knockback:
    • EmpujeFinal = VectorNormalizado * MagnitudDeEmpuje

¿Por qué es crítico normalizar? Sin normalización, el salto varía de forma no deseada según la posición relativa de los actores. Normalizando, siempre trabajas con un vector de magnitud 1 y puedes controlar el empuje de forma precisa y reproducible. Por ejemplo, un valor de 1800 para el componente vertical Z y un valor menor para el retroceso horizontal producen un salto hacia atrás y arriba visualmente convincente.

Nodos Blueprint en Unreal Engine 5 para calcular knockback con Launch Character

4. El Nodo Launch Character

Una vez calculado el vector de empuje, el último paso es aplicarlo al jugador usando el nodo Launch Character. Este nodo está disponible cuando tienes una referencia al Character del jugador y acepta un Launch Velocity de tipo Vector.

  • Conecta tu EmpujeFinal al pin Launch Velocity del nodo Launch Character.
  • El parámetro XY Override te permite decidir si el empuje sobreescribe el movimiento horizontal actual del jugador o se suma a él. En la mayoría de los casos de knockback, querrás activarlo (true) para que el resultado sea consistente.
  • El parámetro Z Override controla lo mismo para el eje vertical. Si deseas que el jugador también salte al recibir el golpe, actívalo junto con un valor positivo en Z.

5. ✅ Resumen: Flujo Completo en Blueprint

Para consolidar todo, el flujo en tu Blueprint del enemigo quedaría así:

  1. Se detecta la colisión o el solapamiento con el jugador.
  2. Se desactiva la Collision del Mesh del enemigo → preset No Collision.
  3. Se obtienen las posiciones de ambos actores con Get Actor Location.
  4. Se calcula el vector de dirección: PosiciónJugador - PosiciónPlanta.
  5. Se normaliza el vector con el nodo Normalize.
  6. Se multiplica por la magnitud deseada: VectorNormalizado * MagnitudDeEmpuje.
  7. Se conecta el resultado al pin Launch Velocity del nodo Launch Character.
  8. Después de un Delay, se reactivan las colisiones del enemigo.

Siguiendo este flujo, el salto del jugador siempre tendrá la misma intensidad, sin importar la distancia exacta ni la escala del enemigo. El comportamiento es predecible, controlable y fácil de ajustar simplemente modificando el valor de MagnitudDeEmpuje.

Y recuerda siempre desactivar las colisiones del enemigo durante el ataque para evitar bugs visuales o de física en el momento del contacto. Es un paso pequeño que ahorra muchos dolores de cabeza.

Descubre cómo hacer que el jugador salte hacia atrás al recibir daño en Unreal Engine 5. Usamos el nodo Launch Character, normalizamos el vector de dirección y desactivamos colisiones para evitar bugs. Tutorial Blueprint paso a paso.


Únete a la comunidad de desarrolladores que han decidido dejar de picar código y empezar a construir productos reales. Recibe mis mejores trucos de arquitectura cada semana:

Acepto recibir anuncios de interes sobre este Blog.