Самый простой способ - сохранить время при нажатии клавиши.Нет способа замедлить скорость системы ввода, поэтому вы должны подделать ее самостоятельно.Вот некоторый псевдокод, с которого можно начать.
// 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;
}
}
Основное преимущество этого подхода заключается в том, что он всегда будет основан на времени, а не на частоте кадров вашей игры.Так что если вы по какой-то причине бросаете кадры, ваш персонаж все равно будет двигаться с той же скоростью.