112-2 XR-Camp 課程講義
雲端資料夾
課程素材庫
Google Drive: XRCamp_UnityTutorial_密室逃脫
目錄
- 創建URP專案
- 匯入場景、道具
- Post Processing 提升畫面氛圍
- 匯入可操作的角色
- 產生中文字幕
- 整理 Heirachy 視窗
- 與物體互動
7.0. XRCamp_Utilities部分功能介紹
7.1. 點擊撿起鑰匙
7.2. 鑰匙接觸門鎖開門
7.3. [補充] Unity Event vs. Game Event
- 場景(Scene)切換
8.1. [補充] 轉場淡入/淡出
- 自主練習
A. 為遊戲添加音效
B. 使用 Game Event 取代 Unity Event
C. 為畫面中央的物體,畫上外框(Highlight)
- VR遊戲 vs 3D遊戲
- Unity VR設定
- 3D to VR
12.1. 角色控制 (Camera、Hands、Move、Turn)
12.2. 場景互動 (Hover、Grab)
12.3. UI
12.4. VR Raycast
12.5. Feedback (Vision、Haptic)
- 為遊戲加分 (美術、音樂組同學注意!!!)
13.1. 為遊戲添加音樂吧!
13.2. 為場景增加一個會動的NPC吧! (內含Sketchfab及Mixamo教學)
13.3. Particle System (粒子系統)–最近怎麼一直下雨啦
- 其他 (內有Plastic SCM)
- 注意與建議
2024/03/07 Unity (3D)密室逃脫
目標
從頭開始,完整製作出一個 XR project。
預設已經先行完成Unity Learn - Misson 1,對Unity有基礎的認知。
所使用到的素材
- XR Camp Utilities – 其中包含助教寫好,常用到的Script和工具
- Weather TV Studio 2 – 氣象播報台場景
- Key and Lock – 鑰匙與鎖頭的物件
- StarterAssets - FirstPerson – 簡易的第一人稱角色控制器
- DOTween
上課內容紀錄 (做得有點潦草sorry)
1. 創建URP專案
-
創建專案
打開Unity Hub,建立一個空的3D (URP) Unity專案,版本請選擇最新的LTS版,並按下Create Project:
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
如欲使用版本控制,請勾選右下角的"Use Unity Version Control"。
2. 匯入場景、道具
3. Post Processing 提升畫面氛圍
- Volume
- 創建一個空的GameObject
- 在Inspector介面中,點選"Add Component" -> "Volume"
- 創建一個新的profile
- 點擊"Add Override",為其添加各種濾鏡
- Local Volume
- 為這個GameObject添加一個Box Collider,限定濾鏡作用範圍
- 將"Volume"底下的Mode欄位,改為"Local"即可
4. 匯入可操作的角色
- Main Camera
遊戲畫面
- Player Follow Camera
Main Camera 會跟隨player capsule
- 匯入StarterAssets - FirstPerson
- 將StarterAssets/FirstPersonController/Prefabs/NestedParent_Unpack.prefab 拖曳至Heirachy視窗中
- 右鍵點擊NestedParent_Unpack,點擊"Prefab" -> "Unpack"
- 取出MainCamera、PlayerFollowCamera、PlayerCapsule即可,其餘物件可以刪除
5. 產生中文字幕
- 創建一個UI->Text
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
- 自行上網下載字體 (Windows預設字體在C:\Windows\Fonts)
- 前往 Window -> Text Mesh Pro -> Font Asset Creator 產生客製化的字形圖檔。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
- 將生成的檔案,丟入Text的"Font Asset"欄位中
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
6. 整理 Heirachy 視窗
- 雜亂的Heirachy不利於開發。
- 請善用Empty GameObject為其命名當作「抽屜」,將不同功能的GameObject分類以方便管理。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
7. 與物體互動
我們的目標是實現以下兩個動作:
- 點擊拿起鑰匙
- 使用鑰匙開鎖
7.0. XRCamp_Utilities部分功能介紹 (請先將 XRCamp_Utilities 匯入專案中)
XRCamp_Utilities中,包含了三種讓玩家與物體互動的方式:
- TriggerOnClick
點擊滑鼠左鍵時,朝玩家畫面(MainCamera)面向方向射出一道射線,射線接觸到物體時觸發動作。
- TriggerOnCollision
物體與對應Layer的其他物體碰撞時觸發動作。
- TriggerOnKeyPress
玩家按下特定按鍵時觸發動作。
以上互動的方式皆透過 Unity Event/Game Event觸發動作。
7.1. 點擊撿起鑰匙
-
在鑰匙的GameObject上,添加"Box Collider"、"Rigid Body"、以及"TriggerOnClick"。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
-
調整"Box Collider",對齊鑰匙的Mesh
- 按下F鍵將物體置中
- 點擊Scene視窗右上方的三角形與正方形,切換投影角度和方式
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
-
在MainCamera底下添加一個子物件"KeyHolder",調整至視線前方
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
-
添加Script "Follow Object",將"KeyHolder"拖曳至Target欄位,即可讓鑰匙在遊玩過程中一直保持在視線前方。
-
點擊左上角方框Disable "Follow Object",使用"Trigger On Click",透過點擊鑰匙的方式啟用"Follow Object"。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
7.2. 鑰匙接觸門鎖開門
-
撰寫DoorAction.cs程式,寫一個開門的指令
- 需先安裝DOTween Library
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
-
將場景物件與鎖結合,製作出一扇「門」

