2016-05-01 11 views
0

をジャンプする代わりに、「ホールド」の「プレス」キーがこの短いとシンプルを維持します:Monogame -

、私は可動キャラクターと2Dのゲームを持っている、と私は私のプレイヤーがジャンプできるようにするいくつかのコードを書かれています以下のようなので:

if (Keyboard.GetState().IsKeyDown(Keys.Space) && hasJumped == false) 
{ 
    sound.Play(volume, pitch, pan); // plays jumping sound 
    position.Y -= 5f;    // position of jump 
    velocity.Y = -10.5f;   // velocity of jump 
    hasJumped = true; 
} 

私はスペースバーを押したときにしかし、私の選手は、私だけの期間中一度をジャンプに私のプレーヤーが欲しい、彼が戻って地面に着地するときにジャンプしていきますスペースバーを押してくださいジャンプしてからもう一度押す必要があります。

何か助けていただきありがとうございます。私の衝突の一つで

UPDATE

マイ速度がリセットされます私のCollision()関数内のif文:

if (rectangle.touchTopOf(newRectangle)) 
{ 
    rectangle.Y = newRectangle.Y - rectangle.Height; 
    velocity.Y = 0f; // velocity reset 
    hasJumped = false; 
} 

答えて

2

は、ブライアンはすでにあなたがスペースバーが最後に押されたか覚えておく変数が必要で述べたようにダニ。このようなものはあなたの問題を解決するはずです。

if (Keyboard.GetState().IsKeyDown(Keys.Space) && hasJumped == false && !spacebarDown) 
{ 
    sound.Play(volume, pitch, pan); // plays jumping sound 
    position.Y -= 5f;    // position of jump 
    velocity.Y = -10.5f;   // velocity of jump 
    hasJumped = true; 
    spacebarDown = true; 
} 
if(Keyboard.GetState().IsKeyUp(Keys.Space)) 
{ 
    spacebarDown = false; 
} 
+0

spacebarDownを宣言するとき、どのようなbool値を設定しますか?これは私のプレーヤーが空中にいる間だけ動作するようです。 – toadflax

+0

私はそれをfalseに設定すると言いたいですが、スペースを一度押すと何も影響しません。 – DeadlySurprise