Всем привет.... Пробую написать простейшую игру на js, с помощью Phaser и столкнулся с такой проблемой, в общем анимация там организована с помощью проигрывания спрайта... Проблема заключается в следующем... одномерный массив проигрывается без проблем, но для организации качественной анимации необходимо большое количество кадров... например я организовал анимацию летающего дракона с плавностью хода из 39 кадров... В общем получается сложно создавать такие спрайты которые немерной длины получаются... Я предполагаю что можно использовать как бы двумерные массивы для отображения спрайтов, т.е. на одной картинке сделать верхний спрайт кадры движения вправо, а нижний ряд движение влево. Это нужно для того, чтобы мы 1 картинку для анимации загружали, а не на каждое действие новую....
В общем я не нашел как это организовать...
Пример организации анимации одномерным массивом ниже.
...
this.load.image('bomb', 'assets/bomb.png');
this.load.spritesheet('dude', 'assets/dude.png', { frameWidth: 32, frameHeight: 48 } // создаем персонажа с размерами фрейма 32х48
function create ()
{
this.add.image(400, 300, 'sky'); //добавляем задний фон
player = this.physics.add.sprite(100, 450, 'dude');
player.setBounce(0.2);
player.setCollideWorldBounds(true);
this.anims.create({
key: 'left',
frames: this.anims.generateFrameNumbers('dude', { start: 0, end: 3 }),
frameRate: 10, // тут мы задаем те кадры которые проигрывать при хождении влево
repeat: -1
});
this.anims.create({
key: 'turn',
frames: [ { key: 'dude', frame: 4 } ],
frameRate: 20
});
this.anims.create({
key: 'right',
frames: this.anims.generateFrameNumbers('dude', { start: 5, end: 8 }),
frameRate: 10, //проигрывание кадров при движении влево....
repeat: -1
});
}
Вот так вот получается работа с одномерным массивом... по сути работа с
frames: this.anims.generateFrameNumbers('dude', { start: 5, end: 8 }),
Подскажите про кодеры как мне можно решить мою проблему? Возможно ли это.
PS: Думаю что возможно, т.к. я видел спрайты на 5-6 строк по 10-20 элементов...