Open a door : Sounds



Open a door (part I). <
    Open a door : Sounds
>
Open a door (part II)

 Ici, nous explorons une façon simple et rapide d'utiliser des sons. Il en existe de très nombreuses dans Unity (voir la rubrique "Pour aller plus loin").

Dans ce TP nous allons ajouter 2 sons à l'animation de la porte : le premier pour l'ouverture, le second pour la fermeture. Ils devront être synchronisés avec les actions.

Reprennez un TP contenant l'animation de la porte (Open a Door, part I, II ou III) avec le script C# associé. Des ressources supplémentaires sont données : des fichiers MP3 pour l'ouverture et la fermeture de la porte, importé du site gratuit : https://www.freesoundeffects.com

Deux exemples sont donnés : dans le premier les sons sont stockés dans le script, dans la variante les sons sont stockés dans des composant AudioSource.

Première méthode : les bruitages sont dans le script

Pour jouer les sons, il nous faut d'abord ajouter un composant (Add Component) à la porte : le composant AudioSource.
Ensuite, le plus simple et le plus direct est de modifier le script d'animation pour y ajouter le déclanchement des sons avec la fonction PlayOneShot() du composant AudioSource.
Dans cette première méthode, nous allons stocker les sons comme des variables publiques du script lui-même. Elles apparaitront dans le composant sous l'Inspector. Pour ce faire :

Ajoutez les 2 lignes suivantes dans la partie déclarative :

public AudioClip openDoorSound;
public AudioClip closeDoorSound;
Vous pouvez alors glisser les fichiers MP3 des Assets vers le composant script du GameObject dans l'Inspector.


Ajoutez la déclaration de l'AudioSource et son utilisation dans le script en ajoutant les lignes suivantes :
private AudioSource m_audio;

A l'initialisation, dans la fonction Start() réccuperez le composant AudioSource qui a été ajouté au propriétaire du script en ajoutant la ligne suivante dans le script :
m_audio = GetComponent<AudioSource>();

Dans la partie animation qui se trouve dans la fonction Update(), ajoutez aux endroits adéquats:
m_audio.PlayOneShot(openDoorMP3, 0.7F);
...
m_audio.PlayOneShot(closeDoorMP3, 0.7F);

Passez en mode GAME et testez le résultat.


Variante : les bruitages sont dans les AudioSources

Vous pouvez aussi stocker les fichiers sons directement dans l'AudioSource. Comme il y a 2 sons il faudra 2 composants AudioSource au GameObject.
Ensuite, comme précédemment :
1) Glissez les fichiers MP3 des Assets vers les composants AudioSource du GameObject (dans l'Inspector)
2) Puis modifiez le script :

Ajoutez les 3 lignes suivantes dans la partie déclarative :
private AudioSource openSound;
private AudioSource closeSound;
private Component[] sounds;  // voir la doc

A l'initialisation, dans la fonction Start() ajoutez :
sounds = GetComponents(typeof(AudioSource));
closeSound = (AudioSource)sounds[0];
openSound = (AudioSource)sounds[1];

Dans la partie animation qui se trouve dans la fonction Update(), ajoutez aux endroits adéquats:
openSound.play();
closeSound.play();


N'oubliez pas de décocher la case des composants AudioSource : Play On Awake

Passez en mode GAME et testez le résultat.


Pour aller plus loin

Pour voir une vidéo correpondant au TP, il y a celle de Jason Weimann (11min) : https://www.youtube.com/watch?v=_b2I--adKIo


Et pour aller VRAIMENT plus loin : Sonic Bloom nous montre comment utiliser le Koregraphy Editor pour faire "danser" toute la ferme sur la musique d'Alibi : la "Marche Des Squelettes" !

Vidéo à voir (25min) : https://www.youtube.com/watch?v=db6ZkwGLNsA





Open a door (part I). <
    Open a door : Sounds
>
Open a door (part II)