技能CD特效

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

  

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

  

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

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

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

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

  

  1. uv = i.uv - fixed2(0.5,0.5);
  2. float hui = atan2(uv.y, uv.x);
  3. 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;

    

源代码:

  1. Shader "JQM/Test02"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Texture", 2D) = "white" {}
  6. _angle("angle", Range(, )) =
  7. }
  8. SubShader
  9. {
  10.  
  11. Pass
  12. {
  13. Tags {"Queue" = "Transparent"}
  14. ZWrite Off
  15. Blend SrcAlpha OneMinusSrcAlpha
  16.  
  17. CGPROGRAM
  18. #pragma vertex vert
  19. #pragma fragment frag
  20.  
  21. #include "UnityCG.cginc"
  22.  
  23. float _percent;
  24. float _angle;
  25.  
  26. sampler2D _MainTex;
  27. float4 _MainTex_ST;
  28.  
  29. struct VertexOutPut
  30. {
  31. float4 pos : SV_POSITION;
  32. float2 uv : TEXCOORD0;
  33. };
  34.  
  35. VertexOutPut vert (appdata_full v)
  36. {
  37. VertexOutPut o;
  38. o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
  39. o.uv = v.texcoord.xy;
  40.  
  41. return o;
  42. }
  43.  
  44. fixed4 frag (VertexOutPut i) : COLOR
  45. {
  46. //圆角计算
  47. float2 uv = i.uv.xy - float2(0.5,0.5);
  48. float rx = fmod(uv.x, 0.4); float ry = fmod(uv.y, 0.4); float mx = step(0.4, abs(uv.x));
  49. float my = step(0.4, abs(uv.y));
  50. float alpha = - mx*my*step(0.1, length(half2(rx,ry)));
  51. fixed4 col = tex2D(_MainTex, i.uv);
  52.  
  53. uv = i.uv - fixed2(0.5,0.5);
  54. _angle = 6.283*(_angle-0.5);
  55. float hui =sign(_angle+atan2(uv.y, uv.x));
  56. return float4(hui,hui,hui,alpha);
  57. }
  58. ENDCG
  59. }
  60. }
  61. }

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. 进击的Python【第十六章】:Web前端基础之jQuery

    进击的Python[第十六章]:Web前端基础之jQuery 一.什么是 jQuery ? jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多&quo ...

  2. Hdu 3294 Girls' research (manacher 最长回文串)

    题目链接: Hdu 3294  Girls' research 题目描述: 给出一串字符串代表暗码,暗码字符是通过明码循环移位得到的,比如给定b,就有b == a,c == b,d == c,.... ...

  3. 暴力/DP Codeforces Beta Round #22 (Div. 2 Only) B. Bargaining Table

    题目传送门 /* 题意:求最大矩形(全0)的面积 暴力/dp:每对一个0查看它左下的最大矩形面积,更新ans 注意:是字符串,没用空格,好事多磨,WA了多少次才发现:( 详细解释:http://www ...

  4. Ubuntu下编译安装MySQL5.7

    tar zxvf mysql-5.7.14.tar.gz cd mysql-5.7.14 第一步: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ ...

  5. div 弹出 居中

    function show_tc_conv(){var x=jq13(window).width()/2;var y=jq13(window).height()/2; var div_w=jq13(& ...

  6. Map接口框架图

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

  7. 仿陌陌的ios客户端+服务端源码

    软件功能:模仿陌陌客户端,功能很相似,注册.登陆.上传照片.浏览照片.浏览查找附近会员.关注.取消关注.聊天.语音和文字聊天,还有拼车和搭车的功能,支持微博分享和查找好友. 后台是php+mysql, ...

  8. PHP会话控制考察点

    为什么要使用会话控制技术 HTTP协议是无状态的,也就是说HTTP没有一个内建的机制来维护两个事务之间的状态.当一个用户完成一个请求发起第二个请求的时候,服务器无法知道这次请求是来自于上一次的客户.而 ...

  9. jquery /css3 全屏的渐变背景

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Python_练习_VS清理器

    #导入os import os #创建列表放入后缀 d=[ '.txt','obj','tlog','lastbuildstate','idb','pdb','pch','res','ilk','sd ...