您的位置:首页 > 移动开发 > Unity3D

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

2017-08-30 15:23 225 查看


游戏中要实现一边走一边攻击, 移动还分八方向的,所以使用了半身混合。

Animator 半身混合的处理,可以另外看资料。  

简单来说 就是分2层:0层 播放基础移动动作,比如“Run”, 1层设了Mask(配置了上半身节点),weight设1(会完全覆盖0层的上半身动作),播放"Attack"

就能满足要求了。

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

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

找了一下资料,参考如下链接,有好几种方案,作者帮忙踩过坑了,我就选择最后一种方案。
http://blog.sina.com.cn/s/blog_13c4bf4b40102wup6.html
就是里用Animator 可以定义一些自定义参数(Parameters子页签), 控制动画的播放



上图左侧,可以看到动画的播放速度除了可以固定一个值外,还可配置Multiplier 乘以一个自定义系数。

这样,我们就不用在程序里一个动画一个动画调速度了,直接整个animator 设一次参数就行。

animator.SetFloat("USpeed", value);     

然后把9个移动的动作都做了一下配置。

就基本满足要求了。

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

Animator所在节点如果 禁用又被启用时(比如怪物远离隐藏,后面又显示), 参数就被重置了。(Animitor主控切换参数当然也会被重置)

所以我在该节点挂的脚本里OnEnable函数里 每次都设一下 animator.SetFloat("USpeed", value);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Unity 动画 半身混合