赞
踩
在做项目过程中遇到好几个只有Animation组件,没有Animator组件的物体,因为之前在代码中都是用Animator控制的,第一次遇到这种有点懵,研究了一下两者的区别和使用,简单地总结了一下如何分别用代码控制动画。
(自用总结,部分图片出处有下标)
先看一下两个组件的区别
动画控制器页面:
两者代码区分:
操作 | Animation | Animator |
播放 | Play(["clipName"]) 不传参数则播放默认动画 该Clip必须已经添加到Animations列表里 | Play("stateName"/stateNameHash) 参数为状态机中片段的状态名(与clipName不一定一致) |
暂停 | Animation ani = xxx; AnimationState state = ani["clipName"]; state.speed = 0; | Animator ator = xxxx; ator.speed = 0; |
继续播放 | state.speed = 1; | ator.speed = 1; |
倒放 | state.speed = -1;//速度设为负值 state.normalizedTime = 1;//设为1倒放开始点 | ator.speed = -1;//现在失效,需要通过设置参数 ator.SetFloat(speed,-1); |
获取片段播放时间 | ani.GetClip("clipName").length | AnimationClip [] animationClip = ator.runtimeAnimatorController.animationClips; foreach (var item in animationClip) { if (item.name.Equals("stateName")) { return item.length; } } |
判断动画是否播放结束 | if(state.normalizedTime>=1){} //normalizedTime值为0(开始)~1(结束),倒放相反 或ani.isPlaying判断 | AnimatorStateInfo info = ator.GetCurrentAnimatorStateInfo(0); if(info.normalizedTime>=1){} //normalizedTime值为0~1,0开始,1结束,倒放相反 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。