- Home /
Sprite Animation - Oneshot
Hey all,
Thought I'd hit you with another question about sprite animation. I've got some sprite sheets for my character in a 2.5D game for which I've animated with success up to this point (using Javascript). I've got an idle, run & a jump animation for both facing left & right. They are all continuous loop animations, which becomes problematic for the jump animation. I'd like the jump to be a oneshot - meaning it plays through once and doesn't loop. Once I figure that out, I'd like to get it to stop on the last frame until told to do otherwise (player touches the ground & sprite sheet changes, etc.). So here's what I've got for the loop animation:
function aniSprite (columnSize, rowSize, startFrame, endFrame, framesPerSecond)
{
var index : int = Time.time * framesPerSecond; //Calculate the index based on FPS
//index = index % (endFrame - startFrame) + startFrame; //Repeats the animation, based on the total amount of frames and where the starting frame is
index = index % (endFrame - startFrame) + startFrame;
var size = Vector2 (1.0 / columnSize, 1.0 / rowSize); //Establishes X/Y coordinate values for texture scale
var u : int = index % columnSize; //Divide into horizontal index
var v : int = index / columnSize; //Divide into vertical index
var offset = Vector2 (u * size.x, (1.0 - size.y) - (v * size.y)); //Establish texture offset value
renderer.material.mainTextureOffset = offset; //Applies offset value to texture
renderer.material.mainTextureScale = size; //Applies scale value to texture
}
So like I said, I'd like to try and modify this so instead of looping, it's just a oneshot & stays on the last frame (which would be endFrame). If anyone would be able to point me in the right direction, that'd be much appreciated!
Thanks, -Clopay