前言

游戏里角色的疲劳感、受伤程度是如何制作的?

当我们要为当前的角色动画添加某种特色而又不希望取代现有动画时可以考虑利用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);

专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