动画视图简介
在创建动画前,需要理解下面的术语:
- 动画片段:Unity素材会定义一个特定的动画。动画片段定义了简单的光亮动画或者那种七连击的复杂攻击动画。之后你会知道如何集合动画片段来生成更复杂的动画。
- 曲线:随着时间改变某个属性值能产生一个动画,Unity将这样的动画特性叫做曲线。Unity之所以使用此术语是因为你可以随着时间改变图形的属性值,而图形上的线就在叫做曲线,即使它们是直线,也适用。
- 键帧:与其设置动画每帧的值,你可以即时在某个点设置值,通过在这些点之间加入值来将Unity填入空隙中。沿曲线明确定义的点就是关键帧,因为它们都是动画里用来计算最终结果的重要的帧。
定义好这些术语后,再来讨论动画视图就简单多了。可以使用下面的窗口来创建特定游戏对象的动画片段。每个片段都包含一个或者多个曲线,每个曲线包含一个或者多个关键帧。
下面的图片强调了动画视图的不同部分,在生成教程中引用区域的名字后便做成列表,每个都有一个简明的描述。
1. 控制栏:此区域包含不同的控制,可以在处理动画片段时候使用。需要的时候再描述吧。
2. 曲线列表:当前动画片段会影响曲线列表,例如添加新属性曲线的列表时。
3. 时间线:一个动画曲线的视图,用来随时间显示它们的值。根据当前视图的模式不同显示的内容也会不同。在Dope Sheet模式下,会包含每个曲线的关键帧,然后随着时间水平布局。此功能跟之前传统动画使用类似,主要用来判断动画中的重要时刻。然而在曲线模式下,时间线会随着动画进行描绘属性的实际值,可视性的提供某个点时时的曲线值。
4. 可视模式按钮:这两个按钮可以用来切换Dope Sheet模式和曲线模式。此教程只使用了Dope Sheet模式,但是每个模式都是有用的。总体来说在Dope Sheet模式下创建关键帧,然后如果需要在关键帧之间加入值的话就切换到曲线模式。
如果上述描述不明确的话也不要担心。此教程中我们会逐步介绍动画视图不同组件的详细情况。
在项目浏览器中,点击zombie_0,然后shift+点击zombie_3,就会生成下面包含所有zombie的列表。
在动画视图中拖拽选择的精灵。如下所示,一个绿色加号图标会出现。
当你看见这个带 + 号的图标出现时,松开你的鼠标。你会看到一个命名为Create New Animation的对话框出现。这个对话框将允许命名你的动画片段,并且还可以为它指定一个保存路径。
在Save As 里面输入 ZombieWalk,并且选择Animations目录,点击保存。下面的图片将展示完成时的对话框。
注意:关键一点是对话框包含这样的内容:“为你的‘zombie’游戏对象创建一个新的动画”。
你只能为你场景中的游戏对象创建动画片段(Animation Clips).也就是说,你不能在工程目录(Project View)里面选择一个预制(Prefab),并且为它创建动画。但是你能够为一个实例化的Prefab对象创建动画,这个Prefab对象是你已经添加到Hierarchy上面的对象,Unity会将这些改变(为这样的Prefab实例化对象创建动画)应用到ProjectView上相应的Prefab
· 为Zombie添加一个新的Animator组件,Unity通过这样一个Animatior组件播放一个游戏对象上面的动画片段。你将会在这篇Unity 指南中的下一部分学到更多关于Animator的知识。
· 创建一个叫做 ZombieWalk的动画片段,并且打开 Animation 窗口来编辑它。就像你在下面的图片看到的一样,在这个视图的控制条上的Animation 视图的片段(drop-down)菜单,现在显示ZombieWalk是当前的动画剪辑片段
· 创建一个新的Animator Controller,将它保存在ZombieWalk文件夹中,命名为zombie,你能在zombie的Animator组件上的Controller字段位置看见这个控制器。
这个动画控制器决定了在给定的时刻那一个动画剪辑片段将会播放,关于这一知识点将会在指南的下一部分涉及到。
· 一些用于交互的颜色被呈现出红色。比如,下图中场景的控制条
更多其他红色组件详细信息将会在稍后提及。但是现在我们知道再Unity中,什么时候你会看到一个红色字段或者是UI组件。目前你正在记录一个动画剪辑片段。
在这个Animation 视图中,每次你只能为一个剪辑片段编辑。点击这个编辑片段的drop-down(红色按钮)按钮允许从你指定的游戏对象上选择一个关联的动画剪辑片段进行编辑,正如你在下图中所看到的一样,目前zombie只有一个名为 ZombieWalk的剪辑片段
在上图中,显示出打钩的ZombieWalk为目前选择的剪辑片段,在列表中,当你有多个剪辑片段时,你会发现这个小工具很有用的。上图同时也显示一个命名为Create New Clip的可选菜单项。它允许你创建一个与指定相同的游戏对象关联的动画剪辑片段。当你稍后编辑cat动画时,你将会用它。
下面这个截图显示了怎样拖动精灵到Animation view(动画视图),并且自动的添加一个名为Zombie:Sprite的曲线。
也就是说动画影响了zombie 的SpriteRenderer组件的sprite字段。有时,如果这个属性名字(就是指前面的Sprite field)在这个所附加的对象上的SpriteRenderer组件中没有显示出来,那么这个属性名字也将会包含这个组件的名字。比如:如果你想激活这个SpriteRenderer的Enabled(使能)状态,你将命名为 zombie:SpriteRenderer.enabled.
选择在Hierarchy面板上的zombie(或者选择在Animation view曲线列表单中的zombie:Sprite,这样会自动的选择Hierarchy中的zombie),这时看看Inspector面板上的SpriteRender组件,如下图所示,Sprtie字段是红色的,它不只是显示你正在记录这样一个动画剪辑片段,同时也明确的说明你正在记录的剪辑片段影响该字段
在动画视图的时间轴中,你可以看到在Unity精灵的曲线上添加了四个关键帧。如果你不能看到像下面图像一样清楚的帧,你可以试一下滚动你的鼠标或执行任何滚动操作您的输入设备支持来放大时间轴。
沿着时间轴顶部,你就可以看到由秒数,后面紧跟着冒号(:),和一个帧数的标签。
数值从零开始计算,所以0:02表示第一第二第三帧动画。我想要使用1:02作为一个例子,,但我害怕这个词第三帧第二第二可能会混淆。
正如你所看到的的,Uinty将四个精灵放在0:00,0:01,0:02和0:03。
在做其他事情前,试一下通过点击动画视图的控制条上的Play按钮来运行影片剪辑。
确保动画视图随着场景视图或者游戏视图可见,这样你开可以看到僵尸支撑的东西,或者更准确的说,想被触电一样观察它。
如果这是Unity好动画的想法,你要早点删除那些复活的脚本。幸运的是,这不是Unity的问题。这个问题只是ZombieWalk‘s 的配置。
再次点击动画视图的Play按钮停止预览。
注释: 当预览动画影片时,动画视图必须可见。如果你有打开选项卡的布局和你远离它切换到另一个选项卡,动画会立即停止。
你可能会想起本系列的第一部分,僵尸走动以10帧每秒一个周期。如果你看到动画视图控制条的Samples标签,你会看到它设置为60:
Samples 字段表示动画影片剪辑的帧频,它默认是每秒60帧。把这个值改为10,注意时间轴从0:00到0:09在1:00之前:
再次点击动画视图的Play按钮预览动画。你就可以看到僵尸的移动速度更加合理:
僵尸看起来已经好很多,但它自己也没有老。这是因为你定义动画包括第一个周期是四帧,所以但它从zombie_3 跳回 zombie_0.。你需要添加一些帧来使这个过渡自然。
在Project 浏览器中只选择zombie_2 ,把它拖到动画视图里。把光标放在僵尸里面:精灵排列在时间轴,只要放在右边的最后一帧上,设变鼠标,如下所示:
现在你可以看到关键帧数是在0:00到0:04。然而,有你的放大级别决定,很容易不小心把新的关键帧放在靠右比较远的位置。举个例子:
如果发现这种情况,只要简单的使用拖动左边的关键帧上方曲线上的小钻石,如下所以:
现在重复之前的过程添加zombie_1 到动画的最后,也就是放到0:05上。现在你的动画视图看起来就像这样:
按下动画视图的Play按钮测试动画。你的僵尸大摇大摆的走动。
动画音频剪辑完成,运行场景,确保僵尸有生机的移动.
你很成功是使用动画影片剪辑取代僵尸基于脚本动画。这看起来似乎有不少收获,但它依旧需要很多话来形容UI。如果你想打破实际上想做的,你可以简单的拓展一些精灵到动画视图,并且设置一些帧数,现在要踢自己在第一时间上写作。
注释: 如果在场景中还没有僵尸的游戏物体,你可以使用写简单的方法来创建和僵尸动画。
如果你在工程浏览视图中简单的选择一组精灵,然后把它们拖动到场景或者层级视图中,在Uinty中看起来很简单,像创建动画影片,动画师和动画控制器。然而,在场景中创建游戏物体,并连接它的一切。我猜想在Unity5.0中,你将只要拖拽精灵到场景中,Unity将会自动创建正确的基于艺术风格的游戏播放。你将会在这里第一次听到!
好吧,你已经知道很多在Unity中的动画,但仍然有很多要学。幸运的是,你已经有一个完美的猫试验坐在那里了。
原文链接:http://www.raywenderlich.com/66345/unity-2d-tutorial-animations
建议使用电驴(eMule)下载分享的资源。
说明:本教程来源互联网或网友分享或出版商宣传分享,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
|