技能CD特效

  这个效果主要是利用反正切函数完成。atan2(x,y)的返回值是[-PI,PI],这个支持4个象限的反正切函数。关于圆角计算,在上篇文章中有介绍。

  

  现在,我们来看看反正切函数的效果:

  

  在第一象限:返回[0,PI/2],有渐变;  

  在第二象限:返回[PI/2,PI],为白色;

  在第三象限:返回[-PI,-PI/2],为黑色;

  在第四象限:返回[-PI/2,0],为黑色;

  

                uv = i.uv - fixed2(0.5,0.5);
float hui = atan2(uv.y, uv.x);
return float4(hui,hui,hui,alpha);

  反正切的返回值在[-PI,PI],那么我们现在增加变量_angle,让他控制反正切的值;我们设置_angle值为[-PI,PI],用_angle的值,加上反正切的值,他们最后的值就会随着_angle的值变化。

    当_angle = -PI时,最终值为[-2PI,0],显示黑色;

    当_angle = PI时,最终值为[0,2PI],显示渐变;

    

  现在我使用用sign函数,将大于0的部分全部设置为1,小于等于0的部分设置成为0;

    

源代码:

Shader "JQM/Test02"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_angle("angle", Range(, )) =
}
SubShader
{ Pass
{
Tags {"Queue" = "Transparent"}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM
#pragma vertex vert
#pragma fragment frag #include "UnityCG.cginc" float _percent;
float _angle; sampler2D _MainTex;
float4 _MainTex_ST; struct VertexOutPut
{
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
}; VertexOutPut vert (appdata_full v)
{
VertexOutPut o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = v.texcoord.xy; return o;
} fixed4 frag (VertexOutPut i) : COLOR
{
//圆角计算
float2 uv = i.uv.xy - float2(0.5,0.5);
float rx = fmod(uv.x, 0.4); float ry = fmod(uv.y, 0.4); float mx = step(0.4, abs(uv.x));
float my = step(0.4, abs(uv.y));
float alpha = - mx*my*step(0.1, length(half2(rx,ry)));
fixed4 col = tex2D(_MainTex, i.uv); uv = i.uv - fixed2(0.5,0.5);
_angle = 6.283*(_angle-0.5);
float hui =sign(_angle+atan2(uv.y, uv.x));
return float4(hui,hui,hui,alpha);
}
ENDCG
}
}
}

CG函数

  sign(x)

    :如果 x 大于 0,返回 1;如果 x 小于 0,返回 01;否则返回 0。

技能CD 效果 shader的更多相关文章

  1. NGUI实现技能CD效果

    在NGUI中使用Sprite的遮罩效果可以很轻松的实现技能CD效果. 具体实现步骤: ①新建一个技能图标的Sprite 如图中的Skill001,再在该技能Sprite上添加一个Sprite做遮罩, ...

  2. Unity NGUI实现技能CD效果

    unity版本:4.5.1 NGUI版本:3.6.5 脚本代码:C# 在游戏中经常要实现技能的CD效果,NGUI中已经实现了这个功能,即在button上创建一个半透明的Sprite实现这个功能. 首先 ...

  3. NGUI技能CD效果制作(sprite的type:filled)

    一,我们先添加一个sprite,改名为skill.给当前skill添加图片,然后再sprite下添加一个sprite和一个label,结果如下 二现在我们来设置skill下的sprite,给他设置一个 ...

  4. Unity3D 利用NGUI2.6.3做技能冷却的CD效果

    转自http://blog.csdn.net/qqmcy/article/details/9469021 NGUI非常强大我们今天来学习一下,如何利用NGUI做技能冷却的CD效果.先导入NGUI的插件 ...

  5. NGUI系列教程六(技能冷却的CD效果)

    今天来学习一下,如何利用NGUI做技能冷却的CD效果. 1,首先按之前的教程Create Your UI,Camera为Simple 2D 最终如下图: 2,添加一个按钮,Background 为一张 ...

  6. Unity 利用NGUI2.6.3做技能冷却的CD效果

    NGUI非常强大我们今天来学习一下,如何利用NGUI做技能冷却的CD效果.先导入NGUI的插件.没有的话这里有啊NGUI2.6.3下载地址: http://vdisk.weibo.com/s/KLqn ...

  7. NGUI研究之制作转圈的技能CD特效

     昨天想做一个技能CD转圈的特效,花了大把的时间去用meshRender组件想通过三角形依据数学算法来绘制一个圆形的网格.通过动态绘制圆形网格的方法来实现技能CD特效.奶奶的昨天我研究了一晚上,最 ...

  8. (转)NGUI制作转圈的技能CD特效

    在技能图标上面放个半透明的精灵,用来做技能冷却的特效,如下图所示,我就用NGUI中的图标来带代替. NGUI制作转圈的技能CD特效 然后修改一下特效的精灵类型,它是在技能图标上面悬浮半透明可旋转的精灵 ...

  9. Unity-奥义技能背景变黑效果

    [旧博客转移 - 2016年8月29日 12:51 ] 前段时间做了一个放技能的时候,背景缓慢变黑,放完后再变回来的效果,可以很好的突出技能特效的感觉. 算是一种屏幕后期特效,这个特效说难不难,说简单 ...

随机推荐

  1. shiro之SimpleAccountRealm

    我使用的是maven构建的工程,junit测试 Shiro认证过程 创建SecurityManager--->主体提交认证--->SecurityManager认证--->Authe ...

  2. the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf

    一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-htt ...

  3. asp.net core连接sqlserver

    开发环境:win7,vs2017,sqlserver2014 vs上建立一个asp.net core web项目和一个.net core的类库项目DBA 简单起见,在DBA项目中就一个类SqlServ ...

  4. js学习笔记-事件委托

    通过事件委托,你可以把事件处理器绑定到父元素上,避免了把事件处理器添加到多个子级元素上.从而优化性能. 事件代理用到了事件冒泡和目标元素.而任何一个元素的目标元素都是一开始的那个元素. 这里首先要注意 ...

  5. Android学习笔记(七) 布局基础

    一.概念 控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法.有两种方法可以控制布局: 在布局文件(xxx.xml)中完成控件的布局. 在JAVA代码中完成 ...

  6. iOS Programming Introduction to Auto Layout 自动布局

    iOS Programming Introduction to Auto Layout   自动布局 A single application that runs natively on both t ...

  7. struts2通过配置文件进行数据校验无效

    网络搜集常见解决方案: 1. 首先应该注意validation.xml的名字,一定要以Action的类名加“-validation.xml”作为文件名,如LoginAction-validation. ...

  8. Matlab中size、numel、length、fix函数的使用

    size():获取矩阵的行数和列数  (1)s=size(A),      当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数. (2)[r,c]=size ...

  9. CREATE OPERATOR CLASS - 定义一个新的操作符类

    SYNOPSIS CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING index_method AS { OPERATOR ...

  10. chpasswd - 成批更新用户的口令

    总览 chpasswd [-e] 描述 chpasswd 从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令.在没有用 -e 这个开关选项的情况下,口令将按明文的形式接 ...