本文的流程是這樣的:
- 準(zhǔn)備
- 開(kāi)始制作最簡(jiǎn)單的 VR 盒子
- 添加凝視事件
- 運(yùn)行與測(cè)試
- 發(fā)布到手機(jī)并測(cè)試
- 結(jié)束
- 下載
本文的測(cè)試環(huán)境:
- macOS Mojave 10.14.3 / MacBook Pro 2015
- Unity 2018.3.9f1
- VR 盒子:VR Shinecon Virtual Reality Glasses
- 測(cè)試安卓機(jī):360手機(jī) N4S 驍龍版
準(zhǔn)備
我們要制作的是一個(gè)最簡(jiǎn)單的 VR 盒子程序,只能看,不能點(diǎn)的那種慨菱,因?yàn)樽詈?jiǎn)單的 VR 盒子就是這樣荆针,沒(méi)有外設(shè)嘛草添。
本文開(kāi)始之前呢蛹含,約定讀者掌握了 Unity 的基礎(chǔ)知識(shí),比如創(chuàng)建項(xiàng)目独郎,創(chuàng)建腳本之類(lèi)的液南。
本文開(kāi)始之前壳猜,你需要準(zhǔn)備以下這些東西:
- GoogleVRForUnity_*.unitypackage
- Android SDK(如果需要的話(huà))
- Unity 2018.3.9f1
開(kāi)始制作最簡(jiǎn)單的 VR 盒子
好啦,我們開(kāi)始滑凉。
打開(kāi) Unity统扳,創(chuàng)建一個(gè)名為 gvr-cardboard-test
的項(xiàng)目:
導(dǎo)入 GoogleVRForUnity_*.unitypackage
:
將項(xiàng)目的平臺(tái)設(shè)置為 Android 平臺(tái):
在項(xiàng)目中添加 vr sdk, 選中Edit/Project Setting/Player/XR Settings/Virtual Realty Supported
畅姊,點(diǎn)擊加號(hào)咒钟,在彈出的列表中,選擇Cardboard
:
并且在
Other Settings/Minimum API Level
中選擇 Android 4.4 'KitKat' (API level 19)
或者比它更高的:項(xiàng)目的已經(jīng)設(shè)置完畢若未。
此時(shí)我們的gvr-cardboard-test
項(xiàng)目是一個(gè)空項(xiàng)目朱嘴,如果現(xiàn)在就把它打包,在手機(jī)上運(yùn)行的話(huà):
你會(huì)發(fā)現(xiàn)陨瘩,此時(shí)屏幕已經(jīng)分屏了腕够,可以在盒子里面看了:
我們回到項(xiàng)目中,此時(shí)運(yùn)行 Editor 的話(huà)舌劳,Game 窗口中什么也不會(huì)動(dòng)帚湘,很不方便,我們加點(diǎn)東西可以在 Game 中直接調(diào)試程序(甚淡, Gvr.. 的預(yù)制體可以在 Assets/GoogleVR/Prefabs
中找到大诸。):
- 添加一個(gè) Cube 到項(xiàng)目中,并為其添加一個(gè)
EventTrigger
贯卦。 - 添加一個(gè)名為 player 的 GameObject资柔,把主攝像頭掛到它下面成為 player 的子對(duì)象,并在主攝像頭上添加
GvrPointerPhysicsRaycaster
腳本撵割。 - 主攝像頭下添加一個(gè) GvrReticlePointer 作為子對(duì)象
- Player 下添加一個(gè) GvrControllerPonter 作為子對(duì)象贿堰,它作為主攝像頭的兄弟對(duì)象存在。
- 項(xiàng)目中在添加 GvrEventSystem啡彬、GvrEditorEmulator羹与、GvrControllerMain,看名字就知道這些是干嘛的是吧:Gvr 的事件系統(tǒng)庶灿,Editor 的模擬器纵搁,Gvr 的控制入口。
- 把主攝像頭的位置改為 0 0 0往踢,把 Clipping Planes 改為 0.03腾誉。
-
將 Cube 的位置設(shè)置一下,比如 位置為 1 0 2峻呕,旋轉(zhuǎn)的角度嘛利职,就改為 45 45 0。
項(xiàng)目結(jié)構(gòu)
此時(shí)我們運(yùn)行 Editor山上,按住 option/alt
來(lái)移動(dòng)鼠標(biāo)的話(huà)眼耀,Game 窗口的行為將模擬頭部的運(yùn)動(dòng),你也可以按住control
佩憾,再移動(dòng)鼠標(biāo)試試看:
我們注意到楞黄,我們的視線(xiàn)指針,也就是那個(gè)圓圈抡驼,當(dāng)它移動(dòng)到 Cube 上就會(huì)變大鬼廓,移開(kāi)則變成一個(gè)小白點(diǎn):
它是白色的尤慰,可以修改一下顏色,讓它變得更顯眼些:選中GvrReticlePointer
雷蹂,在著色器的面板上修改下顏色伟端,比如改成紅色的:
再次運(yùn)行:
添加凝視事件
我們?yōu)?Cube 添加一些凝視事件,也就是視線(xiàn)進(jìn)入匪煌,視線(xiàn)離開(kāi)的事件责蝠;創(chuàng)建個(gè)腳本CubeController
,并掛著 Cube 身上萎庭,代碼如下:
using UnityEngine;
public class CubeController : MonoBehaviour
{
public void SetGazedAt(bool gazedAt) => GetComponent<Renderer>().material.color = gazedAt ? Color.blue : Color.black;
}
在 Cube 的Event Trigger
中 點(diǎn)Add New Event Type
霜医,添加 Pointer Enter,當(dāng)然選中 Cube 這個(gè)對(duì)象驳规,把剛寫(xiě)的 SetGazedAt
函數(shù)選上肴敛,并打上對(duì)勾;同樣的再添加個(gè) Pointer Exit 事件吗购,這次不要打?qū)戳耍?br>
運(yùn)行與測(cè)試
好啦值朋,基本上搞定,運(yùn)行程序試試效果:
一切沒(méi)問(wèn)題巩搏。
發(fā)布到手機(jī)并測(cè)試
打包發(fā)布到手機(jī)上:
結(jié)束
光看不能動(dòng)昨登,這種 VR 程序就沒(méi)多大意思了,不要看下載個(gè) VR 視頻直接看哩(嘿嘿嘿??)贯底。不過(guò)丰辣,VR 盒子就是這樣子的,不用其他外設(shè)禽捆,也算方便笙什。
如果有了外設(shè),比如說(shuō)有一個(gè)按鈕胚想,就可以使用 Google VR SDK 中的 Daydream了琐凭。
下載
這里提供一下這個(gè)項(xiàng)目的源碼,有需要的話(huà)可以在這里下載浊服。