我想在我写作的游戏中使用控制器。我使用LWJGL Controller类来读取控制器状态。
触发器的状态似乎已被汇总为单个值,表示两个触发器的状态总和。左触发状态是一个在-1和0之间变化的值,右边在0和1之间。
我目前使用getAxisValue()
方法来获取合并状态。
我希望能够分别阅读这些值。我有什么方法可以做到这一点吗?
答案 0 :(得分:0)
"组合触发轴"问题是由DirectInput引起的。 JInput使用DirectInput轮询360控制器。在this article中解释说,轴的组合是有意改变以保持与传统游戏的兼容性。
引用文章:
DirectInput中左右触发器的组合是设计使然。当没有用户与设备交互时,游戏总是假设DirectInput设备轴居中。但是,Xbox 360控制器设计用于在未保持触发器时注册最小值,而不是中心。因此,较旧的游戏将承担用户互动。
解决方案是组合触发器,将一个触发器设置为正方向,将另一个触发器设置为负方向,因此没有用户交互指示"控件的直接输入"在中心。
要分别测试触发器值,必须使用XInput。 `
LWJGL无法提供单独的触发器值,因为它实际上依赖于DirectInput。
最好的做法是找到XInput的java绑定,它允许单独的触发值。