0

我正在运行 Debian 的 Raspberry Pi 上使用 C# 开发一个机器人项目。我得到了一个与操作系统配对的 PS3 DualShock 控制器,因此它显示为操纵杆设备 /dev/input/js0。

现在我想从 C# 代码访问 DualShock 操纵杆和按钮。这似乎比我预期的更难(或至少更模糊)——我发现了对 OpenTK 的引用,它似乎至少处于昏迷状态,如果没有死的话;和 XNA,它可能会这样做,但包含的内容超出了我的需要(而且我担心让所有这些都在我的 RPi 上工作),以及其他各种不太受支持的小型包装器项目。

作为一个同时使用 Mono、C# 和 Linux 的新手,我有点不知所措……关于在这种环境中读取 DualShock 状态的最简单/最佳方法有什么建议吗?

4

3 回答 3

1

Monogame是 XNA 的开源实现。它是跨平台的,并且确实以 Linux 为目标。您可以查看框架的输入源代码以了解他们是如何做到的。

于 2013-03-20T20:44:37.060 回答
0

Mono 游戏手柄事件通常是轮询的。下面是一个非常基本的代码,演示了检查按钮“A”的状态。

GamePadState gamePadState;

gamePadState = GamePad.GetState((PlayerIndex)0); //Palyer indices are from 0-3, basically indicate the gamepad index

if (gamePadState.Buttons.A == ButtonState.Pressed)
{
    //take action for button "A"
} 

在访问其按钮/触发器/拇指杆状态值之前检查游戏手柄连接状态始终是一个好主意。

if (gamePadState.IsConnected)
{
    //check for button/trigger/thumbstick status
}
于 2021-01-05T10:18:56.860 回答
-1

你应该看一下directinput,但那是针对windows的,但是现在有一个将它包装到c#的库。它叫做 slimDX,也许你可以让它工作

于 2013-11-18T13:29:48.717 回答