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

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

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

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

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