最新消息:

Unity 动画剪辑

编程 2472浏览

动画剪辑可以对动画进行切割播放。实际上,这就是将原始动画剪辑裁剪成一个新剪辑,播放新剪辑就实现了动画的切割播放。此外,动画剪辑还可以合并,但在播放合并剪辑动画时,中间的帧将被去掉。例如完整动画为 150 帧,默认动画为模型完成一次完整的操作。点击视图中的不同按钮,将播放该动画的不同动画剪辑,具体的代码如下所示。

using UnityEngine;
using System.Collections;

public class CSharp : MonoBehaviour {
 private GameObject obj = null; //模型对象

 void Start() {
 obj = GameObject.Find("man"); //得到模型动画
 }

 void OnGUI() {
 if(GUILayout.Button("播放完整动画")) {
 obj.animation.Play(); //这里播放默认动画,默认动画即完整的150帧动画
 }
 if(GUILayout.Button("切割动画0-50帧")) {
 PlayCuttingAnimation(obj,0,50); //切割动画,播放第0帧到第50帧
 }
 if(GUILayout.Button("合并动画0-50帧与100-150帧")) {
 PlayCombinedAnimation(obj,0,50,100,150); //合并动画,将第0帧到第50帧与第100帧到第150帧两组动画合并在一起播放
 }
 }

 public void PlayCuttingAnimation(GameObject manObject,int startFrame,int endFrame) {
 AnimationClip clip = manObject.animation.clip; //添加一个剪辑,设置起始帧与结束帧
 manObject.animation.AddClip(clip, "cutClip", startFrame, endFrame);
 manObject.animation.Play("cutClip");
 }

 public void PlayCombinedAnimation(GameObject manObject,int startFrame0,int EndFrame0,int startFrame1,int EndFrame1) {
 AnimationClip clip = manObject.animation.clip;
 //添加两个剪辑,设置起始帧与结束帧
 manObject.animation.AddClip(clip,"startClip",startFrame0,EndFrame0,false);
 manObject.animation.AddClip(clip,"endClip",startFrame1,EndFrame1,false);
 //以队列的形式播放这两个剪辑,保证第一个动画播放完毕后再播放第二个动画
 manObject.animation.PlayQueued("startClip", QueueMode.PlayNow);
 manObject.animation.PlayQueued("endClip", QueueMode.CompleteOthers);
 }
}

在上述代码中,我们首先使用 animation.AddClip() 方法添加一个动画剪辑,其中该方法的第一个参数表示剪辑的类型,第二个参数表示生成新剪辑的名称,第三个参数表示剪辑的开始帧数,第四个参数表示剪辑的结束帧数,第五个参数表示新剪辑动画是否循环播放,然后以新剪辑的名称作为参数传入,使用 animation.Play() 播放新的动画剪辑。如果要在一个动画中截取多个动画剪辑,并且要将它们连续播放,就需要使用一个队列播放动画,这时可以使用a nimation.PlayQueued() 方法,该方法的第一个参数表示播放的动画剪辑的名称,第二个参数表示动画队列的播放模式,其中 QueueMode.PlayNow 表示立即播放当前剪辑动画,QueueMode.CompleteOthers 表示等待其他剪辑动画播放完毕后再播放当前剪辑动画。

好了,Unity 动画剪辑 就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Unity 动画剪辑

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者