【unity实战】Animator利用Animation Layers中的additive模式把多个动画混合在一起,制作游戏角色的疲劳感、受伤程度等等
前言
游戏里角色的疲劳感、受伤程度是如何制作的?
当我们要为当前的角色动画添加某种特色而又不希望取代现有动画时可以考虑利用Animation Layers中的additive模式把多个动画混合在一起,最常见的例子就是为角色添加“疲劳感“、受伤程度等等。

如果你对Animator,还不了解的同学,记得先去看看Animator的基础知识:【unity游戏开发——Animator动画】
一、avatar mask使用介绍
1、创建动画遮罩文件avatar mask

2、动画遮罩文件配置
遮罩文件可以设置不受影响的区域,动画播的时候不收影响的区域就没效果。这个和模型文件的Animation页签下的选项效果一样,不过只影响这一层。
2.1 humanoid人形动画
如果我们当前使用了humanoid动画,那么我们就配置上面这里的humanoid人形。

我们可以点击这些身体部位,绿色表示会播放动画,红色表示不会播放。

点击周围可以一次性全选或一次性反选。

2.2 非humanoid人形动画
如果我们当前播放的不是humanoid动画,则可以展开下面的transforms来选择哪些骨骼节点受影响,哪些骨骼节点不受影响。
我们可以在这里拖入这些骨骼所对应的avatar,然后点击这里获得它的骨骼结构

二、实战:为游戏角色增加受伤程度变化
1、前往mixamo下载受伤动画
如果你还不懂如何使用mixamo,可以参考:【游戏资源】获取免费开源的人物模型,为obj fbx人物模型绑定人形骨骼和人形动画,并导入到unity中使用——mixamo的使用介绍

2、配置动画遮罩文件
这里我们是人形动画,且希望受伤只影响人物的上半部分。(其实我们这里也可以直接影响全身,效果会更好)

3、新增受伤层级
配置层级参数,放置受伤的动画,通过控制这个权重值实现不同的疲劳程度

4、预览效果
我们可以拖动一下weight值看看效果,可以看到随着weight的增加,角色受伤的幅度越来越大了

5、通过脚本
实战中,我们肯定是通过代码去动态的设置动画层权重。这里就不演示效果了,参考代码如下:
//Animator中的设置动画层权重GetLayerIndex方法
animator.SetLayerWeight(animator.GetLayerIndex("Hurt"), 1);
// 表示设置动画第三个图层的权重为1
ani.SetLayerWeight(2, 1);
专栏推荐
完结
好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

更多推荐
所有评论(0)