- 最后登录
- 2018-6-29
- 注册时间
- 2011-7-1
- 阅读权限
- 20
- 积分
- 359

- 纳金币
- 335582
- 精华
- 0
|
using UnityEngine;
using System.Collections;
public class TextureAnimation : MonoBehaviour {
public int uvAnimationTileX = 8; //贴图横排的图片数量
public int uvAnimationTileY = 5; //贴图竖排的图片数量
public float framesPerSecond = 10.0f;//速度
void Update () {
// 控制速度
int index = Mathf.RoundToInt(Time.time * framesPerSecond);
// 使得速度不会因为图片的数量改变
index = index % (uvAnimationTileX * uvAnimationTileY);
// 单张图片的大小
Vector2 size = new Vector2 (1.0f / uvAnimationTileX, 1.0f / uvAnimationTileY);
// 播放图片(也就是当前图片的行列)
int uIndex = index % uvAnimationTileX;
int vIndex = index / uvAnimationTileX;
// build offset
// 单张图片的位置(单张图片的位置是左下角)
Vector2 offset = new Vector2 (uIndex * size.x, 1.0f - size.y - vIndex * size.y);
renderer.material.SetTextureOffset ("
_
MainTex", offset);
renderer.material.SetTextureScale ("
_
MainTex", size);
}
}
通过改变
贴图
的tiling 和offset来实现贴图
动画
。所以主要原理就是理解贴图的tiling和offset属性的含义。
tiling就是贴图实际显示的大小显示整张贴图数组就是为1,是vector2类型,因为有宽和高,分别对应x,y。
offset就是显示贴图的的位置。整张的显示是(0,0)。这里的坐标远点在题图的左下角。
示意图
![]()
红框就是tiling(图片显示的部分)。
绿色的点就是offset。是绿色坐标系上的一个坐标,有了图片的位置的显示大小就可以根据需要显示贴图了。
|
|