Как замедлить пользовательский ввод? - PullRequest
0 голосов
/ 02 мая 2011

Моя функция обновления вызывается примерно 60 раз в секунду, и игрок должен перемещаться с шагом 32 пикселя по моей сетке, поэтому игрок движется очень быстро, я хочу, чтобы получались только определенные ключевые входные данные каждые 10 кадрови моя игра по-прежнему работает со скоростью 60 кадров в секунду.

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

Вы можете

  • требует, чтобы пользователь делал полные щелчки клавиатуры при отпускании каждой клавиши
  • имеет пользовательскую позицию для сортировки с плавающей точкой вместо int, где целая часть представляет шаги сетки. Пока пользователь пытается двигаться в определенном направлении, он будет двигаться с некоторой определенной скоростью (например, 2 в секунду), и когда позиция с плавающей точкой становится следующей, ячейка прыгает
  • Вы можете потребовать, чтобы игрок оставался в определенной ячейке некоторое заданное время (например, 0,5 секунды) - таким образом, определяется скорость и скорость его движения.
0 голосов
/ 02 мая 2011

Самый простой способ - сохранить время при нажатии клавиши.Нет способа замедлить скорость системы ввода, поэтому вы должны подделать ее самостоятельно.Вот некоторый псевдокод, с которого можно начать.

// See if the key is currently down
if (KeyIsDown(key))
{
  if (gameTime.TotalGameTime >= nextTime)
  {
    // Move the character, and indicate that you want to wait another second for movement.
    moveTheCharacter();
    nextTime = gameTime.TotalGameTime + 1;
  }
}

Основное преимущество этого подхода заключается в том, что он всегда будет основан на времени, а не на частоте кадров вашей игры.Так что если вы по какой-то причине бросаете кадры, ваш персонаж все равно будет двигаться с той же скоростью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...