Usa 'Launch Character' para efectos de retroceso y el Jugador Vuele Atrás al Ser Atacado
Índice de contenido
Te voy a mostrar una configuración interesante que, aunque realmente no tiene nombre, se utilizaba mucho en los juegos de plataformas. Es ese comportamiento típico en el cual, cuando un personaje es atacado —en este caso por la planta—, hace un pequeño salto hacia atrás.
Aquí hay varios detalles interesantes, porque hay un razonamiento bastante lógico detrás de esto.
Creo que, principalmente, se hace para que el jugador salga del área de ataque. ¿Entiendes? Si el personaje no retrocede, sigue recibiendo daño.
Y dependiendo del tipo de interacción que quieras lograr (por ejemplo, si el daño se produce solo al tocar el enemigo), sin ese salto y sin un tiempo de invulnerabilidad, el jugador moriría casi al instante por estar en contacto constante.
Problemas Comunes con Colisiones
Un problema común es que, cuando ambos Mesh colisionan, uno puede quedar atorado dentro del otro. Esto puede causar una muerte instantánea, ya que el jugador no podría escapar, y eso es algo que usualmente no queremos.
Entonces, ese salto hacia atrás es precisamente para evitar esos escenarios.
Configuración Básica
En resumen, tenemos a la planta y al jugador (como puedes ver en la foto de este post), que son los que queremos que interactúen. Pero esto puedes aplicarlo a cualquier tipo de Mesh.
Usualmente es eso: el jugador y un enemigo. Pero si tienes un juego más complejo, con NPCs controlados por IA, también podrías usar esta lógica.
Entonces, cuando ambos cuerpos colisionen, se puede ejecutar una acción.
Lo primero que hago es desactivar las colisiones de la planta.
Esto evita que los Mesh se queden atorados al juntarse.
Al momento del ataque, la planta se vuelve, por así decirlo, “transparente”.
Puedes ver esto fácilmente en las propiedades del Mesh buscando Collision.
Si le colocas “No Collision”, verás que efectivamente la planta ya no colisiona.
Cálculo del Vector de Retroceso
Aquí viene la parte “mágica”. Es una configuración sencilla.
Obtenemos la posición de la planta y del jugador.
Supón que este es el jugador y esta es la planta. Queremos calcular la distancia entre ambos, que en programación se representa como un vector.
Restamos sus vectores de posición.
Como es un entorno 3D, el vector resultante tiene tres componentes: alto, largo y ancho.
Ese vector es el que necesitamos para calcular la dirección del salto.
Normalización del Vector
¿Cuál es el dilema? Que dependiendo de quién esté a la izquierda o derecha, el vector puede ser positivo o negativo.
Por eso se normaliza, es decir, se convierte en un vector de longitud 1.
Luego lo multiplicamos por una magnitud para obtener el empuje del salto.
En mi caso, cuando el personaje salta, uso un valor de 1800 hacia arriba.
Para este salto hacia atrás, uso un valor menor.
Importancia de la Normalización
La normalización es clave porque te permite mantener la misma dirección sin importar la escala o distancia.
Por ejemplo, si la planta está más lejos, el vector tendría mayor magnitud.
Sin normalización, ese salto sería más grande solo por la distancia.
También influye si escalas el objeto.
Una planta grande generaría vectores más largos.
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:

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