2013-06-02 26 views
0

所以我試圖做一些非常簡單的事情,使用之前使用過鍵盤的遊戲手柄。那就是創建一箇舊狀態來記錄上次更新時按下的按鈕。舊的GamePadState的Xbox控制器

因此,在使用鍵盤的時候我有一個看起來像這樣的代碼:

oldKeyboard = currentKeyboard; 

這是放置在我更新的結束,意味着在下次更新時我能有if語句,像這樣的

if (currentKeyboard.IsKeyDown(Keys.A) &&(oldKeyboard.IsKeyUp(Keys.A)) 
{ 
guy.drawRect.X ++; 
} 

現在我遇到的問題是,我在我的代碼中使用Xbox遊戲手柄,我只是不知道什麼是正確的代碼。目前這就是我所擁有的,它不工作:P。任何幫助將不勝感激。

void ShipUpdate(GamePadState Curr, GamePadState Old) 
    { 
     Curr = GamePad.GetState(PlayerIndex.One); 

     if (Old.ThumbSticks.Left.X > 0.0f && (Curr.ThumbSticks.Left.X == 0.0f)) 
     { 
      move = MoveState.Still; 
      guy.srcRect.X = 0; 
     } 

     Old = Curr; 


    } 

我已經在這裏去除了所有非必要的代碼,所以這是J.E.E.P

+0

我自己設法解決這個問題。 的關鍵是在下面的行 無效ShipUpdate(GamePadState CURR,GamePadState舊) 有一次,我從這些線都去掉了手柄的狀態工作就好了。這是更正的行。 void ShipUpdate() – Gandeh

回答

0

你實際上並沒有更新您的老態。既然你逝去的那些作爲參數和GamePadState實際上是一個結構,

Old = Curr; 

僅更新了「老」變量的本地副本。像

void ShipUpdate(ref GamePadState Curr, ref GamePadState Old) 
相關問題