Unity - Roguelike 2D

Audio

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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

 
Sélectionnez
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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2015 Unity Technologies. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.