参考
Unity动画系统详解1:在Unity中如何制作动画?
Unity 动画系统 Animation 和 Animator的小实例
Unity/Animation -- 创建Animation Clip
一、单独Animation来实现
空场景,找到一张Sprite图片,拖到面板中,右键添加Animation组件。如下:
2.动画常用类
在unity的老版本中我们只有Animation组件,在4.6版本以后则增添了Animator组件,如果只是控制一个动画的播放我们则用Animaton组件,如果是很多动画之间相互转换则使用Animator组件,它们两者的区别就是Animator有一个动画控制器(俗称动画状态机),使用它来进行动画切换是非常方便的,但缺点是占用内存比Animaton组件大。
要注意的是Animator Controller和Animation Clip都是文件(File),Animator则是GameObject上的一个组件(Component),不能混为一谈。
四、制作动画的面板功能
在录制模式下,当你对物体进行改动时(例如移动、旋转、缩放、修改属性等),Unity会自动在当前时间位置生成关键帧,记录修改的属性。
在预览模式下,修改物体不会自动创建/修改关键帧,如果需要创建/修改关键帧,你需要手动点击添加关键帧按钮。
1.录制模式
点击录制按钮后,就进入了录制状态。此时关键帧部分会变成红色。
在录制模式下,不管是在场景中移动、旋转、缩放物体,还是在Inspector面板中修改物体组件的属性(Unity动画支持的属性),Unity都会自动在动画Clip的当前时间上添加关键帧保存。
我们可以在Animation窗口中拖到自己想添加关键帧的地方,然后回到scene场景中修改物体的属性,反复重复这样的步骤,然后退出录制状态,就自动生成想要的动画了。
2.手动创建关键帧
如果没有在录制模式下,对物体的修改不会自动记录到动画Clip中。如果需要记录,需要手动添加关键帧进行记录。
如果在Inspector中修改了物体的属性,物体的属性会从浅蓝色背景变为浅红色,代表该属性已经被修改。这时候你可以右键点击对应的属性,在弹出菜单中点击Add Key即可添加关键帧,将该属性的数据保存到动画Clip中。如果你在当前帧修改了多个属性,可以点击菜单中的Key All Modified(将所有修改的属性记录关键帧)或Key All Animated(记录属性列表中所有属性的数值,即使与上一帧相同数值的属性也会被记录)来一次性将所有修改的属性保存。
你会发现直接拖拽多个关键帧时,后方的关键帧并不会跟随这些关键帧移动。如果你想让后方的关键帧也跟着移动,可以按住R键,同时拖拽这些关键帧。这种编辑方式叫做Ripple Edit(在音视频编辑软件中很常见)。缩放同理。
五、修改曲线
1.创建动画,Add Property后,添加曲线
点击属性视图中Position属性左侧的三角标识,可以展开显示Position.x, Position.y, Position.z的属性。现在选中绿色的那个,去控制y属性。
如果模拟上下跳动的效果,我们可以在动画所有采样点的中点处设置一个Key,表示弹跳的最高点。先在0:30处鼠标右键Add key添加一个关键点,然后鼠标左键按住并沿Y轴拖拽来改变该点的Position.y的值。
六、动画事件
Evnet事件帧会在游戏运行时,场景中的物体在Animator的控制下,播放该动画片段到对应位置时,触发该物体上的某个脚本中的一个可以作为AnimationEvent挂载的方法
给触发动画的物体挂个脚本后,在事件帧上就能选方法了
public class AniEvent : MonoBehaviour
public void Animation_EventLog(int n)
Debug.Log("On Animation Event!!!" + n);
On Animation Event!!!4
UnityEngine.Debug:Log(Object)
AniEvent:Animation_EventLog(Int32) (at Assets/Scripts/AniEvent.cs:9)
七、序列帧动画
unity动画之帧动画使用
1.四张图片,代表四帧的动画
4.点击 Window - Animation - Animation,打开动画编辑器
可以根据需要,调整Samples值。这样,帧动画就实现了。
5.注意SpriteRenderer 和Image的区别
可以参考Unity UGUI系列二 图片 SpriteRenderer和Image
通过观察,上面步骤做出的动画是拖到场景里,使用SpriteRenderer完成的。如果我们想在Canvas下,使用Image制作也是可以的。