unity 2D 透明遮罩 簡單實現物體一半透明
阿新 • • 發佈:2019-02-05
大致需要用到的東西: 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這個屬性,值越大的就渲染在越前面
效果如下:
最終效果