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;

何が起こっているかというと、問題なくポーズ ゲーム状態に入るということです。しかし、一時停止状態から InGame 状態に移行しようとすると、「P」キーが上がるとすぐに一時停止状態に戻ります。

4

2 に答える 2

2

最初のケースでは UP から DOWN へのキー遷移をテストし、2 番目のケースでは 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 に答える