RU

Урок 4 — Звуки и музыка

$this->sound() (SoundManager) воспроизводит эффекты и музыку, на компьютере и в браузере одинаково. Без звуковой карты всё молчит, но никогда не выдаёт ошибку.

Звуки, созданные на PHP

Synth создаёт ретро-звуки без всяких файлов:

use JumPHP\Audio\Synth;

if (!$this->sound()->hasSfx('jump')) {                        // только один раз
    $this->sound()->synth('jump', Synth::sweep(250, 600, 0.12));               // растущая частота
    $this->sound()->synth('coin', Synth::sequence([[988, 0.05], [1319, 0.12]])); // две ноты
    $this->sound()->synth('hit', Synth::noise(0.15));                          // шум
    $this->sound()->synth('bass', Synth::tone(110, 0.3, 'triangle'));          // square, triangle, sine, saw
}
$this->sound()->playSfx('jump');

Файлы

$this->sound()->loadSfx('explosion', 'assets/sfx/explosion.wav');     // wav, ogg, mp3
$this->sound()->loadMusic('level', 'assets/music/level.ogg');
$this->sound()->playMusic('level');
$this->sound()->stopMusic();

Громкость

setSfxVolume(0.8), setMusicVolume(0.5), setMuted(true): эти настройки сохраняются вместе с настройками игрока. Меню настроек превращает их в строки ['VOLUME', fn () => ..., null, fn (int $dir) => ...] (см. меню).

Есть и 3D-звук (позиционированный в пространстве): $this->engine->audio3d().