游戲開發(fā)中如何實(shí)現(xiàn)死亡屏幕置灰效果?看完這篇你就懂了
引言
眾所周知,咱們在嘗試一款新游戲的時候,游戲當(dāng)中最常見的就數(shù)死亡、或者失敗的畫面了。就比如我們在RPG游戲當(dāng)中,作為主角的我們總要去體驗(yàn)一把游戲給予的競技感。
成功通關(guān),當(dāng)然會有一種隱隱的暢快感!但是,有贏就肯定有輸了,當(dāng)作為角色人物的我們挑戰(zhàn)Boss失敗,就會血灑當(dāng)場,倒地身亡。
而到了這個時候,我們的屏幕一般都會變成灰色的。
比如,又回到我們熟悉的LOL游戲中,雙方團(tuán)戰(zhàn),你在后排輸出,在隊(duì)友給你創(chuàng)造輸出環(huán)境的時候,突然我們被其刺客突進(jìn)干掉后,屏幕也會變成灰色。

同上,吃雞游戲也是一樣的。
相信這些游戲都玩過的同學(xué)就應(yīng)該知道了,從這三個游戲中我們可以看到一個共同點(diǎn),玩家只要在游戲中死亡或者失敗的話,在失敗的同時我們的屏幕就會變灰?;疑聪笳髦劳?。
那這個效果是怎么做出來的?
滿足這個點(diǎn)那就需要掌握渲染相關(guān)的技術(shù),這個死亡后屏幕置灰的效果就是屏幕后處理。那究竟是如何完成的呢?先不急,我們來看一個unity中的屏幕后處理死亡置灰效果。

很明顯的我們就會發(fā)現(xiàn)我們的場景變成灰色了,其實(shí)就是屏幕的顏色改變了。
那么具體這個效果是怎么實(shí)現(xiàn)的呢?我們一步一步的來實(shí)現(xiàn)它。
我們的原理就是通過一個特殊的shader,來進(jìn)行屏幕后處理。那么什么是屏幕后處理呢?我們首先要知道unity中的渲染機(jī)制,一般情況下,場景中的物體的渲染是根據(jù)層級和深度來進(jìn)行渲染,
進(jìn)行了正常的渲染流程過后,然后我們?nèi)绻刑厥獾囊恍┲噶钚枰砑拥脑?,這個時候的操作就是后處理。屏幕后處理是需要在OnRenderImage這個函數(shù)里面來操作的。
這個函數(shù)的調(diào)用是在所有的渲染都已經(jīng)完成的情況下,才會調(diào)用的。如果你沒寫它,默認(rèn)就沒有后處理。那么我們死亡置灰效果就是需要在這個函數(shù)里面來用上我們自己寫的特殊的shader。這樣就有了死亡置灰效果。
先來說下特殊shader的操作,在shader里面我們首先是正常的渲染物體。然后我們需要在片元著色函數(shù)里面來將得到的紋理進(jìn)行采樣,然后對它的顏色進(jìn)行變化,讓它從正常色變成灰色。代碼如下:

代碼很少,也很簡單易懂。然后shader制作好了,我們就需要進(jìn)行后處理,需要用C#寫腳本,控制攝像機(jī)。所以給攝像機(jī)掛一個腳本。腳本如下:

最關(guān)鍵的還是在OnRenderImage里面。這樣的話,我們的死亡置灰效果就完成了。
最后
如果對本篇文章有所收獲的話,別忘了收藏一下哦!