首页前端开发其他前端知识如何在Unity中使用VR暴风魔镜蓝牙手柄

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

时间2024-02-10 23:04:03发布访客分类其他前端知识浏览390
导读:收集整理的这篇文章主要介绍了如何在Unity中使用VR暴风魔镜蓝牙手柄,觉得挺不错的,现在分享给大家,也给大家做个参考。 目录一、蓝牙手柄按键的响应二、UGUI的事件检测一、蓝牙手柄按键...
收集整理的这篇文章主要介绍了如何在Unity中使用VR暴风魔镜蓝牙手柄,觉得挺不错的,现在分享给大家,也给大家做个参考。
目录
  • 一、蓝牙手柄按键的响应
  • 二、UGUI的事件检测

一、蓝牙手柄按键的响应@H_512_13@

在暴风魔镜的官网下载了最新的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中使用暴风魔镜蓝牙手柄的资料请关注其它相关文章!

您可能感兴趣的文章:
  • Unity实现VR中在黑板上写字效果
  • Unity3D基于陀螺仪实现VR相机功能

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Unity中使用VR暴风魔镜蓝牙手柄
本文地址: https://pptw.com/jishu/608995.html
Unity开发VR项目问题总结分析 详细讲解计算机网络——应用层

游客 回复需填写必要信息