如何实现Oculus Quest 2控制器摇杆的持续移动映射?
解决Oculus Quest 2摇杆持续移动问题
你的问题核心是用错了输入检测方法:OVRInput.GetUp仅在摇杆从推动状态复位时触发一次,所以角色只能移动一帧。要实现持续移动,需要检测摇杆的持续输入状态,以下是两种可行方案:
方案1:检测摇杆持续按下状态
把GetUp替换为OVRInput.Get,该方法会在摇杆保持推动状态的每一帧都返回true,从而让角色持续移动:
void Update() { // 持续向右推摇杆时,角色向前移动(匹配你的原逻辑) if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickRight)) { gameObject.transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World); } // 持续向左推摇杆时,角色向后移动(匹配你的原逻辑) if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickLeft)) { gameObject.transform.Translate(Vector3.back * speed * Time.deltaTime, Space.World); } }
方案2:读取摇杆轴数值(推荐)
摇杆是模拟输入设备,直接读取轴数值不仅能实现持续移动,还能根据推动幅度调整移动速度,操作体验更自然:
void Update() { // 获取主摇杆X轴输入值,范围为-1(左推)到1(右推) float horizontalStickValue = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick).x; // 加入死区过滤微小误触,阈值可根据需求调整 if (Mathf.Abs(horizontalStickValue) > 0.1f) { // 按摇杆输入计算移动方向(匹配你原逻辑的forward/back对应左右推) Vector3 moveDir = new Vector3(0, 0, horizontalStickValue); gameObject.transform.Translate(moveDir * speed * Time.deltaTime, Space.World); } }
内容的提问来源于stack exchange,提问作者Craving_gold
相关产品推荐
相关产品推荐

