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.