【unity实战】Unity动画层级(Animation Layer)的Sync同步和Timing定时参数使用介绍,同步动画层制作角色的受伤状态

前言

如何制作角色的受伤状态?
在这里插入图片描述

玩家角色在游戏过程中总是会受到各种各样的伤害,那么很多游戏就会用角色外观来直接表达玩家当前所受到的伤害程度,就是用一整套不同的受伤动画代替原有的动画。

如果对Animator的知识还不了解,可以先去查看:【unity游戏开发——Animator动画】

方案一:复制粘贴原有层级的状态机

在一个新的layer里复制一整套原有层级的状态机,就是一个非常好的解决方案。

1、实现

比如我们现在就新建一个层级取名叫injured,用来表现角色受伤后的所有动画状态,然后在原来的层级这里全选所有的状态,然后按control+c复制回到injury这一层,按control+v粘贴,如果默认初始状态有变化的话,我们就重新选择一下。这样我们就得到了一个和原来层级一模一样的动画层级。
在这里插入图片描述

2、问题

但是这样做有一个问题,那就是随着开发的进行,原本的层级可能会有变化。

那么此时就需要修改对应的injured layer中内容,如果变化过于频繁的话,则极有可能给开发者带来混乱。

方法二:勾选Sync同步动画层

unity为我们在这里提供了一个同步功能。

1、简单实现同步

我们只需要在injured这一层,勾选同步,然后配置需要和哪个层级同步就可以了。
在这里插入图片描述
那么在接下来的开发过程中,无论被指定的这一层级结构如何改变,injured layer都始终会与它保持一致。在这里插入图片描述
这就是Unity动画层级(Animation Layer)的SyncTiming介绍。

2、同步blend tree的问题

注意,层级的同步仅仅是同步动画状态和动画状态间的转换关系,并不会同步blend tree的内容。如果原动画层有blend tree的话,可以看到在injured layer这里的这个locomotion状态会是空的。
在这里插入图片描述
我们可以右键新建里面的blend tree。
在这里插入图片描述
然后双击进去,把我们下载好的受伤待机、受伤行走、和受伤奔跑动画片段放进去,重新配置一下参数即可。
在这里插入图片描述

3、动画状态的播放时长

问题:比如受伤行走动画比原来行走动画可能播放时间短,按理说受伤行走动画应该是无法完美同步覆盖行走动画的才对,那么unity是如何解决这个问题的呢?

在默认情况下,sync layer中的动画状态的时长会被缩放至它所需要同步的层级中对应动画状态的时长,也就是说同步的受伤行走动画会被拉长与行走动画时间一样。

如果我们想反过来同步动画播放时长要怎么做呢?

一旦勾选了timing动画状态的播放时长就由他和被他同步的层级共同决定了。
在这里插入图片描述
那么到底哪个层级的决定权更大一些呢?其实主要是看这里的权重,当权重为1时,全都听当前这一层的,当权重为零时,全都听被同步的这一层的。

4、下层状态覆盖了上层状态

比如我们在受伤层的前面配置了新的一层Arms,主要是覆盖角色的手臂动画,实现举枪的效果。
在这里插入图片描述

那么会出现新的问题,会发现当我们的角色在受伤的状态下拿不起枪来了。

那是因为在动画层级中,位于下面的层级拥有更高的优先级。所以injured这一层拥有最高的播放优先级,它会代替其他的所有动画。如果权重为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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向宇it

创作不易,感谢你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值