unity animator动画融合时的上下半身速度分离控制


unity animator动画融合时的上下半身速度分离控制_第1张图片

游戏中要实现一边走一边攻击, 移动还分八方向的,所以使用了半身混合。
Animator 半身混合的处理,可以另外看资料。  
简单来说 就是分2层:0层 播放基础移动动作,比如“Run”, 1层设了Mask(配置了上半身节点),weight设1(会完全覆盖0层的上半身动作),播放"Attack"

就能满足要求了。


不过,策划又有需求,需要玩家移动快时, 脚走路的动画要变快, 但上半身攻击不能变快。

结果Animator 只有一个speed属性, 会影响所有当前动画。

找了一下资料,参考如下链接,有好几种方案,作者帮忙踩过坑了,我就选择最后一种方案。

http://blog.sina.com.cn/s/blog_13c4bf4b40102wup6.html


就是里用Animator 可以定义一些自定义参数(Parameters子页签), 控制动画的播放
unity animator动画融合时的上下半身速度分离控制_第2张图片
上图左侧,可以看到动画的播放速度除了可以固定一个值外,还可配置Multiplier 乘以一个自定义系数。

这样,我们就不用在程序里一个动画一个动画调速度了,直接整个animator 设一次参数就行。
animator.SetFloat("USpeed", value);     
然后把9个移动的动作都做了一下配置。

就基本满足要求了。



不过个人也遇到了一个坑:

Animator所在节点如果 禁用又被启用时(比如怪物远离隐藏,后面又显示), 参数就被重置了。(Animitor主控切换参数当然也会被重置)
所以我在该节点挂的脚本里OnEnable函数里 每次都设一下 animator.SetFloat("USpeed", value);



你可能感兴趣的:(Unity,Animator)