相信大家都看过很多武侠类电影或者电视剧,甚至是一些游戏当中也是有的一种剧情播放效果。是啥呢?就是当主角(一般情况主角镜头多嘛)被人重伤过后,但是不会致死,这个时候主角就会昏迷,然后过一段时间就会苏醒,但是由于身体虚弱,他会再昏睡过去,其中有这样的一段镜头,就是主角的眼睛特写,主角会缓慢睁开眼睛看一下周围环境,然后由于体力不支,眼睛再慢慢的闭合,昏睡过去。这是电影中常见的桥段,那么我们游戏当中其实有时候也是有这样的镜头的,只不过是在剧情中才会存在,OK,废话不多了,我们在Unity中可以通过Shader来编写屏幕后处理,来实现这样的效果。老规矩,先上效果图。
就是这样的一个效果,我们眼睛看到的范围是一个椭圆的,用椭圆来模拟最适合不过了,然后当眼睛慢慢睁开的时候,周围的一切都从黑暗到明亮,但是由于比较虚弱,所以还是相对于一般情况而言是比较黑一点的。
OK,这个效果确实还是很有意思的,对于剧情的体现再好不过,那么我们应该怎么做出这样的效果呢?接下来说下原理。既然是后处理效果,那么狠明显就需要用到OnRenderImage这个函数了,之前我也写了好多后处理的效果,那么这个就不过多说C#里的调用了,都差不多。接下来最关键的就是Shader方面的操作。原理很简单,就是我们从中间来绘制一片椭圆区域,这个半径的话是需要控制的,我们可以从外界来调用,然后椭圆区域内的像素正常显示,或者叫做半透明处理,然后椭圆外的区域我们就让它进行纯色显示就好了。是不是非常的简单。这个效果确实不是很难,甚至是很简单,但是效果的体现还是有些作用的。OK,不多说,直接上代码了。
核心代码就是这些了。好了,本次的分享就到这里了