AssetBundle使用,卸載,校驗
848
2025-03-31
推薦閱讀
CSDN主頁
GitHub開源地址
Unity3D插件分享
簡書地址
我的個人博客
QQ群:1040082875
一、前言
這個是針對HTC Vive和引擎簡單易用的瞬移系統。這個系統是模仿Valve的Vive游戲“The Lab”而作,即玩家可以穿過比游戲區域大的VR環境。
下圖可以看到對于系統的演示:
二、使用說明
1、計算可導航空間:我們顯然不希望玩家可以傳送出邊界,或者在不透明物體內部。為了解決這個問題,這個系統使用了Unity生成的導航網格作為玩家可以傳送的邊界。因為這個過程包括了Unity的工作,所以它很穩定并且可以放心的應用到大多數工程中。為了預加載這個數據,只需要在場景的任何位置添加一個Vive Nav Mesh組件,并且在檢視面板點擊"UpdateNavmesh Data"按鈕。這樣無論什么時候更新場景都可以用新的NavMesh烘焙來更新Vive Nav Mesh。
上邊的過程說明如下圖:
2、選擇瞬移目的地:這個系統通過簡單的運動學方程使用了直觀的拋物線選擇機制。再次說明,這是受到了Valve的“The Lab”啟發。用戶將控制器舉到更高的角度時,選擇點會生成的更遠一些。如果用戶將控制器舉過45度(拋物線的最大距離),角度將會鎖定在那個距離。
3、表現游戲區域:很有必要知道傳送后防護邊界在哪里。因此系統圍繞防護邊界劃定了一個盒子。
4、減少不適感:瞬移(顯示為“眨眼”)時屏幕的淡入淡出可降低用戶的疲勞和眩暈感。
這個Unity工程(版本5.3.4p6)提供了兩個簡單場景:一個直接集成了SteamVR,另一個適用于沒有HTC Vive的小伙伴來演示系統功能。資源代碼已經做了文檔和注釋,或者可以跟隨MIT Licence(參照LICENSE.txt)來使用
三、使用步驟
為了使瞬移設置運行需要使用三個組件:
Vive Nav Mesh:組件控制Unity的NavMesh系統到可渲染網格的轉換。它還會計算NavMesh的邊界,所以當玩家選擇傳送位置時可以被顯示出來。
Parabolic Pointer:組件生成/顯示一個指示網格,并從Vive Nav Mesh進行采樣。
Vive Teleporter:組件控制實際傳送機制。它從Parabolic Pointer找出指示數據這樣就知道要傳送到哪里。當用戶決定傳送時它還會平穩的淡入淡出屏幕防止帶來的不適感。它還可以和SteamVR配合來控制按鈕點擊事件、控制器管理、觸覺反饋,當選擇傳送位置后還可以顯示傳送區域邊界。
注:Teleport Vive和Parabolic Pointer組件都會自動添加一個Border Renderer組件。Border Renderer僅僅生成并渲染出顯示ViveNav Mesh邊界的網格;和SteamVR游戲區域。
第一步:配置Vive NavMesh
從添加Vive Nav Mesh對象開始,可以在Assets文件夾中的Vive-Teleporter/Prefabs/Navmesh.prefab路徑下找到一個預配置的Vive NavMesh。可以將這個對象放在場景層級面板的任何地方和場景中的任何位置。
接下來需要在Unity中烘焙一個導航網格Navmesh。這個可以在Navigation窗口中完成
(Window > Navigation)。
這里有幾點需要考慮:
系統自動剔除斜坡導航網格三角形。
這意味著任何沒有直接面向上的部分的導航網格都會被傳送系統忽略。這個在VR中是合理的,因為玩家不能走上斜坡!
必須在所以可傳送表面使用物理碰撞器。
拋物線的點(見下邊第二步)使用物理射線來確定玩家指向。因此所有可傳送表面必須有碰撞器(包括像墻這種不可傳送的表面并且要阻止指示)。
為不可傳送區域分配不同的導航區域也是個不錯的主意。這個對于優化(因此當玩家選擇傳送位置時系統不需要渲染巨大的預覽網格)和游戲平衡(這樣玩家就不會傳送到地圖以外了)很有幫助。
烘焙完導航網格之后(使用Navigation窗口底部的“Bake”按鈕),回到之前創建的Vive Nav Mesh對象。如果決定專用的導航區域(見上方),可以通過Area Mask屬性選擇那些區域是可傳送的。然后點擊檢視面板中的“Update Navmesh Data”按鈕,就會看到導航網格顯示在場景視圖中。
第二步:配置ParabolicPointer
接下來添加Parabolic Pointer對象。可以在Assets文件夾中Vive-Teleporter/Prefabs/Pointer.prefab路徑下找到一個預配置的指針。可以將它放在場景層級面板的任何地方和場景中的任何位置。
你當然可以修改Parabolic Pointer腳本中的任何設置了,不過只允許設置其中的一個:配置從第一步的ViveNav Mesh對象到指針的“Nav Mesh”。
第三步:配置Vive
Teleporter
最后需要為SteamVR Camera添加一個Vive Teleporter
(Component > Vive Teleporter > Vive Teleporter)組件。
這是用來渲染Vive顯示的攝像機。如果是使用了SteamVR 插件中的 [CameraRig] 預制件則應該將Vive Teleporter添加給那個預制件中的 Camera (eye) 對象。
接下來為組件屬性配置以下值:
Pointe:將這個設置為第二步創建的Parabolic Pointe對象。
OriginTransform:將這個設置為追蹤空間的起點。如果使用了SteamVR插件,這個就是 [CameraRig] 游戲對象。當玩家傳送時這個對象是實際移動的。
HeadTransform:將這個設置為玩家的頭部。這個應該是Origin Transform的子集。如果使用了SteamVR插件,這個是Camera (head) 游戲對象。
Navmesh Animator:將這個設置為第一步創建的Vive Nav Mesh 對象的動畫。
Fade Material:將這個設置為Vive-Teleporter/Art/Materials/FadeBlack.mat中的材質
Controllers:將SteamVR控制器對象填到這里。如果使用了SteamVR的**[CameraRig]** 預制件,則應該將Controller(left)和Controller(right)兩個對象填到這里。
四、插件下載
http://pan.baidu.com/s/1bo1ii3X
unity
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。