2013-06-02 27 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) 
相关问题