注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

穷到掉渣的超级奶爸阿赵

阿赵的博客

 
 
 

日志

 
 

模仿MecAnim制作的动画状态机系统和编辑器  

2013-04-01 13:06:55|  分类: Unity教程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        MecAnim是unity4.0之后的一个新功能,必须使用新的组件Animator(包括avatar和Controller)来控制的。阿赵我使用旧版本的动画系统(animations),也写了一个一样的动画状态机系统。通过编辑器编辑了Controller的各个动画节点和转换的约束条件,然后使用和MecAnim一样的SetValue方法,就可以使用状态机控制角色的各种状态的动画。不过事先说明,我这个插件纯粹是对MecAnim的模仿和学习而做出来的东西,假如以后Unity的版本更新后支持正常方法脚本添加和控制Animation Controller的话,我这个东东就完全没用存在的必要了。而且我现在的这个插件,是没有做分层的动画融合功能的。
模仿MecAnim制作的动画状态机系统和编辑器 - 阿赵 - 有爪的小羔羊阿赵
这是编辑器的界面,可以新建或者读取之前的Controller
 
模仿MecAnim制作的动画状态机系统和编辑器 - 阿赵 - 有爪的小羔羊阿赵
由于没有官方的文件存储格式的支持,所以我把信息保存成xml。这样做的好处是方便加密、通用性强,而且容量很小,一个很复杂的Controller,保存之后也就2、3kb而已。这样做的坏处是,不能直接的把xml当初组件拖到物体身上,每次使用读取的时候,必须先把xml解析成我自己的类。从这个角度出发,其实保存成json或者文本文档,是一样的,所以也没必要问我为什么一定要保存成xml了,我只是顺手而已。
 
模仿MecAnim制作的动画状态机系统和编辑器 - 阿赵 - 有爪的小羔羊阿赵
点击添加动画片段的按钮,就可以把项目里面的动画片段拖动到Clips的列表里面,然后相应的动画的节点就出现了。
 
模仿MecAnim制作的动画状态机系统和编辑器 - 阿赵 - 有爪的小羔羊阿赵
和MecAnim一样,可以设置不同的转换条件(在MecAnim例子里面的idleToRun一类的参数)。我这里支持的变量类型比较少,暂时只支持布尔、浮点和整型。加上默认的ExitTime的时间过渡条件类型。
 
模仿MecAnim制作的动画状态机系统和编辑器 - 阿赵 - 有爪的小羔羊阿赵
在添加了参数之后,在约束条件里面就可以选择刚才添加的这些参数作为控制的条件了,对于布尔有true和false,对于浮点和整型,有大于小于等于,对于时间,有exit的时间百分比。
 
模仿MecAnim制作的动画状态机系统和编辑器 - 阿赵 - 有爪的小羔羊阿赵
这个是一套稍微完整的动画状态机,包括了普通站立、普通跑步、取武器、放武器、战斗时站立、战斗时跑步,然后有4个普通攻击动作,2个特殊攻击动作。通过了各种的连线和设定条件,最终会变成这样。
在保存完成之后,我们可以把xml文件通过脚本动态的指定给需要的角色,然后在角色初始化的时候,会查找相应的动画片段,添加到角色的身上,然后先播放默认动作,再根据每一个动画节点的转换条件,来做相应的动画转换。我们只需要通过set指定的值,就可以让整个动画系统跑起来。

        再次说明一次,如果各位想用状态机,可以直接的用官方的MecAnim。我做这个东西,只是为了让自己对于状态机的概念和用法更清晰,并撇开了官方的那个什么都需要预先指定,几乎离不开编辑器的工作模式而已。
 
  评论这张
 
阅读(2581)| 评论(11)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016