C# XNA-尝试使用IF同时检测2次gamepad按下,但没有结果

C# XNA-尝试使用IF同时检测2次gamepad按下,但没有结果,c#,visual-studio,xna,C#,Visual Studio,Xna,基本上,我在大学里有一项任务,我必须在屏幕上显示xbox控制器按下的游戏板按钮 我有图像来表示gamepad按键和所有设置的坐标。我可以让按钮在按下时出现。。。然而。我必须在dPad上按对角线才能显示,没有相应的按钮,您需要按“不”A键。我还需要让触发器以透明的方式淡入,因为它们会慢慢地被推到最大值 像这样: 我有一个问题,当我向上和向右同时按下时。。。所有三个图像在屏幕上都亮起(而不仅仅是对角线向上/向右的图像) 我基本上已经在我的绘图方法中列出了IF语句,以便在按下特定图像时绘制它们,并用不

基本上,我在大学里有一项任务,我必须在屏幕上显示xbox控制器按下的游戏板按钮

我有图像来表示gamepad按键和所有设置的坐标。我可以让按钮在按下时出现。。。然而。我必须在dPad上按对角线才能显示,没有相应的按钮,您需要按“不”A键。我还需要让触发器以透明的方式淡入,因为它们会慢慢地被推到最大值

像这样:

我有一个问题,当我向上和向右同时按下时。。。所有三个图像在屏幕上都亮起(而不仅仅是对角线向上/向右的图像)

我基本上已经在我的绘图方法中列出了IF语句,以便在按下特定图像时绘制它们,并用不同的颜色对它们进行着色,如下所示:

spriteBatch.Begin();
        spriteBatch.Draw(under, underPos, Color.White);
        if (GamePad.GetState(PlayerIndex.One).Triggers.Right == 1.0f)
        {
            spriteBatch.Draw(rightTrigger, rTriggerPos, Color.White);
        }
        if (GamePad.GetState(PlayerIndex.One).Triggers.Left == 1.0f)
        {
            spriteBatch.Draw(leftTrigger, lTriggerPos, Color.White);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed)
        {
            spriteBatch.Draw(right, rightPos, Color.Red);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed)
        {
            spriteBatch.Draw(left, leftPos, Color.Blue);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed)
        {
            spriteBatch.Draw(up, upPos, Color.Yellow);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed)
        {
            spriteBatch.Draw(down, downPos, Color.Green);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed)
        if (GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed)
        {
            spriteBatch.Draw(upRight, upRightPos, Color.Orange);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed)
        if (GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed)
        {
            spriteBatch.Draw(downRight, dRightPos, Color.Brown);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed)
        if (GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed)
        {
            spriteBatch.Draw(upLeft, upLeftPos, Color.Cyan);
        }
        if (GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed)
        if (GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed)
        {
            spriteBatch.Draw(downLeft, dLeftPos, Color.Purple);
        }
        spriteBatch.End();

我的问题是我不知道如何组合两个IF语句来显示一个对角线图像,你能同时组合两个IF语句或游戏按键吗?。。。你如何让触发器慢慢增加颜色和透明度。。。有人能帮我吗?

您可以在If语句中使用&&for和| | for或传递多个条件

我将使用else if,而不是multiple if,这只是为了在本例中清晰起见。 只需执行以下操作的代码中的一个示例片段:

else if(GamePad.GetState(PlayerIndex.One).DPad.Up==ButtonState.Pressed&&GamePad.GetState(PlayerIndex.One).DPad.Left==ButtonState.Pressed)
{
spriteBatch.Draw(upLeft、upLeftPos、Color.Cyan);
}

只有同时按下UP(向上)和LEFT(向左)按钮时,这将使条件通过


希望这能让您走上正确的方向。

您可以使用&&for和| | for OR在If语句中传递多个条件

我将使用else if,而不是multiple if,这只是为了在本例中清晰起见。 只需执行以下操作的代码中的一个示例片段:

else if(GamePad.GetState(PlayerIndex.One).DPad.Up==ButtonState.Pressed&&GamePad.GetState(PlayerIndex.One).DPad.Left==ButtonState.Pressed)
{
spriteBatch.Draw(upLeft、upLeftPos、Color.Cyan);
}

只有同时按下UP(向上)和LEFT(向左)按钮时,这将使条件通过


希望这能帮你找到正确的方向。

考虑
if(rightspressed&&leftIsPressed)
。关于触发器,请查看。颜色。Lerp非常有用,谢谢。没问题。祝你好运考虑<代码>(右对齐和左对齐)< /代码>。关于触发器,请查看。颜色。Lerp非常有用,谢谢。没问题。祝你好运我这样做了,我还添加了else if语句,但是因为我有四个按钮要按下,所以仍然有一些东西相互结合。我需要某种方法来隔离每4个组合按键。。因此,向上和向右/向右和向下/向下和向左/向左和向上。因此,当按下每个组合时,其他两个单数组合不会同时执行。制作更多封装else if语句,但这可能是因为一段时间后很难阅读。我建议制作一个bool方法,当按下两个按钮时,它将包含自己的逻辑规则。例如,如果按下两个按钮,bool将返回true。然后将其用作else if中的条件语句,并仅在bool语句为true时执行。编辑:您将多个按钮变为颜色的原因是代码需要更多的逻辑来确定何时不为某个按钮着色。结合上述内容。将bool语句添加到每个方法中,以确定是否只按下了一个按钮。If not然后执行这个“If”语句“else”执行一些其他语句。我这样做了,我还添加了else If语句,但是因为我有四个按钮要按下,所以仍然有一些东西相互结合。我需要某种方法来隔离每4个组合按键。。因此,向上和向右/向右和向下/向下和向左/向左和向上。因此,当按下每个组合时,其他两个单数组合不会同时执行。制作更多封装else if语句,但这可能是因为一段时间后很难阅读。我建议制作一个bool方法,当按下两个按钮时,它将包含自己的逻辑规则。例如,如果按下两个按钮,bool将返回true。然后将其用作else if中的条件语句,并仅在bool语句为true时执行。编辑:您将多个按钮变为颜色的原因是代码需要更多的逻辑来确定何时不为某个按钮着色。结合上述内容。将bool语句添加到每个方法中,以确定是否只按下了一个按钮。如果不是,则执行此“If”语句“else”执行其他语句。