SDL2:触觉方法表现不如预期
Posted
技术标签:
【中文标题】SDL2:触觉方法表现不如预期【英文标题】:SDL2: Haptics methods behaving not as expected 【发布时间】:2020-12-07 21:39:38 【问题描述】:我遇到了 SDL2 的触觉方法的一些奇怪行为。我已经在 Linux 64 位下使用 libsdl2-dev 和 libsdl2-2.0-0(均在 v2.0.10 版本中)和 Windows 10 64 位(最新的 SDL 二进制版本)对此进行了测试。作为控制器,我使用了 8Bitdo SF30 Pro 游戏手柄和 Nintendo Switch Pro 控制器 - 两者都通过 USB 连接。
-
Nintendo Switch Pro 控制器并未完全标记为触觉。
只有在 PlayStation 或 XBox 模式下启动时,8Bitdo 控制器才会被标记为触觉 - 但
SDL_HapticRumblePlay
和 SDL_HapticRunEffect
都以相当低的频率(我假设为 2-5 Hz)驱动震动马达,结果小幅度。效果结构的任何变化(例如波型、幅度、方向、周期等)都不会显示任何改进。似乎在每个SDL_HapticRunEffect
呼叫中,振动都会有所不同。 SDL_HapticsSetGain
方法似乎也没有任何效果。
您对这些行为有什么建议吗?
-
为什么 Nintendo Pro 控制器不被识别为触觉设备?
如何处理 8Bitdo 控制器的奇怪隆隆声行为?不过,控制器的隆隆声功能似乎完好无损(因为它在某些 Windows 游戏中会振动)。
【问题讨论】:
【参考方案1】:如果您出于任何原因必须使用 SDL2 触觉方法,虽然这并不是您可能正在寻找的答案,但 this comment 在 SDL2 中与触觉类似的问题上声明如下:
对于游戏手柄,触觉界面已被弃用,取而代之的是 SDL_GameControllerRumble(),它在更多平台上为游戏控制器实现。一般来说,触觉 API 正朝着仅支持***和飞行杆的方向发展。 (2021 年 8 月)
因此,您的两个问题的答案可能是,SDL2 触觉已被游戏手柄弃用,尤其是 Nintendo Pro 控制器等较新的游戏手柄,因此无法保证它能够正常工作(或根本不能工作)。
但是,如果您只是想让您的游戏手柄发出隆隆声(这就是我偶然发现这个问题的原因),使用 SDL_GameControllerRumble()
应该可以完成这项工作。它适用于我的 Nintendo Pro 控制器。
查看SDL_GameControllerRumble - SDL Wiki 以了解有关如何使用它的更多信息。
使用此功能所需的版本是SDL 2.0.9。
【讨论】:
以上是关于SDL2:触觉方法表现不如预期的主要内容,如果未能解决你的问题,请参考以下文章