如何在C#中使用Xbox 360按钮?

时间:2010-11-26 03:47:13

标签: c# xna xbox360

我是C Sharp的新手,并且正在使用XNA Framework编写游戏。

我正在尝试为XBox 360控制器上的按钮建立变量,因此我可以在一个地方重新配置按钮的游戏功能,而不必在任何地方更改对按钮的直接引用。

因此,如果我想为“攻击”指定一个按钮,而不是:

if (gamePadState.IsButtonDown(Buttons.B)
{
   // do game logic
}

我想这样做:

if (gamePadState.IsButtonDown(MyAttackButton)
{
   // do game logic
}

有什么想法吗?我确信这是一个非常简单的解决方案,但我已经尝试了几种方法,但还没有一种方法可行。谢谢!

3 个答案:

答案 0 :(得分:5)

Buttons只是一个枚举,所以你只需要创建一个具有该名称的变量,如

Buttons MyAttackButton = Buttons.B;

答案 1 :(得分:2)

另一种方法是在某处定义枚举:

public enum MyButtons
{
    AttackButton = Buttons.B,
    DefendButton = Buttons.A
}

然后测试它:

if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton))

答案 2 :(得分:1)

您还可以创建字典:

enum MyButtons { ShootButton, JumpButton }

Dictionary<MyButtons, Buttons> inputMap = new Dictionary<MyButtons, Buttons>()
{
    { MyButtons.ShootButton, Buttons.Y },
    { MyButtons.JumpButton,  Buttons.B },
}

...

if (gamePadState.IsButtonDown(inputMap[MyButtons.ShootButton]))
{
    // Shoot...
}

此方法的优点是可以在运行时修改按钮映射,因此您可以使用它来实现可自定义的控件设置。