Unity4.3 2D教程:动画控制器(6)
子状态机
除了动画片段外,动画器控制器里的状态也可以是子状态机。子状态机主要是通过将状态机的分支隐藏在一个单独状态节点里来帮助管理复杂的状态机。
例如,一系列关于进攻中瞄准和开火动画片段。与其将它们在动画器控制器中都可见,你可以将一些动画片段打包到一个子状态机中。下图展示了一个关于僵尸的假设动画器控制器,它可以从走动转换为开火状态。
下图展示一些简单的关于定义攻击的状态。
可以根据之前管理状态一样处理子状态机的转换,例外的是需在上拉菜单中选择一个特定的状态来连接。
为了详细查看子状态机的状况,可以阅读Unity的手册。
混合树
可以在动画器控制器中添加特别的状态-混合树。它们实际是混合多个动画来创建新的动画。例如你有一个走路和跑步动画,你可以使用一个混合树根据不同的速度来创建一个新的动画。
混合树很复杂,因此此处不做详细研究。你可以查看Unity的二维角色控制器的相关教程自己开始学习,里面有使用混合树为基于当前速度的角色选择合适精灵的二维角色。
可以在Unity的手册中查看更多关于混合树的资料。
图层
在动画器视图的左上角是一个叫图层的区域,如下所示:
你可以使用图层来定义三维角色上一些复杂的动画。例如,可以有一个图层来控制三维角色脚行走的动画而另一个图层用来控制角色的射击动画,以及如何混合这些动画的规则。
我不知道你是否在二维角色中使用图层,但是如何你想学习更多关于此的只是,可以查看这里的文档,如果你知道如何在二维游戏中使用,请留言,谢谢!http://docs.unity3d.com/Documentation/Manual/AnimationLayers.html
奖励:脚本
下一系列将主要是关于脚本的东西,其中需要学习的就是如何利用脚本访问定义在动画器视图中的参数。
我相信很多读者不想等到下周在看到教程的发布。我在此处不会讲解太多,如果你不想等待,下面是一些来自InConga的脚本代码:
1
2
3
4
5
6
|
Animator anim = GetComponent<Animator>();
anim.SetBool( "InConga" , true );
bool isInConga = anim.GetBool( "InConga" );
|
最好可以在一个类中缓存动画器组件,而不是每次需要的时候都获取。同时如果速度上有问题,可以使用Animator.StringToHash来用InConga字符串生成int,之后再这些函数中使用int代替string。
之后呢?
此教程涵盖了你想知道的关于Unity中制作二维动画的所有,可以在此找到完整的项目:http://docs.unity3d.com/Documentation/Manual/AnimationLayers.html
之后的本系列最后一部分将集中讲解脚本,会教你如何使用Unity的新的二维物理引擎来实现碰撞检测。在第四部分的最后,将会有猫在直线上跳舞,屏幕上也会显示输赢的相关状态。同时也需要添加一些音乐和音效来增加喜感。
可以查看下列资源获取更多构建Unity中动画的资料:
查看Unity的动画教程视频:http://unity3d.com/learn/tutorials/modules/beginner/animation
Unity的二维角色控制器练习节选。除了上面讲到的混合树职位,此部分还包括创建二维角色控制器。http://unity3d.com/learn/tutorials/modules/beginner/2d/2d-controllers
Unity手册的动画部分 http://docs.unity3d.com/Documentation/Manual/MecanimAnimationSystem.html
Unity关于不同动画组件的参考。 http://docs.unity3d.com/Documentation/Components/comp-AnimationGroup.html
如果此教程对你有帮助,请留言哦。
原文链接:Unity 4.3 2D Tutorial: Animation Controllers
建议使用电驴(eMule)下载分享的资源。
说明:本教程来源互联网或网友分享或出版商宣传分享,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
|