Как вы переключаете анимационные кадры в Unity3D, используя прилагаемый код ниже? - PullRequest
0 голосов
/ 21 апреля 2020

Приведенный ниже фрагмент кода позволяет мне анимировать спрайт-лист, который просто отлично прикреплен к плоскости в Unity3D. Спрайт-лист содержит 16 кадров, но в нем есть две последовательности анимации. Приведенный ниже фрагмент кода проходит через таблицу спрайтов, как если бы это была одна последовательность анимации. Есть ли способ использования приведенного ниже кода в качестве примера для переключения между двумя последовательностями анимации, содержащимися в таблице спрайтов? Так, например, воспроизведение кадров от 0 до 7 при загрузке сцены, а затем при нажатии кнопки воспроизведение кадров от 8 до 15?

#pragma strict
var START_Scene : Start_Game;
var colCount    : int =  4;
var rowCount    : int =  4;

var rowNumber   : int = 0;
var colNumber   : int =  0;
var totalCells  : int =  15;
var fps     : int = 10;
var offset  : Vector2;

public var index : int;
public var offsetIndex:int;
private var currIndex:int;

public var flip:int = 1;

function Update () {
    if(START_Scene.STARTGAME == true) {
        SetSpriteANIMATION(colCount,rowCount,rowNumber,colNumber,totalCells,fps);
    }
}

function offsetTheIndex(){
    offsetIndex = currIndex % totalCells;
}


function SetSpriteANIMATION(colCount : int,rowCount : int,rowNumber : int,colNumber : int,totalCells : int,fps : int){


index = Time.time * fps;
currIndex = index;
index -=offsetIndex;

index = index % totalCells;


var size = Vector2 (1.0 / colCount, 1.0 / rowCount);

var uIndex = index % colCount;
var vIndex = index / colCount;


offset = Vector2 ((uIndex+colNumber) * size.x, (1.0 - size.y) - (vIndex+rowNumber) * size.y);
size.x *=flip;

GetComponent.<Renderer>().material.SetTextureOffset ("_MainTex", offset);
GetComponent.<Renderer>().material.SetTextureScale  ("_MainTex", size);
}
...