Я бы, вероятно, следил за тремя координатами: последняя, текущая, следующая.Вы можете рассчитать расстояние и направление от последнего к текущему, а также местоположение и направление, в котором движется пользователь, и придумать некоторый алгоритм, чтобы убедиться, что пользователь движется в правильном направлении (убедитесь, что пользователь приближается к текущему, убедитесь, что он находится в пределахнекоторое расстояние линии от последнего к текущему и т. д.)
Затем в какой-то момент вам необходимо осознать, что пользователь подошел как можно ближе к Текущему и теперь движется к Следующему.Затем вы сдвинете точки вниз (Last = Current; Current = Next; Next = ???;
).Опять же, есть несколько способов сделать это определение (пользователь достаточно близко подошел к Текущему, пользователь движется к Следующему, отходит от Текущего и т. Д.)на случай, если вы пропустите несколько баллов, особенно когда баллы расположены близко друг к другу, но вы не хотите делать слишком много.Проверьте свой маршрут с петлями в дорожках и убедитесь, что вы не прыгаете вперед.Возможно, вам также потребуется реализовать какой-то метод holyExpletiveIHaveNoIdeaWhereTheUserIsGoing()
для восстановления после (неизбежных) ошибок.