Leonardo Gutierrez
Genial
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.
¿Qué ajustes de Audio Source conviene revisar?
Configura un Audio Source en cada objeto que deba sonar.
¿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.
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.
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<SFXManager>() 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:
Ideas para continuar y practicar:
¿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.
Leonardo Gutierrez
Genial
Harold Jara
Cuando configuro el sonido del efecto de la sangre con el check de Play On Awake en true suena a penas comienza el juego, en la etiqueta de descripción me dice que se reproduce cuando la escena carga. ¿Como lo puedo solucionar, no veo una opción que me funcione y si lo dejo en false no suena al instanciarse?
Leonel Grisaleña
Hice exactamente lo mismo de la clase, pero cuando inicio el juego el sonido del player atacando se reproduce una vez en volumen muy alto (aunque yo lo configuré más bajo y luego en el juego al atacar se escuche mas bajo).
Por que podría llegar a ser? El tilde “on awake” del audio source está desactivado. Note que el conejo aparece mirando hacia arriba e inmediatamente cambia hacia abajo. Tal vez esté ejecutando rapidamente la animación de atacar? Intente en el Awake() setear el attacking = false o incluso la animación pero no he conseguido ningun resultado. Espero su ayuda. Gracias..
Leonel Grisaleña
Ya lo resolví. Basicamente el profesor en un momento arrastra los audios a la Hierarchy pero NO a la escena. Si lo arrastran a la escena ademas de no crear el gameObject, se agrega como componente de audio en el grid. Con lo que se camufla el audio source ahi y suena siempre cuando inicia.