Neilyodog Blog

变速闪烁

仿塞尔达效果实现

需求

自发光闪烁。类似塞尔达中锁后对象身体闪烁的效果,并且可以调节闪烁时间和速度

效果展示

思路

3.1 shader部分

控制自发光部分,亮暗sin挪到x轴上方就可以,时间需要脚本传入。

其实直接sin+1 就可以,源文件中连连看用的 *0.5+0.5 会导致比例发生偏移

文章配图

对于sin的优化可以看这里 https://shimo.im/docs/5bqnrRO5BBC74Dqy/ 《Mali Offline Compiler 简单食用指南》

3.2 代码部分

时间传入这边选的是invoke,demo方便UI控制。逻辑具体还得程序翻新。

因为可能涉及到每个灯闪烁速度不同,所以选择逐材质控制

3.3 bug处理

本来最开始是Time代替上方_NowTime的连线的,但因为shader中 _Time.y 这个参数精度不够。解决思路就是:反正都把NowTime传进来了,而且都是乘法叠加,不如直接用这个精度更高的时间变量

源文件

文章配图

文章配图

flashDemo.unitypackage

文章配图


5.迭代

最近发现开始的时候并不是从黑色(自发光)开始。

这个也比较简单,sin(x-a) 这个a就是调整的系数,有兴趣可以去desmos.里看一眼

shanshudiedaigif

加个系数a就可以。脚本里直接统一控制就可以

— END —