Shader "LordShader/AnimateSprite" {
Properties {
_MainTint ("Diffuse Color", Color) = (,,,) //颜色属性,可以在u3d inspector面板控制该变量
_MainTex("Base (RGB)",2D) = "white" {} //贴图
_TexWidth("Sheet Width",float) = 0.0 //贴图宽度像素值
_SpriteFrameNum("Sprite Frame Counts",float) = 9.0 //总帧数
_Speed("Speed ",Range(0.01,)) = //播放速度
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD CGPROGRAM
#pragma surface surf Lambert fixed4 _MainTint; //主颜色
sampler2D _MainTex; //主贴图
float _TexWidth; //贴图宽度像素值
float _SpriteFrameNum; //动画帧数
float _Speed; //播放速度
float _TimeValue; //从脚本传递过来的数 struct Input {
float2 uv_MainTex;
}; void surf (Input IN, inout SurfaceOutput o) {
float2 spriteUV = IN.uv_MainTex;
float uAddPerFrame = / _SpriteFrameNum; //每一帧U值的增量 //获取一个0 1 2 3 循环的值
//fmod 返回 x/y 的余数(取模)。如果 y 为 0 ,结果不可预料
float timeVal = fmod(_Time.y * _Speed,_SpriteFrameNum); //进行取余数操作 得到当前要显示的图片的下标
timeVal = ceil(timeVal); //float timeVal = _TimeValue; //_TimeValue直接通过脚本传递 material.SetFloat("_TimeValue",timeVal);
float xValue = spriteUV.x; //UV坐标中的X坐标(0到9)
xValue *= uAddPerFrame; //把UV值指定到第一张小图的范围 注意 xValue += timeVal * uAddPerFrame; //每次执行把图片切下一张小图,累加u的增量值
spriteUV = float2(xValue,spriteUV.y);
fixed4 c = tex2D (_MainTex, spriteUV) * _MainTint;
o.Albedo = c.rgb * _MainTint;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}

Unity Shader播放序列帧动画的更多相关文章

  1. Unity Shader 之 uv动画

    Unity 动画 Unity Shader 内置时间变量 引入时间变量 名称 类型 描述 _Time float4 t是自该场景加载开始所经过的时间,4个分量分别是(t/20, t, 2t, 3t) ...

  2. Unity NGUI实现序列帧动画播放

    如题,要实现序列帧的播放导入图片的时候需要注意: (1)图片的命名要连续,如图: (2)将这些图片在NGUI中打包成Altas图集的时候图片应该在同一个Altas中: 这里以播放特效为例,满足条件时播 ...

  3. Shader实例:序列帧动画

    效果: 序列帧图片网上随便找的,质量不是很好,重点不是它,不要在意. 思路: 1.之前都是在一张面片上直接映射一张纹理,IN.uv的范围是0~1 现在要映射一张纹理上的一小块区域,就要用这块区域的uv ...

  4. Unity Shader序列帧动画学习笔记

    Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...

  5. [Cocos2d-x v3.x]序列帧动画

      简单介绍 Cocos2d-x中.动画的详细内容是依靠精灵显示出来的,为了显示动态图片,我们须要不停切换精灵显示的内容.通过把静态的精灵变为动画播放器从而实现动画效果. 动画由帧组成,每一帧都是一个 ...

  6. (转)NGUI系列教程七(序列帧动画UITexture 和 UIsprit)

    NGUI系列教程七(序列帧动画)   今天我给大家讲一下如何使用NGUI做序列帧动画.本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画.废话不说了,下面开始.还 ...

  7. NGUI系列教程七(序列帧动画)

    今天我给大家讲一下如何使用NGUI做序列帧动画.本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画.废话不说了,下面开始.还要在啰嗦一句,首先大家要准备一些序列帧 ...

  8. unity shader序列帧动画代码,顺便吐槽一下unity shader系统

    一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Sh ...

  9. Unity Shader 序列帧动画

    shader中的序列帧动画属于纹理动画中的一种,主要原理是将给定的纹理进行等分,再根据时间的变化循环播放等分中的一部分. Unity Shader 内置时间变量 名称 类型 描述 _Time floa ...

随机推荐

  1. 深入理解mybatis参数

    这个的话我是看的别人的文章,感觉很好: http://blog.csdn.net/isea533/article/details/44002219

  2. JDBC体会

    1.把mysql-connector XXXX版本导入buildpath 2.通过DriverManager 的getConnection 方法获得一个Connnection引用,方法的参数是 url ...

  3. 用Unity实现的依赖注入

    第一步:添加引用 上面那两个玩意 第二步:在app_start中添加unityconfig 上面那个玩意 第三步:在global.asax文件中进行初始化 如上面的,在application_star ...

  4. Matlab单一变量曲线拟合-cftool

    2.启动曲线拟合工具箱>cftool 3.进入曲线拟合工具箱界面“Curve Fitting tool”(1)点击“Data”按钮,弹出“Data”窗口:(2)利用X data和Y data的下 ...

  5. "This connection is untrusted" - Firefox error message

    Error Messages I am receiving the following error message in Firefox: After selecting Cancel to clos ...

  6. python3爬虫再探之EXCEL(续)

    上篇介绍了xlsxwriter的用法,本来想写一下xlrd和xlwt的用法,看到这篇文章——http://blog.csdn.net/wangkai_123456/article/details/50 ...

  7. 文件IO和标准IO

    2015.2.26 星期四,阴天 今天的内容主要是文件IO man 手册的分册: man -f open 查看那些分册中有openman 1 -- 普通的命令程序man 2 -- 系统调用man 3 ...

  8. HDU 4902 (线段树)

    Problem Nice boat(HDU 4902) 题目大意 维护一个序列,两种操作. 第一种操作,将一段区间[l,r]赋值为x. 第二种操作,将一段区间[l,r]中大于等于x的数与x求gcd. ...

  9. array_walk() 函数

    array_walk() 函数对数组中的每个元素应用回调函数.如果成功则返回 TRUE,否则返回 FALSE. 典型情况下 function 接受两个参数.array 参数的值作为第一个,键名作为第二 ...

  10. threeSum_0

    //找出数组中三个数相加为0,返回存在的组数 //输入指正*A,长度为size,返回*B和长度num int threeSum_0(int *A,int size,int *B,int &nu ...