目标效果:https://www.bilibili.com/video/BV19q4y1x7Kn
参考教程:
- https://www.youtube.com/watch?v=a-J4ktx6y0Y
- https://blog.csdn.net/weixin_34296641/article/details/93387486?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-93387486-blog-109099240.t0_searchtargeting_v1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-93387486-blog-109099240.t0_searchtargeting_v1&utm_relevant_index=3
首先是通过shader产生一个跟随玩家的图形
- shader代码:
- 效果:
- 中心点跟随玩家代码:
接下来修改为透明材质
- 在Properties块中添加一个新的property,这使得我们可以全局控制透明度
1
_TransVal("Transparency Value",Range(0,1)) = 0.5
- 改变渲染队列
1
Tags {"Queue" = "Transparent" } // "RenderType" = "Transparent"
- 在#pragma声明中添加一个新的参数:alpha参数。意思是:使用名为surf的Surface Function,使用内置的Lambert光照函数,开启透明通道
1
2#pragma surface surf Lambert alpha
float _TransVal; - 最后,在surf()函数中添加控制透明度的代码
1
2
3
4
5
6
7
8
9
10if (dist > _Radius && dist < (_Radius + _Border))
{
o.Albedo = _AreaColor;
o.Alpha = 1;
}
else
{
o.Albedo = c.rgb;
o.Alpha = _TransVal;
}
- 效果:
- 调整圆半径和变宽后效果:
以后再研究!