C#DirectX DirectInput手柄编程实现教程
C# 中的 DirectX.DirectInput 库可以方便地与游戏手柄进行交互,以下是手柄编程的简单实现代码示例:
using System;
using Microsoft.DirectX.DirectInput;
class Gamepad
{
private Device joystick;
public Gamepad()
{
joystick = new Device(SystemGuid.Joystick); // 初始化手柄设备
joystick.SetDataFormat(DeviceDataFormat.Joystick); // 设置数据格式
joystick.SetCooperativeLevel(IntPtr.Zero, CooperativeLevel.Foreground | CooperativeLevel.Nonexclusive); // 设置手柄合作级别
joystick.Acquire(); // 获取手柄设备
}
public void ReadInput()
{
while (true)
{
joystick.Poll(); // 执行轮询获取输入
JoystickState state = joystick.CurrentJoystickState; // 获取手柄当前状态
// 检测按钮按下
if (state.IsPressed(0)) Console.WriteLine("Button 0 pressed");
if (state.IsPressed(1)) Console.WriteLine("Button 1 pressed");
// 读取方向
Console.WriteLine($"X Axis: {state.X} Y Axis: {state.Y}");
}
}
}
class Program
{
static void Main()
{
Gamepad gamepad = new Gamepad();
gamepad.ReadInput(); // 启动手柄输入读取
}
}
以上代码展示了如何在 C# 中通过 DirectInput 库创建手柄输入设备,并实时读取按钮和轴的状态。
**** 该示例实现了手柄的初始化、轮询及输入状态的获取。通过修改设备ID或状态处理代码,可以扩展为更复杂的游戏输入系统。
157.27KB
文件大小:
评论区