如何在Unity中使用VR暴风魔镜蓝牙手柄

 更新时间:2021年09月03日 14:40:57   作者:LOONGV  
鉴于某些手机在使用大朋SDK以及谷歌SDK时会出现神器的小屏现象(比如某想的)故为了能够最大程度的兼容更多的手机,决定使用暴风魔镜的SDK。废话不多说直接将使用暴风魔镜SDK时遇到的问题以及解决方案简单的罗列一下

一、蓝牙手柄按键的响应

在暴风魔镜的官网下载了最新的SDK后导入Unity项目,发现SDK中的DEMO全部是非手柄控制的,然后只能参照着SDK里面的接口说明文档自己研究~~结果发现接口文档非一般的坑,一开始是直接在MojingInputManager.cs里面直接填充,直到最后才发现用IntegrateInputManager.prefab替换场景中原有的MojingInputManager.prefab以后就可以跟检测Unity的输入一样检测到手柄的输入了,以下为源码(详情可直接参考接口文档3.9节):

 //摇杆上移
        if (CrossPlatformInputManager.GetButtonDown("UP"))          
	    {
	        Debug.LogWarning("Up_Get");
            up = 1;
	    }
        //摇杆下移
        if (CrossPlatformInputManager.GetButtonDown("DOWN"))
        {
            Debug.LogWarning("Down_Get");
            up = -1;
        }
        //摇杆右移
        if (CrossPlatformInputManager.GetButtonDown("RIGHT"))
        {
            Debug.LogWarning("Right_Get");
            right = 1;
        }
        //摇杆左移
        if (CrossPlatformInputManager.GetButtonDown("LEFT"))
        {
            Debug.LogWarning("Left_Get");
            right = -1;
        }
        //摇杆回到中间位置
        if (CrossPlatformInputManager.GetButton("CENTER"))
        {
            Debug.LogWarning("CENTER_Get");
            up = 0;
            right = 0;
        }
        //按下确定(OK)键
        if (CrossPlatformInputManager.GetButtonDown("OK"))
        {
            Debug.LogWarning("OK_Get");
        }
        //按下取消键
        if (CrossPlatformInputManager.GetButtonDown("C"))
        {
            Debug.LogWarning("Cancle_Get");
        }
        //按下菜单键
        if (CrossPlatformInputManager.GetButtonDown("MENU"))
        {
            Debug.LogWarning("MENU_Get");
        }

二、UGUI的事件检测

VR项目中最坑的地方就是原有的UI都不再适应,虽说很多SDK的官方都说只要把UI设置成世界坐标即可,但是原有的UI都是跟随视角移动的,改成世界坐标后要多奇怪有多奇怪,所以为了更加的和谐,还是针对VR设计一套UI比较好~(以上仅代表个人观点,不喜勿喷~ )。 OK,现在假设已经准备好UI的素材了,那么开始搞起~假设没有什么其他的特殊要求,在加入Canvas后在属性面板修改如下两个参数即可 

第一个Render Mode就是渲染模式了~将其改为World Space,第二个Event Camera为事件响应的摄像机,在没有手动添加摄像机的情况下,场景中应该会有如下三个摄像机: 

VR模式效果如下 

在停用左右眼摄像机,只打开主摄像机时效果如下
主摄像机在非VR模式时会打开,在VR模式下默认关闭。Canvas里面响应的摄像机就选择主摄像机即可(如果没有跟UI之间的交互此处也可不必设置),如此这般就可以在VR场景中看到Canvas里面的UI了。
若需求里面有跟UI之间的交互(比如点击按钮等等),那么Canvas的Event Camera必须设置,然后在EventSystem上面挂载SDK里面的GazeInputModule脚本如下图所示 

其中Cursor里面的物体是刚刚和那三个镜头厮混在一起的准星,触发操作全靠它了~ 如果仅仅是这样还是不行的~做到这一步在准星移动到BUTTON上面的时候只有悬浮效果(即高亮),点击遥控器的OK键的时候是没有任何响应的(本想参考官方DEMO找到应对方法的···结果DEMO全部不是手柄控制的,所以只能自己想办法解决了o(╯□╰)o),在尝试了多种方法之后,最终找到的可行方法是~~修改GazeInputModule脚本,将它的点击检测里面加上CrossPlatformInputManager.GetButtonDown("OK")就OK啦~

以上就是如何在Unity中使用暴风魔镜蓝牙手柄的详细内容,更多关于在Unity中使用暴风魔镜蓝牙手柄的资料请关注脚本之家其它相关文章!

相关文章

  • 深入理解浏览器的各种刷新规则

    深入理解浏览器的各种刷新规则

    这篇文章给大家详细介绍了PC浏览器的刷新方式,以及简单的介绍了WISE浏览器的刷新方式,文章介绍的很详细,有需要的朋友们可以一起来看看吧。
    2016-10-10
  • 基于角色的权限控制模型RBAC图文教程

    基于角色的权限控制模型RBAC图文教程

    这篇文章主要为大家介绍了基于角色的权限控制模型RBAC的图文教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • 如何使用Git优雅的回滚实现

    如何使用Git优雅的回滚实现

    这篇文章主要介绍了如何使用Git优雅的回滚实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 通过自定义字段重新排序 WordPress 文章方法

    通过自定义字段重新排序 WordPress 文章方法

    在本文中,我将向您展示如何通过自定义字段更改文章的顺序。WordPress 中文章的默认顺序基于发布日期,并按时间倒序显示。这意味着它将在顶部显示最新的文章。
    2021-09-09
  • vscode终端输出中文乱码问题解决图文教程

    vscode终端输出中文乱码问题解决图文教程

    我们在使用vscode的时候常会遇见各种问题,下面这篇文章主要给大家介绍了关于vscode终端输出中文乱码问题解决的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 三大UML建模工具Visio、Rational Rose、PowerDesign的区别比较

    三大UML建模工具Visio、Rational Rose、PowerDesign的区别比较

    UML建模工具相信大家有所了解,那么你对UML建模工具Visio 、Rational Rose、PowerDesign之间的区别和联系是否了解,这里就像大家简单介绍一下
    2013-02-02
  • postman接口做关联测试的方法步骤

    postman接口做关联测试的方法步骤

    本文主要介绍了postman接口做关联测试的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 修改hosts文件无权限的解决办法

    修改hosts文件无权限的解决办法

    当我们在hosts文件中修改内容后,点击保存,系统会弹出我们没有权限的问题,所以本文通过图文结合的方式给大家详细的介绍了解决办法,对我们解决问题有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • 获取目录下所有文件名的代码

    获取目录下所有文件名的代码

    获取目录下所有文件名的代码,需要的朋友可以参考下。
    2011-07-07
  • 架构与思维论设计容量的重要性

    架构与思维论设计容量的重要性

    这篇文章主要为大家介绍了架构与思维中论设计容量的重要性详细分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-01-01

最新评论