首先准备一个序列帧图片如下的AngryBird:

场景中随便创建一个物体,这里以Cube为例

将图片拖放到Cube上,这样会在Cube的6各面都有3个bird,为了美观显示一个鸟,我们调整材质的Tiling的X = 0.33333,这样就会显示第一个鸟了

下面我们来通过脚本来实现鸟的眨眼和张嘴:

新建一个脚本:Test

代码如下,注释很详细:

 //非常重要的是:如果是float类型一定要加上f,千万别省,

     public int rowCount = ;  //这个序列图有几行,很明显1行
public int colCount = ; //这个序列图有几列,很明显3列
public int fps = ; //每秒运行几帧,每一帧都换一个图,也就是一秒平均0.333秒换一个图
public bool isLoop = true; //是否循环播放 private float curTime = 0.0f; //运行了多长时间
private float lastTime = 0.0f; //最后运行时间
private int curRow = ; //运行到了哪一行
private int curCol = ; //运行到了哪一列
private bool isEnd = false; //是否结束 void Start () {
//初始化的时候设置,设置纹理缩放,如果我们不调整材质的Tiling的X = 0.3333,可以通过这个设置
//"_MainTex":主要的漫反射纹理
//"_BumpMap":法线贴图
//"_Cube":是反射cubemap(盒子贴图)
renderer.material.SetTextureScale("_MainTex", new Vector2(1f / colCount, 1.0f/ rowCount));
//初始化纹理偏移量,后面主要通过设置他来实现动画
renderer.material.SetTextureOffset("_MainTex", new Vector2(, ));
} void Update () {
if (isEnd) { //默认false
return;
} if (curTime >= lastTime + 1.0f / fps) { //如果运行时间>=运行时间+每帧运行的时间
curCol++; //执行下一列,列加1
if (curCol >= colCount) { //如果执行的列>= 列总数,说明到了末尾
curCol = ; //执行第0列
curRow++; //行加1,看看是否有下一行
if (curRow >= rowCount) { //如果行>=行总数,说明没有下一行
if (!isLoop) { //停止循环
isEnd = true; //结束播放
return;
}
curRow = ; //行归零,从第一行重新开始
}
}
//设置纹理偏移
//如果是材质的话,一张图的长和宽都是1,1 / 图的列数 = 每张图的宽
//curCol * 1.0f / colCount : 执行到的列 * 一张图的宽
//curRow * 1.0f / rowCount : 同理
renderer.material.SetTextureOffset("_MainTex", new Vector2(curCol * 1f / colCount, curRow * 1.0f / rowCount));
lastTime = curTime; //记录运行时间,用来做判断
}
else {
curTime += Time.deltaTime; //记录运行的时间
}
}

代码

原文地址:http://blog.csdn.net/ariel7321/article/details/7760995

unity3d实现序列帧动画的更多相关文章

  1. Unity3d的序列帧动画

    马上这星期就要过去了,为了完成每星期写一篇博客的目标,熬夜也要写完. 最近项目中用到了很多序列帧动画,之前看教程也接触过序列帧动画,但当时没用到,就没仔细研究,这次就借着这个机会好好总结一下序列帧动画 ...

  2. Unity3d UGUI序列帧动画

    代码 using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine. ...

  3. 时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  4. Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系

    2条评论 Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移,这个就是通过 applyRootMotion 来达成的,我们只需要在使用 Animator ...

  5. iOS-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)

    一.各个动画的优缺点 1.首尾动画:如果只是修改空间的属性,使用首尾动画比较方便,如果在动画结束后做后续处理,就不是那么方面了. 2.核心动画:有点在于对后续的处理方便. 3.块动画: (1)在实际的 ...

  6. cocos2d-x 2.0 序列帧动画 深入分析

    转自:http://blog.csdn.net/honghaier/article/details/8222401 序列帧动画主要有几个类: CCSpriteFrame:精灵帧信息,序列帧动画是依靠多 ...

  7. Unity3D之Legacy动画系统学习笔记

    Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统.目前的情况是Mecanim与Legacy两套动画系统同时 ...

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

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

  9. (二)plist的使用和序列帧动画

    六.plist的使用方法: iOS的程序在安装在手机上以后会把全部资源文件集成在一个文件夹中,这种文件集合称为bundle,对于一般的工程,只有一个bundle,即mainbundle,因此可以通过b ...

随机推荐

  1. MoonWarriors-lua——《雷电战机》游戏-Lua移植版

    MoonWarriors是一个使用Cocos2d-Html5引擎开发的类似雷电战机的游戏Demo,源代码发布在Cocos2d-x官网的引擎示例当中.MoonWarriors-lua是为了学习Cocos ...

  2. 2733: [HNOI2012]永无乡 - BZOJ

    Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...

  3. Matlab中添加搜索目录

    一.问题来源 来自于一份大规模hash图像检索代码. 二.问题解析 2.1 添加目录 addpath('./utils/'); 2.2 添加目录及其子目录 addpath(genpath('./uti ...

  4. asp.net MVC日志插件Log4Net学习笔记一:保存日志到本地

    log4net(Log For Net)是Apache开源的应用于.Net框架的日志记录工具,详细信息参见Apache网站.它是针对Java的log4j(Log For Java的)姊妹工具.用过lo ...

  5. 孟岩的c++ 的学习方法,这何尝有不是做人做事的方法呢?

    “(孟岩)我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点.对 于关键理论的学习,要集中精力,速战速决.而旁枝末节和非本质性的知识内容,完全可 以留给实践去零敲碎打. “原因是这样的,任 ...

  6. APP,webapp 设计相关资料汇集区

    (1).@2x iPhone3GS时代,我们为一个应用提供图标(或按钮提供贴图),只需要icon.png.针对现在的iPhone4~6 Retina显示屏,需要制作额外的@2x高分辨率版本. 例如在i ...

  7. 使用session技术来实现网上商城购物车的功能

    首先.简单的了解session和cookie的区别: 一.session和cookie的区别: session是把用户的首写到用户独占的session中(服务器端) cookie是把用户的数据写给用户 ...

  8. C++不同进制整数

    在C++的整数常量中,整数分为十进制整数.八进制整数和十六进制整数. 那给出一个整型常量怎样区分是何种进制呢?/给出一个整型常量,如100,默认是十进制数,如果在该数前加0,如0100,则此数表示为八 ...

  9. 在VS中让一个JS文件智能提示另一个JS文件中的成员

    “在VS中如何让一个JS文件智能提示另一个JS文件中的成员” 有时候会有这种情况:当我的一个Web页面引用了两个JS文件(假如分别叫common.js和JScript1.js),如果JScript1. ...

  10. CentOS升级git

    1.首先查看下当前的版本 [root@localhost ~]# git --versiongit version 1.8.2.1 2.尝试进行升级 [root@localhost ~]# yum u ...