Unity Shader播放序列帧动画
1 Shader "LordShader/AnimateSprite" { 2 Properties { 3 _MainTint ("Diffuse Color", Color) = (1,1,1,1) //颜色属性,可以在u3d inspector面板控制该变量 4 _MainTex("Base (RGB)",2D) = "white" {} //贴图 5 _TexWidth("Sheet Width",float) = 0.0 //贴图宽度像素值 6 _SpriteFrameNum("Sprite Frame Counts",float) = 9.0 //总帧数 7 _Speed("Speed ",Range(0.01,32)) = 12 //播放速度 8 } 9 SubShader { 10 Tags { "RenderType"="Opaque" } 11 LOD 200 12 13 CGPROGRAM 14 #pragma surface surf Lambert 15 16 fixed4 _MainTint; //主颜色 17 sampler2D _MainTex; //主贴图 18 float _TexWidth; //贴图宽度像素值 19 float _SpriteFrameNum; //动画帧数 20 float _Speed; //播放速度 21 float _TimeValue; //从脚本传递过来的数 22 23 struct Input { 24 float2 uv_MainTex; 25 }; 26 27 void surf (Input IN, inout SurfaceOutput o) { 28 float2 spriteUV = IN.uv_MainTex; 29 float uAddPerFrame = 1 / _SpriteFrameNum; //每一帧U值的增量 30 31 //获取一个0 1 2 3 循环的值 32 //fmod 返回 x/y 的余数(取模)。如果 y 为 0 ,结果不可预料 33 float timeVal = fmod(_Time.y * _Speed,_SpriteFrameNum); //进行取余数操作 得到当前要显示的图片的下标 34 timeVal = ceil(timeVal); 35 36 //float timeVal = _TimeValue; //_TimeValue直接通过脚本传递 material.SetFloat("_TimeValue",timeVal); 37 float xValue = spriteUV.x; //UV坐标中的X坐标(0到9) 38 xValue *= uAddPerFrame; //把UV值指定到第一张小图的范围 注意 39 40 xValue += timeVal * uAddPerFrame; //每次执行把图片切下一张小图,累加u的增量值 41 spriteUV = float2(xValue,spriteUV.y); 42 fixed4 c = tex2D (_MainTex, spriteUV) * _MainTint; 43 o.Albedo = c.rgb * _MainTint; 44 o.Alpha = c.a; 45 } 46 ENDCG 47 } 48 FallBack "Diffuse" 49 }
转载于:https://www.cnblogs.com/beeasy/p/6057235.html
Unity Shader播放序列帧动画相关推荐
- unity ParticleSystem 实现序列帧动画效果(一)
用粒子系统实现序列帧动画优势: 先附上一个 介绍序列帧实现方式比较的链接 点击打开链接 在该链接里说较为倾向于使用该方式俩实现序列帧动画,那么具体的好处又有哪些呢? 此处再贴一个链接,这里介绍了下粒子 ...
- CocosCreator实现粒子特效播放序列帧动画
CocosCreator实现粒子特效播放序列帧动画 本文基于CocosCreator2.2.0,主要是通过修改粒子系统定制引擎实现粒子特效播放序列帧动画的效果. 对于粒子特效播放序列帧动画目前来将引擎 ...
- [Unity] Animator 播放 Mixamo 动画卡在第一帧的解决办法:勾选 Loop Time
首先要在 Mixamo 中上传自己的模型,选中动画之后下载 FBX for Unity 格式,所得的 FBX 文件放入 Unity 之后在动画文件的 Import Setting - Rig - An ...
- Unity Shader关于uv动画和定点动画的个人浅见
uv动画是根据图片纹理的移动来达成效果的,uv动画一般(基本了吧)是先对图片进行采样,接着对uv进行增减来达成移动效果,而乘可以让其放大,除可以在做帧动画的时候可以用到.除法会获取到纹理涂的某一块区间 ...
- unity中播放spine动画突然删掉报错
这个脚本增加 protected void ApplyAnimation () { 增加为null的判断if (skeleton!=null){skeleton.UpdateWorldTransfor ...
- Shader学习17——序列帧动画
序列帧动画实际就是动态地去改UV点就行,实现的时候注意一下怎么取行列就可以 Mar-05-2021 15-16-55.gif c#代码里控制_Process的赋值,从1-行*列总数循环即可.测试的时候 ...
- NGUI_2.6.3_系列教程六(序列帧动画)
今天我给大家讲一下如何使用NGUI做序列帧动画.本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画.废话不说了,下面开始. 还要在啰嗦一句,首先大家要准备一些序列 ...
- Unity Shader 序列帧动画
shader中的序列帧动画属于纹理动画中的一种,主要原理是将给定的纹理进行等分,再根据时间的变化循环播放等分中的一部分. Unity Shader 内置时间变量 名称 类型 描述 _Time floa ...
- Unity shader入门精要学习笔记-代码篇6(序列帧动画/滚动背景/流动河流/广告牌/顶点动画的阴影)
一.序列帧动画 建立一个四边形对着摄像机. 我们需要一张序列帧图像,这里用到8x8的爆炸图. 给四边形上材质和shader,代码如下: Shader "Custom/NewSurfaceSh ...
- 【Unity Shader】Special Effects(一)UI特效的动画播放器
更新日期:2021年8月16日. Github源码:[点我获取源码] 索引 [系列简介] [SpecialEffects 模块简介] [UI特效的动画播放器] 下载SpecialEffects模块 使 ...
最新文章
- 在JavaScript中创建多行字符串
- Embedding external files using [Embed] (转载:学习如何嵌入外部文件)
- if you have something important on the clean my mac
- RabbitMQ 消息队列六种模式
- BZOJ 2588: Spoj 10628. Count on a tree 树上跑主席树
- 鸡肋还是革新——Blazor进WinForm
- HDU 3974 Assign the task(DFS序+线段树单点查询,区间修改)
- poj 3243 Clever Y(Baby-Step Giant-Step)
- vbs 解析 json jsonp 方法
- 作文 —— 景物描写
- UVa1586 - Molar mass
- 【React自制全家桶】九、Redux入手
- http://blog.csdn.net/lwj103862095/article/details/7860648
- Android项目:基于安卓Android平台手机商城系统app(计算机毕业设计)
- linux系统制作qcow2,oz制作qcow2镜像
- html和js画圣诞树图片,教你如何把JavaScript代码写成圣诞树
- Pygame详解(二):display 模块
- matlab安装破解
- 傅里叶缩写及涵义整理
- 多人协作git workflow规范
热门文章
- C#问题——interface class
- Json 读写操作中含有中文时
- 受控文本生成任务简述
- 【论文写作】综述论文的六个写作模版
- 【经验之谈】掌握这13个PyTorch Trick,让你做实验行云流水~
- 【github】一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新:涵盖140种语言组合...
- 【论文】图文解读经典之作Span-Graph for SRL - 一篇经典的语义角色标注paper
- 上新啦 | 火山翻译新增38个语种!
- 数据结构与算法python—7.链表题目leetcode总结
- 深度学习2.0-2.tensorflow的基础操作之创建Tensor及应用场景