- Home /
2d animation help
hi guys,im kinda new to unity so i would really appriciate help on my probelm,my problem is that i want that when i start a new animation(from stand animation to run animation,or from stand to attack animation,etc...) so every animation is actually a diffrent texutre,and every texture is basiclly a spritesheet of the action,and when i need to switch it to a diffrent action's animation i just change the texture(and sometimes the number of frames)
so my animation code is that:
var uvAnimationTileX = 6; //Here you can place the number of columns of your sheet.
var uvAnimationTileY = 1; //Here you can place the number of rows of your sheet.
var framesPerSecond = 10.0;
var StandTex : Texture;
var Aset : boolean;
var uIndex;
var index : int;
var offset : Vector2;
var size : Vector2;
function Update () { if(!Input.GetKey("left") && !Input.GetKey("right") && !Input.GetKey("up") && !Input.GetKey("down") ) { uvAnimationTileX = 8; } else { uvAnimationTileX = 6; } // Calculate index index = Time.time framesPerSecond; // repeat when exhausting all frames index = index % (uvAnimationTileX uvAnimationTileY);
// Size of every tile
size = Vector2 (1.0 / uvAnimationTileX, 1.0 / uvAnimationTileY);
// split into horizontal and vertical index
var uIndex = index % uvAnimationTileX;
var vIndex = index / uvAnimationTileX;
// build offset
// v coordinate is the bottom of the image in opengl so we need to invert.
offset = Vector2 (uIndex * size.x, 1.0 - size.y - vIndex * size.y);
renderer.material.SetTextureOffset ("_MainTex", offset);
renderer.material.SetTextureScale ("_MainTex", size);
}
any ideas on how to fix my problem,,and make it to start from the begining of the animation when i start a new action,because now its not starting from the begining (which is not good :P)
thanks in advance ;)
Answer by flaviusxvii · Apr 07, 2011 at 04:12 PM
Instead of:
index = Time.time * framesPerSecond;
Do something like:
myTime += Time.deltaTime; //myTime is declared up above
index = myTime * framesPerSecond;
Then when you switch animations you can set myTime to zero, thus resetting it back to the first index.
uhh.. the animation is just not moving now..hes like freezed and not moving,why is that?(i did what you said :()
Print the value of myTime and make sure it gets progressively bigger over time.
Your answer
Follow this Question
Related Questions
2D Animation does not start 1 Answer
Use 2d Animation from unity or Anima2D? 1 Answer
Root motion lost in transitions 1 Answer
Animation plays in preview mode but not max screen? 1 Answer
Animation stops rotation 0 Answers