-
確保物件的右上Static框並未被勾選(否則遊戲中無法移動物件)

-
為其添加Script "Door Action": (可以使用DOTween讓開門平滑開啟)
-
在鎖的GameObject中,添加"Box Collider"和"Trigger On Collison"。
- Box Collider裡面的"Is Trigger"需要打勾
-
為鑰匙的GameObject創建一個新的Layer名為"Key",以此作為Target Layer Mask。
-
讓鑰匙與鎖接觸時,觸發Door Action中的DoorOpen() Function

7.3. [補充] Unity Event vs. Game Event
Unity Event 使用方法:
- 點擊Unity Event()底下的+號,即可添加要執行的動作即可。

Game Event 使用方法:
- 先於Project視窗底下點擊右鍵,創建一個GameEvent

- 在Heirachy中創建一個空的GameObject,為其添加"GameEventListener.cs"的Script。

- 將創建的GameEvent拖曳至"On Event"欄位中,並於底下的Response添加想觸發的動作。 GameEventListener會監聽對應的GameEvent,並於GameEvent觸發時執行底下的動作。

8. 場景(Scene)切換
- 創建一個空物件"SceneManager",並為其加上Script "Scene Transition"

- 創建一個空物件"MoveToNextScene",為其添加"Box Collider"、"Trigger On Collision"
- Box Collider裡面的"Is Trigger"需要打勾
- 使用"Trigger On Collision",觸發SceneManager的轉場指令。
- "GoToSceneAsync"所輸入的數字,為Scene在"File"->"Build Settings"中,Scenes in Build底下的數字編號。

- 為玩家人物"PlayerCapsule"創建一個新的Layer名為"Player",以此作為Target Layer Mask。
- 將MoveToNextScene移動到門的後方,使玩家走出門後觸發轉場。
8.1. [補充] 轉場淡入/淡出
我們可以透過淡入/淡出的特效,緩和場景轉換的突兀感。
- 首先將XRCampUtilities/Prefab/FadeScreen.prefab放入MainCamera底下,並調整z軸,使屏障覆蓋相機。

- MainCamera中,"Camera"底下有一個"Clipping Planes",代表畫面只會顯示在距離相機如此範圍內的物體。我們只需將FadeScreen的z軸設得比"Near"的0.2大一些即可。

- 將FadeScreen物件拖曳至SceneManager底下的"Fade Screen"欄位中。 如此,轉換場景時就可以看到淡入淡出的特效了。
9. 自主練習
A. 為遊戲添加音效
- 為物件添加AudioSource,嘗試使用先前的方式觸發音效!
- 為遊戲加入一個不斷重播的BGM!
B. 使用 Game Event 取代 Unity Event
- 建立一個Game Listener Manager,監聽所有的GameEvent,控制玩家與物體間所有的互動!
- 為了提升遊戲的開發速度,請建立一個使用TriggerOnKeyPress的物件,以鍵盤按鍵觸發原本撿起鑰匙和開關門的所有動作!
C. 為畫面中央的物體,畫上外框(Highlight)
2024/03/14 Unity (VR)密室逃脫
目標
承續上週的3D密室逃脫遊戲,教學如何快速轉換成VR版本,並介紹Unity更多有用功能;也會提及美術組與音樂組同學如何協助程式組同學,使專案更加分!
所使用到的應用程式、素材與連結
- Oculus – 使用Oculus頭盔需安裝
- Plastic SCM – Unity專案合作開發需安裝
- XRCamp_UnityTutorial_for VR – 雲端資料夾。包含助教寫好、VR常用到的Script和工具,以及上課會使用到的音樂素材
- Lets Make a VR Game – 其中包含寫好的VR手部Prefab
(XRCamp_UnityTutorial_for VR已有包含到這包。參考自:Valem Tutorials)
- XR Interaction Toolkit (包含starter asset)


