【问题标题】: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 的最大和最小未转换(原始)值是多少?

标签: c++ input directx xinput gamepad


【解决方案1】:

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

【讨论】:

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