C# 如何降低用户输入速度?
我的更新功能每秒调用60次,玩家在我的网格上以32像素的步幅移动,所以玩家移动得非常快,我想找到一种方法,每10帧只接收某些关键点输入,并且仍然让我的游戏以60fps的速度运行。你可以C# 如何降低用户输入速度?,c#,xna,C#,Xna,我的更新功能每秒调用60次,玩家在我的网格上以32像素的步幅移动,所以玩家移动得非常快,我想找到一种方法,每10帧只接收某些关键点输入,并且仍然让我的游戏以60fps的速度运行。你可以 要求用户在释放每个键时完全单击键盘 将用户的位置设置为float,而不是int,其中整个部分表示网格步骤。当用户尝试朝特定方向移动时,它将以一定的速度移动(比如每秒2次),当浮动位置变成下一个单元格播放器跳跃时 你们可以要求玩家在特定的牢房里呆上一定的时间(比如0.5秒),这样就可以定义玩家移动的速度 你可以
- 要求用户在释放每个键时完全单击键盘
- 将用户的位置设置为float,而不是int,其中整个部分表示网格步骤。当用户尝试朝特定方向移动时,它将以一定的速度移动(比如每秒2次),当浮动位置变成下一个单元格播放器跳跃时
- 你们可以要求玩家在特定的牢房里呆上一定的时间(比如0.5秒),这样就可以定义玩家移动的速度
- 要求用户在释放每个键时完全单击键盘
- 将用户的位置设置为float,而不是int,其中整个部分表示网格步骤。当用户尝试朝特定方向移动时,它将以一定的速度移动(比如每秒2次),当浮动位置变成下一个单元格播放器跳跃时
- 你们可以要求玩家在特定的牢房里呆上一定的时间(比如0.5秒),这样就可以定义玩家移动的速度
- 你可以
// 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;
}
}
这种方法的主要优点是它总是基于时间,而不是游戏的帧率。因此,如果出于某种原因删除帧,角色仍将以相同的速度移动。最简单的方法是在按下某个键时保持时间不变。没有办法降低输入系统的速度,所以你必须自己伪造它。下面是一些伪代码,让您开始
// 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;
}
}
这种方法的主要优点是它总是基于时间,而不是游戏的帧率。因此,如果出于某种原因删除帧,您的角色仍将以相同的速度移动。有什么好方法可以让玩家在单元格中保持0.5秒?我查看了gameTime的成员,但我看不出它们有什么用处。我认为没有任何特定的成员。我会在玩家对象中添加类似“LastMovedTime”的内容,并确保在LastMovedTime+CellTime