MyShader1_CircleOnGround

  1. 1.
    1. 1.1. 首先是通过shader产生一个跟随玩家的图形
    2. 1.2. 接下来修改为透明材质


目标效果:https://www.bilibili.com/video/BV19q4y1x7Kn

参考教程:

  1. https://www.youtube.com/watch?v=a-J4ktx6y0Y
  2. 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代码:

  • 效果:

  • 中心点跟随玩家代码:

接下来修改为透明材质

  1. 在Properties块中添加一个新的property,这使得我们可以全局控制透明度
    1
    _TransVal("Transparency Value",Range(0,1)) = 0.5
  2. 改变渲染队列
    1
    Tags {"Queue" = "Transparent" } // "RenderType" = "Transparent"  
  3. 在#pragma声明中添加一个新的参数:alpha参数。意思是:使用名为surf的Surface Function,使用内置的Lambert光照函数,开启透明通道
    1
    2
    #pragma surface surf Lambert alpha
    float _TransVal;
  4. 最后,在surf()函数中添加控制透明度的代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (dist > _Radius && dist < (_Radius + _Border))
    {
    o.Albedo = _AreaColor;
    o.Alpha = 1;
    }
    else
    {
    o.Albedo = c.rgb;
    o.Alpha = _TransVal;
    }
  • 效果:

  • 调整圆半径和变宽后效果:

以后再研究!