纳金网

标题: 贴图动画显示原理 [打印本页]

作者: 晃晃    时间: 2011-10-8 08:28
标题: 贴图动画显示原理



            
           

            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。是绿色坐标系上的一个坐标,有了图片的位置的显示大小就可以根据需要显示贴图了。
         








作者: C.R.CAN    时间: 2012-2-17 23:21
很经典,很实用,学习了!

作者: C.R.CAN    时间: 2012-3-15 23:19
再看一看,再顶楼主

作者: BU Secret    时间: 2012-3-16 17:55
很不错
作者: BU Secret    时间: 2012-3-16 17:56
牛叉
作者: 彬彬    时间: 2012-3-16 19:38

   

作者: tc    时间: 2012-3-29 23:25
加精、加亮滴铁子,尤其要多丁页丁页

作者: tc    时间: 2012-4-9 23:32
已阵亡的 蝶 随 风 舞 说过  偶尔按一下 CTRL A 会发现 世界还有另一面

作者: 菜刀吻电线    时间: 2012-5-8 23:20
“再次路过……”我造一个-----特别路过

作者: tc    时间: 2012-6-4 23:19
无聊时可以刷屏幕 灌水 也可以试试 帖子的标题究竟可以写多长

作者: 晃晃    时间: 2012-9-19 09:58
凡系斑竹滴话要听;凡系朋友滴帖要顶!

作者: tc    时间: 2013-2-28 23:25
发了那么多,我都不知道该用哪个给你回帖了,呵呵





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5