準備工作 Google VR SDK for Unity Github下載: https://github.com/googlevr/gvr-unity-sdk Google VR SDK文檔: https://developers.google.com/vr/unity/#features Goo ...
準備工作
Google VR SDK for Unity Github下載: https://github.com/googlevr/gvr-unity-sdk
Google VR SDK文檔: https://developers.google.com/vr/unity/#features
Google APIs for Unity: https://developers.google.com/unity/
本文環境:Unity 5.3.1 x64 + gvr 0.8
搭建環境
1、如果你只需要SDK GoogleVRForUnity.unitypackage 可以參考我的文章:Github 下載單個文件 。當然你clone整個項目也沒問題。
2、創建新工程,導入gvr
Demo分析
sdk中有兩個Demo,在GoogleVR\DemoScenes\ HeadsetDemo || ControllerDemo 下
HeadDemo
這個demo是gvr的頭部運動Demo,在PC上 按住Alt+移動滑鼠 模擬頭部轉動,按住 Ctrl+移動滑鼠 模擬頭部傾斜
上述兩種運動都是 GvrMain\Head 的transform屬性在發生改變
當準星選中某個GameObject時,會有一個準星放大縮小的動畫,實現代碼請看 HeadDemo\Teleport.cs
ControllerDemo
此demo大概是通過連接手機來控制,實現代碼請看ControllerDemo\ControllerDemoManager.cs
答疑
解釋:我是直接使用GvrMain.prefab,出現的Main Camera是指:GrvMain\Head\Main Camera
為什麼我的場景中沒有準星?
答:把GoogleVr\Prefabs\UI\GvrReticle.prefab 拖動到 GrvMain\Head\Main Camera下
為什麼我場景中的GameObject不能被選中?
答:1. 給Main Camera添加 Physics Raycaster
2. 在Physics Raycaster 的Event Mask 選擇要接收事件的 Layer
如何讓某個GameObject可以被選中?
答:1. 給該GameObject添加 Collider (可以是BoxCollider,SpereCollider等等)
2. 再給該GameObject添加 Event Trigger (事件觸發器)
3. 給該GameObject 綁定事件處理腳本,該腳本中包含以下函數 Enter ,Trigger ,Exit ,具體請實現
如何讓我的UI元素顯示在3D場景中?
答:1. 以UGUI為例,創建一個簡單的UI
2. 修改Cavas 的Render Mode為 Word Space,這樣它就可以渲染在世界空間中,而不是渲染在最頂層的屏幕上
3. 調整UI的位置到 Main Camera 視野內
如何接收場景中UI按鈕,被玩家點擊的事件?
答:1. 創建好UI之後,在Hierarchy視圖中找到 EventSystem
2. 給 EventSystem 添加 GazeInputModule
3. 把EventSystem 上的 Standalone Input Module 禁用或 把順序調整到 GazeInputModule下,或者 Remove它
4. 給UI按鈕 綁定事件處理腳本,該腳本中包含以下函數 Enter ,Trigger ,Exit ,具體請實現
如何把左右兩屏顯示變成普通的顯示
答: 在GrvMain 的GvrViewer 組件中,不勾選 VR Mode Enable
附
How to Make a VR Game With Unity and Google Cardboard
英文原版:https://www.raywenderlich.com/116805/make-vr-game-unity-google-cardboard
中文翻譯:http://www.tairan.com/archives/10636/