El so i la música són elements fonamentals per crear una experiència de joc immersiva. En aquest tema aprendràs com afegir efectes de so i música de fons als teus jocs amb Phaser, des de la càrrega fins a la reproducció i el control del volum.


Conceptes clau

  • Tipus de so: Efectes de so (SFX) i música de fons (BGM).
  • Càrrega d’arxius d’àudio: Com carregar sons i música al teu projecte.
  • Reproducció i control: Com iniciar, aturar, pausar i ajustar el volum dels sons.
  • Gestió de múltiples sons: Com gestionar diversos sons alhora.
  • Formats d’àudio compatibles: OGG, MP3, WAV, etc.

  1. Càrrega d’arxius d’àudio

Abans de poder utilitzar sons o música, has de carregar els arxius d’àudio durant la fase de pre-càrrega de la teva escena.

// Exemple de pre-càrrega d'àudio a Phaser
preload() {
  this.load.audio('jump', 'assets/sounds/jump.wav');
  this.load.audio('bgm', [
    'assets/music/background.mp3',
    'assets/music/background.ogg'
  ]);
}

Explicació:

  • this.load.audio(clau, ruta): Carrega un arxiu d’àudio. Pots passar un array de rutes per assegurar compatibilitat entre navegadors.
  • Les claus ('jump', 'bgm') s’utilitzen després per referenciar els sons.

  1. Reproducció de sons i música

Un cop carregats, pots reproduir els sons i la música fàcilment.

// Exemple de reproducció d'un efecte de so
let jumpSound = this.sound.add('jump');
jumpSound.play();

// Exemple de reproducció de música de fons en bucle
let bgm = this.sound.add('bgm', { loop: true, volume: 0.5 });
bgm.play();

Explicació:

  • this.sound.add(clau, opcions): Afegeix un so a la memòria. Pots passar opcions com loop (repetició) i volume.
  • .play(): Reprodueix el so.
  • Pots controlar el volum i si la música es repeteix.

  1. Control avançat de l’àudio

Phaser permet controlar l’àudio de manera detallada:

Acció Exemple de codi Explicació
Pausar la música bgm.pause(); Pausa la música
Reprendre la música bgm.resume(); Reprèn la música pausada
Aturar la música bgm.stop(); Atura la música completament
Ajustar el volum bgm.setVolume(0.2); Canvia el volum (0.0 a 1.0)
Reproduir només un cop jumpSound.play({ loop: false }); Reprodueix l’efecte de so una sola vegada

  1. Bones pràctiques i consells

  • Evita la saturació: No reprodueixis massa sons alhora per evitar soroll i saturació.
  • Formats d’àudio: Proporciona més d’un format (OGG, MP3) per garantir compatibilitat.
  • Pre-càrrega: Carrega tots els sons abans de començar el joc per evitar retards.
  • Control de volum: Permet als jugadors ajustar el volum o silenciar el joc.

  1. Exercicis pràctics

Exercici 1: Afegir un efecte de so a una acció

Enunciat:
Carrega un efecte de so anomenat 'coin' i fes que es reprodueixi cada cop que el jugador recull una moneda.

Solució:

// Preload
preload() {
  this.load.audio('coin', 'assets/sounds/coin.wav');
}

// Create
create() {
  this.coinSound = this.sound.add('coin');
}

// Quan el jugador recull una moneda
collectCoin() {
  this.coinSound.play();
  // Altres accions relacionades amb la moneda...
}

Consell:
Assegura’t que la funció collectCoin() s’executa quan el jugador col·lisiona amb una moneda.


Exercici 2: Música de fons amb control de volum

Enunciat:
Carrega una música de fons i fes que es reprodueixi en bucle. Afegeix un botó per silenciar o activar el so.

Solució:

// Preload
preload() {
  this.load.audio('bgm', [
    'assets/music/background.mp3',
    'assets/music/background.ogg'
  ]);
}

// Create
create() {
  this.bgm = this.sound.add('bgm', { loop: true, volume: 0.5 });
  this.bgm.play();

  // Botó per silenciar/activar
  this.isMuted = false;
  this.muteButton = this.add.text(10, 10, 'Silencia', { fontSize: '16px', fill: '#fff' })
    .setInteractive()
    .on('pointerdown', () => {
      this.isMuted = !this.isMuted;
      this.bgm.setMute(this.isMuted);
      this.muteButton.setText(this.isMuted ? 'Activa so' : 'Silencia');
    });
}

Error comú:
Oblidar-se de passar l’opció loop: true farà que la música només soni una vegada.


Resum

  • Has après a carregar, reproduir i controlar efectes de so i música de fons a Phaser.
  • Saps com gestionar el volum, la repetició i la pausa dels sons.
  • Has practicat amb exercicis per integrar l’àudio en accions del joc i la interfície d’usuari.

Pròxim pas:
A la següent secció aprendràs a crear botons i menús interactius per millorar la interfície del teu joc.

Phaser - Desenvolupament de jocs amb JavaScript

Mòdul 1: Introducció al desenvolupament de jocs i Phaser

Mòdul 2: Fonaments de Phaser

Mòdul 3: Sprites i animació

Mòdul 4: Física i interactivitat en el joc

Mòdul 5: Món del joc i càmera

Mòdul 6: Àudio i interfície d’usuari

Mòdul 7: Arquitectura del joc i gestió d’estats

Mòdul 8: Funcionalitats avançades de joc

Mòdul 9: Desplegament i optimització

Mòdul 10: Projecte final

© Copyright 2024. Tots els drets reservats