Sistema de partículas de sangre en Unity

Clase 33 de 60Curso Avanzado de Creación de RPGs con Unity

Resumen

Crear un efecto de sangre creíble en Unity 2D es simple si anclas la emisión de partículas en el hit point de la espada. Aquí verás cómo ajustar el sistema de partículas, preparar un prefab limpio y dispararlo desde C# al colisionar con el enemigo. Resultado: una explosión tipo one shot alineada a la punta del arma y fácil de personalizar.

¿Cómo preparar el hit point y el sistema de partículas en Unity?

Antes de nada, reestructura el jugador: renombra el área de ataque a swing zone y crea un objeto vacío hijo en la punta de la espada llamado hit point. Colócalo justo donde quieres ver las gotas de sangre. No importa si está rotado: visualmente el efecto seguirá funcionando.

Crea un sistema de partículas: menú Effects > Particle System. Para configurarlo con claridad, muévelo temporalmente fuera del personaje. Si el equipo se ralentiza, puedes pausar el particle system, aunque conviene verlo en vivo para ajustar bien.

  • Ajusta la sorting layer en el panel Renderer: ponla igual que la del player para evitar que se dibuje detrás del escenario.
  • Reduce el tamaño inicial: start size ≈ 0.25. Partículas más sutiles.
  • Reduce el tiempo de vida: start lifetime ≈ 2 s. Menos estela y mejor control.
  • Cambia el color: rojo para simular sangre.
  • Cambia la forma: shape a esfera y radio ≈ 0.25. Emisión en todas direcciones.
  • Emisión: en Emission ajusta el rate por segundo y usa Bursts para picos de partículas por golpe.
  • Evolución del tamaño: activa size over lifetime y usa una curva que empiece grande y se reduzca hasta cero.
  • Reproducción: desactiva looping para que sea one shot y fija duración cercana a 2 s.
  • Nombra el sistema: “blood burst”.

¿Cómo crear el prefab y asegurar un instanciado exacto?

Convierte el sistema en prefab: arrástralo de la jerarquía al proyecto y elimina la instancia de escena para que no se reproduzca al iniciar.

Buenas prácticas del prefab para instanciar con precisión:

  • Transforms limpios: posición 0,0,0; rotación 0; escala 1.
  • Capa correcta: misma sorting layer que el player.
  • Nombre claro: “blood burst” para localizarlo rápido en el inspector.

Con esto, el efecto se instanciará exactamente en la posición y rotación del hit point cuando lo invoques desde código.

¿Cómo instanciar la animación de sangre en el hit point con C#?

La lógica vive en el script de ataque, ahora ubicado en la swing zone. Añade referencias al prefab y al hit point, y dispara la instancia en el momento de colisión.

  • Variables públicas: referencia al prefab de sangre y al hit point.
  • Colisión: en OnTriggerEnter2D, además de dañar al enemigo, instancia el efecto en la posición y rotación del hit point.
  • Asignación en inspector: arrastra el prefab “blood burst” a la variable de animación y el objeto hijo de la espada a hit point.

Ejemplo de código en C#:

typedef using UnityEngine;

public class WeaponDamage : MonoBehaviour
{
    public GameObject hurtAnimation;   // blood burst prefab
    public GameObject hitPoint;        // child at sword tip

    private void OnTriggerEnter2D(Collider2D other)
    {
        // Aquí iría la validación de enemigo si aplica.
        Instantiate(hurtAnimation, hitPoint.transform.position, hitPoint.transform.rotation);
    }
}

Consejos de ajuste fino:

  • Si la velocidad o dispersión no convence: baja el radio del shape o reduce el start lifetime.
  • Si se ven demasiado grandes: baja start size o la curva de size over lifetime.
  • Si se ve detrás del mapa: revisa la sorting layer en Renderer.
  • Si se repite sin parar: confirma que looping está desactivado.

¿Ya lo pusiste en marcha? Comparte qué combinación de Emission y Bursts te dio el mejor “golpe” visual en tu juego y comenta tus ajustes favoritos.

      Sistema de partículas de sangre en Unity