![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
Здравствуйте, как привязать обновление игрового цикла не к кадрам, а ко времени? Например скорость отрисовки каждого кадра == 10мс. Полицейский преследует преступника со скорость 1px/1мс и делает выстрел каждые 30мс. Что если у пользователя случился зависон и кадр отрисовывался, скажем, 300мс? Мы можем подвинуть полицейского на 300рх, но как быть с выстрелами? За прошедшее время он должен был сделать 10 выстрелов, мы не можем в этом же кадре выпустить сразу 10 пуль - это будет нарушением логики. Как быть?
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 243
|
Я решаю эту проблему с помощью тиков:
осуществляю подписку и каждый кадр просчитываю сколько действий нужно выполнить private function onEnterFrame(e: Event): void { var timeNow: Number = new Date().getTime(); _time += timeNow - _timeLastUpdate; _timeLastUpdate = timeNow; while (_time > Number(1000 / GameConfig.TPS)) { _time -= Number(1000 / GameConfig.TPS); tick(); } } tick() - функция, которая будет вызываться с необходимой нам частотой. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
http://habrahabr.ru/post/136878/
Тут было в блогах и обсуждали, но не нашел. Там, правда, придётся мозг включить, но зато тема раскрыта достаточно полно.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
Похоже, для моего случая решения нет. Метод интерполяции опирается на стабильную скорость выполнения логики, а не отображения. Если у пользователя логика отрабатывает не положенные ей 10мс, а 300мс, то ничего тут уже не сделаешь.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Апдейт(300мс) вполне с таким справится. Но будет 3 фпс. А если это единичное просаживание, то основные способы, что там указаны способны помочь (собсно, про то статья).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|