1. 程式人生 > >unity動態貼圖

unity動態貼圖

  • //宣告整個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);
  • }