Не отключать пользовательский ввод. Когда-либо. Постоянно опрашиваю.
Имеют функцию Tick () или OnFrameEnter (), которая выполняет следующие действия:
Опрашивать клавиатуру / джойстик / что угодно и кэшировать последнее направление, введенное пользователем.
Проверьте положение персонажа.
Если персонаж бездействует в центре квадрата сетки, установите его скорость в правильном направлении и увеличьте скорость движения на один шаг, если на пути нет объекта стены / столкновения. Также очистите последнее нажатие клавиши до некоторого недопустимого значения.
В противном случае, если персонаж уже движется, обновите положение персонажа, проверив наличие столкновения со стеной или близость к изменяющему направление узлу (пересечение). Если он сталкивается со стеной, остановите персонажа. Если он находится близко к узлу, меняющему направление, и может двигаться в направлении кэширования, измените направление и очистите направление кэширования. В противном случае, если направление ввода противоположно текущему направлению (оно находится в коридоре, и игрок хочет повернуть вспять), измените направление и затем нажмите клавишу. Все это предполагает, что персонаж должен продолжать двигаться, всегда, пока не достигнет стены и не остановится. Если вы хотите, чтобы персонаж остановился где-либо, клавиша обратного направления должна просто остановить его на месте.
Кэширование нажатия клавиш позволяет игроку превентивно менять направления, когда персонаж приближается к перекрестку. Таким образом, персонажу не нужно ждать, чтобы остановиться, чтобы двигаться дальше, и игрок не чувствует, что игра не отвечает. Опрос постоянно позволяет игроку менять направление в любое время и делает изменения направления на перекрестках более быстрыми.