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

Unity3D中如何用Google Cardboard蓝牙控制器触发Fire2按钮?

解决Google Cardboard蓝牙控制器触发Fire2按钮的问题

嘿,我来帮你搞定这个Cardboard蓝牙控制器触发Fire2的需求!这里有两种靠谱的方法,你可以根据自己的习惯选择:

方法1:通过Unity Input Manager映射按键(适配你现有代码)

这种方法不需要修改现有脚本,只需要配置Unity的输入映射,把Cardboard控制器的按键关联到Fire2轴上:

  1. 打开Unity编辑器,点击顶部菜单栏的 Edit > Project Settings > Input,打开Input Manager面板
  2. 在面板里找到Fire2条目(如果没有的话,点击列表底部的+号添加一个新轴,命名为Fire2)
  3. 修改Fire2的配置:
    • 把Positive Button设置为Cardboard控制器对应的按键名称,常用的有:
      • gvr_controller_button_1:控制器的侧边按钮
      • gvr_controller_trigger:扳机键
      • gvr_controller_button_click:触摸板点击
    • 确保Type选择Key/Mouse Button,Axis可以设为X Axis(不影响按键触发)
  4. 保存设置后,你的现有脚本里的Input.GetButtonDown("Fire2")就能响应对应的控制器按键了

方法2:直接使用Cardboard SDK的API(更可靠的官方方式)

如果你不想依赖Input Manager的映射,也可以直接用Google Cardboard SDK提供的输入检测API,这样更直接,也不容易出配置问题:

修改你的Update方法,替换原来的Fire2/Fire3检测逻辑:

void Update () { 
    if (Input.GetButtonDown("Fire1")) { onObjectDown(); } 
    // 直接检测Cardboard控制器的按键,按需选择
    if (GvrControllerInput.ClickButtonDown || GvrControllerInput.TriggerButtonDown) {
        onObjectExit();
    }
    // 如果你想用侧边按钮,就用下面这个
    // if (GvrControllerInput.Button1Down) { onObjectExit(); }
    if (dragging) { 
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
        Vector3 rayPoint = ray.GetPoint(distance); 
        transform.position = rayPoint; 
    } 
}

一些注意事项

  • 确保你的Unity项目已经导入了最新版的Google Cardboard SDK,并且在Player Settings > XR Plug-in Management里启用了Cardboard的VR支持
  • 不同型号的Cardboard蓝牙控制器按键名称可能略有差异,如果你不确定,可以在Update里加一段调试代码,打印所有按下的按键名称,找到你需要的那个:
    foreach (KeyCode key in Enum.GetValues(typeof(KeyCode))) {
        if (Input.GetKeyDown(key)) {
            Debug.Log("Pressed key: " + key.ToString());
        }
    }
    

内容的提问来源于stack exchange,提问作者Mayur Dusane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:05:05