旧的GamePadState xbox控制器

时间:2013-06-02 18:42:33

标签: c# xna gamepad

所以我尝试使用之前使用键盘完成的游戏手柄来做一些非常简单的事情。这就是创建一个旧状态来记录上次更新时按下的按钮。

因此,当使用键盘时,我的代码看起来像这样:

oldKeyboard = currentKeyboard;

这是在我的更新结束时放置的,意味着在下次更新时我可以拥有如此语句

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

1 个答案:

答案 0 :(得分:0)

您实际上并未更新旧状态。由于您将这些作为参数传递,而GamePadState实际上是一个结构,

 Old = Curr;

仅更新“旧”变量的本地副本。通过引用传递它们,如

 void ShipUpdate(ref GamePadState Curr, ref GamePadState Old)