游戏开发中如何实现死亡屏幕置灰效果?看完这篇你就懂了
引言
众所周知,咱们在尝试一款新游戏的时候,游戏当中最常见的就数死亡、或者失败的画面了。就比如我们在RPG游戏当中,作为主角的我们总要去体验一把游戏给予的竞技感。
成功通关,当然会有一种隐隐的畅快感!但是,有赢就肯定有输了,当作为角色人物的我们挑战Boss失败,就会血洒当场,倒地身亡。
而到了这个时候,我们的屏幕一般都会变成灰色的。
比如,又回到我们熟悉的LOL游戏中,双方团战,你在后排输出,在队友给你创造输出环境的时候,突然我们被其刺客突进干掉后,屏幕也会变成灰色。

同上,吃鸡游戏也是一样的。
相信这些游戏都玩过的同学就应该知道了,从这三个游戏中我们可以看到一个共同点,玩家只要在游戏中死亡或者失败的话,在失败的同时我们的屏幕就会变灰。灰色即象征着死亡。
那这个效果是怎么做出来的?
满足这个点那就需要掌握渲染相关的技术,这个死亡后屏幕置灰的效果就是屏幕后处理。那究竟是如何完成的呢?先不急,我们来看一个unity中的屏幕后处理死亡置灰效果。

很明显的我们就会发现我们的场景变成灰色了,其实就是屏幕的颜色改变了。
那么具体这个效果是怎么实现的呢?我们一步一步的来实现它。
我们的原理就是通过一个特殊的shader,来进行屏幕后处理。那么什么是屏幕后处理呢?我们首先要知道unity中的渲染机制,一般情况下,场景中的物体的渲染是根据层级和深度来进行渲染,
进行了正常的渲染流程过后,然后我们如果有特殊的一些指令需要添加的话,这个时候的操作就是后处理。屏幕后处理是需要在OnRenderImage这个函数里面来操作的。
这个函数的调用是在所有的渲染都已经完成的情况下,才会调用的。如果你没写它,默认就没有后处理。那么我们死亡置灰效果就是需要在这个函数里面来用上我们自己写的特殊的shader。这样就有了死亡置灰效果。
先来说下特殊shader的操作,在shader里面我们首先是正常的渲染物体。然后我们需要在片元着色函数里面来将得到的纹理进行采样,然后对它的颜色进行变化,让它从正常色变成灰色。代码如下:

代码很少,也很简单易懂。然后shader制作好了,我们就需要进行后处理,需要用C#写脚本,控制摄像机。所以给摄像机挂一个脚本。脚本如下:

最关键的还是在OnRenderImage里面。这样的话,我们的死亡置灰效果就完成了。
最后
如果对本篇文章有所收获的话,别忘了收藏一下哦!