場景設計對於遊戲來說相當重要,因為場景能直接影響使用者的遊戲體驗。
Unity提供了相當便利的場景編輯器,在本章中我們將創造一個能夠在其中任意走動的基本遊戲場景。
2-1 如何取得資源
Unity的Asset Store是一個能夠快速取得各式各樣資源的好地方,如圖2-1執行「Window」→「Asset Store」就能開啟商店。
圖2-1 Asset Store
1. 切換語言
2. 關鍵字搜尋
3. 依類別尋找資源
4. 切換搜尋結果排列方式
5. 設定搜尋條件
找到需要的資源後點選「Download」。
會跳出使用條約,點選「Accept」同意後開始下載。
等待下載完後點選「Import」,匯入資源。
匯入後在Project視圖就能看見剛剛匯入的資源資料夾。
學會如何取得資源後下一節就來學習如何建立一個基本的場景吧!
2-2 建立場景
先依照章節1-2建立新專案後,匯入以下兩個基本資源包:
「Assets」→「Import Package」→「Environment」。
「Assets」→「Import Package」→「Characters」。
匯入完之後就能開始建立新場景囉!
在Hierarchy視圖 →「Create」→「3D Object」→「Terrain」,產生一個地面。如圖2-3,紅框處能夠調整地面的詳細設定。
圖2-3 地面詳細設定
如圖2-4是地形編輯工具:由左至右分別是繪製凹凸筆刷、繪製高度筆刷、平滑筆刷、貼圖筆刷、樹筆刷、細節筆刷、地形參數設定。
圖2-4 地形編輯工具
使用凹凸筆刷工具劃出地形樣貌,Setting裡的Brush Size可以調整筆刷大小,Opacity能調整筆刷強度。
使用貼圖筆刷,「Edit Textures…」→「Add Textures」→「Select」→「GrassHillAldebo」→「Add」。第一次匯入的貼圖會填滿地面。
匯入第二張貼圖,塗抹高山地區營造出地圖多樣性。
使用樹筆刷,「Edit Trees…」→「Add Tree」→「Select」→「Broadleaf_Desktop」→「Add」。調整筆刷大小與密度後使用點擊的方式為地圖添加樹木。
使用細節筆刷為地圖添加草,「Edit Details…」→「Add Grass」→「Select」→「GrassFrond01bedoAlpha」→「Add」。調整筆刷大小與密度後使用點擊的方式為地圖添加細節。
接下來放入攝影機,「Assets」→「Standard Assets」→「Characters」→「FirstPersonCharacter」→「Prefabs」→「FPSController」,拖曳放入場景中適當地點,點選控制器的播放鍵就能夠用鍵盤的WASD及滑鼠觀賞自己的遊戲場景囉!
2-3 天空
天空在場景設計中也是相當重要的一環,本節就以製作一個全景範例做為練習。
在Google搜尋關鍵字”HDRI”。
下載一張照片拖曳到Unity,Project視圖創建一個MySky資料夾將圖片拖曳進去,再修改Inspector視圖中的Texture Type。
選擇「Cubemap」,之後按「Apply」。
接著建立天空的材質球,Project視圖 →「Create」→「Material」,將Shader變更為「Skybox」下「Cubemap」。
將Project變更Texture Type為Cubemap的圖拖曳至如圖的欄位中。
將MySky拖曳到Scene視圖的天空,就完成了!
2-4 燈光
當建立一個新場景時,場景中至少會有兩個物件,分別是攝影機「Main Camera」與預設燈光「Directional Light」。
如圖2-5,主要功能區塊如下:
1. 燈光顏色、強度與預設燈光的強度參數 。
2. 調整經由燈光產生的陰影與間接光參數,將會在動態光照(GI)做說明。
圖2-5 燈光參數介紹
如圖2-6,「GameObject」→「Light」裡面有三種主要即時光源:
1. Directional Light:方向性的燈光,一般用於模擬太陽光照 。
2. Point Light:點光源,用於模擬蠟燭、燈泡一類的光源 。
3. Spot Light:投射性的光源,如聚光燈、手電筒。
圖2-6 三種燈光介紹
2-5 動態全域光照「GI」
動態全域光照(以下簡稱GI)是光傳輸物理特性的模擬。模擬光線在3D場景中的反射,能夠更加真實的呈現遊戲場景。
要是將GI運用妥當能大幅增加與改善使用者體驗,因為GI不只模擬直射光源,還能模擬在不同材質間不同的反射狀況。
如圖2-7所示:
Intensity:控制直接光照的強度。
Bounce Intensity:控制間接光也就是反射光的強度。
圖2-7 Directional Light 面板
接下來介紹Light面板,可以從主選單【Window】/【Lighting】叫出這個面板。
圖2-8 Light 面板參數介紹
Ambient Intensity和Reflection是影響反射天空或物件的參數。
General GI是用來調整”整體”間接光,也就是說燈光中的Bounce Intensity屬於個別調整,General GI則是整體調整,Bounce Boot控制光線從物體表面反射到下一個物體的強度。
Precomputed Realtime GI和Baked GI這兩塊與燈光的Baking是有相關的。
燈光的Baking選項有三項:
1.Realtime:對於動態物體提供即時直接光照,對於靜態物體則是多了間接光的即時變化。
2.Baked:只作用在靜態物體,就是將靜態物體的直接光與間接光當前效果烘焙成貼圖,意思就是燈光的Intensity 與Bounce Intensity不會發生立即變化,當然也包括燈光位置或角度改變也不會變化。
3.Mixed:混合以上兩點,動態物體提供即時直接光照,靜態物體則將當前效果烘焙成貼圖。
Lighting面板的Precomputed Realtime GI對應場景中Baking為Realtime的燈光,如果Precomputed Realtime GI有打勾的話,才會有間接光的即時變化。Baked GI 則是對應Baked或Mixed的燈光,把靜態物體當前光照烘焙成貼圖。
2-6 標準材質球
標準材質球能將物件貼上貼圖,能呈現出物件的質感。
新增一個資料夾「Materials」專門存放材質,接著在資料夾中右鍵「Create」→「Material」。
點選材質球後能進行相關設定,Albedo是主色,Emission是反射顏色。
設定完後直接拖曳到物件就能進行套用。
設定材質貼圖:在Unity設定貼圖並不是相當人性化,所以一般會在其他3D建模軟體設定,當然如果想要有更好的材質效果也能從2-1提到的Asset Store下載,下載下來的材質球直接拖曳到物件上就能進行套用。
至此Unity的基本教學結束,下一章開始介紹VR相關設備與各設備的VR實作範例。