我想知道是否有人可以给我一些xinput(for和Xbox控制器)和vb.net的帮助。
我要做的是将模拟摇杆动作转换为我的应用程序中的某些事件。具体来说,我想要做的是移动操纵杆时移动地图。 是否可以将xinput与vb.net一起使用?根据应用程序的COM库,我被困在vb或c#中。任何添加DLL的尝试都会给我带来错误。
感谢您的帮助,
干杯!
答案 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应用程序的一个小例子,用于读取左侧拇指杆的值。
<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下完成)