unity AnimationState和animationclip的区别

想知道unity AnimationStateanimationclip的区别就要先了解unity AnimationStateanimationclip,下面我们先学习一下unity AnimationStateanimationclip,它们的区别就一目了然啦。

AnimationClip
AnimationClipUnity3D中播放动画的最基本对象,通过FBX导入的各个动画对象其实就是一个AnimationClip。这个类已关键帧的形式记录了骨骼关节在各个时间节点上的位置、旋转信息,根据帧频率frameRate结合播放模式wrapMode通过插值计算即可播放出连续的骨骼动画。
AnimationState
每个AnimationState包含了一个AnimationClip,并记录这个动画片段的一些播放控制属性,实际上是一个AnimationClip的包装器

 其中比较重要的参数有layer,weight, enabled, speed, blendMode这几项。这些参数的具体含义将在自定义混合动画控制中详细解释,在简单的动画控制时并不需要对AnimationState进行直接操作。

所以说unity AnimationStateanimationclip的区别就是包含与被包含。

Unity中,你可以使用Animation的事件或者AnimationState的normalizedTime属性来判断动画是否播放完毕。具体实现步骤如下: 1. 使用Animation的事件功能:在Animation窗口中选择你的AnimationClip,在Inspector窗口中展开Events选项卡,可以看到一个叫做Animation Event的组件。你可以在该组件中添加一个事件,在事件中调用某个函数来判断动画是否播放完毕。 示例代码: ``` using UnityEngine; using System.Collections; public class Example : MonoBehaviour { private Animation anim; void Start() { anim = GetComponent<Animation>(); // 给AnimationClip添加一个事件 AnimationEvent evt = new AnimationEvent(); evt.time = anim.clip.length; // 事件触发的时间,即动画播放完毕的时间 evt.functionName = "OnAnimationFinish"; // 触发的函数名 anim.clip.AddEvent(evt); } void OnAnimationFinish() { // 动画播放完毕后执行的操作 Debug.Log("Animation Finished"); } } ``` 2. 使用AnimationState的normalizedTime属性:通过AnimationState的normalizedTime属性可以获取动画播放的进度,当normalizedTime的值大于等于1时,表示动画已经播放完毕。 示例代码: ``` using UnityEngine; using System.Collections; public class Example : MonoBehaviour { private Animation anim; void Start() { anim = GetComponent<Animation>(); } void Update() { // 获取当前动画播放的状态 AnimationState state = anim["Walk"]; // 判断动画是否已经播放完毕 if (state.normalizedTime >= 1.0f) { // 动画播放完毕后执行的操作 Debug.Log("Animation Finished"); } } } ``` 以上就是判断AnimationClip播放完毕的两种方法,你可以根据自己的需求来选择使用哪种方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值