使用Unity3D开发 VR游戏的 6 个必备的小技巧(持续更新)
最近公司做了几款VR游戏,期间遇到了一些问题,跟大家分享一下,仅供参考,会持续更新的.
1.小技巧:
如果在VR视角下,摄像机距离墙面或者地面太近的时候,摄像机的最小裁剪范围可以调节成Near 0.1或者0.01更为舒服些。就不穿帮了
求解释:
如图:当玩家在VR摄像机下,处于一个角落的时候,转头会穿帮,把摄像机的最小裁剪范围调小就不会拉。(备注:以前3.2+的Unity版本如果这个值太小的话,美术场景,模型重叠部分会导致闪烁的情况,所以这个值还得根据美术的模型的单位调节一个合适的值,大家根据自己的 项目调节一个合适的值即可,是为了保证不穿帮。不过新版的Unity5.0+好像解决了这个问题了。)
2.小技巧:
问题:OculusRift DK2 做开发的时候,为啥点击运行的时候摄像机的位置不是场景预设里摄像机的初始位置呢?
求解释:
编辑器未运行状态,我们设置了一个想要的摄像机角度。可是当我们接上Oculus的时候,摄像机的默认旋转就会发生变化,这样就会导致我们设置的视角不是我们想要的!
导致原因:这应该是一个Bug,你放在桌子上的设备的角度是不固定的,谁知道是会怎么放,硬件初始化的时候,自身陀螺仪的角度直接就赋值给Camer的值了,我们需要减去这部分旋转值。
代码如下:
using UnityEngine;
using System.Collections;
using UnityEngine.VR;
public class testVr : MonoBehaviour {
private bool Once=true;
public Transform TrCamera;
// Use this for initialization
void Start () {
InputTracking.Recenter ();
}
// Update is called once per frame
void Update () {
if(Once)
{
if(null == TrCamera)
{
return;
}
if(VRDevice.isPresent)
{
transform.eulerAngles = new Vector3 (transform.eulerAngles.x-TrCamera.localEulerAngles.x,transform.eulerAngles.y-TrCamera.localEulerAngles.y,transform.eulerAngles.z-TrCamera.localEulerAngles.z);
Once = false;
}
}
}
}
编辑器效果图3:
运行设备后的图4
3.小技巧:
遇到的问题:为啥我打出来的包各种报错,进不去游戏,提示我软件未注册呢,在GearVR设备上
求解释:
· 要么是你的手机需要安装最新版的Oculus商店和FaceBook 服务和 谷歌框架 ,买来的手机插上设备后自己就装了,必须翻墙!必须翻墙!必须翻墙!
· 要么是你的游戏没有把该手机加入开发者列表,你需需要登陆 https://developer.oculus.com/osig/ 网站,把你公司所有的手机的 唯一标识 IMEI 号 生成一个oculussig_xxxx序列号 拷贝到Assets¥Plugins¥Android¥Assets 下就可以了
· 要么是你的打包设置里面没有勾选 Virtual Reality Supported 选项,勾上即可!
· 要么是 你的打包设置里面的 最低 API Level 选择的还是 老版本的,最低 是 Android 5.0
4.小技巧
遇到的问题:为啥我的PC不能识别 OculusRift 设备呢?
你可能遇到这些问题:
· 安装的不是OculusRift RunTime 最新版本 下载地址:https://developer.oculus.com/downloads/
· Graphics APIs for windows 显卡的API 你的可能是 DX9 删掉 9,新增一个DX11就可以了
5.小技巧
遇到的问题:怎样才能把UGUI 给做成曲面话的,弯曲的那种呢?因为在VR模式下,人类 的眼球看传统 的平面UI 会很不容易让人接受。
求解释:如图所示,我们怎样把UGUI给做成 VR模式下的 曲面UI 呢?很简单!买!买!买!(私聊我,咱俩关系好的话,我可以 无偿私人送你一份哦,本人可是正版购买的)
这种曲面UI可以在VR世界里让UI 显得更立体,看起来更融入场景。
官方下载地址:https://www.assetstore.unity3d.com/en/#!/content/53258
6.小技巧
问题:非要用到传统的2D模式的UI模块,到底用哪种方式来渲染UI 效率更高呢?
求解释:我们做传统手游的时候,UI模块和 非UI模块都会用不同的摄像机来渲染,UI单独用一个2D摄像机(Orthographic+Depth only)来渲染UI层级,其他的非UI 的用Perspectve+SkyBox(透视图)摄像机来渲染。众所周知,VR模式下,Unity5.3+的 摄像机渲染模式都是双眼渲染,左眼+右眼。(目前还不清楚到底是 类似CardBoard那种两个摄像机双倍渲染,还是经过官方优化的用TargetEye Both right left 这种方式 的渲染效率高 ),曾经尝试过,把UI 改成了很小很小的缩放,非UI模块和 UI模块都通过一个摄像机来渲染。只不过是把UI放到 摄像机最小裁切范围很小的区域内进行渲染。此模式仅供参考。实际使用效果和开发效率和使用难度还得看项目本身的UI复杂度来定。
简单的说 UI就用一个摄像机。复杂点的还是用两个摄像机。