版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2019.02.13 星期三 |
前言
Unity是由Unity Technologies開發(fā)的一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲锨推、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開發(fā)工具搜囱,是一個(gè)全面整合的專業(yè)游戲引擎绍赛。Unity類似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件淫半。其編輯器運(yùn)行在Windows 和Mac OS X下钾菊,可發(fā)布游戲至Windows帅矗、Mac、Wii煞烫、iPhone浑此、WebGL(需要HTML5)、Windows phone 8和Android平臺(tái)滞详。也可以利用Unity web player插件發(fā)布網(wǎng)頁(yè)游戲尤勋,支持Mac和Windows的網(wǎng)頁(yè)瀏覽。它的網(wǎng)頁(yè)播放器也被Mac 所支持茵宪。網(wǎng)頁(yè)游戲 坦克英雄和手機(jī)游戲王者榮耀都是基于它的開發(fā)。感興趣的看下面幾篇文章瘦棋。
1. Unity強(qiáng)化篇(一) —— 如何使用Vuforia制作AR游戲(一)
開始
首先看下寫作環(huán)境
C#4, Unity 2018.2, Unity
HTC Vive是由HTC和Valve Corporation開發(fā)的虛擬現(xiàn)實(shí)headset
稀火。它可以讓您進(jìn)入虛擬世界并親身體驗(yàn)它,而不是通過屏幕上的頭像赌朋。
如果您是Unity開發(fā)人員凰狞,將HTC Vive
虛擬現(xiàn)實(shí)游戲制作成您自己的游戲很容易 - 您甚至可以說HTC Vive
和Unity
是天作之合篇裁。
在本HTC Vive教程中,您將學(xué)習(xí)如何將HTC Vive
集成到您自己的Unity游戲中赡若。具體來(lái)說达布,您將學(xué)習(xí)如何:
- 下載并配置
SteamVR
。 - 處理控制器的輸入逾冬。
- 在VR中與物理對(duì)象交互黍聂。
- 制作激光筆。
- 傳送一個(gè)區(qū)域身腻。
在本HTC Vive
教程的最后产还,您將擁有一個(gè)沙盒,可以進(jìn)行進(jìn)一步的實(shí)驗(yàn)∴痔耍現(xiàn)在是時(shí)候開始吧脐区!
注意:戴頭戴式顯示器時(shí),每個(gè)人對(duì)移動(dòng)和旋轉(zhuǎn)的反應(yīng)都不同她按。如果這是你的第一次牛隅,請(qǐng)自己動(dòng)手,如果你感到惡心或不舒服酌泰,請(qǐng)休息一下媒佣。大多數(shù)人都習(xí)慣了VR。如果你在前幾次感覺不舒服宫莱,不要擔(dān)心 - 它可能會(huì)過去丈攒。
在深入學(xué)習(xí)本教程之前,請(qǐng)確保您具有以下內(nèi)容:
- 支持VR的
Windows PC
授霸。 - 您機(jī)器上安裝的copy of Unity 2018.2.14或更新版本的副本巡验。
- 安裝了所有硬件并配置和更新軟件的HTC Vive or HTC Vive Pro。
- 已安裝
Steam
和SteamVR
碘耳。 請(qǐng)參閱本指南this guide显设,該指南將指導(dǎo)您完成硬件設(shè)置并提供下載Steam和SteamVR的鏈接。 - 基本的Unity知識(shí)辛辨。
- 對(duì)腳本的基本了解捕捂。
- 打開并連接的
HTC Vive
。
在Unity中打開準(zhǔn)備好的starter
文件夾斗搞。 在Project
窗口中查看RW
的內(nèi)容:
每個(gè)文件夾都作為特定資源的基本文件夾:
- Materials:用于場(chǎng)景的材料指攒,包括藍(lán)色彈力球。
- Models:所有模型僻焚。
- Physics Materials:彈性球物理材料允悦。
- Prefabs:松散的物體預(yù)制件。
- Scenes:游戲場(chǎng)景就在這里虑啤。
- Scripts:所有腳本隙弛。
- Textures:場(chǎng)景中所有對(duì)象共享的單個(gè)紋理架馋。
打開Game
場(chǎng)景。 查看場(chǎng)景視圖全闷,然后單擊play
以嘗試游戲:
目前叉寂,沒有太多事情發(fā)生,因?yàn)楝F(xiàn)場(chǎng)還沒有VR裝備总珠。 您需要將SteamVR
添加到項(xiàng)目中以將Vive
連接到Unity
屏鳍。
Setting Up SteamVR
SteamVR SDK
是Valve
制作的官方庫(kù),可以更輕松地為所有主要的VR headsets開發(fā)姚淆。 它目前在資源商店免費(fèi)孕蝉,并支持Oculus Rift
和HTC Vive
等等。
在頂部欄中選擇Window> General> Asset Store
打開Asset Store
:
加載商店后腌逢,在頂部的搜索區(qū)域中鍵入SteamVR
降淮,然后單擊Enter
。 向下滾動(dòng)一下以查看選擇的資源搏讶。 單擊SteamVR Plugin
以打開其商店頁(yè)面:
單擊Download
并給它一點(diǎn)時(shí)間佳鳖。 完成后,單擊Import
以打開包導(dǎo)入對(duì)話框媒惕。 單擊此窗口右下角的Import
以導(dǎo)入包:
注意:在導(dǎo)入結(jié)束時(shí)系吩,您可能會(huì)看到以下消息,具體取決于您的Unity版本:
單擊
I Made a Backup
按鈕妒蔚,讓編輯器更新并重新編譯腳本穿挨。
幾秒鐘后你會(huì)看到這個(gè)窗口:
這是SteamVR插件的一部分;它顯示了您可以改進(jìn)的編輯器設(shè)置,以最大限度地提高性能和兼容性。
當(dāng)您打開一個(gè)新項(xiàng)目并導(dǎo)入SteamVR
時(shí)贤惯,您會(huì)看到很多條目。 由于入門項(xiàng)目已經(jīng)過很好的優(yōu)化贞绵,因此這里唯一的建議是禁用解析對(duì)話框。
單擊Accept All
以執(zhí)行所有建議的更改恍飘。 關(guān)閉Asset Store
并切換回Scene
視圖榨崩。 您現(xiàn)在將在Project
窗口中有一個(gè)名為SteamVR
的新文件夾:
打開SteamVR
文件夾,查看里面的文件夾章母。 您將從Prefabs
文件夾中將一些必要的VR GameObjects
添加到場(chǎng)景中母蛛。
選擇[CameraRig]
和[SteamVR]
并將它們拖到Hierarchy
中:
[SteamVR]
附加了一個(gè)Steam VR_Render
組件,用于處理所有VR攝像機(jī)的渲染乳怎。
[CameraRig]
更有趣溯祸,因?yàn)樗刂浦?code>Vive的headset和控制器。 選擇[CameraRig]
并在Inspector
中將其Position
設(shè)置為(X:0,Y:0焦辅,Z:-1.1)
椿胯,以便在桌子后面滑動(dòng)整個(gè)裝備前方。
從層次結(jié)構(gòu)中刪除Main Camera
,因?yàn)樗鼤?huì)干擾[CameraRig]
及其嵌入式攝像頭。
將HMD
置于觸手可及的范圍內(nèi),打開控制器并啟動(dòng)場(chǎng)景。 拿兩個(gè)控制器并將它們擺動(dòng)一下寺渗。 您會(huì)注意到在Scene
視圖中看到虛擬控制器在四處揮手:
一旦SteamVR
插件檢測(cè)到控制器,它就會(huì)創(chuàng)建這些虛擬版本。 控制器映射到[CameraRig]
的兩個(gè)Controller
子節(jié)點(diǎn):
現(xiàn)在鲸伴,在仍然運(yùn)行場(chǎng)景的同時(shí),在層次結(jié)構(gòu)中選擇Camera
仲吏,并通過頂部帶子小心地拾取頭戴式顯示器。 移動(dòng)并旋轉(zhuǎn)一下,然后觀察Scene
視圖:
Camera
與頭戴式顯示器相連,可精確跟蹤每個(gè)現(xiàn)實(shí)生活中的移動(dòng)和旋轉(zhuǎn)。
現(xiàn)在,將頭戴式顯示器放在頭上捐腿,抓住控制器柿顶,然后環(huán)顧四周,感受一下房間宪祥。
如果您嘗試與對(duì)象進(jìn)行交互家乘,您會(huì)感到失望蝗羊,因?yàn)闆]有任何反應(yīng)。 要添加移動(dòng)跟蹤之外的功能耀找,您需要執(zhí)行一些腳本編寫野芒。
Handling Input
拿一個(gè)手中的控制器妇斤,給它一個(gè)合適的外觀荸恕。 每個(gè)控制器都有以下輸入:
除了上面的輸入乖酬,每個(gè)控制器在移動(dòng)和旋轉(zhuǎn)時(shí)也具有速度和旋轉(zhuǎn)速度;這在與物理對(duì)象交互時(shí)證明特別方便戚炫。
1. Defining Actions
從SteamVR 2.0
版開始剑刑,Valve
已經(jīng)用輸入系統(tǒng)取代了輸入系統(tǒng)的傳統(tǒng)1:1
硬件映射。 這在硬件和Unity之間增加了一層抽象双肤。
操作系統(tǒng)允許您考慮用戶操作,而不是需要輪詢哪些按鈕或觸發(fā)器進(jìn)行輸入钮惠。 SteamVR
計(jì)算出用于給定操作的輸入茅糜。
通過在頂部菜單中選擇Window> SteamVR Input
打開SteamVR Input
窗口。
出現(xiàn)下面的窗口素挽,詢問您是否要將一些示例文件復(fù)制到項(xiàng)目中蔑赘。 選擇Yes
:
這會(huì)在項(xiàng)目的根目錄中創(chuàng)建幾個(gè)JSON
文件:
actions.json
文件包含所有操作,操作集和對(duì)默認(rèn)綁定的引用预明。 其他JSON文件包含每個(gè)操作的默認(rèn)綁定缩赛。 幸運(yùn)的是,您不必手動(dòng)編輯這些內(nèi)容撰糠。
查看SteamVR
輸入窗口酥馍;這包含所有操作集和操作:
該窗口包含一些重要的部分和按鈕:
- 1) The action sets:此處的按鈕就像選項(xiàng)卡一樣在各set之間切換。
- 2) Actions:默認(rèn)的操作集阅酪,包括輸入和輸出旨袒。您可以在此處添加,編輯和刪除操作术辐。
- 3) 此按鈕將所有操作集和操作保存到JSON砚尽,并生成許多幫助程序類,以便輕松訪問操作辉词。
- 4) 該按鈕打開一個(gè)本地托管的Web頁(yè)面必孤,允許您將操作綁定到硬件。
您可以在此處定義多個(gè)actions sets
瑞躺,每個(gè)操作集都包含一系列操作敷搪。您可以將每個(gè)輸入操作分類為以下類型之一:
-
Boolean
:打開或關(guān)閉true或false的操作。使用示例:抓住隘蝎。 -
Single / Vector1
:值介于0和1之間的操作购啄。示例用法:移動(dòng)速度。 -
Vector2
:X和Y值介于0和1之間的動(dòng)作嘱么。示例用法:方向狮含。 -
Vector3
:X顽悼,Y和Z值介于0和1之間的動(dòng)作。這些動(dòng)作非常罕見几迄。 -
Pose
:表示3D空間中位置和旋轉(zhuǎn)的動(dòng)作蔚龙。這些操作用于跟蹤VR
控制器和HMD
。 -
Skeleton
:使用SteamVR Skeleton Input
系統(tǒng)估算拿著VR控制器時(shí)玩家手指的位置的動(dòng)作映胁。無(wú)論控制器的跟蹤保真度如何木羹,這都為每個(gè)手指提供關(guān)節(jié)位置和旋轉(zhuǎn)。
最后解孙,還有一個(gè)輸出動(dòng)作:振動(dòng)(vibration)
坑填。您可以使用此操作使控制器振動(dòng)。
是時(shí)候編輯動(dòng)作了弛姜!
單擊platformer
按鈕和mirrored
下拉列表旁邊的減號(hào)按鈕以刪除platformer
操作集:
出現(xiàn)確認(rèn)窗口時(shí)脐瑰,選擇Delete
。
對(duì)于有buggy action set
做同樣的事情廷臼;您只需要為本教程設(shè)置的默認(rèn)操作苍在。
接下來(lái),通過刪除以下操作來(lái)清理操作列表荠商。 逐個(gè)選擇它們寂恬,然后單擊右下角的減號(hào)按鈕:
InteractUI
GrabPinch
Pose
Squeeze
接下來(lái),選擇GrabGrip
操作并通過編輯其Name
字段將其重命名為Grab
:
創(chuàng)建所有操作后莱没,單擊左下角的Save and generate
保存操作并生成一堆幫助腳本和可編寫腳本的對(duì)象初肉,以便于訪問。
片刻之后郊愧,輸入系統(tǒng)完成朴译,并將新的SteamVR_Input
文件夾添加到Assets
文件夾:
該文件夾包含生成器創(chuàng)建的文件。 更具體地說属铁,腳本和可編寫腳本的對(duì)象眠寿。
2. Binding Actions
現(xiàn)在您已定義了操作,您可以為它們創(chuàng)建默認(rèn)的硬件綁定焦蘑。
確保SteamVR
正在運(yùn)行并且您的Vive
控制器已打開盯拱。 接下來(lái),單擊右下角的Open binding UI
例嘱。 將在您的默認(rèn)瀏覽器中打開本地托管的網(wǎng)頁(yè):
首先狡逢,如果您連接了游戲手柄或其他兼容硬件,則需要先切換到Vive Controller
綁定拼卵。 例如奢浑,單擊Gamepad
,然后選擇Vive Controller
切換到控制器設(shè)置腋腮。
接下來(lái)雀彼,在Current Binding
標(biāo)題下壤蚜,單擊Edit
以進(jìn)入綁定菜單。
綁定編輯器現(xiàn)在顯示在屏幕上徊哑。 快速瀏覽一下袜刷。 您可以在此處將操作可視地綁定到硬件。
由于鏡像莺丑,您只需要設(shè)置左控制器著蟹,這些設(shè)置將復(fù)制到另一側(cè)。 您可以通過取消選中屏幕底部的Mirror Mode
復(fù)選框來(lái)更改此設(shè)置梢莽。 盡管如此萧豆,為了本教程而保留鏡像。
如果您查看屏幕左側(cè)并向下滾動(dòng)昏名,您會(huì)注意到已經(jīng)有一些輸入鏈接到操作:
要從一個(gè)干凈的平板開始炕横,將鼠標(biāo)懸停在每個(gè)已定義的輸入上,然后單擊垃圾桶圖標(biāo)將其刪除葡粒。 出現(xiàn)確認(rèn)提示時(shí),選擇Delete
膜钓。
下面是結(jié)果
現(xiàn)在嗽交,通過單擊其名稱旁邊的大加號(hào)按鈕并在彈出的窗口中選擇BUTTON
,為Grip
定義一個(gè)新的Button
綁定颂斜。
這使您可以像按鈕一樣使用grip
(就是這樣)夫壁。 現(xiàn)在,單擊Click
事件旁邊的None
以將操作鏈接到它沃疮。 彈出一個(gè)窗口盒让,其中包含可能的操作列表。 選擇grab
以鏈接它司蔬。
在定義新輸入時(shí)就是這樣邑茄! 現(xiàn)在,每次在游戲運(yùn)行時(shí)按下grip
按鈕俊啼,都會(huì)觸發(fā)grab
動(dòng)作肺缕。
單擊輸入條目左下角的Apply
以將其保存到操作集。
現(xiàn)在對(duì)Trigger
和Trackpad
執(zhí)行相同的操作:為每個(gè)觸發(fā)器創(chuàng)建一個(gè)新的Button
輸入授帕,將Trigger
的Click
事件鏈接到Trackport
并將Trackpad
的Click
事件鏈接到Teleport
同木。 完成后一定要保存這些。
結(jié)果如下:
而已跛十! 綁定已設(shè)置彤路。 單擊Replace Default Binding
以將這些設(shè)置應(yīng)用于默認(rèn)配置文件。
在下一個(gè)窗口中芥映,單擊左下角的Save
以將默認(rèn)綁定保存到磁盤洲尊。
當(dāng)玩家開始游戲時(shí)远豺,會(huì)應(yīng)用此綁定。 如果玩家的特定硬件沒有綁定颊郎,則會(huì)提示他們自己設(shè)置這些綁定憋飞。
關(guān)閉Binding UI
選項(xiàng)卡或窗口,返回Unity編輯器并關(guān)閉SteamVR Input
窗口姆吭。 是時(shí)候把這個(gè)綁定好用了榛做!
3. Using Actions
通過創(chuàng)建并綁定到硬件輸入的操作,您現(xiàn)在可以在游戲中最終使用這些操作内狸!
首先選擇控制器的Pose Actions
检眯;這將物理控制器的位置和旋轉(zhuǎn)鏈接到虛擬控制器。
展開Hierarchy
中的[CameraRig]
并選擇Controller (left)
昆淡。
將其Pose Action
更改為 \actions\default\in\SkeletonLeftHand
锰瘸,將其鏈接到左側(cè)控制器。
現(xiàn)在對(duì)Controller (right)
執(zhí)行相同操作昂灵,但將其Pose Action
更改為\actions\default\in\SkeletonRightHan
避凝。
接下來(lái),在RW \ Scripts
中創(chuàng)建一個(gè)新的C#腳本眨补,將其命名為ActionsTest
并在您喜歡的代碼編輯器中打開它管削。
刪除Start()
方法并將以下內(nèi)容添加到文件的頂部:
using Valve.VR;
這引用了訪問VR輸入類所需的命名空間。
接下來(lái)撑螺,在Update()
上面添加以下內(nèi)容:
public SteamVR_Input_Sources handType; // 1
public SteamVR_Action_Boolean teleportAction; // 2
public SteamVR_Action_Boolean grabAction; // 3
使用此代碼含思,您做了:
- 1) 輪詢輸入的手的類型。 這些是
All, Left or Right
甘晤。 - 2) 引用
Teleport
動(dòng)作含潘。 - 3) 引用
Grab
行動(dòng)。
現(xiàn)在线婚,在Update()
下面添加以下方法:
public bool GetTeleportDown() // 1
{
return teleportAction.GetStateDown(handType);
}
public bool GetGrab() // 2
{
return grabAction.GetState(handType);
}
以下是這些內(nèi)容:
- 1) 如果
Teleport
操作剛剛激活則進(jìn)行輪詢遏弱,如果是這種情況則返回true
。 - 2) 如果
Grab
操作當(dāng)前已激活酌伊,則輪詢腾窝。
最后,將以下if語(yǔ)句添加到Update()
:
if (GetTeleportDown())
{
print("Teleport " + handType);
}
if (GetGrab())
{
print("Grab " + handType);
}
這些語(yǔ)句檢查您創(chuàng)建的方法居砖,并在返回true時(shí)將消息打印到控制臺(tái)虹脯。
你準(zhǔn)備測(cè)試sript
了。 保存并返回Unity編輯器奏候。
選擇兩個(gè)Controller GameObjects
并通過單擊Add Component
循集,鍵入“Act”
并選擇top選項(xiàng),為兩者添加Actions Test
組件蔗草。
打開Teleport Action
下拉列表并將其值更改為\actions\default\in\Teleport
咒彤。 現(xiàn)在疆柔,對(duì)Grab Action
執(zhí)行相同操作并將其更改為\ actions \ default \ in \ Grab
。
最后镶柱,僅選擇Controller (left)
并將其Hand Type
更改為Left Hand
旷档。 對(duì)Controller (right)
執(zhí)行相同操作,但這次選擇Right Hand
歇拆。
再次運(yùn)行游戲鞋屈,拿起兩個(gè)控制器,按下一些按鈕并squeeze the triggers
故觅。 現(xiàn)在查看屏幕底部的控制臺(tái)行:
請(qǐng)注意厂庇,每個(gè)操作都在控制臺(tái)中注冊(cè)。
這是基本輸入配置输吏。 現(xiàn)在权旷,您有能力在指尖操縱虛擬世界!
后記
本篇主要講述了適用于Unity的HTC Vive教程贯溅,感興趣的給個(gè)贊或者關(guān)注~~~