这个效果做起来逻辑不难,在shader中做出一个矢量的星星的图形,之后通过粒子系统来控制缩放参数即可。
0、效果:
一、 Shader部分
1. 交叉星星图形
对u、v坐标取difference(相减的绝对值),得到两条对角线——>线性减淡一次——>相乘 = 星星图案。
2. 星星边线
边线的做法是用范围更大的减(Substract)范围更小的,所以可以用power做出一个黑色范围更大的星星。
因为要做边线,所以用到Step结点将星星改为硬边缘。这里的Step(A<=B)结点的用法是,将两个输入A和B作比较,A<=B,输出1,否则输出0。
3. 修改颜色
分别设置边线和内部的颜色,用Add相加。
4. 更改为透明
这里用的方法是将前面的到的大星星直接拿去剪裁,刚好要剪掉的地方数值为0,保留的位置数值为1 。
总览:
二、粒子系统部分
这一部分就是将shader拖到粒子上,并修改粒子系统的参数让它实现bling bling~的效果
1. 控制星星随机生成
a. particle system|
① 初始速度(startSpeed) = 0
② lifetime:random from 0.3 to 0.6
③ startSize:random from 0.2 to 0.5
b. shape
① radius = 2
c. size over time
① curve 一个 小到大到小 的曲线
2. 星星自行缩放
这里借助的原理是粒子系统的custom data1(vector)的数据可以对应shader中的uv1,所以可以将原shader中控制缩放的滑条 改为uv1(利用其中值为0-1的一个通道即可<这里用的u通道,对应自定义数据中的z分量>),通过在粒子系统中控制这个自定义数据的z值 来控制控制u通道的值 进而控制星星的缩放。
① shader中控制缩放的滑条替换成uv1的u通道
② 在renderer中添加一个custom data:custom1.xyzw
③ 勾选粒子系统的custom data,模式mode选为vector
④ 将z值设为0过渡到1的曲线curve