unity3d序列帧动画两种方法

方法1

把序列帧切割成一张张小的sprite,然后在代码中定时修改sprite Renderer,或者创建一个动画,插入关键帧来替换image
这种方法适合用着序列帧不多的情况,因为如果太大会导致资源包里出现好多的下图资源(当然不是真的小资源)

方法2

创建一个材质Material,Shader选择Unlit/Transparent,然后图形选择序列图

Tiling代表了序列小图的大小,图的总大小是1×1,如果图里总共有16×10张序列图,Tiling x为1/16=0.0625 ; Tiling y为1/10=0.1

Offset代表了当前获取的区域的坐标,(0,0)为左下角,如下需要选择左上角的图需要填入的坐标为(0, 9*0.1) = (0, 0.9)

然后在创建一个对象,对象里使用这个材质

接下来就是用代码动态修改offset,实现动画效果

private float m_NormalFPS = 15;
private float m_NormalTicket = 0;
private int m_NormalCurIndex = 0;

void Update()
{
        m_NormalTicket += Time.deltaTime;
        if (m_NormalTicket > 1 / m_NormalFPS)
        {
                Vector2 offset = new Vector2((float)1 / 16 * m_NormalCurIndex, (float)1 / 16 * (int)m_AnimId);
                this.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex", offset);


                m_NormalTicket %= (1 / m_NormalFPS);
                m_NormalCurIndex++;
                if (m_NormalCurIndex >= 15)
                {
                        m_AnimId = ANIM.ACTION15;
                        m_NormalCurIndex = 0;
                }

        }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值