Audio

El motor reproduce audio de dos formas: el componente AudioPlayer, para música de fondo y pistas largas con pausa y reanudación, y la utilidad playSfx, para efectos de sonido puntuales.

Cargar archivos de audio

Los archivos de audio se cargan a través del Asset Manager con loadAudio, normalmente en el método loadAssets de una escena. Una vez cargado, un recurso de audio se obtiene con getAudio.

import { Scene } from "angry-pixel";

export class MainScene extends Scene {
    loadAssets() {
        this.assetManager.loadAudio("audio/music/theme.ogg");
        this.assetManager.loadAudio("audio/sfx/coin.ogg");
    }
}

Reproducir música

Para la música de fondo, agrega un componente AudioPlayer a una entidad. Usa la Web Audio API, admite reproducción en bucle y pausa/reanudación, y respeta la política de autoreproducción del navegador.

import { AudioPlayer } from "angry-pixel";

this.entityManager.createEntity([
    new AudioPlayer({ audioSource: "audio/music/theme.ogg", volume: 0.5, loop: true }),
]);

Los métodos play, pause y stop del componente controlan la reproducción. Consulta AudioPlayer para la API completa.

Reproducir efectos de sonido

Para efectos de sonido puntuales como monedas, impactos o respuestas de la interfaz, usa la utilidad playSfx. Reproduce el sonido desde el principio, incluso si ya se está reproduciendo, y normalmente se llama desde un sistema.

import { GameSystem, playSfx } from "angry-pixel";

export class CoinSystem extends GameSystem {
    onUpdate() {
        const coin = this.assetManager.getAudio("audio/sfx/coin.ogg");
        playSfx({ audioSource: coin });
    }
}

playSfx acepta las siguientes opciones:

OpciónTipoValor por defectoDescripción
audioSourceAudioSourceEl recurso de audio a reproducir, obtenido con getAudio.
volumenumber1Volumen de reproducción.
loopbooleanfalseSi el sonido se repite.

stopSfx detiene un efecto de sonido, pausándolo y reiniciándolo al principio. Es útil para interrumpir un efecto en bucle.

import { stopSfx } from "angry-pixel";

const coin = this.assetManager.getAudio("audio/sfx/coin.ogg");
stopSfx(coin);

Nota: Usa playSfx para efectos de sonido cortos y frecuentes, y el componente AudioPlayer para música y pistas largas que necesiten pausa y reanudación.