Имитация движения игрового объекта, как будто сервер обрабатывает запросы с задержкой

Вопрос: Может ли кто-нибудь дать мне представление о том, как я могу написать собственный алгоритм для перемещения объекта из точки А в точку Б с задержкой?

В настоящее время я использую довольно простой алгоритм:

  1. Пока(ввод удерживается) Добавить точку в текущий существующий список точек
  2. Проверьте, превышает ли список максимальное смещение (заданное количество точек) -> а. Переместите объект на точку индекса 0. b.Удалить индексную точку 0.
  3. Вернитесь к 1.

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


person Mama Tate    schedule 08.06.2014    source источник
comment
Что значит движение с запаздыванием? Отставание по отношению к чему?   -  person Alexei Levenkov    schedule 09.06.2014
comment
я использовал термин движение с задержкой, чтобы проиллюстрировать его проще, но теперь я вижу, что это может кого-то сбить с толку. Позвольте мне еще раз: 1) В сети задержка, синоним задержки, является выражением того, насколько время, необходимое для того, чтобы пакет данных попал из одной назначенной точки в другую... Я пытаюсь достичь этого с помощью объекта   -  person Mama Tate    schedule 09.06.2014
comment
Чтобы переместить объект из точки А в точку Б с задержкой l   -  person Mama Tate    schedule 09.06.2014
comment
Я до сих пор не уверен, чем это отличается от простого перемещения объекта с постоянной скоростью (расстояние AB/время до достижения B)...   -  person Alexei Levenkov    schedule 09.06.2014
comment
Разница в том, что он будет двигаться с постоянной скоростью, но с некоторой задержкой действий во времени.   -  person Mama Tate    schedule 09.06.2014
comment
Еще раз - задержка по сравнению с чем? У вас не может быть задержки, когда вы не знаете, когда это произойдет без задержки...   -  person Alexei Levenkov    schedule 09.06.2014
comment
Может быть, чтобы проиллюстрировать это лучше, просто представьте, что вы играете в какую-то онлайн-игру, и внезапно сервер начинает зависать. Если вы щелкнули где-то на карте в течение текущего времени задержки, персонаж перемещается в старую позицию щелчка, а не в новую. Пока задержка не исчезнет .   -  person Mama Tate    schedule 09.06.2014
comment
Это просто — просто задержите информацию о том, куда идти (например, отметьте переход к новому месту назначения после CurrentTime + 5 вместо CurrentTime) и обработайте это событие, когда придет время.   -  person Alexei Levenkov    schedule 09.06.2014
comment
Спасибо, я думаю, я упустил из виду некоторые вещи. Никогда не думал об этом решении...   -  person Mama Tate    schedule 09.06.2014
comment
Я обновил заголовок до того, что, по моему мнению, является вашей целью, не стесняйтесь редактировать (возврат возможен, но исходное название было очень запутанным).   -  person Alexei Levenkov    schedule 09.06.2014


Ответы (1)


Предполагая, что у вас есть какой-то пользовательский ввод и способ обработки событий.

Один из подходов заключается в явной задержке событий пользовательского ввода (или любых других событий) на более позднее время. т.е. когда пользователь нажимает, чтобы отправить игровой объект в новую позицию, вместо того, чтобы устанавливать его в качестве новой непосредственной цели, вы можете поместить действие в список будущих событий «Переместить в точку B, начиная с CurrentTime + Delay».

В результате ваш код не будет знать о запросе на изменение пункта назначения и продолжит перемещение объекта в его предыдущую цель, пока не пройдет время «Задержка».

person Alexei Levenkov    schedule 08.06.2014