[英]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.