天天看點

《Unity開發實戰》——3.6節使用cookie紋理模拟多雲的戶外環境

本節書摘來自華章社群《unity開發實戰》一書中的第3章,第3.6節使用cookie紋理模拟多雲的戶外環境,作者 (愛爾蘭)matt smith (巴西)chico queiroz,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

3.6 使用cookie紋理模拟多雲的戶外環境

在很多第一人稱射擊和恐怖逃生遊戲中,光照和陰影可以使場影變得很複雜,有助于營造遊戲氣氛。本節中,将使用cookie紋理建立多雲的戶外環境。

3.6.1 準備工作

如果沒有圖檔編輯器軟體,或者想跳過自己制作圖檔的步驟,而把精力放在實作上,可以直接用0423_03_05檔案夾中cloudcookie.tga圖檔。

3.6.2 操作步驟

請按照下面的步驟模拟多雲的戶外環境:

1)在圖檔編輯器中,建立一張512×512的圖檔。

2)使用黑色作為前景色,白色作為背景色,打開render clouds過濾器(通過photoshop的菜單filter | render | clouds打開):

《Unity開發實戰》——3.6節使用cookie紋理模拟多雲的戶外環境

7)儲存圖檔,命名為cloudcookie.psd或cloudcookie.tga。

8)将圖檔導入到unity中,在project視圖中選中。

9)在inspector視圖中,把texture type的值設定成cookie,light type的值設定成directional,如下圖所示:

《Unity開發實戰》——3.6節使用cookie紋理模拟多雲的戶外環境

14)還需要一個腳本translate燈光和投影。使用project視圖的下拉菜單建立一個c#腳本,命名為movingshadows。

15)打開腳本,替換成下面的代碼:

《Unity開發實戰》——3.6節使用cookie紋理模拟多雲的戶外環境
《Unity開發實戰》——3.6節使用cookie紋理模拟多雲的戶外環境

16)儲存腳本,并附加到 directional light上。

17)在 inspector 視圖中選擇directional light,把wind speed x 和 wind speed z 參數的值修改成 20 (也可以修改成自己認為合适的值)。 light cookie size 參數的值必須修改成與cookie size一樣的值 (本例中為80):

《Unity開發實戰》——3.6節使用cookie紋理模拟多雲的戶外環境

18)播放場景,陰影會移動。

3.6.3 實作原理

腳本中讓 directional light通過x軸和z軸移動,進而引起 light cookie 紋理的位移。另外,重置light對象到原始位置,而無論其位移的距離大于還是等于light cookie size 參數的值。light的位置必須重置以阻止其移動得太遠,引起實時渲染和光照的問題。light cookie size 參數的值用于確定平滑的過渡。

關閉陰影的原因是light在x軸上的角度必須是90度(否則當light重置到原始位置時會有一個明顯的空缺)。如果要在場景中有動态陰影,可以添加第二個方向光。

3.6.4 更多内容

本節中在方向光上應用了cookie紋理,如果用于spot light 或 point light cookies呢?

1.建立 spot light cookies

建立 point light cookies

如果想使用帶有point light 的cookie 紋理,可以在inspector視圖中的texture importer 塊中修改light type 的值。