首页 理论教育实现移动VR功能-虚拟现实应用开发实践

实现移动VR功能-虚拟现实应用开发实践

【摘要】:移动VR一般受到一些设备的限制,操作方式比较有限。现在需要添加移动VR专属的角色控制脚本。运行游戏,检测移动VR的编辑器模拟模式。角色可以顺利跟随导航标识移动到目标位置。图9-121确定Mouse Control是否勾选图9-122检测移动VR的编辑器模拟模式在VRUIPanel中有这么一段代码:主要就是为了Cardboard而实现的Cardboard输入操作就是通过这个Input.GetTouch来实现的。

这里我们选用最简便的移动VR设备Cardboard来做移动VR端的实现。移动VR一般受到一些设备的限制,操作方式比较有限。这个大作业中的解决方案就是通过Navigation导航系统简化移动输入。

单击顶层菜单Window→AI→Navigation打开导航窗口,找到Agents代理标签页(见图9-114)。

自动生成的Humanoid代理类型基本符合这款游戏的需要。回到Hierarchy中Viking_Sword游戏对象,通过Add Component添加新组件Nav Mesh Agent,这样角色就可以使用Unity自带导航系统在场景中游走(见图9-115)。

图9-114 Agents代理标签页

图9-115 添加Nav Mesh Agent组件

默认参数基本符合要求。

找到Environment→Wall游戏对象,通过Add Component添加新组建Nav Mesh Obstacle,为了是建立一个可以控制的障碍物(见图9-116)。

图9-116 添加Nav Mesh Obstacle组件

设置Shape为Box,盒状包围障碍物城墙,Center设置为(0.23,0.81,-0.06),Size为(4.44,3.56,1.47),勾选Carve。设定完之后,Hierarchy中选中Environment,选择Navigation→Bake标签页,单击Bake进行导航数据的烘焙(见图9-117)。

从Scene场景窗口中,可以发现导航信息烘焙完的结果(见图9-118)。

烘焙好的导航网格数据会保存在场景文件的同名文件夹内(见图9-119)。

现在需要添加移动VR专属的角色控制脚本。在Scripts文件夹内右键Create→C# Script,重命名Player_ClickToMove。

图9-117 设置完成,单击Bake

图9-118 烘焙效果

图9-119 烘焙完成的文件位置情况(www.chuimin.cn)

图9-120 添加Player_Click To Move组件

找到Viking_Sword,通过Add Component添加Player_Click To Move组件(见图9-120)。

设置What Is Ground为Ground层,将Prefabs→NavMarker拖到Nav Marker选项上,取消Player_Controller Move组件的勾选。

重新确认Camera Control Rig的Camera Editor Control→Mouse Control是否已经勾选上(见图9-121)。如果没有就勾选上。

运行游戏,检测移动VR的编辑器模拟模式(见图9-122)。

角色可以顺利跟随导航标识移动到目标位置。

图9-121 确定Mouse Control是否勾选

图9-122 检测移动VR的编辑器模拟模式

在VRUIPanel中有这么一段代码:

主要就是为了Cardboard而实现的(见图9-123)Cardboard输入操作就是通过这个Input.GetTouch(0)来实现的。

图9-123 Cardboard