1. 程式人生 > >unity 2D 透明遮罩 簡單實現物體一半透明

unity 2D 透明遮罩 簡單實現物體一半透明

大致需要用到的東西: shader 材質 深度攝像機

unity實現2D遮罩找了許多的解決方法,這個是我採取的一種方法,比較便捷,但不一定是最好的

主要想實現的效果是這樣的,小偷藏在窗戶的後面,並且有移動的動畫,需要遮罩除去其在窗戶之外的部分

檢視圖片

首先新建一個Shader,程式碼如下,很短

Shader "Depth Mask" {
SubShader{
ColorMask 0
Pass {}
}
}

再新建一個材質

檢視圖片檢視圖片

選擇shader為剛才新建的DepthMask

我們新建一個空物體,將小偷設為其子物體,並且新建兩個cube物體。將剛才的材質新增到這個cube物體上(這裡用到了3D的物體,對於2D遊戲來說有點怪怪的,但是sprite不能加剛才的材質)

檢視圖片檢視圖片

那麼在實際的遊戲場景中是怎麼樣的呢?

檢視圖片

可以看到其將整個攝像機中渲染的物體都遮住了,露出了後面的天空盒

所以此時需要單獨為遮罩的物體建立一個深度攝像機

首先先新建一個層thief,將cube和thief的sprite都加入這個層

檢視圖片

新建攝像機引數如下

檢視圖片

不要忘記在main camera中的cullingMash中去除thief

然後別忘記thief前面窗的圖也要單獨用一個深度攝像機

主要是改clearFlags和cullingMask,注意Depth這個屬性,值越大的就渲染在越前面

效果如下:

檢視圖片

最終效果

檢視圖片