0

キーを押すたびに音を使ってミサイルを発射します。しかし、それはいい音ではありません。キーを押している間、音が何度も繰り返され、コードがUpdateメソッド内にあるためだと思います。キーを押したときに一度だけ音を鳴らす簡単な解決策を探していますか?(ブール変数を使用して最初にtrueになり、サウンドが再生された後にfalseになるようにテストしましたが、いつ、どこでtrueに設定する必要があるため、これはうまくいきませんでした)ヘルプは高く評価されています!

// Fire
if (keyboardState.IsKeyDown(Keys.Space))
{
missile.launchMissile(spaceship.spaceshipPosition, spaceship.spaceshipDirection);

soundExplosion.Play();
}

動作していない新しいコードを編集してください!?

            KeyboardState keyboardState = Keyboard.GetState();

        KeyboardState prevKeyboardState;

        prevKeyboardState = keyboardState;

        keyboardState = Keyboard.GetState();


        if (keyboardState.IsKeyDown(Keys.Space) && prevKeyboardState.IsKeyUp(Keys.Space))
        {
            missile.launchMissile(spaceship.spaceshipPosition, spaceship.spaceshipDirection);
            soundExplosion.Play();
        }
4

1 に答える 1

0

以前のキーボードの状態も保存します

KeyBoardState prevKeyboardState;

その後、あなたのアップデートで

prevKeyboardState = keyboardState;
keyboardState = Keyboard.GetState();

if (keyboardState.IsKeyDown(Keys.Space) && prevKeyboardState.IsKeyUp(Keys.Space))
{
  //your code
}

基本的に、毎秒何回もサウンドをトリガーしているだけで、ひどいサウンドになっています。

于 2012-07-11T13:46:03.230 に答える