En aquest tema, aprendrem com programar l'àudio en Unity utilitzant scripts en C#. Explorarem com reproduir clips d'àudio, controlar el volum, i gestionar l'àudio en resposta a esdeveniments del joc.

Conceptes Clau

  1. AudioSource: Component que reprodueix clips d'àudio.
  2. AudioClip: Fitxer d'àudio que es pot reproduir.
  3. AudioListener: Component que escolta l'àudio en l'escena, normalment associat a la càmera principal.
  4. Metodes d'AudioSource: Play(), Pause(), Stop(), etc.

Exemples Pràctics

  1. Configuració Bàsica

Primer, assegurem-nos que tenim un AudioSource i un AudioClip en el nostre projecte.

  1. Afegir un AudioSource:

    • Selecciona l'objecte de joc al qual vols afegir l'àudio.
    • A la finestra de l'Inspector, fes clic a "Add Component" i selecciona "AudioSource".
  2. Assignar un AudioClip:

    • Arrossega el fitxer d'àudio des de la finestra del Projecte fins al camp AudioClip del AudioSource en l'Inspector.

  1. Reproduir Àudio amb Scripts

Crearem un script per controlar la reproducció de l'àudio.

Script: AudioController.cs

using UnityEngine;

public class AudioController : MonoBehaviour
{
    public AudioSource audioSource;
    public AudioClip audioClip;

    void Start()
    {
        // Assignar l'AudioClip a l'AudioSource
        audioSource.clip = audioClip;
    }

    void Update()
    {
        // Reproduir l'àudio quan es prem la tecla espai
        if (Input.GetKeyDown(KeyCode.Space))
        {
            PlayAudio();
        }

        // Pausar l'àudio quan es prem la tecla P
        if (Input.GetKeyDown(KeyCode.P))
        {
            PauseAudio();
        }

        // Aturar l'àudio quan es prem la tecla S
        if (Input.GetKeyDown(KeyCode.S))
        {
            StopAudio();
        }
    }

    void PlayAudio()
    {
        if (!audioSource.isPlaying)
        {
            audioSource.Play();
        }
    }

    void PauseAudio()
    {
        if (audioSource.isPlaying)
        {
            audioSource.Pause();
        }
    }

    void StopAudio()
    {
        if (audioSource.isPlaying)
        {
            audioSource.Stop();
        }
    }
}

  1. Controlar el Volum

Podem ajustar el volum de l'àudio mitjançant el component AudioSource.

Script: VolumeController.cs

using UnityEngine;

public class VolumeController : MonoBehaviour
{
    public AudioSource audioSource;

    void Update()
    {
        // Ajustar el volum amb les tecles de fletxa amunt i avall
        if (Input.GetKey(KeyCode.UpArrow))
        {
            audioSource.volume += 0.01f;
        }

        if (Input.GetKey(KeyCode.DownArrow))
        {
            audioSource.volume -= 0.01f;
        }

        // Assegurar que el volum es manté entre 0 i 1
        audioSource.volume = Mathf.Clamp(audioSource.volume, 0f, 1f);
    }
}

Exercicis Pràctics

Exercici 1: Reproduir Àudio en Resposta a un Esdeveniment

Crea un script que reprodueixi un clip d'àudio quan el jugador col·lisioni amb un objecte específic.

Solució

using UnityEngine;

public class CollisionAudio : MonoBehaviour
{
    public AudioSource audioSource;
    public AudioClip collisionClip;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            audioSource.PlayOneShot(collisionClip);
        }
    }
}

Exercici 2: Crear un Controlador de Música de Fons

Crea un script que reprodueixi música de fons en bucle i permeti ajustar el volum amb les tecles de fletxa.

Solució

using UnityEngine;

public class BackgroundMusicController : MonoBehaviour
{
    public AudioSource musicSource;

    void Start()
    {
        musicSource.loop = true;
        musicSource.Play();
    }

    void Update()
    {
        if (Input.GetKey(KeyCode.UpArrow))
        {
            musicSource.volume += 0.01f;
        }

        if (Input.GetKey(KeyCode.DownArrow))
        {
            musicSource.volume -= 0.01f;
        }

        musicSource.volume = Mathf.Clamp(musicSource.volume, 0f, 1f);
    }
}

Errors Comuns i Consells

  • No Assignar l'AudioSource o l'AudioClip: Assegura't que els camps AudioSource i AudioClip estan assignats en l'Inspector.
  • Volum Fora de Rang: Utilitza Mathf.Clamp per assegurar que el volum es manté entre 0 i 1.
  • Reproduir Àudio Repetidament: Utilitza audioSource.isPlaying per evitar reproduir l'àudio repetidament si ja està sonant.

Conclusió

En aquesta secció, hem après com programar l'àudio en Unity utilitzant scripts en C#. Hem vist com reproduir, pausar i aturar clips d'àudio, així com ajustar el volum. Aquests conceptes són fonamentals per crear una experiència de joc immersiva amb àudio dinàmic. En el següent tema, explorarem l'àudio 3D i el so espacial per afegir una nova dimensió a l'àudio del nostre joc.

Curs de Unity

Mòdul 1: Introducció a Unity

Mòdul 2: Programació Bàsica en Unity

Mòdul 3: Treballant amb Actius

Mòdul 4: Física i Col·lisions

Mòdul 5: Interfície d'Usuari (UI)

Mòdul 6: Àudio en Unity

Mòdul 7: Programació Avançada

Mòdul 8: Física Avançada i IA

Mòdul 9: Optimització i Rendiment

Mòdul 10: Publicació i Més Enllà

© Copyright 2024. Tots els drets reservats