XNA键盘输入

本文关键字:输入 键盘 XNA | 更新日期: 2023-09-27 18:08:56

我在注册键盘输入时遇到了一个小错误。

       case GameState.InGame:
                {
                    **if (PlayerInput.IsKeyUp(Keys.P)&& oldInput.IsKeyDown(Keys.P))**
                         this.gameState = GameState.Paused;
                }
                   break;
            case GameState.Paused:
                {
                    **if (PlayerInput.IsKeyDown(Keys.P) && oldInput.IsKeyUp(Keys.P))**
                          this.gameState = GameState.InGame;
                }
                break;

现在的情况是它进入了暂停游戏状态。但是当尝试从暂停状态切换到InGame状态时,只要按下"P"键,它就会回到暂停状态。

XNA键盘输入

在第一种情况下,您正在测试从UP到DOWN的键转换,在第二种情况下,从DOWN到UP。

当按钮被按下时切换游戏状态

if (PlayerInput.IsKeyDown(Keys.P) && oldInput.IsKeyUp(Keys.P))
{
  switch (this.gameState)
  {
    case GameState.Paused:
      this.gameState = GameState.InGame;
      break;
    case GameState.InGame:
      this.gameState = GameState.Paused;
      break;
  }
}

或者,如果你愿意:

if (PlayerInput.IsKeyDown(Keys.P) && oldInput.IsKeyUp(Keys.P))
{
  this.gameState = this.gameState == GameState.Paused ? GameState.InGame : GameState.Paused;
}