- Sketchfab SDK – 可以將從Sketchfab上下載之GLTF檔直接匯入Unity的工具
上課內容紀錄
1. VR遊戲 vs 3D遊戲
- 沉浸感—360全景、120FOV,遊玩時有「空間感」
- 人機互動、互動反饋
- 不同視角的體驗 (沙盒、上帝視角等等)
- 更多想像空間 (魔法、劍技、溶解等等)
2. Unity VR設定


- 使用OpenXR (支援oculus&steamVR)

- Fix/Edit All warning rules

- 選擇使用的裝置Profiles (基本上這堂課是HTC vive/Oculus Touch)

- Package Manager>Unity Registry> XR Interaction Toolkit >Install,順便也Import starter asset
3. 3D to VR
自學/課前:
0314課程紀錄:
3.1. 角色控制
-
Camera
- 右鍵Create-> XR-> XR Origin

-
Hands(Controller)

- 把跟Raycast相關的Components從Controller上拔掉

- 將Oculus Hands(已製作好捏、握的手勢動作)放到Controller底下,使玩家的Controller有模型

- 上述步驟請在Left、Right Controller各做一次
-
Move
- 在XR Origin的Inspector中新增:
- Locomotion System
- Character Controller(記得去調整角色的Height喔)
- Continuous Move Provider(Action-based)
- 將Use Gravity打勾
- Mode選用Immediately
- Move Speed調至2~4左右即可(視人物、場景大小)
- 在想給予移動功能的Hand上勾選Use Reference,並在下方貼入XRI/Hand/Locomotion/Move之Reference

-
Turn
- 分為連續轉動(Continuous turn)與間斷轉動(Snap turn),因現實世界的玩家都是使用連續轉動的關係,在遊戲中若使用Continuous turn的話容易導致動暈症的產生(轉動速度不一致),因此會建議大家以Snap turn為主
- 與新增Move的方法相似,新增Snap Turn Provider(Action-based)
- 在想給予移動功能的Hand上勾選Use Reference,並在下方貼入XRI/Hand/Locomotion/Snap turn之Reference即可

-
Jump
- 在VR遊戲中不是那麼建議讓玩家有太過劇烈的動作(避免動暈),因此Jump的功能在一般VR劇情遊戲的專案內不會推薦給大家使用。
- 但若之後會想製作動作類型的VR遊戲的話,這邊助教有提供一個腳本方便同學製作跳躍的功能。
- XRCamp_UnityTutorial_for VR > Script > Jump Provider
- 將地板(踩的地方)設定一個新Layer,並設定在Ground Layer Mask中
- Jump height設定跳躍高度(預設為1)
- 自製Reference並放到Jump Action中


3.2. 場景互動
-
先介紹一下,在VR遊戲中,互動功能需要兩個角色–
- Interactor:互動方,在XR Origin中便是兩個Controller(手)
- Interactable:可被互動方,通常有XR Simple Interactable(Hover、Select、Activate)、以及XR Grab Interactable
-
互動時,會動的一方需要有Rigidbody(剛體),雙方都要有Collider (碰撞箱/偵測箱)
-
先新增XR Direct Interactor、Sphere Collider至我們兩個Controller上,並把Sphere Collider的Is trigger打開(變成觸發箱而非碰撞箱)

-
將XR Grab Interactable新增到我們場景中的鑰匙上
(要記得把鑰匙Rigidbody的Use Gravity打開喔,不然拿起放開後會飄來飄去XD)

