controller - SDL2:触觉方法表现不如预期
问题描述
我遇到了 SDL2 的 Haptics 方法的一些奇怪行为。我已经在 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 游戏中会振动)。
解决方案
如果您出于任何原因必须使用 SDL2 触觉方法,虽然这不完全是您可能正在寻找的答案,但此评论对 SDL2 中的触觉类似问题表示如下:
对于游戏手柄,触觉接口已被弃用,取而代之的是 SDL_GameControllerRumble(),它在更多平台上为游戏控制器实现。一般来说,触觉 API 正朝着仅支持轮子和飞行杆的方向发展。(2021 年 8 月)
因此,您的两个问题的答案可能是 SDL2 触觉已被游戏手柄弃用,尤其是 Nintendo Pro 控制器等较新的游戏手柄,因此不能保证它能够正常工作(或根本不能工作)。
但是,如果您只是想让您的游戏手柄发出隆隆声(这就是我偶然发现这个问题的原因),那么使用SDL_GameControllerRumble()
应该可以完成这项工作。它适用于我的 Nintendo Pro 控制器。
查看SDL_GameControllerRumble - SDL Wiki了解有关如何使用它的更多信息。
使用此功能所需的版本是SDL 2.0.9。
推荐阅读
- sqlite - 不支持数据库协议“sqlite” - 无法初始化 zdb 连接池()
- c# - 在 Entity Framework Core 2.1 中为特定环境播种数据
- laravel-5 - 如何在 Eloquent 中获得相关模型列的总和
- java - 以编程方式使用 SparkSQL 将 null/undefined/unknown 值替换为最常见的值
- uiimage - 用于馈送 SCNTechnique 的 sampler2D 输入的低成本图像到 NSData 转换
- vba - 将多个范围复制到数组中而不循环
- java - Hibernate Mappings 导致自动创建附加列 - Spring
- r - 如果其他梯子在R中不起作用
- java - Java Firebase Admin SDK - 无法解析 GoogleCredentials
- python - mod_wsgi 要求 Visual c++14.0 但已安装