将游戏手柄摇杆值转换为范围
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,很好地解决了整数除法问题。已编辑。 我首先得到了一些奇怪的结果,但我想这是一个简单的计算失败导致奇怪的数字,因为我从没有分隔符的计算中得到了一个十位数...以上是关于将游戏手柄摇杆值转换为范围的主要内容,如果未能解决你的问题,请参考以下文章