-
Movement type
- Instantaneous(較常用):無視物體的Rigidbody,且會穿透任何物體,會一直黏在手上直到放開為止。
- Kinematic :會有些許的延遲(不會完全貼在手上),且會被手的物理性質影響,會穿透只要是沒有Rigidbody的物體
- Velocity Tracking(較真實):模擬真實在拿物體的現象,且會與沒有Rigidbody的物體進行碰撞(也就是說除了自己額外設定的物體以外都會進行碰撞)、不會穿透過去。
-
好啦!到目前為止,目前VR場景就有一個可以移動的玩家,以及一個可以拿起來丟來丟去的鑰匙囉~
如果還有時間的話,可以試試看把場景中的其他物件也變成可以互動的物件喔~ (記得把static關掉^^)
- 麥克風 (桌上共四個,碰到會觸發事件,因此放置XR Simple Interactable)

- 筆電 (下方可以塞個紙條來當解謎Hint)

- 咖啡杯 (藏鑰匙用)

-
Q. 在互動中如何觸發event?
A.
第一種方式,即是在Interactable Component底下的Interactable Events中,有Hover(碰觸)、Select(捏)、Activate(握)、Focus等等放Event的地方,也就是在物件上觸發。
第二種方式,即是在Controller的Interactor上觸發,那就多了Haptic Event(震動反饋)可以設定。
第三種方式(給那些Coding比較強,想自由一點的同學),你當然可以使用OntriggerEnter、OnCollisionEnter等方式,利用Hand Contrller的Sphere Collider與物件的Collider碰撞時觸發Script自訂的程式。



3.3. UI
-
UI在VR專案中,基本上我們不會將其放在頭盔眼前顯示(像是3D遊戲,UI為Screen Space),一方面是因為控制字幕、圖片在頭盔眼上的清晰度這件事是非常麻煩,每個人的感覺也差很多。
-
另一方面也是因為使用者在遊玩的時候,頭盔會一直跟著玩家移動、旋轉,若視野底下一直有字幕等UI出現,會使動暈症的發生更加容易,體感變差。
-
因此助教這邊推薦大家使用的是World Space的UI,透過有背景顏色的Panel、Image或是特效,上面附有你想要呈現的字幕,在VR頭盔中呈現的感覺會好很多 (記得Canvas的大小要重新設定,通常會小很多)

-
取消原有的Graphic Raycaster,新增Tracked Device Graphic Raycaster,使UI在VR空間中能被使用者互動到(例如Button)

-
VR專案中透過World Space的UI去提示玩家目前該怎麼做、要去哪裡,是很重要的元素喔!

3.4. Raycast
-
XR > Ray Interactor(Action-based),新增兩個(左、右)並取名

-
一樣要設定兩隻手分別的Preset
-
目前兩隻手的Ray便可顯示在我們的VR頭盔中,隨著我們的Controller移動,並也可以使用此Ray interactor來與場景得interactable物件互動喔!
-
Q. 如何讓我們的Raycast在想顯示的時候顯示呢? (加分項目)
比方說按下Activate(捏,食指按紐)來打開Raycast,其他時候隱藏,使遊戲更完整
A.
- 增加Ray Able Controller至XR Origin中
- 並把XRI/Hand/Activate(兩手)分別放到兩個Action Reference中
- 將剛剛Create的兩個Ray Interactor放入Left Ray及Right Ray中即可

3.5. Feedback
-
Vision
- 上週的fadein/fadeout,也是在VR專案中常常使用在轉場動畫上的一個技巧
- 一樣將上週製作的FadeScreen加在XR Origin>Main Camera底下就好,然後要記得把FadeScreen的Shader改成URP/Lit喔!

-
Haptic
- 助教有提供Haptic Interactable的腳本,方便同學使用震動反饋來添增VR遊戲的互動性!
- 使用方式:添增Script至兩個Controller上,貼好Controller Reference後便可在Game Event或是Unity Event使用此腳本的HapticActiveOnce函式來觸發震動
- 若同學好奇在程式中是怎麼觸發的話,都可以點進去C#檔案查看腳本內容喔~
助教提供的都是很基礎、常用的C#、Unity語法,特別是程式組的同學可以參考一下!


4. 為遊戲加分 (美術、音樂組同學注意!!!)
自學/課前:
課程素材
0314課程紀錄:
4.1. 為遊戲添加音樂吧!
-
音效在Unity中主要是兩個角色在作用
- Audio Listener:聆聽者,通常會自動加在Main Camera中
- Audio Source:音源,可放入Audio Clip並調整類似音樂軟體的相關設定,也有空間音效(3D)的多項設定可以設置
-
注意!!! Unity基本上只接受Mp3以及Wav喔
-
添加BGM (2D音效)
- 在場景Manager物件中新增Audio Source的Component,並將你的Mp3/Wav放到Audio Clip裡面
- 將Play On Awake、Loop打勾,遊戲中就有開啟時自動播放且循環播放的背景音啦!

