Хорошо, так как я решил проблему, оставив возможным движение жидкости:
Сначала я добавил булеву переменную под названием «удерживается».Само по себе это было бесполезно, поэтому я также добавил числовую переменную под названием "timeHeld".Каждый раз, когда нажималась клавиша, я сбрасывал «timeHeld» в ноль и делал «Hold» == false, и помещал следующий код в мой цикл.
if (timeHeld < 20)
timeHeld++;
else
held = true;
Так в моем классе игрока, когда решался, каким образомдля перемещения он вызывает «Game.key», чтобы определить, какая клавиша нажата, тогда, если «удержанный» логический параметр истинен (что происходит через одну треть секунды), игрок идет в этом направлении, в противном случае игрок остается там, где он находится.на экране и просто изменил направление, в котором он смотрел.
Это работало до некоторой степени, но каждый раз, когда я менял направление, переменная «удерживалась» снова устанавливалась в ноль.Это означает, что каждый раз, когда я поворачиваюсь, меня задерживают на треть секунды, очень раздражает!
Так я делал это:
if (ke.getKeyCode() == 38) // '^ key'
{
if (key == NONE)
{
held = false;
timeHeld = 0;
}
key = UP;
return;
}
это означает, что, пока нажата клавиша со стрелкой«удерживается» остается верным, поэтому, как только игрок начинает движение, поворот на поворот не задерживается.
Это сработало абсолютно идеально, как и было, поэтому я и добавил другую переменную.Поскольку я использую только средний палец для клавиш ВВЕРХ и ВНИЗ, когда я играю с помощью клавиш со стрелками или «wasd», в итоге я отпускаю все клавиши, когда переключаюсь с движения на север на юг.В этом случае с кодом, как описано выше, я остановился на треть секунды SO, чтобы исправить это, я добавил переменную с именем «delay»
Когда ключ отпущен, задержка установлена на 10(петли), каждый цикл, который я вызываю:
if (delay > 0)
delay--;
, затем, когда нажимается клавиша, я звоню:
if (ke.getKeyCode() == 38) // '^ key'
{
if (key == NONE && delay == 0)
{
held = false;
timeHeld = 0;
}
key = UP;
return;
}
Это означает, что «удерживается» всегда устанавливается в «ложь», когданажата клавиша направления, и в то время, когда она была нажата, других клавиш со стрелками вниз не было, а задержка равна 0. Это дает мне задержку в 10 циклов между отпусканием всех клавиш со стрелками и нажатием еще одной кнопки до того, как для параметра «hold» установлено значение false..
В замешательстве?Я!но это работает, любой другой, у кого есть эта проблема, может либо перейти по ссылке на мой блог, где должен быть последний рабочий источник, либо просто попросить меня объяснить, какие биты вы не получите: D