0

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

       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;

发生的事情是它进入暂停游戏状态就好了。但是,当尝试从暂停状态进入游戏中状态时,只要按下“P”键,它就会返回暂停状态。

4

2 回答 2

2

在第一种情况下,您正在测试从 UP 到 DOWN 的键转换,在第二种情况下,您正在测试从 DOWN 到 UP 的键转换。对这两种情况使用相同的方法。

于 2013-04-11T18:35:09.700 回答
0

只需在按下按钮时切换游戏状态。

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;
}
于 2013-04-11T18:38:49.807 回答