-
添增音效 (3D音效)
- 在想要產生聲音的物件(例如麥克風)上加上Audio Source,一樣將音檔放入Audio Clip中
- 將Spatial Blend設為1,此時這個音源便是一個3D空間音效
- 3D空間音效在Unity有幾個常用的設定:
- Volume Rolloff:距離與聲音大小的關係式,預設是對數下降,其他也有像是線性下降的關係是可以選擇
- Min Distance & Max Distance:Min~Max中間的空間則是可以聽到聲音的範圍,要注意這些數值會跟物體大小有關,因此物件若要有3D音效的話都要親自去做調整

- 在Scene視窗中也可以看到Min/Max Distance的範圍,如下圖即為(0.5 ~ 2)

public AudioClip[] ballClip;
public AudioSource ballSource;
ballSource.clip = ballClip[1];
ballSource.Play();
4.2. 為場景增加一個會動的NPC吧!
-
Sketchfab in Unity

-
Mixamo
- 找到GLTF匯入Unity後檔案中的模型fbx檔,或是直接在Sketchfab上下載fbx也可(要人形完整的)
- 匯入Mixamo

- 製作完動畫後,匯出成fbx,直接丟進去Unity就大功告成!(可以在匯入的model底下找到剛剛的Animation Clip)

-
Model
- 大小– 匯入的模型檔太大的話,可以改Scale Factor(先改這個為主,不要直接改場景的Scale,不然Scale數值會太大或太小)

- 材質– 若發現材質消失的話,可以試試看Use External Material或是Use Embedded Material,再不行的話就直接在Unity內創幾個Material然後重貼進來(適用在模型Material算少的時候)

- 動畫– 通常fbx附加的動畫都不是Write able,所以要編輯Animation的一些性質,例如looping、Curve等等簡單的設定可以直接從這邊設定

-
Animation (若同學是在Blender中製作後再匯入Unity的就可以先跳過^^)

Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
4.3. Particle System (粒子系統)–最近怎麼一直下雨啦
-
透過Light、PostProcessing、Model、UI的場景創建下,我們可以讓EndScene看起來更有憂愁的感覺

-
適時增加點天氣效果,例如下雨、迷霧、打雷等等的特效,會使作品更加分!

-
大家可以從XRCamp_UnityTutorial_for VR那一包裡面找到下雨的Particle System,直接放入場景就可以用囉!

-
配合自己的場景大小以及所需的雨量,可以分別在Emission以及Shape的Radius中調整喔

-
更多有關Particle System的功能介紹,在3/23的Unity工作坊時講師也會介紹喔!
5. 其他
自學/課後:
- Plastic SCM
-
注意:在製作新進度前、或Push之前要先Pull!!!
-
建議:Comment最好簡潔有力(寫重點),也可以再標記一次push的時間點
-
建議三人分別是兩位程式、一位美術來使用Plastic SCM
-
Q. 如果不只三個人想合作撰寫怎麼辦?
A. 如果是美術或音樂組的話,程式組可以先生出一個prototype讓他們測試(例如模型大小、整體空間等等是可以先決定的),製作好模型、場景、動畫或音樂後則可包成Unity Package後匯入到有連結到Plastic SCM的專案中
-
功能(有學過Git概念的可以自行跳過)
- Pull
注意:在製作新進度前、或Push之前要先Pull!!!
自動Merge其他更變集的資料,如有衝突的話則可能使用到以下兩種情況:
- choose from Origin Master : 選擇以本機的更變集為主
- choose from resources : 選擇以目的地的更變集為主
請自行與其他組員協調好再執行Pull的動作,否則更變集被覆蓋有時會很難救回來的!
- Push
- 建議每次上傳都打個簡短明瞭的註解
- Unity會先進行Check in的動作
- Push前如果想恢復某個物件或檔案修改前的版本,Undo即可
- Branch
- 假設今天非主要開發人員想進行測試或開發新功能,會建議在新的場景或另一個Branch製作
- 好處是別人不會Pull到你的Branch的東西,也就是沒有Merge或是Unity設定被覆蓋的問題
- Switch to workspace
可以在Plastic SCM應用程式的更變集介面中右鍵某個更變集,並按下Switch to workspace則可將目前的專案還原到當時的版本
- 還原前必須先將當下的變更Push上去
- 若確定要還原到該變更,則需把該更變集之後的更變集全部刪除!
-
創建
-
下載Plastic SCM雲端版
https://www.plasticscm.com/download
限制:三人、5Gb內免費

