unity,纹理动画
unity中可以通过AnimationClip对纹理进行动画.
新建一个javascript脚本,然后附加到有纹理的gameobject上.
function Start(){var curve:AnimationCurve = AnimationCurve.Linear(0,0,4,360);var clip:AnimationClip = new AnimationClip();clip.SetCurve("",typeof(Material),"_MainTex.rotation",curve);/**Material有几个属性可以控制:_MainTex.rotation,_MainTex.scale,(x左右,y上下)_MainTex.offset,(x左右,y上下)_Color(rgba),(控制颜色的变化)*/animation.AddClip(clip,clip.name);animation.Play(clip.name);}1 楼 chwu 2012-02-02 using UnityEngine;
using System.Collections;
public class AnimatedTextureUVPro : MonoBehaviour {
public int uvAnimationTileX = 1;
public int uvAnimationTileY = 1;
public float framesPerSecond = 10.0f;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
// Calculate index
int index = (int)(Time.time * framesPerSecond);
// repeat when exhausting all frames
index = index % (uvAnimationTileX * uvAnimationTileY);
// Size of every tile
Vector2 size = new Vector2 ((float)1.0 / uvAnimationTileX, (float)1.0 / uvAnimationTileY);
// split into horizontal and vertical index
int uIndex = (int) index % uvAnimationTileX;
int vIndex = (int) index / uvAnimationTileX;
// build offset
// v coordinate is the bottom of the image in opengl so we need to invert.
Vector2 offset = new Vector2 ((float)uIndex * size.x,(float)1.0 - size.y - vIndex * size.y);
renderer.material.SetTextureOffset ("_MainTex", offset);
renderer.material.SetTextureScale ("_MainTex", size);
}
}