前段时间在项目中实现了NGUI拼的卡牌溶解效果,需求比较简单,就是拖卡上阵的时候在变成模型前需要有个卡牌溶解的过渡效果(我们是一个3D卡牌MMO项目)
刚收到需求时也没有觉得很复杂,毕竟溶解效果实现原理就是一张溶解图discard的事,唯一麻烦的点就是用户操作的卡牌并不是一张Texture,而是NGUI用一堆UISprite拼出来的GameObject,当然如果扩展UIPanel,替换里面的所有 UIDrawCall材质,通用坐标换算相对溶解图的位置,再处理图像也不是不可以,不过实现起来相对麻烦一点,自从上次使用后期制作UI界面的过渡动画后,个人觉得使用后期做NGUI的后期效果会更简单一些。
实现原理如下:
1.播放时实时获得一张有卡牌的截屏RT
2.播放时实时获得一张无卡牌的截图RT
3.播放时实时计算卡牌在截图RT的UV坐标
4.两张RT在卡牌所占像素的位置通过溶解图做lerp处理
5.将处理的结果返回最终颜色缓冲
相关代码被我总结成一个Demo,具体表现效果如下
这里的溶解图是使用边缘检测算法生成的一张动态图,目前是为了实现先溶解背景(项目需求),我们可以根据自己美术的需求,通过改变溶解图,实现各类溶解效果
文章评论