Animation动画播放


Animation 播放动画流程如下:

1.播放默认动画

直接将动画拖入动画对象animation组件的animation变量中,然后加入如下代码既可以播放(此处采用toggle控制动画的播放)

public Animation ani;

    public void OnPlayClicked(bool isOn)
    {
        if(isOn)
        {
            ani.Play();
        }
    }

2.采用AddClip方法

此方法为给animation组件通过addclip方法添加动画片段,然后就可以依次播放

//addclip方法
    public Animation ani;
    public AnimationClip[] aniClip;

    public void OnPlayClicked(bool isOn)
    {
        if(isOn)
        {
            StartCoroutine(Play()) ;
        }
    }
    IEnumerator Play()
    {
        ani.AddClip(aniClip[0], "1");
        ani.Play("1");
        yield return new WaitForSeconds(aniClip[0].length+2f);
        ani["1"].time = aniClip[0].length;//动画反向播放
        ani["1"].speed=-1;
        ani.Play("1");
        yield return new WaitForSeconds(aniClip[0].length + 2f);
        ani.AddClip(aniClip[1], "2");
        ani.Play("2");
    }

3.采用animation组件的animations数组添加动画片段

在animation组件的animations数组中直接添加动画(此步骤相当于addclip方法),然后根据动画名称就可以播放了。

ani.Play(aniName);

4.直接用动画名字播放

if (isOn)
        {
            titleAni["TitleMove"].speed = 2;
            bottomAni["BottomMove"].speed = 2;
            titleAni.Play();
            bottomAni.Play();
        }
        else
        {
            titleAni["TitleMove"].speed = -2;
            bottomAni["BottomMove"].speed = -2;
            titleAni["TitleMove"].time = titleAni.clip.length;
            bottomAni["BottomMove"].time = bottomAni.clip.length;
            titleAni.Play();
            bottomAni.Play();
        }

5.动画复位

关于动画播放问题再次追加一点关于动画回到起始位置的问题,动画播放回到起始位置可用ani.Rewind();方法。采用rewind方法时必须是动画播放过程中使用,stop()后时无法回到起始位置的。调用rewind后动画虽然会回到原点,但是会继续重复播放,所以在此可以先取样,然后在停止播放。

ani.Play();
ani.Rewind();
ani.Sample();
ani.Stop();

使用上述方法可能会因为clip的现手顺序影响而导致无法复位。如下图所示,我需要播放的动画是Take01-Take04,如果没有Take001,且默认的播放动画animation为Take02,则在播放动画Take01过程时,动画无法直接复位,如果Take01设为默认动画,则除Take01以外,其他动画均无法复位。解决办法为找一个默认动画,只要初始位置为所需的状态即可,设为默认动画,同时,让它为Element0。
在这里插入图片描述
动画复位还可以采用animator,即设置一个只有几帧的初始状态动画,需要复位是调用开关复位,可以是从any state进入初始动画的开关,也可以是从所有其他动画跳转到初始状态动画的开关(均采用一个参数控制),但是此方法有个问题,即如果在复位过程中存在animator的enabled==false情况(或者animator所在游戏物体setActive(false)qingkuang),则复位时初始动画虽然播放,但是不会复位(也许是因为初始动画是静止的,没有位置形态的改变)。

动画事件:
外部导入的动画legacy类型下(animation)无法在编辑的,也无法添加添加动画事件,但是只要ctrl+D复制一下,复制出来的即可编辑,但是animation要重新新建赋值。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值