动画剪辑可以对动画进行切割播放。实际上,这就是将原始动画剪辑裁剪成一个新剪辑,播放新剪辑就实现了动画的切割播放。此外,动画剪辑还可以合并,但在播放合并剪辑动画时,中间的帧将被去掉。例如完整动画为 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 动画剪辑
如果文章对你有帮助,欢迎点击上方按钮打赏作者