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

Unity,`Playable Director` 是一个组件,用于控制 `Timeline` 的播放。`Timeline` 是Unity动画系统,允许用户创建复杂的动画序列,包括声音、动画剪辑和其他类型的播放事件。`Playable Director` 可以用来控制这些 `Timeline` 资产的播放行为。以下是使用 `Playable Director` 控制 `Timeline` 播放暂停倒放的基本方法: 1. **播放 (Play)**: 要播放 `Timeline`,首先需要通过 `Resources` 加载或通过脚本获取到 `Timeline` 资产的引用,然后创建一个 `PlayableDirector` 实例并将其绑定到该资产。之后,调用 `Director.Play()` 方法即可开始播放 `Timeline`。 ```csharp // 假设你已经有了一个Timeline资源实例 timelineAsset PlayableDirector director = gameObject.AddComponent<PlayableDirector>(); director.SetGenericBinding(director.playableAsset, targetObject); // targetObject是Timeline绑定的任意对象 director.RebuildGraph(); // 重建图以应用绑定 director.Play(); // 开始播放 ``` 2. **暂停 (Pause)**: `PlayableDirector` 并没有直接的暂停方法,但可以通过控制时间的流逝来实现暂停效果。你可以将 `director.time` 设置为当前时间,并将播放速度 `director.playSpeed` 设置为零来实现暂停。 ```csharp director.playSpeed = 0f; // 暂停播放 ``` 3. **倒放 (Reverse)**: 要实现倒放,可以将 `director.playSpeed` 设置为负值。这会使 `Timeline` 从当前时间开始倒着播放。 ```csharp director.playSpeed = -1f; // 开始倒放 ``` 通过以上方法,你可以在运行时控制 `Timeline` 的播放暂停倒放行为。不过,请注意,具体实现可能还需要根据你的游戏逻辑来调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值