Animating Tiled texture - Extended

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(Example)
(Removing all content from page)
Line 1: Line 1:
Author: Joachim Ante - Extended by TomLong74
 
== Description ==
 
This script extends the capabilities of the original AnimatedTexureUV.js.
 
This allows many animation skins or animation states to be stored in the same texture.
 
They can be updated at run time to play the new skin or new animation state via SetSpriteAnimation();
 
  
== Usage ==
 
Attach this script to the object that has a material with the animation cell-sheet texture.
 
From your other script call this script's SetSpriteAnimation() function with the new parameters.
 
 
colCount, - the total number of columns in the animation cell-sheet
 
rowCount, - the total number of rows in the  animation cell-sheet
 
rowNumber,- the row where this animation will start
 
colNumber,- the column where this animation will start
 
totalCells, - the number of cells in this animation
 
fps - the number of cells (frames) per second the animation will play
 
 
 
== Example ==
 
[[Image:ACellSheet.jpg]]
 
 
Example function call: SetSpriteAnimation(4,4,1,0,4,12);
 
Should animate the 4 green cells starting with the left
 
most cell and at a speed of 12 cells per second.
 
 
== JavaScript - AnimatedTextureExtendedUV.js ==
 
<javascript>
 
//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);
 
}</javascript>
 

Revision as of 18:02, 19 October 2009

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox