Phaser — это мощная библиотека для создания 2D-игр на JavaScript, предоставляющая гибкие инструменты для работы с анимациями. Анимация в Phaser строится на спрайтах, фреймах и ключах анимаций, что позволяет легко управлять последовательностью изображений и частотой их отображения.
Ключ анимации (key) — это уникальный
идентификатор, который используется для обращения к конкретной анимации.
Создавая анимацию, необходимо присвоить ей ключ, чтобы затем можно было
запускать её на нужном спрайте:
this.anims.create({
key: 'walk',
frames: this.anims.generateFrameNumbers('player', { start: 0, end: 5 }),
frameRate: 10,
repeat: -1
});
key — уникальное имя анимации.frames — массив кадров, которые будут
отображаться.frameRate — количество кадров в секунду.repeat — количество повторений; -1
означает бесконечный цикл.Ключи позволяют многократно использовать одну и ту же анимацию на разных объектах без повторного создания кадров.
Фреймы — отдельные изображения, составляющие анимацию. В Phaser фреймы могут быть:
Генерация фреймов из спрайт-листа осуществляется через метод
generateFrameNumbers:
this.anims.generateFrameNumbers('player', { start: 0, end: 5 });
start — индекс первого кадра в спрайт-листе.end — индекс последнего кадра.frames: [0, 2, 4, 5] для
произвольного порядка кадров.Frame rate определяет, сколько кадров отображается в
секунду. Высокий frameRate делает анимацию плавной, низкий
— более рваной и медленной. Для адаптивного управления частотой кадров
можно использовать:
frameRate: 12 // 12 кадров в секунду
frameRate делает движения дергаными.Параметры repeat и yoyo контролируют повтор
анимации:
repeat: -1 — бесконечный цикл.repeat: 0 — проигрывание один раз.yoyo: true — проигрывание анимации в обратном порядке
после достижения конца.Пример с автозапуском и бесконечным циклом:
this.anims.create({
key: 'run',
frames: this.anims.generateFrameNumbers('player', { start: 0, end: 7 }),
frameRate: 15,
repeat: -1
});
player.anims.play('run');
Спрайт может иметь несколько анимаций с разными ключами. Переключение
между ними выполняется методом play:
player.anims.play('walk'); // запуск анимации ходьбы
player.anims.play('jump'); // переключение на прыжок
Для плавного перехода можно использовать crossFade:
player.anims.crossFade('jump', 200); // плавный переход за 200 мс
Иногда требуется полная ручная контроль над кадрами:
player.anims.setFrame(3); // установка конкретного кадра
Метод полезен для синхронизации с событиями, ударами, столкновениями и другими триггерами внутри игры.
Эти элементы создают фундамент для сложных анимационных систем в Phaser, позволяя строить интерактивные, отзывчивые и визуально привлекательные игровые сцены.