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

Posted

技术标签:

【中文标题】使用 XInput 和 VB.NET 支持 xbox 360 控制器【英文标题】:Use XInput and VB.NET for xbox 360 controller support 【发布时间】:2014-01-24 23:49:02 【问题描述】:

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

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

感谢您的帮助,

干杯!

【问题讨论】:

你试过 MonoGame 吗? monogame.codeplex.com 不,我没有调查过。该应用程序 (arcgis) 基于 Windows,因此无需将其移植到不同的操作系统或移动设备 此外,如果直接使用 DLL 不能正常工作,您可以尝试创建一个“虚拟”游戏并在您的应用程序中引用它。 【参考方案1】:

你也可以关注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 包使用

【讨论】:

SharpDX.XInput 不是托管 DirectX 库,它是托管 XInput 库。 。永远不会少,有用的信息。由于这是 google 中排名靠前的结果,我认为这里值得一提的是 SharpDX 文档似乎已损坏。您实际上可以查看 SlimDX 的文档(SharpDX 是 SlimDX 的 C# 实现),它更有用。【参考方案2】:

您可以使用 MonoGame 来实现这一点,这里有一个 WPF 应用程序读取左拇指摇杆值的小示例。

<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 下完成)

【讨论】:

以上是关于使用 XInput 和 VB.NET 支持 xbox 360 控制器的主要内容,如果未能解决你的问题,请参考以下文章

使用 XInput,是不是可以获得控制器的图像?

如何将 Xinput 添加到游戏手柄 arduino 项目?

C# 和 VB.NET 的优缺点?

VB.net 和C#.net 各有啥优缺点

VB.net webbrowser如何使用IE11内核?IE7内核很多网站不支持!

为什么像Java,C#和VB.NET现代面向对象的语言不支持多重继承[复制]