自從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。