使用Projector组件
方形

Shader "LSQ/EffectAchievement/AttackRectRange"
{Properties {_ShadowTex ("Cookie", 2D) = "" {}_MainColor ("ScanColor", Color) = (1,1,1,1)_Border ("Border", Range(0, 0.5)) = 0.2_ScanSpeed ("ScanSpeed", float) = 0.5_ScanSize ("ScanSize", Range(0, 0.5)) = 0.2_ScanInterval ("ScanInterval", float) = 3}Subshader {Tags { "RenderType"="Transparent" "Queue"="Transparent"}Pass {ZWrite OffBlend SrcAlpha OneMinusSrcAlphaOffset -1, -1CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct a2v {float4 vertex : POSITION;};struct v2f {float4 pos : SV_POSITION;float4 uvShadow : TEXCOORD1;};float4x4 unity_Projector;fixed4 _MainColor;sampler2D _ShadowTex;float _Border;float _ScanSize;float _ScanSpeed;float _ScanInterval;v2f vert (a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uvShadow = mul(unity_Projector, v.vertex);return o;}float Rectangle(float2 samplePos, float2 halfSize){float2 edgeDistance = abs(samplePos) - halfSize;float2 outsideDistance = length(max(0, edgeDistance));float2 insideDistance = min(0, max(edgeDistance.x, edgeDistance.y));float2 softRect = outsideDistance + insideDistance;float change = fwidth(softRect) * 0.5;float hardRect = smoothstep(-change, change, softRect);return hardRect;}fixed4 frag (v2f i) : SV_Target{//投影fixed fullMask = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow)).a;//去除边缘拉伸const float BORDER = 0.001;if (i.uvShadow.x / i.uvShadow.w < BORDER|| i.uvShadow.x / i.uvShadow.w > 1 - BORDER  || i.uvShadow.y / i.uvShadow.w < BORDER|| i.uvShadow.y / i.uvShadow.w > 1 - BORDER){fullMask = 0;}float2 uv = i.uvShadow - 0.5f;float len = length(uv);//正方形float borderRect = saturate(Rectangle(uv, 0.5 - _Border));//正方形波float dis = (abs(uv.x) + abs(uv.y)) + _Time.y * _ScanSpeed;dis *= _ScanInterval;dis = dis - floor(dis);float rectWave1 = Rectangle(uv, dis);float rectWave2 = Rectangle(uv, dis + _ScanSize);float rectWave = saturate(rectWave1 - rectWave2);float alpha = (borderRect + rectWave) * fullMask;return fixed4(_MainColor.rgb, alpha);}ENDCG}}
}

圆形

Shader "LSQ/EffectAchievement/AttackCircleRange"
{Properties {_ShadowTex ("Cookie", 2D) = "" {}_MainColor ("ScanColor", Color) = (1,1,1,1)_Forward ("Forward", Range(0, 360)) = 0_MinRange ("MinRange", Range(0, 0.25)) = 0_AttackAngle ("AttackAngle", Range(0, 360)) = 60_Power ("Power", float) = 5_Strength ("Strength", float) = 1_ScanSpeed ("ScanSpeed", float) = 0.5_ScanInterval ("ScanInterval", float) = 3_ScanStrength ("ScanStrength", float) = 1}Subshader {Tags { "RenderType"="Transparent" "Queue"="Transparent"}Pass {ZWrite OffBlend SrcAlpha OneMinusSrcAlphaOffset -1, -1CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct a2v {float4 vertex : POSITION;};struct v2f {float4 pos : SV_POSITION;float4 uvShadow : TEXCOORD1;};float4x4 unity_Projector;fixed4 _MainColor;sampler2D _ShadowTex;float _Forward;float _MinRange;float _AttackAngle;float _Power;float _Strength;float _ScanSpeed;float _ScanInterval;float _ScanStrength;v2f vert (a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uvShadow = mul(unity_Projector, v.vertex);return o;}float2 Rotate(float2 samplePosition, float rotation){const float PI = 3.14159;float angle = rotation / 180 * PI;float sine, cosine;sincos(angle, sine, cosine);return float2(cosine * samplePosition.x + sine * samplePosition.y, cosine * samplePosition.y - sine * samplePosition.x);}fixed4 frag (v2f i) : SV_Target{float2 uv = i.uvShadow - 0.5f;uv = Rotate(uv, _Forward);float len = length(uv);float len2 = uv.x * uv.x + uv.y * uv.y;float range;//最小范围          if (len2 < _MinRange){range = 0;}else{//角度const float PI = 3.14159;float angle = atan2(uv.y, uv.x) / PI * 180;range = 1 - step(smoothstep(_AttackAngle * 0.5, 0, angle) - smoothstep(0, -_AttackAngle * 0.5, angle), 0);}//投影fixed fullMask = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow)).a;//去除边缘拉伸const float BORDER = 0.001;if (i.uvShadow.x / i.uvShadow.w < BORDER|| i.uvShadow.x / i.uvShadow.w > 1 - BORDER  || i.uvShadow.y / i.uvShadow.w < BORDER|| i.uvShadow.y / i.uvShadow.w > 1 - BORDER){fullMask = 0;}//最外圈float alpha = pow(len, _Power) * fullMask * _Strength;//中心波float centerWave = 0;if(alpha > 0){float dis = len + _Time.y * _ScanSpeed;dis *= _ScanInterval;float wave = dis - floor(dis);wave = pow(wave, _Power) * _ScanStrength;alpha = clamp(alpha + wave, 0, _Strength);}return fixed4(_MainColor.rgb, alpha * range);}ENDCG}}
}

Shader 如何表现攻击范围相关推荐

  1. 2020-用多通道卷积神经网络学习单类特征用于人脸表现攻击检测

    2020年,Anjith George等人,期刊:TIFS,CCFA刊,Learning One Class Representations for Face Presentation Attack ...

  2. Unity3D攻击范围光圈Shader实现(UGUI)

    在Unity的UGUI下用Shader实现的攻击范围光圈效果 fixed4 frag(v2f IN) : COLOR{half4 color = tex2D(_MainTex, IN.texcoord ...

  3. 管理Shader——Shader概览

    管理Shader 现在基本图像引擎已经被启动并且运行了,你暂时可以把注意力放在shader开发.正如上一章提及的,在XNA中一切事物在shader的帮助下被渲染,即便当你使用 SpriteBatch ...

  4. WebGL+shader实现素描效果渲染

    转自:点击打开链接 实现一个这样的渲染效果,主要的步骤包括: 准备模型和场景 通过 WebGL (Three.js) 导入场景 实现 Shader 以表现接近素描的效果 在最重要的第 3 步中,我们要 ...

  5. 游戏的数值系统的实现和演化

    在游戏的战斗系统中,数值系统是很重要的模块之一.对策划来说,数值策划是一个非常重要的分类,关于数值从策划的角度介绍的比较多.但是对于程序来说,可能是这一块和需求比较密切,实现起来也没有特别复杂,关于数 ...

  6. 【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。...

    [SIGGRAPH 2015][巫师3 狂猎 The Witcher 3: Wild Hunt ]顶级的开放世界游戏的实现技术 作者:西川善司 日文链接  http://www.4gamer.net/ ...

  7. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

  8. 3.C++深入理解 面向对象部分2

    C++深入理解 面向对象部分 一.面向对象深入部分   在前几天 360 笔试做下来,感觉自己会的难度还行,还没学过的就乱选了,算法题部分做出来运行结果也是对的,但是两个解答题一点都没见过,直接就跳过 ...

  9. 活体检测CDCN学习笔记

    原文链接:https://arxiv.org/pdf/2003.04092v1.pdf 代码链接:GitHub - ZitongYu/CDCN: Central Difference Convolut ...

最新文章

  1. 读过的好书[技术类]
  2. Mastercam X9中文版
  3. plSql读取Oracle数据库中文乱码
  4. utilities(matlab)—— 前馈网络权值矩阵初始化方式
  5. 我的世界服务器哪个有自动铺路,超简单命令方块铺路机 我的世界自动铺路机制作教程(附存档)...
  6. hadoop 空间配置
  7. 当后台返回的图片在前端加载不出来时,前端做默认图片展示
  8. 安装可视化linux界面
  9. Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
  10. Fingerprint2 生成浏览器指纹应用
  11. Syzmlw 蜗居在线播放
  12. 手机远程控制电脑方法 手机远程控制电脑软件使用教程
  13. 警报声.wav_具有中央警报缓存的jAlarms 1.4
  14. ONF解决方案与合作伙伴副主席Aseem Parikh:CORD的社区增长概况及全球发展趋势
  15. Your Customers Do Not Mean What They Say
  16. 硬件电路设计入门奉献系列(一)
  17. python怎么将删的代码恢复_找回丢失的Python代码--如果代码还驻留在内存中
  18. msysgit在Windows上的安装,
  19. Markdown语法学习笔记
  20. Ubuntu oh-my-zsh与autosuggestions配置

热门文章

  1. lisp 提取字符串中的數字_lisp 提取字符串中的數字_LISP - 字符串
  2. Android 我的第一个Jetpack Compose应用
  3. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第十七集
  4. 滚石导航网站源码v3.0 织梦模板+测试版+非常适合网址导航网站使用
  5. 智慧门户、信创门户、国产门户、数字化门户,如何构建出七大特色亮点?
  6. pandas_datareader.data 获取雅虎财经股票数据并以csv格式存放
  7. 对智能手表的功能买点认知介绍
  8. 利用计算机求解问题的核心工作就是,教材习题及答案
  9. C语言的冒泡排序优化及鸡尾酒排序问题分解知识点
  10. java double 赋值语句_Java中float、double、long类型变量赋值添加f、d、L尾缀问题