转换
一个状态机如何不能改变状态那就没多大用处。现在我们会创建动画器控制器来将猫从复活动画平滑的转换到CatWiggle动画。
在动画器窗口,右击CatSpawn并选择进行转换。现在将鼠标移到动画器视图中,在它中间还通过一个箭头连接着CatSpawn状态。点击CatWiggle来将这两个状态用一个转换连接起来,如下所示:
运行场景,会看到猫弹出并且摇晃。很简单吧!
创建起来的确很快,对于结果还都还感到不错。然而,有时候我们需要改变一个状态转换。例如,此例中,实际上多少还是有点奇怪与不合任意的东西,因此学习编辑转换是必须的。
编辑转换
定义好一个转换之后,最简单的编辑方式就是直接在动画器视图的转换线上点击,如下图所示:
下图在查看器中显示转换的属性:
注意:可以可以在不同状态或者相同的两个状态之间定义任意多的转换。因为每个转换都可以赋予不同的条件,之后会学到的。
存在多个转换的时候,在动画器视图中选择它们可不是简单的事情啊。相反,在CatSpawn中。可以通过选择启动转换的动画器视图中的状态来查看特定转换的属性。在查看器中,点击转换列表中合适的行来展开转换的详细内容,如下图所示:
在查看器中,Unity提供一个显示如何在两个动画片段直接移动的视图。稀土强调了转化编辑器的重要元素:
- 起始和结束标识:这些图标确定了转换的开始和结束。就像>/和/<一样。
- 蓝色高亮区域清楚的显示了转换期间包含的片段。
- 在查看器下班的预览区域中,条显示了你当前预览的转换。
- 条框里显示了转换所涉及的片段。如果其中一个片段循环,它会在必须的时候在转换期间多次出现。蓝色高亮区域显示了哪个部分以及两个片段的哪个扩展部分将影响最后动画所处的位置。
- 我也不清楚这到底会显示什么。看起来像是一个现实片段影响结果曲线值的图片,但是我还是不确定。无论如何,我已没有落下什么了。
在前面的图片里,Unity声明它会在Catspawn播放的时候尽快启动两个片段之间的转换。在CatSpawn动画播放期间,Unity主机混合每个片段对最终结果动画的影响,从Catspawn的100%和Catwiggle的0%出开始,移到Catwiggle的100%处和Catspawn的0%处。
不幸的是,看起来Unity实际上会在Catspawn播放的整个时间段里触发转换,之后才开始第二部分Catspawn的运行。可以在逐帧转换中清楚的查看。
看起来在第一个片段的0%处开始转换会出现问题。我也不清楚是否是Unity默认行为或者是一个bug,但是还是值得一试转换编辑器的。
选择转换后,在查看器中查看条件列表,如图所示:
列表包含触发转换的条件。默认情况下,只有Exit Time是可访问的条件,它会在第一个动画播放一定百分比之后看做是true。
注意:在此教程中我们不会做的,但是你可以使用条件列表下面的+按钮来添加更多的条件。当多个条件显示的时候,Unity会用布尔与操作来评估它们。那就是:转换只有所有条件都匹配的时候才启动。
Exit Time的当前值是0.00,表示设置在片段的起始位置。我们可以直接在Exit Time旁边的区域里调整此值,也可以像之前描述的移动开始标识符(>/)来调整,但是使用域直接赋值还是要准确的多。
如下图所示将Exit Time的值设置为0.01.Exit Time的值是基于0到一个刻度的,因此0.01表示在Catspawn播放1%后运行转换。
注意:可以给Exit Time赋值一个比1.0大的值,Unity还是可以正确的处理它。有时候还是需要这样做的,例如,你想在一个循环动画的多个周期内缓慢的转换到一个新的片段,还是需要这样做的。
重新运行场景,猫就会在视图中运动,圆滑的转换到它的扭动动画。
慢速查看转换,来更清楚的查看其中的不同。
鉴于猫的运动,僵尸肯定会注意到它的。当然在现实生活中要引起僵尸的注意,通常会导致僵尸聚集,在游戏里则不会。当僵尸接触猫后,猫会变成僵尸猫的。为了显示它们还没死,需要将它们变成绿色。
原文链接:Unity 4.3 2D Tutorial: Animation Controllers
建议使用电驴(eMule)下载分享的资源。
说明:本教程来源互联网或网友分享或出版商宣传分享,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
|