- Home /
Texture Swap + Animated Offset/Tiling
I am (trying) to learn javascript and have come across a challenge that boggles my simple mind. I am trying to combine this script:
//vars for the whole sheet
var colCount : int = 4;
var rowCount : int = 4;
//vars for animation
var rowNumber : int = 0; //Zero Indexed
var colNumber : int = 0; //Zero Indexed
var totalCells : int = 4;
var fps : int = 10;
var offset : Vector2; //Maybe this should be a private var
//Update
function Update () { SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,fps); }
//SetSpriteAnimation
function SetSpriteAnimation(colCount : int,rowCount : int,rowNumber : int,colNumber : int,totalCells : int,fps : int){
// Calculate index
var index : int = Time.time * fps;
// Repeat when exhausting all cells
index = index % totalCells;
// Size of every cell
var size = Vector2 (1.0 / colCount, 1.0 / rowCount);
// split into horizontal and vertical index
var uIndex = index % colCount;
var vIndex = index / colCount;
// build offset
// v coordinate is the bottom of the image in opengl so we need to invert.
offset = Vector2 ((uIndex+colNumber) * size.x, (1.0 - size.y) - (vIndex+rowNumber) * size.y);
renderer.material.SetTextureOffset ("_MainTex", offset);
renderer.material.SetTextureScale ("_MainTex", size);
}
with the unity wiki's texture swap code:
var frames : Texture2D[];
var framesPerSecond = 10.0;
function Update () {
var index : int = Time.time * framesPerSecond;
index = index % frames.Length;
renderer.material.mainTexture = frames[index];
}
And I guess my problem in understanding is, even though I watched some videos on index and modules I don't feel like I understand all the way yet and am not even sure if that is the answer to my question....
Anyways, my question is : How can I set this script up so that when the sprite sheet plays the final frame the texture is swapped to a different texture?
Answer by 3D-Magic-VR · Nov 05, 2011 at 10:36 PM
Hi there, need to check the index value in the first script (Debug.Log (index)), then use a function to use this value and knowing when it reaches the last frame, so you can make the substitution of texture using this function.
Your answer
![](https://koobas.hobune.stream/wayback/20220613032816im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Unity 2d Animation from spritesheet: How can I move the character according to the animation? 0 Answers
Using animations in prefabs 1 Answer
How do I animate a 2D sprite? 1 Answer
Expecting EOF found else?? 1 Answer
Attack While Running 1 Answer