Симулирайте движението на обекта на играта, сякаш сървърът обработва заявки със забавяне

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

В момента използвам доста прост алгоритъм:

  1. Докато (въвеждането е задържано) Добавете точка към текущия съществуващ списък с точки
  2. Проверете дали списъкът надвишава максималното отместване (даден брой точки) -> a. Преместете обекта над индексната точка 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 + Закъснение“.

В резултат на това вашият код няма да разбере искането за промяна на дестинацията и да продължи да премества обекта към предишната му цел, докато не изтече времето за „Забавяне“.

person Alexei Levenkov    schedule 08.06.2014