Unity中的Animation和Animator组件的使用——(播放、暂停、倒放、片段长度等)

在做项目过程中遇到好几个只有Animation组件,没有Animator组件的物体,因为之前在代码中都是用Animator控制的,第一次遇到这种有点懵,研究了一下两者的区别和使用,简单地总结了一下如何分别用代码控制动画。

(自用总结,部分图片出处有下标)

先看一下两个组件的区别

Animation:

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结束,倒放相反

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值