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. windows azure中国 里面建立一个虚拟机,与虚拟机建立通信 里面部署IIS,外网访问

    在windows azure中国 里面建立一个虚拟机,里面部署IIS,外网不能访问么? 外网访问的地址是给的那个DNS地址 ,比如我的是 DNS 名称 urbanairserver.cloudapp. ...

  2. C# WebRequestExtensions

    https://gist.github.com/abombss/2720757 public static class WebRequestExtensions { public static Htt ...

  3. 匹配IP地址的正则表达式 (转)

    正则表达式 ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[ ...

  4. jQuery 中 children() 与 find() 用法的区别

    1.children() 与 find() 用法的区别 通过children获取的是该元素的下级元素,而通过find获取的是该元素的下级所有元素.

  5. PHP+MySql字符问题原理分析

    假如数据库已经设置了utf-8 ,php文件也设置了utf-8 ,但在php文件的查询语句中未添加了 mysql_query("set names utf8")语句,此时php页面 ...

  6. bistu新生-1005

    #include "stdio.h"#include "string.h"int main(){ char ku[]={'0','1','2','3','4', ...

  7. Java Sudoku游戏

    这几天尝试用Java的swing写图形程序,边学习边摸索写了个简单的数独游戏,在编写的过程中学到了不少关于swing的东西,而且对于图形化程序的编写也有了一点简单的认识: 善其事先利其器,既然写图形化 ...

  8. PHP中的文件下载

    文件下载:用<a href="链接"></a>这种是下载,但对于浏览器能解释的文件类型此下载非彼下载.向服务器请求的时候:1.协议和版本2.头信息3.请求的 ...

  9. HDOJ-三部曲一(搜索、数学)-1003-Curling 2.0

    Curling 2.0 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total ...

  10. 【LeetCode OJ】Pascal's Triangle

    Prolbem Link: http://oj.leetcode.com/problems/pascals-triangle/ Just a nest-for-loop... class Soluti ...