-
至Plastic SCM網頁版,使用Unity ID登入後,創建一個新的組織並創建Unity Repo
-
開啟你想同步的Unity Project,並到Unity Version Control的介面
-
填寫相關資訊,包含repo名稱,即步驟2.的專案名
-
出現類似下面畫面後則代表你成功了!

- 最後一步啦! 寫下你的第一則Comment、Check in changes並Push就大功告成啦!
-
邀請
-
到Plastic SCM Cloud,點選組織的設定成員功能

-
利用Gmail邀請你的成員加入組織後,他們就可以在Plastic SCM的應用程式中選擇該組織並找到你的repo進行共編啦!
6. 注意與建議
注意事項! 製作專案前有空看看吧!小心踩到這些地雷喔~ (是教授會注意的點^^)
-
避免動暈症 (順移時角度變化過大、角色旋轉方式、急速移動)
-
畫面過於炫彩(特效、顏色、燈光),導致視覺疲乏
-
遊戲元素過多,無法呈現遊玩特色或故事主軸
(也會使專案loading變重)
-
美術風格相斥或過多、與音樂不搭
-
隨時注意遊戲時的fps (最好能維持在60Hz以上)
-
若角色有全身的話(除了頭以外),記得把影子拿掉!
(mesh renderer>lightning
-
有導引玩家的提示會更好!
-
遊戲的操作自由度越大越好、操作方式越少越好、越有創意越好
-
在VR世界中因場景很大的關係,有時候不會選擇切換整個scene,而是在不同地區使用不同模型、不同效果渲染+fadein/fadeout來轉場。(善用VR世界的環境)
-
美術的部分,要注意素材不要選擇過度high poly的模型,會導致幀數下降,particle system在VR作品中也要慎用
-
一個專案的美術風格盡量維持一~兩種就好,且不要極端
(lowpoly+highpoly就會很怪)
-
配音的部分,由於同學們並非專業配音員,容易因為聲音含糊或收錄到環境音,而導致玩家出戲、甚至聽不清內容。建議同學可以多加利用免費的 AI文字轉語音工具(TTS),如: Elevenlabs、ttsmaker、edge-tts(需使用python,可調性較大)等等。
-
VR遊戲中,使用空間音效(Audio Spatializer),可以讓玩家透過聲音,定位視野外的物體,為你的故事/玩法創造更多可能性!
-
使用好音樂/音效,可以大幅提升玩家的沉浸感、改變故事的氛圍、甚至可以用來引導玩家以推進劇情!
-
專案到後面script、prefab、package各類檔案會越來越多,記得隨時整理「需要」的檔案,並命名分類,分裝至不同資料夾中。
番外篇1. 連結VR頭盔與突發狀況解決方法
- Oculus Quest 2 / 3
-
Oculus Link (有線)
步驟1. 下載Oculus應用程式並開啟
步驟2. 頭盔啟用Usb外部存取權(有出現的話)
步驟3. Enable Oculus Link
(插上數據線的時候應該會出現,沒有的話去選單手動點選或切換有無線幾次)
步驟4. 到了白色的大廳就代表成功囉!

-
Air Link(無線)
步驟1. 下載Oculus應用程式並開啟
步驟2. 將電腦與頭盔連線至同樣網路(電腦分享也可)
步驟3. 到選單切換成Air Link模式、點選自己電腦的名稱並連線
步驟4. 連線成功後按下Enable Link
步驟5. 到了白色的大廳就代表成功囉!
-
突發狀況
- 連線至白色大廳的途中一直轉圈圈進不去
解決方法:頭盔斷開重連,再不行就重新開機
- 線插進去了卻沒接到Oculus Link
解決方法:頭盔重新開機,電腦將Unity關閉、去系統管理員把所有有關Oculus的程序關閉
(起碼比電腦重開來得好==)
- 進入大廳後或是測試途中開始閃爍或卡卡的
解決方式:盡量使用有線的方式Link、或拔掉重連
番外篇2. 好用資源及連結
-
專案流程、組內分工/討論工具
-
資料與連結整理
-
Youtube超好用教學