Unity提供了Animation编辑器,它可以为我们编辑物理动画。举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互。如果这个秋千也用代码来写控制它来回摇动,会感觉小题大做。此时完全可以使用Animation编辑器来完成。
Legacy动画: 首先我们要在Assets面板创建一个动画 创建完成后(生成一个Animation) 单击打开 FPS(表示一秒多少帧) Loop Time(是否重复(一般不用重复)) 这里可以预览动画。
此时我们就可以添加游戏对象了,创建完成后,将生成的Animation动画拖入到对象里,然后进入动画编辑框(此时生成一个Animation动画和对象动画)。 因为系统默认隐藏了一些功能所以我们要修改动画的默认方式: 修改后的Animation动画,此时需要注意因为我们是用的是Legacy动画左移我们要勾选此项。 Wrap Mode(播放模式) 此时需要注意在游戏对象上已经多了一个组件,这是生成动画是系统默认生成的组件。 然而我们不需要这个组件,所以我们可以删除它,我们需要添加一个Animation组件。 Animation(默认动画) Size动画列表 AnimationType: Wrap Mode(播放模式) None : 不使用动画 Legacy:旧版动画 Generic:Mecanim动画系统,适用于四肢行走的3D模型或者未使用动作复制功能的公话制作 Humanoid:Mecanim动画系统,适用于像人一样的直立行走模型 alt+6 进入动画编辑框,我们就可对对象做动画处理了,在下图中我们可以添加要变化的组件信息, 在右下角有个Curves按钮 点击进入如下图,图上的三条线代表了游戏对象的世界位置(x,y,z)信息的变化趋势,在这里可以修改游戏对象在游戏里的变化。
有些复杂的动画我们需要提前做好,这是我们可能需要对其进行切割: 首先我们导入资源 单击进入下图的面板,我们就可以进行动画的切割了,在Clips中进行切割和命名 切割完之后我们在动画上 添加Animation组件,并进行编辑 此时我们就可以添加脚本了 animation.CrossFade(动画切换) using UnityEngine; using System.Collections; public class Jiansheng : MonoBehaviour {
public Animation m_animation; // Use this for initialization void Start () { m_animation = GetComponent<Animation>(); m_animation.Play(); } // Update is called once per frame void Update () { if (Input.GetKey(KeyCode.W)) { m_animation.CrossFade("Run"); } if (Input.GetKeyUp(KeyCode.W)) { m_animation.CrossFade("Wait"); } if (Input.GetKeyDown(KeyCode.Alpha1)&&m_animation.IsPlaying("Attack01")==false) { //队列 m_animation.PlayQueued("Attack01", QueueMode.PlayNow, PlayMode.StopAll); } if (Input.GetKeyUp(KeyCode.Alpha1)) { m_animation.PlayQueued("Wait", QueueMode.CompleteOthers, PlayMode.StopSameLayer); } }}