将游戏手柄摇杆值转换为范围

Posted

技术标签:

【中文标题】将游戏手柄摇杆值转换为范围【英文标题】:Converting gamepad thumbstick values to range 【发布时间】:2013-01-31 19:27:45 【问题描述】:

我正在尝试使用 XInput 从指尖获取值,但这些值很奇怪,我不知道如何正确处理它们。

如何计算才能读取 -1(拇指杆向左/向上)+1(拇指杆向右/向下)之间的值

类似于 XNA 的 Gamepad.GetState().ThumbSticks.Left.X(-1 = 左侧,+1 = 右侧)。

有什么想法吗?

【问题讨论】:

显示您编写的产生“奇怪”值的代码。 float x = (float)ThumbstickLeftX / (float)32768 变成像 = 1072693184 这样的值。如果我删除 (float) 我什么也得不到。 会不会是死区太高之类的? 使用示例输入值和结果输出值显示您的转换代码。您可以编辑原始问题。只需在最后添加此信息即可。 ThumbstickLeftX 的最大和最小未转换(原始)值是多少? 【参考方案1】:

根据documentation,_XINPUT_GAMEPAD.sThumbLX 是一个SHORT,其值介于 -32768 和 32767 之间。如果要将其转换为 [-1, 1) 的范围,请将值除以 32768.0。

【讨论】:

不,由于整数除法,这将产生零保证值。改为除以 32768.0。 @phonetagger,很好地解决了整数除法问题。已编辑。 我首先得到了一些奇怪的结果,但我想这是一个简单的计算失败导致奇怪的数字,因为我从没有分隔符的计算中得到了一个十位数...

以上是关于将游戏手柄摇杆值转换为范围的主要内容,如果未能解决你的问题,请参考以下文章

有没有WIN10能用的手柄键盘映射

switchlite摇杆染色

那个游戏里说摇杆加LR那个LR是啥键还有LB

蓝牙 Arduino 游戏手柄

joycon怎么把主控设置到右边

Unity3D开发安卓游戏怎么连接外部蓝牙摇杆