Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2019, 17:59
Интересующийся
Отправить личное сообщение для Wimko Посмотреть профиль Найти все сообщения от Wimko
 
Регистрация: 05.10.2019
Сообщений: 13

Двумерные массивы для анимации на Phaser, как организовать?
Всем привет.... Пробую написать простейшую игру на 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 элементов...
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2019, 20:22
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Рисуй хоть сколько рядов и выбирай нужные индексы, индексы распространяются на все ряды. Например 2 строки по 5 элементов:
0 1 2 3 4
5 6 7 8 9

Последний раз редактировалось Rise, 26.10.2019 в 20:24.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подключить class к window.location для открытия ссылки в popup окне? Sergey771 Общие вопросы Javascript 0 19.11.2016 12:34
Как подключить полифил для стилей AlexKain Events/DOM/Window 2 01.07.2016 11:25
Как узнать реальный borderLeftWidth для TD в FireFox? gadyuka Events/DOM/Window 2 14.07.2013 11:58
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53