Animating Tiled texture - Extended

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(Usage)
(Example)
Line 20: Line 20:
 
[[Image:ACellSheet.jpg]]
 
[[Image:ACellSheet.jpg]]
  
Example function call: SetSpriteAnimation(4,4,1,0,4,12); should animate the 4 green cells at 12 cells per second.
+
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 - AnimatedTextureExtendedUV.js ==

Revision as of 01:00, 28 September 2007

Author: Joachim Ante - Extended by TomLong74

Contents

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

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>

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox