【问题标题】:Old GamePadState xbox controller旧 GamePadState xbox 控制器
【发布时间】:2013-06-02 18:42:32
【问题描述】:

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

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

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

【问题讨论】:

  • 我自己设法解决了这个问题。关键在以下行中 void ShipUpdate(GamePadState Curr, GamePadState Old) 一旦我从这些行中删除了游戏手柄状态,一切正常。这是更正后的行。无效 ShipUpdate()

标签: c# xna gamepad


【解决方案1】:

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

 Old = Curr;

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

 void ShipUpdate(ref GamePadState Curr, ref GamePadState Old)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多