現實生活中,當陽光直射大地,而天空中又有不少雲時,雲層的影子老是會投射在大地上,風吹着雲層移動,影子也跟着運動,如圖3-28所示。cookie
圖3-28 天空中的雲朵與大地上的影子函數
要在遊戲中,模擬與之相似的大氣現象時,就須要使用cookie類型的紋理。3d
本小節將使用PhotoShop繪製有云層效果的紋理圖,而後爲其添加透明度信息。具體操做過程以下:orm
(1)使用PhotoShop建立512×512像素大小的圖。對象
(2)在PhotoShop內,單擊【濾鏡】|【渲染】|【雲彩】命令,便可在瞬間完成雲層的繪製,如圖3-29所示。blog
圖3-29 使用PhotoShop繪製雲層遊戲
(3)全選(Ctrl+A)並複製(Ctrl+C)此圖像,切換到通道窗口下,新建通道,使用默認的名稱Alpha 1,選中新建的通道,而後粘貼(Ctrl+V)。這樣透明度的信息也就添加完了。遊戲開發
(4)存儲此雲層紋理,而後導入到Unity。開發
爲了模擬雲層的移動效果,須要想遊戲場景中添加相應對象,並作些簡單設置,具體步驟以下:it
(1)在Project視圖裏,選中導入的雲層紋理,而後在Inspector視圖裏設置下列屬性值,如圖3-30所示。
圖3-30 設置雲層紋理的屬性
(2)單擊GameObject|Create Other|Terrain和Directional Light命令,爲遊戲添加地形(Terrain)和方向光源(Directional Light)對象。
(3)選中Directional Light,而後在Inspector視圖裏,修改光源下列屬性,如圖3-31所示。
圖3-31 修改光源的屬性 圖3-32 光線與地形平面垂直
光是將雲層的陰影投射在地形平面上,還看不出什麼效果,因此本小節打算編寫一個腳本,用於控制雲層的移動,這樣的話效果會更好些。在Project視圖下,建立一個C#腳本,並命名爲MovingShadows。打開此腳本,寫入下面的代碼:
此腳本將被賦予方向光源。遊戲開始運行時,腳本11行的Start()函數被執行,獲知當前方向光源的位置;遊戲運行時,16行的Update()在每幀都被執行的,做用是控制方向光源在XZ平面上的移動。
選中被賦予MovingShadows腳本的方向光源,在Inspector視圖裏能夠看到腳本組件上的3個屬性:Wind Speed X、Wind Speed Z和Light Cookie Size,如圖3-33所示。
提示:屬性的含義在腳本的註釋中有說明。
圖3-33 腳本組件上的3個屬性
設置好雲層的移動速度,調整好攝像機的視圖效果後,就能夠運行遊戲了。固然了,看到的就是雲層在地形表面上移動的場景了,如圖3-34所示。
圖3-34 模擬雲層移動的效果
本文選自:Unity 遊戲開發技巧集錦大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!