自从14年末搞了一个unity 4 + oculus dk2+kinect的“严肃”游戏后,一直没有再作过这一类的项目了。到了最近从新着手的时候,发现3种工具都有了大更新。一是unity 4升级为unity 5.4之后,许多功能甚至脚本库都发生了大改动,并且自动集成了oculus开发环境,不用像以前须要导入oculus资源包;二是kinect由于其精确性已经基本被淘汰了,改用新的手势识别设备leap motion,下面记录一下步骤。canvas
unity 5.4.0安装不说了,oculus sdk使用最新的1.9.0,与之前使用的0.4大为不一样的是,安装后没有运行的oculus图标,不能进行设置,只能运行支持oculus的程序。leap motion也使用最新版orion beta。3个环境都安装完成之后,就能直接进行开发了。。。。。c#
在unity中新建一个项目xxx,导入leap motion核心资源包LeapMotion_CoreAsset_Orion_4.1.1.unitypackage,在leap motion官网中下载。里面有一些简单的场景实例,能够直接运行,看看效果。ide
而后再场景中拖入LMHeadMountedRig的prefab工具
给下面的leapHandControllrt添加4个prefab:ui
pepperBaseFullLeftHand和pepperBaseFullRightHand为自带的手的模型之一,勉强算精致this
rigidRoundHand_L和rigidRoundHand_R应该为骨头架子模型,控制手势spa
设置leapHandController下Hand Pool脚本的model pool 的size变量为2,如图绑定prefab插件
以后便能实现leap motion手势控制了。3d
而对于oculus,unity 5提供了默认支持,只须要在普通游戏完成之后,在菜单 file-》building-》player setting下,在弹出的面板下勾上virtual reality support,而后增长oculus sdks就行:游戏
如此导出游戏以后,便能在安装有oculus运行环境的电脑上运行游戏了。
导出的exe文件不能放在中文路径下,不然不能在头盔里运行,只能在桌面或英文文件夹下运行;
LMHeadMountedRig下的CenterEyeAnchor自带了一个camera组件,正常运行游戏须要取消这个camera组件。
c#脚本中,如今获取当前物体的组件不能直接使用this.AudioSource之类的方法或属性了,须要使用this.GetComponent<AudioSource>();这样的模板方法。不知道是否是升级unity 5以上的缘由。
在增长碰撞体的时候,不规则碰撞体只能使用 mesh collider,可是须要其生效须要勾选convex属性,即物体的全部顶点构成一个最小凸多面体,可是这样是影响凹多面体的碰撞效果。
模型问题:unity对fbx支持应该最好,其次是obj,对大部分3dmax制做的max文件来讲,经过3dmax转化成fbx都丢失了部分材质贴图,少许没有丢失,多是3dmax打开现成模型时候缺乏必要支持的插件形成的,因此最好模型直接导出为fbx,obj格式须要手动贴图。
另外,模型选择须要仔细,模型划分越细越好,此次游戏咱们选择了一我的物模型,整个身体是一个大的mesh render,没有肢体的子模型,形成不能实现肢体动做,贴面的碰撞体,等等一系列问题。
游戏面板问题:经过添加canvas组件绘制游戏面板,包括image,text等组件,这些组件在canvas组件下放置的顺序会影响其遮罩顺序,所以须要注意。
主camera须要与地面平行!而且保持适当高度,不然游戏过程当中会产生超强的眩晕感(戴上头盔3秒晕吐),所以camera最好在align with view后调整rotation。