Игра на холсте HTML5 setTimeInterval для нескольких объектов, создающих трудности

Я впервые создаю игру на холсте HTML5. Это игра в жанре Tower Defense, поэтому в основном у меня есть множество вражеских объектов из класса «Враг», которые летят по пути. Затем у меня также есть массив объектов башни из класса «Башня», которые убивают их, когда они приближаются.

Для обеих этих операций перемещения нескольких врагов и стрельбы из башен я использую setInterval, как показано ниже, чтобы изменять их состояния и запускать анимацию независимо друг от друга, используя set intervall в экземплярах соответствующих классов. _thatTower.attackInterval = setInterval(функция () ...здесь код огня... },50);

Трудность, с которой я сталкиваюсь, заключается в том, что эти setIntervals, как правило, смешиваются с другими экземплярами и в некоторых случаях объединяются вместе и воспроизводят все ответы врагов как один, но не независимо.

Я хочу, чтобы они работали независимо. У меня есть два взгляда на это: 1. Либо есть лучший способ использовать setintetval для экземпляра того же класса, который я не использую. 2. ИЛИ может быть setinterval не подходит для использования в этих местах.. пожалуйста, дайте мне знать, как мы перемещаем многие вещи независимо, как в моем случае на Canvas ??

заранее спасибо


person Ashu khemka    schedule 07.08.2012    source источник


Ответы (1)


Вы должны сохранить значение, которое хранит время последнего изменения анимации. В своем игровом цикле перебирайте свои игровые объекты (это значение будет прикреплено к каждому из них) и соответствующим образом обновляйте состояние их анимации. Это традиционный подход, принятый для любого другого языка, и он немного более явный, чем многие таймеры.

person Vaughan Hilts    schedule 07.08.2012
comment
Ну, я могу хранить состояния анимации. вот так. Но как изменить состояния через равные промежутки времени для разных объектов (что я сейчас делаю с помощью таймеров). Например, башня стреляет по врагу, который находится в пределах досягаемости через равные промежутки времени. Этот интервал разный и не зависит от FPS игры. P.S. у каждой башни будет разное время, но через равные промежутки времени. - person Ashu khemka; 08.08.2012