unity動態貼圖
阿新 • • 發佈:2019-02-07
- //宣告整個Texture的分佈情況,4行4列,4個動畫
- var colCount : int = 4;
- var rowCount : int = 4;
- //宣告想要播放的動畫起始位置
- //比如rowNumber = 0 colNumber = 0 代表紅色第一個笑臉
- // rowNumber = 3 colNumber = 0 代表黃色第一個笑臉
- var rowNumber : int = 0; //從0開始計算
- var colNumber : int = 0; //從0開始計算
- var totalCells : int = 4;
- var fps : int = 10;
- var offset : Vector2;
- //更新動畫,傳遞引數給SetSpriteAnimation()
- function Update () { SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,fps); }
- //設定動畫SetSpriteAnimation(貼圖總列數,總行數,指定動畫起始幀所行號,列號,動畫總幀數,幀率)
- function SetSpriteAnimation(colCount : int,rowCount : int,rowNumber : int,colNumber : int,totalCells : int,fps : int){
- // 計算索引
- var index : int = Time.time * fps;
- index = index % totalCells;
- // 每個單元大小
- var size = Vector2 (1.0 / colCount, 1.0 / rowCount);
- // 分割成水平和垂直索引
- var uIndex = index % colCount;
- var vIndex = index / colCount;
- //顛倒V,讓貼圖正過來,所見即所得
- offset = Vector2 ((uIndex+colNumber) * size.x, (1.0 - size.y) - (vIndex+rowNumber) * size.y);
- renderer.material.SetTextureOffset ("_MainTex", offset);
- renderer.material.SetTextureScale ("_MainTex", size);
- }