Доброго времени, сообщество!
Такая ситуация: 2D игра, персонаж может ходить влево, вправо, поднимается вверх, используется фрейм анимация.
Как использовать единый интерфейс по работе с фрейм анимацией?
Есть класс/функция:
function Sprite(){
this.size; // [30,40] - ширина и высота спрайт элемента
this.position; // [0,0] - х, у
this.frame; // [0,1,2,3,4,5,6] - кадры на спрайт-карте
}
Соответственно для каждого из направлений движения у меня свой спрайт-лайн на общей спрайт-карте (влево, вправо, вверх)
И есть класс/функция для объекта в котором содержаться спрайты.
function Elem(){
this.size = {width: 0, height: 0};
this.position = {top: 0, left: 0};
this.movement = new Sprite(); // Храним актуальный спрайт
this.sprite = {
left: new Sprite(),
right: new Sprite(),
up: new Sprite(),
}
this.status = {frame: 0, movement: 'left'};
}
Мой единый интерфейс это Elem().movement в который в зависимости от направления перезаписываются данные из Elem().sprite.(left,right,up)
т.е. если мой персонаж должен пойти вправо, то я перегружаю
Elem().movement = Elem().sprite.right
и продолжаю работать с анимацией в едином интерфейсе.
В этом мой вопрос:
На сколько верно я мыслю?
Как вообще решают такие задачи?
Где бы почитать про это всё дело?
Спасибо!