我在使用 Unity OpenXR 中新的基于操作的输入系统时遇到问题。
我想使用 ActionBasedController
的值更新 Animator 对象。一般来说,这可行,但只提供 0 或 1。这样动画看起来很简单。我正在寻找一种读取真实 float 的方法,以便动画仅部分改变。
这是我读取扳机和握力值的代码:
ActionBasedController controller = GetComponent<ActionBasedController>();
handAnimator.SetFloat("Trigger", controller.activateAction.action.ReadValue<float>());
handAnimator.SetFloat("Grip", controller.selectAction.action.ReadValue<float>());
我尝试研究该主题,但我只找到有关旧输入系统的答案。
非常感谢任何帮助或新想法。
如果需要的话,我使用的是 Unity 2020.3.4f1,并且使用的是 OpenXR 插件版本 1.0.3。
最佳答案
在默认操作输入中,您还应该有一个返回轴值的选择操作值。在您的代码中,您正在访问此处的按钮值,该值将为您提供 0 或 1。因此,如果您想要 0 到 1 之间的值,您的代码应该是:
ActionBasedController controller = GetComponent<ActionBasedController>();
handAnimator.SetFloat("Trigger", controller.activateActionValue.action.ReadValue<float>());
handAnimator.SetFloat("Grip", controller.selectActionValue.action.ReadValue<float>());
关于unity-game-engine - Unity OpenXR 从 VR Controller 读取触发器和 handle 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67661219/