您的位置:首页 > 移动开发 > Unity3D

Unity3D_Quad_实现播放序列帧

2015-12-02 12:09 666 查看
//最近看了FlappyBird 看小鸟飞的方式不错 这里来写写看 :)

那么,开始吧~

首先我们需要一个包含小鸟飞行的序列帧图片:

酱紫:



可以看到这里有3帧动画 我们循环切换这3帧动画 就可以使小鸟动起来

我们导入这个贴图 制作Material 将贴图赋值给这个材质:



Shader 选择Unlit/Transparent 透明材质 下面说下Tiling Offset参数 (自己动手调下就明白)

Tiliing x 代表在X方向上 显示的百分比 Offse x 代表x方向上起始位置的偏移量

本序列帧中有3帧 所以每次播放的是都是1/3 约为0.3333 要使小鸟动起来 现在就是要写脚本控制每次的位移量

0:位移0 1:位移0.3333 2:位移0.6666 3:位移0 4:位移0.3333 5:位移0.6666 ......

编写脚本;首先 我们需要定义1s内播放的帧数 暂定10次 也就是说每一帧播放需要的时间是1/10s

再者 需要判断当前时间 到底该播放哪一帧

这里需要分清小鸟一帧 和Update()函数里的帧 这是两个不同的概念

void Update () {
timer += Time.deltaTime;

if (timer >= 1.0f / framePerSec)
{
frameCount++;
timer -= 1.0f / framePerSec;

int freamIndex = frameCount % 3;

//update the material 's offset
MeshRenderer mr= this.gameObject.GetComponent<MeshRenderer>();
if (mr != null)
{
mr.material.SetTextureOffset("_MainTex", new Vector2((float)0.333*freamIndex,0));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: