You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:05:21