簡體   English   中英

檢查按下C#XNA后是否釋放鍵

[英]Check if a key is released after pressed C# XNA

我得到了一些代碼來檢查玩家是否按下了某個鍵。 當玩家按下空格鍵時,精靈會上升。 但是我試圖找出釋放鑰匙時將精靈放回地面的方法。 這是我想出的代碼:

keystate = Keyboard.GetState();
if (keystate.IsKeyDown(Keys.Right))
     playerPosition.X += 2.0f;
else if (keystate.IsKeyDown(Keys.Left))
     playerPosition.X -= 2.0f;
else if (keystate.IsKeyDown(Keys.Space))
{
   if (keystate.IsKeyDown(Keys.Space))
       playerPosition.Y -= 6.0f;
   else if (keystate.IsKeyUp(Keys.Space))
        playerPosition.Y += 6.0f;
}

我不希望在不按下空格鍵時移動精靈。 任何解決方案將不勝感激?

編輯 :精靈確實向上移動,但永遠不會下降!

您可以存儲oldstate

KeyboardState newState = Keyboard.GetState();  // get the newest state

// handle the input
if(newState.IsKeyDown(Keys.Space) && oldState.IsKeyUp(Keys.Space))
{
    playerPosition.Y += 6.0f;
}
if(newState.IsKeyUp(Keys.Space) && oldState.IsKeyDown(Keys.Space))
{
    playerPosition.Y -= 6.0f;
}

oldState = newState;  // set the new state as the old state for next time

那應該可以解決。

您已經在空格鍵中的子句中檢查了IsKeyUp,只有在空格鍵關閉時才能輸入!

擺脫所有多余的else語句,並在Key Up上進行額外的檢查,如果它撞到地面,則它會阻止玩家移動,因此類似:

keystate = Keyboard.GetState();

if (keystate.IsKeyDown(Keys.Space) && playerPosition.Y >= MinYPos)
{
       playerPosition.Y -= 6.0f;
}

if (keystate.IsKeyUp(Keys.Space) && playerPosition.Y <= MaxYPos)
{
        playerPosition.Y += 6.0f;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM