12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 5016|回复: 12
打印 上一主题 下一主题

[提问] 贴图动画显示原理

[复制链接]

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

跳转到指定楼层
楼主
发表于 2011-10-8 08:28:00 |只看该作者 |倒序浏览



            
           

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







分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-2-17 23:21:10 |只看该作者
很经典,很实用,学习了!
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-3-15 23:19:01 |只看该作者
再看一看,再顶楼主
回复

使用道具 举报

643

主题

1

听众

9937

积分

高级设计师

Rank: 6Rank: 6

纳金币
9935
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-3-16 17:55:20 |只看该作者
很不错
回复

使用道具 举报

643

主题

1

听众

9937

积分

高级设计师

Rank: 6Rank: 6

纳金币
9935
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-3-16 17:56:05 |只看该作者
牛叉
回复

使用道具 举报

797

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
5568
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-3-16 19:38:57 |只看该作者

   
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-3-29 23:25:00 |只看该作者
加精、加亮滴铁子,尤其要多丁页丁页
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-4-9 23:32:40 |只看该作者
已阵亡的 蝶 随 风 舞 说过  偶尔按一下 CTRL A 会发现 世界还有另一面
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2012-5-8 23:20:38 |只看该作者
“再次路过……”我造一个-----特别路过
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2012-6-4 23:19:18 |只看该作者
无聊时可以刷屏幕 灌水 也可以试试 帖子的标题究竟可以写多长
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-29 21:58 , Processed in 0.088143 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部