Efectos de sonido en Unity: método fácil

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

Resumen

Sumar efectos de sonido en Unity da vida inmediata al juego: golpes, explosiones y ataques se sienten reales y coherentes. Aquí verás, paso a paso y sin complicaciones, cómo importar audios, configurarlos con Audio Source y dispararlos de dos formas: al instanciar un GameObject o mediante un SFX Manager centralizado por código.

¿Cómo importar y preparar audio en Unity?

Importa los archivos desde los recursos y arrástralos a la carpeta Audio dentro de Assets. Unity los detectará como clips y mostrará una forma de onda, lo que ayuda a identificar silencios iniciales o finales. Si hay silencio indeseado, edítalo con herramientas gratuitas como Audacity.

  • Arrastra todos los audios a Assets/Audio.
  • Verifica la forma de onda para detectar silencios.
  • Opcional: edita silencios con Audacity antes de usarlos.

¿Qué ajustes de Audio Source conviene revisar?

Configura un Audio Source en cada objeto que deba sonar.

  • Audio Clip: asigna el clip correcto, por ejemplo, enemy explosion.
  • Play On Awake: desactívalo si no quieres que suene al iniciar.
  • Loop: solo si el clip debe repetirse.
  • Volume y Pitch: ajusta para coherencia con la escena.

¿Cómo reproducir efectos al instanciar un GameObject?

La forma más directa es añadir un Audio Source al prefab que se instancia y asignar el Audio Clip correspondiente. Ejemplo: el prefab blood burst (salpicadura de sangre) puede reproducir el sonido enemy explosion cada vez que aparece en pantalla.

  • Abre el prefab blood burst.
  • Añade componente Audio Source y asigna el clip enemy explosion.
  • Activa Play On Awake si debe sonar al aparecer.
  • Ajusta volumen y pitch para integrarlo con la escena.

Resultado: cada vez que se instancia el efecto visual de sangre, suena el grito del enemigo de forma automática y consistente.

¿Cómo centralizar sonidos con un SFX Manager por código?

Algunas veces conviene disparar sonidos desde los scripts. Para eso, crea un SFX Manager que mantenga referencias a los Audio Source y los reproduzca cuando otros scripts lo soliciten.

  • Crea un GameObject vacío: SFX Manager.
  • Añade el script SFXManager.
  • Arrastra a la escena tres GameObjects con Audio Source: player attack, player hurt, player death.
  • Importante: desactiva Play On Awake en los tres.
  • Ahora sí, hazlos hijos del SFX Manager para mantener orden.
  • Añade al SFX Manager el Don't Destroy On Load para que persista entre escenas.
  • En el inspector del SFX Manager, asigna cada referencia pública a su Audio Source correspondiente.

Ejemplo de script SFXManager con referencias públicas:

using UnityEngine;

public class SFXManager : MonoBehaviour
{
    public AudioSource playerAttack;
    public AudioSource playerHurt;
    public AudioSource playerDeath;
}

¿Cómo reproducir el ataque del jugador con código?

Integra el SFX Manager con el controlador del jugador para sonar al atacar. Usa FindObjectOfType() en Start y reproduce el clip en el input del ataque con Input.GetMouseButtonDown(0).

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private SFXManager sfxManager;

    void Start()
    {
        sfxManager = FindObjectOfType<SFXManager>();
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // Aquí ya haces tu animación de ataque.
            sfxManager.playerAttack.Play();
        }
    }
}

Claves técnicas a interiorizar:

  • Usa un único manager para evitar duplicados y mantener coherencia entre escenas.
  • FindObjectOfType() funciona porque solo hay un SFX Manager activo.
  • Evita lógica en Start/Update del SFX Manager: su papel es guardar referencias.
  • Combina efectos: ataque del jugador con la explosión del enemigo para reforzar feedback.

Ideas para continuar y practicar:

  • Dispara player hurt cuando el jugador reciba daño.
  • Reproduce player death en el evento de muerte del personaje.
  • Añade música de fondo y cambia a otra pista al entrar en la casa o volver al bosque.

¿Quieres que revise tu integración de Audio Source y SFX Manager o que te sugiera cómo organizar los sonidos por categoría? Cuéntame en comentarios qué efectos te falta conectar y en qué script lo harías.