Estoy trabajando en un juego en Unity. ¿Cómo agrego sonido a un objeto en Unity durante las colisiones?

Hay dos componentes necesarios para reproducir sonidos en Unity, un AudioListener para escuchar el sonido y un AudioSource para reproducirlo. Su cámara principal ya debe tener un oyente de audio conectado y solo puede tener uno en una escena.

Un componente AudioSource es exactamente lo que parece. Es una fuente de sonido. Puede adjuntar un audio a cualquier objeto del juego, asignarle un elemento de sonido y luego, cuando desee reproducir el sonido, obtendrá una referencia a AudioSource en un script y llamará al método Play ().

Por supuesto, para jugar desde un AudioSource necesitas recursos para jugar. Puede utilizar tres tipos de recursos de audio, comprimidos (como .mp3) sin comprimir (como .wav) y archivos de seguimiento (como melodías de chip). Algunas plataformas tienen restricciones sobre cuántos archivos comprimidos puede reproducir a la vez (como uno), por lo que generalmente su música está comprimida y sus efectos de sonido no.

La otra cosa a la que debe prestar atención con los recursos de audio es si desea que sean sonidos 2D o 3D. Un sonido 2D simplemente se reproduce normalmente. Un sonido 3D se atenúa en función de la ubicación relativa de la fuente de audio a la cámara.

Todo lo que tiene que hacer es adjuntar un componente AudioSource al objeto que desea colisionar o puede hacerlo directamente mediante un script.
Agregue un script al objeto del juego y solo agregue este código en C # en la parte superior de su script

[RequireComponent (typeof (AudioSource))]
y unity agregará automáticamente una fuente de audio.

luego cree una variable de tipo de audio público.

Audio de audio público;

Luego, dentro de la función OnCollisionEnter (), escriba el siguiente código.

nulo OnCollisionEnter (Collision Col) {
Audio.playOneShot (audio);
}

asegúrese de agregar el sonido a la variable de audio del inspector arrastrando y soltando .. 🙂

Espero que ayude..

Usa algo como esto:

AudioSource público audioSource;
colisión pública de AudioClip SoundClip

nulo OnCollisionEnter (colisión colisionador) {
audioSource.PlayOneShot (collisionSoundClip);
}

Si desea ir más allá y verificar las colisiones entre objetos específicos, y reproducir diferentes sonidos para ellos, puede verificar el nombre del “colisionador” variable.

AudioSource público audioSource;

AudioClip público clipOne;
audioClip público clipTwo;
audioClip público clipThree;

audioClip privado clipToPlay;

nulo OnCollisionEnter (colisionador colisionador)
{
if (collider.transform.gameObject.name == “ObjectOne”)
{
clipToPlay = clipOne;
}
si no (collider.transform.gameObject.name == “ObjectTwo”)
{
clipToPlay = clipTwo;
}
si no (collider.transform.gameObject.name == “ObjectThree”)
{
clipToPlay = clipThree;
}
reproducir sonido();
}

playSound privado vacío ()
{
audioSource.PlayOneShot (clipToPlay);
}

Es bastante simple

1- Asegúrate de que hay un colisionador conectado a tu objeto
2- Asegúrese de que la fuente de audio esté unida al mismo objeto del juego (desde el archivo, verifique si lo desea en 2D o 3D), también asegúrese de que esté configurado para no reproducir el audio automáticamente
3- Asegúrese de adjuntar un script que escriba con los métodos “OnCollisionEnter”, en esos métodos puede marcar “if collider == object” y luego si es verdadero “obtenga el componente de audio y llame al método play”
4- Asegúrese de que uno de los objetos tenga un cuerpo rígido unido (uno de los objetos a colisionar es suficiente)

¡Te sugiero que veas muchos tutoriales de Unity3D y la mejor de las suertes mientras aprendes!