我想知道是否有人可以在 xinput(用于和 Xbox 控制器)和 vb.net 方面给我一点帮助。
我想要做的是将模拟摇杆运动转换为我的应用程序中的某些事件。具体来说,我想做的是在移动操纵杆时移动地图。是否可以将 xinput 与 vb.net 一起使用?根据应用程序的 COM 库是什么,我被困在 vb 或 c# 中。任何添加 DLL 的尝试也会对我抛出错误。
谢谢你的帮助,
干杯!
您还可以查看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 包使用
您可以使用 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();
}
}
}
我是怎么做到的?
不要忘记将 SDL.DLL 复制到您的 bin\Debug,在此处获取:http ://www.libsdl.org/release/SDL-1.2.15-win32.zip
(在 Windows 8 x64 + Visual Studio 2012 下完成)