Unity3D 将一张贴图转变成2D动画的公用脚本

using UnityEngine;
using System.Collections;

public class AnimationController : MonoBehaviour
{

    float myTime = 0;
    bool isPlay = false;
    /// <summary>
    /// 2D动画播放
    /// </summary>
    /// <param name="colSize">列数</param>
    /// <param name="rowSize">行数</param>
    /// <param name="colFrameStart">从第几列开始</param>
    /// <param name="rowFrameStart">从第几行开始</param>
    /// <param name="totalFrames">图片总共的帧数</param>
    /// <param name="framesPreSecond">一秒钟播放的帧数</param>
    /// <param name="totalTime">动画播放的时间  为0就一直播放</param>
     /// <returns></returns>
     public  bool AnimationSprite(int colSize, int rowSize, int colFrameStart, int rowFrameStart, int totalFrames, int framesPreSecond, int totalTime)
    {
        myTime += Time.deltaTime;
        if (totalTime != 0 && myTime > totalTime)
        {
            isPlay = false;
            myTime = 0;
            return isPlay;
        }
        int index = (int)(Time.time * framesPreSecond%totalFrames);
        Vector2 size = new Vector2(1.0f / colSize, 1.0f / rowSize);
        float u = index % colSize;
        float v = index / colSize;
        Vector2 offset = new Vector2((u+colFrameStart)*size.x,(1.0f-size.y)-(v+rowFrameStart)*size.y);
        renderer.material.mainTextureScale = size;
        renderer.material.mainTextureOffset = offset;
        return true;
    }
}

将上述的脚本拖拽至一个物体,然后新建一个脚本,代码如下:

 private bool isPlay = true;//是否播放
    void Update()
    {
        if (isPlay)
        {
            isPlay=animationHelper.AnimationSprite(3, 6, 0, 0, 18, 12, 3);
        }
    }

就可以实现动画的播放

转载于:https://www.cnblogs.com/cindyOne/archive/2013/05/05/3061925.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值