旧GamePadState xbox控制器

本文关键字:控制器 xbox GamePadState | 更新日期: 2023-09-27 18:16:24

所以我试着用手柄做一些非常简单的事情,我以前用键盘做过。这是为了创建一个旧状态来记录上次更新时按下的按钮。

所以当使用键盘时,我有一个代码看起来像这样:

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

旧GamePadState xbox控制器

您实际上没有更新您的旧状态。因为你将这些作为参数传递并且GamePadState实际上是一个结构,

 Old = Curr;

只更新'old'变量的本地副本。通过引用传递它们,如

 void ShipUpdate(ref GamePadState Curr, ref GamePadState Old)