一、前言
又是一个好久没有更新了,还是因为太忙,生活苟且云云,当然有好的东西还是需要拿出来和大家分享一下的。
使用的是.5.0版本,惯例,先上效果图,如图所示:该效果是响应每一次鼠标点击时候,在鼠标的点击的位置处产生一个颜色随机的
波
二、实现方法
1、重点的Shader部分:
首先,是最难的颜色转换函数,代码:
树上的cat,如果您要查看本帖隐藏内容请回复
2、创建波纹预设体
有了Shader之后,创建该Shader的材质球,我一般都会直接选中该Shader,然后右键创建材质,这个材质就直接赋值了这个Shader,并且命名也会和该Shader的名字相关。创建完材质之后,创建一个空物体,并且给这个空物体添加Sprite Renderer属性。将下面的贴图给Sprite Renderer的Sprite。
编写该预设体的控制脚本,代码如下:
//转换颜色的方法
fixed3 shift_col(fixed3 RGB, half3 shift)
{
fixed3 RESULT = fixed3(RGB);
floatVSU = shift.z*shift.y*cos(shift.x*3.14159265 / 180);
floatVSW = shift.z*shift.y*sin(shift.x*3.14159265 / 180);
RESULT.x = (.299*shift.z + .701*VSU + .168*VSW)*RGB.x
+ (.587*shift.z - .587*VSU + .330*VSW)*RGB.y
+ (.114*shift.z - .114*VSU - .497*VSW)*RGB.z;
RESULT.y = (.299*shift.z - .299*VSU - .328*VSW)*RGB.x
+ (.587*shift.z + .413*VSU + .035*VSW)*RGB.y
+ (.114*shift.z - .114*VSU + .292*VSW)*RGB.z;
RESULT.z = (.299*shift.z - .3*VSU + 1.25*VSW)*RGB.x
+ (.587*shift.z - .588*VSU - 1.05*VSW)*RGB.y
+ (.114*shift.z + .886*VSU - .203*VSW)*RGB.z;
returnRESULT;
}
3、最后写一个总控脚本
控制预设体点击创建,代码如下:
[C#]纯文本查看复制代码
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) ="white"{}
[HideInInspector]_StartTime("StartTime", Float) = 0
_AnimationTime("AnimationTime", Range(0.1, 10.0)) = 1.5
_Width("Width", Range(0.1, 3.0)) = 0.3
_StartWidth("StartWidth", Range(0, 1.0)) = 0.3
[Toggle] _isAlpha("isAlpha",Float) = 1
[Toggle] _isColorShift("isColorShift",Float) = 1
[MaterialToggle] PixelSnap("Pixel snap", Float) = 1
}
转自:http://www.manew.com/thread-106798-1-1.html