Проскакивает контроль прыжка ГГ в сторону, по нажатию двух клавиш. Как переделать управление ГГ?
Вариант 1 (тупой)
Добавить задержку в 200 мс перед тем, как герой начнет двигаться от клавиш вправо-влево. Это делается просто. В момент нажатия запоминаем текущее время с точностью до миллисекунд.
А условие движения такое: клавиша вправо зажата И время зажатия больше 200 мсВариант 2 (легкий)
При нажатии клавиши вверх делать прыжок даже в движении. Собственно, это даже более правильно, чем его не делать. То есть если герой идет достаточно долго вправо (несколько секунд), а потом игрок вдруг нажимает вверх, то герой должен не игнорировать нажатие, а сделать прыжок вправо+вверх. Разве не логично? Тогда проблема решится сама собой.Вариант 3 (сложный, для комбо)
Если у вас одновременное нажатие вправо+вверх - это какое-то особое комбо, то можно аналогично первому варианту отслеживать время нажатия вправо и в пределах этой задержки разрешать пользователю совершать данное комбо.
То есть при нажатии клавиши вправо нужно запомнить текущее время.
А при нажатии клавиши вверх проверяется условие.
Условие такое: клавиша вверх нажата И клавиша вправо была нажата менее 200 мс назадВариант 4 (улучшенный, комбо)
Аналогично предыдущему варианту, только еще нужно сделать откат координат героя на ту позицию, где он нажал клавишу вправо. Ведь это комбо считается только с места?Вариант 5 (правильный, комбо)
Чтобы не было резких откатов, нужно скорректировать не стартовую координату прыжка, а конечную точку прыжка. Скажем, герой прыгает по параболе. Просчитываем, куда он должен был попасть, если бы прыгал из той точки, где он нажал клавишу вправо. Затем пересчитываем, какая траектория должна быть, чтобы игрок с текущих координат попал бы в ту же точку. Точнее, считаем начальную скорость и направление, чтобы попасть в эту цель.Вариант 6 (домашнее задание)
В случае, если герой в прыжке может менять направление ускорения стрелками, то нужно подойти к геймдизайнеру и спросить, как быть в этому случае. Ведь в конечном итоге всё зависит от его задумки, какие ощущения у игрока он хотел вызвать.
1. Асинхронно нужно опрашивать клавиатуру и выставлять флаги в переменные перед расчётом кадра.
2. При расчёте кадра - собирать всё воедино и правильно создавать вектор перемещения ГГ.