0

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

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

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;


    }

我已经在这里剥离了所有非必要的代码,所以这是 JEEP

4

1 回答 1

0

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

 Old = Curr;

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

 void ShipUpdate(ref GamePadState Curr, ref GamePadState Old)
于 2013-06-02T19:02:35.933 回答