I. Introduction▲
Le projet présenté dans cette série est tout aussi bien compatible avec Unity 4.6 qu'avec Unity 5.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - Roguelike 2D - Audio
III. Résumé▲
Dans ce chapitre, nous rajoutons les sons et les musiques afin de compléter notre jeu.
III-A. Sons▲
Sachant que notre jeu est en 2D, tous les sons vont être joués à partir du gestionnaire de sons.
Vous pouvez le créer en ajoutant un nouvel objet vide. À celui-ci, ajoutez deux sources audio, la première pour les effets sonores, la seconde pour la musique.
III-B. SoundManager.cs▲
Le script permet de jouer des sons, choisis aléatoirement dans une liste, avec une hauteur aléatoire afin de casser la monotonie. Comme pour le gestionnaire de jeu, ce script est un Singleton.
Le mot clé params, utilisé dans la fonction RandomizeSfx, permet de passer plusieurs paramètres à la fonction (séparés par des ',') qui seront regroupés en un tableau de ces paramètres.
III-B-1. Script▲
using
UnityEngine;
using
System.
Collections;
namespace
Completed
{
public
class
SoundManager :
MonoBehaviour
{
public
AudioSource efxSource;
// Symbolise une référence vers la source audio qui jouera les effets sonores.
public
AudioSource musicSource;
// Symbolise une référence vers la source audio qui jouera les musiques.
public
static
SoundManager instance =
null
;
// Permet aux autres scripts d'appeler les fonctions de SoundManager.
public
float
lowPitchRange =
.
95f
;
// Borne minimale pour la hauteur aléatoire des effets sonores.
public
float
highPitchRange =
1
.
05f
;
// Borne maximale pour la hauteur aléatoire des effets sonores.
void
Awake (
)
{
// Vérifie s'il y a déjà une instance de SoundManager
if
(
instance ==
null
)
// si ce n'est pas le cas, la définir à celle-ci.
instance =
this
;
// Si l'instance existe déjà :
else
if
(
instance !=
this
)
// Détruit celle-ci, faisant qu'il ne peux y avoir qu'une seule et unique instance de SoundManager.
Destroy (
gameObject);
// Définit le SoundManager à DontDestroyOnLoad pour qu'il ne soit pas détruit lors du rechargement de la scène.
DontDestroyOnLoad (
gameObject);
}
// Permet de jouer un unique morceau sonore.
public
void
PlaySingle
(
AudioClip clip)
{
// Définit le clip de notre source sonore au clip passé en paramètre.
efxSource.
clip =
clip;
// Joue le clip.
efxSource.
Play (
);
}
// La fonction RandomizeSfx choisit aléatoirement un clip audio et change légèrement sa hauteur.
public
void
RandomizeSfx (
params
AudioClip[]
clips)
{
// Génère un nombre entre 0 et la taille du tableau de clips passé en paramètre.
int
randomIndex =
Random.
Range
(
0
,
clips.
Length);
// Choisit une hauteur aléatoire entre les bornes définies pour jouer notre clip.
float
randomPitch =
Random.
Range
(
lowPitchRange,
highPitchRange);
// Définit la hauteur de la source audio avec celle choisie aléatoirement.
efxSource.
pitch =
randomPitch;
// Définit le clip avec celui choisi aléatoirement.
efxSource.
clip =
clips[
randomIndex];
// Joue le clip.
efxSource.
Play
(
);
}
}
}
III-B-2. Mise en place▲
Associez le script à votre gestionnaire de jeu « SoundManager ». Ensuite, définissez les références vers les sources audio avec les composants adéquats du gestionnaire.
Pour la source audio dédiée à la musique, choisissez la musique « scavengers_music » comme clip et cochez l'option de bouclage « Loop ».
Pour la source audio des effets sonores, décochez « Play On Awake ».
Finalement, éditez le script du joueur afin d'appeler les fonctions du gestionnaire de sons pour jouer les effets sonores en adéquation avec les actions du joueur. Notez que la musique est arrêtée lorsque le joueur perd la partie.
Faites de même pour le script des ennemies afin qu'un son soit jouer lorsqu'un ennemi attaque et de même pour le script des murs, afin de jouer un son de destruction du mur.
IV. Ressources▲
Vous pouvez télécharger les ressources pour ce projet sur l'Asset Store de Unity.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.