В Phaser спрайтлисты (sprite sheets) представляют собой изображения, содержащие несколько кадров анимации, расположенных в сетке. Каждый кадр имеет одинаковый размер и может быть использован для создания анимаций персонажей, эффектов или элементов интерфейса. Для корректной работы с таким изображением необходимо правильно задать параметры сетки кадров при загрузке спрайтлиста.
this.load.spritesheetДля загрузки спрайтлиста используется метод
this.load.spritesheet в сцене Phaser. Его базовый
синтаксис:
this.load.spritesheet(key, url, {
frameWidth: number,
frameHeight: number,
startFrame?: number,
endFrame?: number,
margin?: number,
spacing?: number
});
0).Использование этих параметров критически важно для корректного извлечения кадров, особенно если кадры отделены друг от друга небольшими промежутками или если вокруг спрайтлиста есть рамка.
this.load.spritesheet('hero', 'assets/hero.png', {
frameWidth: 64,
frameHeight: 64,
margin: 1,
spacing: 2
});
В этом примере:
margin).spacing).Такая конфигурация позволяет Phaser корректно нарезать спрайтлист и создавать анимации без визуальных артефактов.
После загрузки спрайтлиста Phaser автоматически создаёт объект
Texture с набором кадров. Каждый кадр доступен через ключ
спрайта и индекс кадра:
this.add.sprite(100, 100, 'hero', 0); // отображает первый кадр
this.add.sprite(200, 100, 'hero', 5); // отображает шестой кадр
Индексация кадров начинается с 0 и идёт слева направо,
сверху вниз по сетке.
Создание анимаций из спрайтлиста выполняется с помощью метода
this.anims.create. Основные параметры:
this.anims.create({
key: 'walk',
frames: this.anims.generateFrameNumbers('hero', { start: 0, end: 9 }),
frameRate: 12,
repeat: -1
});
generateFrameNumbers, где указываются start и
end.-1 означает бесконечный цикл).margin и spacing на практикеОбычно margin используется, когда изображение
спрайтлиста содержит рамку вокруг всей сетки кадров, например, для
предотвращения наложения текстур при сглаживании. Параметр
spacing важен, если кадры имеют внутренние отступы, что
встречается в коммерческих наборах спрайтов или при экспортировании из
графических редакторов. Неправильное указание этих параметров приводит к
смещению кадров, появлению линий соседних кадров или разрыву
анимации.
Если кадры имеют разный размер, стандартный метод
spritesheet неприменим. В таких случаях используется
атлас текстур (Texture Atlas) с
JSON-файлом, где каждому кадру задаются конкретные координаты и размеры.
В отличие от sprite sheet, здесь нет строгой регулярной сетки, и Phaser
может точно вырезать кадры любой формы и размера.
spacing и margin при
возможности, чтобы снизить размер текстуры.this.add.sprite до создания анимаций.Правильная настройка параметров сетки кадров позволяет создавать плавные и точные анимации, избегая артефактов и проблем с отображением, что критично для динамических игр и интерактивных приложений на Phaser.