Índice de contenido
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
Meshdel enemigo (en este caso, la planta) en el momento exacto en que se detecta el golpe. - Cómo hacerlo: Busca la propiedad
Collisionen el componenteStatic MeshoSkeletal Meshdel enemigo y ajusta el preset aNo 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
Delayen 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
- 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. - Resta Vectorial: Restamos el vector de posición de la planta al del jugador usando el nodo de sustracción de vectores (
Vector - Vector):VectorDirección = PosiciónJugador - PosiciónPlanta
- 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 de1, 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
Meshdel enemigo ya no influyen en el resultado.
- Con un vector normalizado, la distancia o la escala del
- 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.

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
EmpujeFinalal pinLaunch Velocitydel nodoLaunch Character. - El parámetro
XY Overridete 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 Overridecontrola 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 enZ.
5. ✅ Resumen: Flujo Completo en Blueprint
Para consolidar todo, el flujo en tu Blueprint del enemigo quedaría así:
- Se detecta la colisión o el solapamiento con el jugador.
- Se desactiva la
CollisiondelMeshdel enemigo → presetNo Collision. - Se obtienen las posiciones de ambos actores con
Get Actor Location. - Se calcula el vector de dirección:
PosiciónJugador - PosiciónPlanta. - Se normaliza el vector con el nodo
Normalize. - Se multiplica por la magnitud deseada:
VectorNormalizado * MagnitudDeEmpuje. - Se conecta el resultado al pin
Launch Velocitydel nodoLaunch Character. - 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.