如何减慢用户输入?

时间:2011-05-02 16:29:14

标签: c# xna

我的更新功能被调用为每秒60次,并且播放器意味着在我的网格上以32像素的步长移动,因此播放器移动得非常快,我想要一种方式只接收每个像10帧的某些键输入,仍然让我的游戏以60fps运行。

2 个答案:

答案 0 :(得分:3)

你可以

  • 要求用户通过释放每个键进行全键盘点击
  • 将用户的位置设置为float-sort而不是int,其中整个部分表示网格步骤。当用户尝试向特定方向移动时,它将以某个定义的速度移动(例如每秒2次),当浮动位置变为下一个单元格玩家跳跃时
  • 你可以要求玩家在一定的时间内(例如.5秒)留在特定的单元格中 - 从而确定速度移动的速度。

答案 1 :(得分:0)

最简单的方法是在按下按键时保持时间。没有办法降低输入系统的速度,所以你必须自己伪造它。这是一些让你开始的伪代码。

// 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;
  }
}

这种方法的主要优点是它总是基于时间而不是游戏的帧速率。因此,如果你出于某种原因丢帧,你的角色仍会以相同的速度移动。