版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2019.02.13 星期三 |
前言
Unity是由Unity Technologies開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎。Unity類似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件。其編輯器運行在Windows 和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平臺。也可以利用Unity web player插件發(fā)布網(wǎng)頁游戲,支持Mac和Windows的網(wǎng)頁瀏覽。它的網(wǎng)頁播放器也被Mac 所支持。網(wǎng)頁游戲 坦克英雄和手機游戲王者榮耀都是基于它的開發(fā)。感興趣的看下面幾篇文章。
1. Unity強化篇(一) —— 如何使用Vuforia制作AR游戲(一)
開始
首先看下寫作環(huán)境
C#4, Unity 2018.2, Unity
HTC Vive是由HTC和Valve Corporation開發(fā)的虛擬現(xiàn)實headset
。它可以讓您進入虛擬世界并親身體驗它,而不是通過屏幕上的頭像。
如果您是Unity開發(fā)人員,將HTC Vive
虛擬現(xiàn)實游戲制作成您自己的游戲很容易 - 您甚至可以說HTC Vive
和Unity
是天作之合。
在本HTC Vive教程中,您將學(xué)習(xí)如何將HTC Vive
集成到您自己的Unity游戲中。具體來說,您將學(xué)習(xí)如何:
- 下載并配置
SteamVR
。 - 處理控制器的輸入。
- 在VR中與物理對象交互。
- 制作激光筆。
- 傳送一個區(qū)域。
在本HTC Vive
教程的最后,您將擁有一個沙盒,可以進行進一步的實驗。現(xiàn)在是時候開始吧!
注意:戴頭戴式顯示器時,每個人對移動和旋轉(zhuǎn)的反應(yīng)都不同。如果這是你的第一次,請自己動手,如果你感到惡心或不舒服,請休息一下。大多數(shù)人都習(xí)慣了VR。如果你在前幾次感覺不舒服,不要擔(dān)心 - 它可能會過去。
在深入學(xué)習(xí)本教程之前,請確保您具有以下內(nèi)容:
- 支持VR的
Windows PC
。 - 您機器上安裝的copy of Unity 2018.2.14或更新版本的副本。
- 安裝了所有硬件并配置和更新軟件的HTC Vive or HTC Vive Pro。
- 已安裝
Steam
和SteamVR
。 請參閱本指南this guide,該指南將指導(dǎo)您完成硬件設(shè)置并提供下載Steam和SteamVR的鏈接。 - 基本的Unity知識。
- 對腳本的基本了解。
- 打開并連接的
HTC Vive
。
在Unity中打開準備好的starter
文件夾。 在Project
窗口中查看RW
的內(nèi)容:
每個文件夾都作為特定資源的基本文件夾:
- Materials:用于場景的材料,包括藍色彈力球。
- Models:所有模型。
- Physics Materials:彈性球物理材料。
- Prefabs:松散的物體預(yù)制件。
- Scenes:游戲場景就在這里。
- Scripts:所有腳本。
- Textures:場景中所有對象共享的單個紋理。
打開Game
場景。 查看場景視圖,然后單擊play
以嘗試游戲:
目前,沒有太多事情發(fā)生,因為現(xiàn)場還沒有VR裝備。 您需要將SteamVR
添加到項目中以將Vive
連接到Unity
。
Setting Up SteamVR
SteamVR SDK
是Valve
制作的官方庫,可以更輕松地為所有主要的VR headsets開發(fā)。 它目前在資源商店免費,并支持Oculus Rift
和HTC Vive
等等。
在頂部欄中選擇Window> General> Asset Store
打開Asset Store
:
加載商店后,在頂部的搜索區(qū)域中鍵入SteamVR
,然后單擊Enter
。 向下滾動一下以查看選擇的資源。 單擊SteamVR Plugin
以打開其商店頁面:
單擊Download
并給它一點時間。 完成后,單擊Import
以打開包導(dǎo)入對話框。 單擊此窗口右下角的Import
以導(dǎo)入包:
注意:在導(dǎo)入結(jié)束時,您可能會看到以下消息,具體取決于您的Unity版本:
單擊
I Made a Backup
按鈕,讓編輯器更新并重新編譯腳本。
幾秒鐘后你會看到這個窗口:
這是SteamVR插件的一部分;它顯示了您可以改進的編輯器設(shè)置,以最大限度地提高性能和兼容性。
當您打開一個新項目并導(dǎo)入SteamVR
時,您會看到很多條目。 由于入門項目已經(jīng)過很好的優(yōu)化,因此這里唯一的建議是禁用解析對話框。
單擊Accept All
以執(zhí)行所有建議的更改。 關(guān)閉Asset Store
并切換回Scene
視圖。 您現(xiàn)在將在Project
窗口中有一個名為SteamVR
的新文件夾:
打開SteamVR
文件夾,查看里面的文件夾。 您將從Prefabs
文件夾中將一些必要的VR GameObjects
添加到場景中。
選擇[CameraRig]
和[SteamVR]
并將它們拖到Hierarchy
中:
[SteamVR]
附加了一個Steam VR_Render
組件,用于處理所有VR攝像機的渲染。
[CameraRig]
更有趣,因為它控制著Vive
的headset和控制器。 選擇[CameraRig]
并在Inspector
中將其Position
設(shè)置為(X:0,Y:0,Z:-1.1)
,以便在桌子后面滑動整個裝備。
從層次結(jié)構(gòu)中刪除Main Camera
,因為它會干擾[CameraRig]
及其嵌入式攝像頭。
將HMD
置于觸手可及的范圍內(nèi),打開控制器并啟動場景。 拿兩個控制器并將它們擺動一下。 您會注意到在Scene
視圖中看到虛擬控制器在四處揮手:
一旦SteamVR
插件檢測到控制器,它就會創(chuàng)建這些虛擬版本。 控制器映射到[CameraRig]
的兩個Controller
子節(jié)點:
現(xiàn)在,在仍然運行場景的同時,在層次結(jié)構(gòu)中選擇Camera
,并通過頂部帶子小心地拾取頭戴式顯示器。 移動并旋轉(zhuǎn)一下,然后觀察Scene
視圖:
Camera
與頭戴式顯示器相連,可精確跟蹤每個現(xiàn)實生活中的移動和旋轉(zhuǎn)。
現(xiàn)在,將頭戴式顯示器放在頭上,抓住控制器,然后環(huán)顧四周,感受一下房間。
如果您嘗試與對象進行交互,您會感到失望,因為沒有任何反應(yīng)。 要添加移動跟蹤之外的功能,您需要執(zhí)行一些腳本編寫。
Handling Input
拿一個手中的控制器,給它一個合適的外觀。 每個控制器都有以下輸入:
除了上面的輸入,每個控制器在移動和旋轉(zhuǎn)時也具有速度和旋轉(zhuǎn)速度;這在與物理對象交互時證明特別方便。
1. Defining Actions
從SteamVR 2.0
版開始,Valve
已經(jīng)用輸入系統(tǒng)取代了輸入系統(tǒng)的傳統(tǒng)1:1
硬件映射。 這在硬件和Unity之間增加了一層抽象。
操作系統(tǒng)允許您考慮用戶操作,而不是需要輪詢哪些按鈕或觸發(fā)器進行輸入。 SteamVR
計算出用于給定操作的輸入。
通過在頂部菜單中選擇Window> SteamVR Input
打開SteamVR Input
窗口。
出現(xiàn)下面的窗口,詢問您是否要將一些示例文件復(fù)制到項目中。 選擇Yes
:
這會在項目的根目錄中創(chuàng)建幾個JSON
文件:
actions.json
文件包含所有操作,操作集和對默認綁定的引用。 其他JSON文件包含每個操作的默認綁定。 幸運的是,您不必手動編輯這些內(nèi)容。
查看SteamVR
輸入窗口;這包含所有操作集和操作:
該窗口包含一些重要的部分和按鈕:
- 1) The action sets:此處的按鈕就像選項卡一樣在各set之間切換。
- 2) Actions:默認的操作集,包括輸入和輸出。您可以在此處添加,編輯和刪除操作。
- 3) 此按鈕將所有操作集和操作保存到JSON,并生成許多幫助程序類,以便輕松訪問操作。
- 4) 該按鈕打開一個本地托管的Web頁面,允許您將操作綁定到硬件。
您可以在此處定義多個actions sets
,每個操作集都包含一系列操作。您可以將每個輸入操作分類為以下類型之一:
-
Boolean
:打開或關(guān)閉true或false的操作。使用示例:抓住。 -
Single / Vector1
:值介于0和1之間的操作。示例用法:移動速度。 -
Vector2
:X和Y值介于0和1之間的動作。示例用法:方向。 -
Vector3
:X,Y和Z值介于0和1之間的動作。這些動作非常罕見。 -
Pose
:表示3D空間中位置和旋轉(zhuǎn)的動作。這些操作用于跟蹤VR
控制器和HMD
。 -
Skeleton
:使用SteamVR Skeleton Input
系統(tǒng)估算拿著VR控制器時玩家手指的位置的動作。無論控制器的跟蹤保真度如何,這都為每個手指提供關(guān)節(jié)位置和旋轉(zhuǎn)。
最后,還有一個輸出動作:振動(vibration)
。您可以使用此操作使控制器振動。
是時候編輯動作了!
單擊platformer
按鈕和mirrored
下拉列表旁邊的減號按鈕以刪除platformer
操作集:
出現(xiàn)確認窗口時,選擇Delete
。
對于有buggy action set
做同樣的事情;您只需要為本教程設(shè)置的默認操作。
接下來,通過刪除以下操作來清理操作列表。 逐個選擇它們,然后單擊右下角的減號按鈕:
InteractUI
GrabPinch
Pose
Squeeze
接下來,選擇GrabGrip
操作并通過編輯其Name
字段將其重命名為Grab
:
創(chuàng)建所有操作后,單擊左下角的Save and generate
保存操作并生成一堆幫助腳本和可編寫腳本的對象,以便于訪問。
片刻之后,輸入系統(tǒng)完成,并將新的SteamVR_Input
文件夾添加到Assets
文件夾:
該文件夾包含生成器創(chuàng)建的文件。 更具體地說,腳本和可編寫腳本的對象。
2. Binding Actions
現(xiàn)在您已定義了操作,您可以為它們創(chuàng)建默認的硬件綁定。
確保SteamVR
正在運行并且您的Vive
控制器已打開。 接下來,單擊右下角的Open binding UI
。 將在您的默認瀏覽器中打開本地托管的網(wǎng)頁:
首先,如果您連接了游戲手柄或其他兼容硬件,則需要先切換到Vive Controller
綁定。 例如,單擊Gamepad
,然后選擇Vive Controller
切換到控制器設(shè)置。
接下來,在Current Binding
標題下,單擊Edit
以進入綁定菜單。
綁定編輯器現(xiàn)在顯示在屏幕上。 快速瀏覽一下。 您可以在此處將操作可視地綁定到硬件。
由于鏡像,您只需要設(shè)置左控制器,這些設(shè)置將復(fù)制到另一側(cè)。 您可以通過取消選中屏幕底部的Mirror Mode
復(fù)選框來更改此設(shè)置。 盡管如此,為了本教程而保留鏡像。
如果您查看屏幕左側(cè)并向下滾動,您會注意到已經(jīng)有一些輸入鏈接到操作:
要從一個干凈的平板開始,將鼠標懸停在每個已定義的輸入上,然后單擊垃圾桶圖標將其刪除。 出現(xiàn)確認提示時,選擇Delete
。
下面是結(jié)果
現(xiàn)在,通過單擊其名稱旁邊的大加號按鈕并在彈出的窗口中選擇BUTTON
,為Grip
定義一個新的Button
綁定。
這使您可以像按鈕一樣使用grip
(就是這樣)。 現(xiàn)在,單擊Click
事件旁邊的None
以將操作鏈接到它。 彈出一個窗口,其中包含可能的操作列表。 選擇grab
以鏈接它。
在定義新輸入時就是這樣! 現(xiàn)在,每次在游戲運行時按下grip
按鈕,都會觸發(fā)grab
動作。
單擊輸入條目左下角的Apply
以將其保存到操作集。
現(xiàn)在對Trigger
和Trackpad
執(zhí)行相同的操作:為每個觸發(fā)器創(chuàng)建一個新的Button
輸入,將Trigger
的Click
事件鏈接到Trackport
并將Trackpad
的Click
事件鏈接到Teleport
。 完成后一定要保存這些。
結(jié)果如下:
而已! 綁定已設(shè)置。 單擊Replace Default Binding
以將這些設(shè)置應(yīng)用于默認配置文件。
在下一個窗口中,單擊左下角的Save
以將默認綁定保存到磁盤。
當玩家開始游戲時,會應(yīng)用此綁定。 如果玩家的特定硬件沒有綁定,則會提示他們自己設(shè)置這些綁定。
關(guān)閉Binding UI
選項卡或窗口,返回Unity編輯器并關(guān)閉SteamVR Input
窗口。 是時候把這個綁定好用了!
3. Using Actions
通過創(chuàng)建并綁定到硬件輸入的操作,您現(xiàn)在可以在游戲中最終使用這些操作!
首先選擇控制器的Pose Actions
;這將物理控制器的位置和旋轉(zhuǎn)鏈接到虛擬控制器。
展開Hierarchy
中的[CameraRig]
并選擇Controller (left)
。
將其Pose Action
更改為 \actions\default\in\SkeletonLeftHand
,將其鏈接到左側(cè)控制器。
現(xiàn)在對Controller (right)
執(zhí)行相同操作,但將其Pose Action
更改為\actions\default\in\SkeletonRightHan
。
接下來,在RW \ Scripts
中創(chuàng)建一個新的C#腳本,將其命名為ActionsTest
并在您喜歡的代碼編輯器中打開它。
刪除Start()
方法并將以下內(nèi)容添加到文件的頂部:
using Valve.VR;
這引用了訪問VR輸入類所需的命名空間。
接下來,在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
動作。 - 3) 引用
Grab
行動。
現(xiàn)在,在Update()
下面添加以下方法:
public bool GetTeleportDown() // 1
{
return teleportAction.GetStateDown(handType);
}
public bool GetGrab() // 2
{
return grabAction.GetState(handType);
}
以下是這些內(nèi)容:
- 1) 如果
Teleport
操作剛剛激活則進行輪詢,如果是這種情況則返回true
。 - 2) 如果
Grab
操作當前已激活,則輪詢。
最后,將以下if語句添加到Update()
:
if (GetTeleportDown())
{
print("Teleport " + handType);
}
if (GetGrab())
{
print("Grab " + handType);
}
這些語句檢查您創(chuàng)建的方法,并在返回true時將消息打印到控制臺。
你準備測試sript
了。 保存并返回Unity編輯器。
選擇兩個Controller GameObjects
并通過單擊Add Component
,鍵入“Act”
并選擇top選項,為兩者添加Actions Test
組件。
打開Teleport Action
下拉列表并將其值更改為\actions\default\in\Teleport
。 現(xiàn)在,對Grab Action
執(zhí)行相同操作并將其更改為\ actions \ default \ in \ Grab
。
最后,僅選擇Controller (left)
并將其Hand Type
更改為Left Hand
。 對Controller (right)
執(zhí)行相同操作,但這次選擇Right Hand
。
再次運行游戲,拿起兩個控制器,按下一些按鈕并squeeze the triggers
。 現(xiàn)在查看屏幕底部的控制臺行:
請注意,每個操作都在控制臺中注冊。
這是基本輸入配置。 現(xiàn)在,您有能力在指尖操縱虛擬世界!
后記
本篇主要講述了適用于Unity的HTC Vive教程,感興趣的給個贊或者關(guān)注~~~