使用XInput和VB.NET来支持xbox 360控制器

时间:2014-01-24 23:49:02

标签: c# vb.net xinput

我想知道是否有人可以给我一些xinput(for和Xbox控制器)和vb.net的帮助。

我要做的是将模拟摇杆动作转换为我的应用程序中的某些事件。具体来说,我想要做的是移动操纵杆时移动地图。 是否可以将xinput与vb.net一起使用?根据应用程序的COM库,我被困在vb或c#中。任何添加DLL的尝试都会给我带来错误。

感谢您的帮助,

干杯!

2 个答案:

答案 0 :(得分:2)

您还可以查看http://sharpdx.org/

这是一个托管的XInput库。连接到控制器很简单:

var controller = new SharpDX.XInput.Controller(SharpDX.XInput.UserIndex.One);
if (controller.IsConnected)
{
    var state = controller.GetState();
    var x = state.Gamepad.LeftThumbX;
    var y = state.Gamepad.LeftThumbY;
}

SharpDX可作为nuget包

答案 1 :(得分:1)

您可以使用MonoGame实现这一目标,这是一个WPF应用程序的一个小例子,用于读取左侧拇指杆的值。

enter image description here

<Window x:Class="GamePadTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock x:Name="TextBlock1"></TextBlock>
    </Grid>
</Window>

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;

namespace GamePadTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            CompositionTarget.Rendering += CompositionTarget_Rendering;
        }

        private void CompositionTarget_Rendering(object sender, EventArgs e)
        {
            var gamePadState = GamePad.GetState(PlayerIndex.One);
            TextBlock1.Text = gamePadState.ThumbSticks.Left.ToString();
        }
    }
}

我是怎么做到的?

  • 已安装的MonoGame:https://monogame.codeplex.com/
  • 创建了一个新的WPF项目并引用了“C:\ Program Files(x86)\ MonoGame \ v3.0 \ Assemblies \ Windows8 \ MonoGame.Framework.dll”

不要忘记将SDL.DLL复制到bin \ Debug,在此处抓取它:http://www.libsdl.org/release/SDL-1.2.15-win32.zip

(在Windows 8 x64 + Visual Studio 2012下完成)