一、动画分层和遮罩的作用?
- 上下半身播放两个动画进行组合,比如上半身扔炸弹,下半身待机移动蹲下
- 快速制作正常状态和受伤状态的动作切换
- 动画混合,2D人物移动和受击闪白一起播放,不冲突
二、动画层参数
Weight 权重
当动画同时播放时,如果选择的是叠加状态,会根据权重决定叠加的比例
Mask 动画遮罩
该层动画全部都会受该遮罩的影响,可以在创建遮罩文件并赋值给这个参数。
遮罩文件可以设置不受影响的区域,动画播的时候不收影响的区域就没效果。这个和模型文件的Animation页签下的选项效果一样,不过只影响这一层。
Blending 混合方式
- Override:覆盖方式,播放该层动画时忽略其他层信息
- Additive:叠加方式,会和其它层动画叠加播放
Sync 是否同步其它层
主要用于直接从另一个层复制状态过来,在该层中进行修改。
适用于比如正常状态下有待机走路跑步等等动作,但是受伤状态下动作会改变,可以利用同步层方便我们进行编辑。
选择后会多一个Source Layer表示你要复制哪一层的状态,比如直接复制普通层1,修改上面的动画选项为蹲下的待机和走路,这样调大这一层的权重就会播放蹲下的待机和走路。
Timing 源层
当选中Sync同步其它层时,该参数激活
选中,会采用折中方案调整同步层上的动画时长(基于权重计算)
不选中,动画时长将使用原始层做为母版
IK Pass IK处理
反向动力学,详细介绍参考:【unity游戏开发入门到精通——动画篇】Animator反向动力学(IK)。
在该层中设置状态机
注意:结合遮罩使用时默认状态一般为Null状态,空动画不会关联任何动画剪辑
可以创建新的空状态作为一层的默认播放动画,这样就算该层有权重也不会有任何影响
三、动画层权重代码控制
Animator.SetLayerWeight方法 设置动画层权重
//Animator中的设置动画层权重GetLayerIndex方法
animator.SetLayerWeight(animator.GetLayerIndex("MyLayer2"), 1);
// 表示设置动画第二个图层的权重为1
ani.SetLayerWeight(1, 1);
四、实战
-
新建动画图层
-
新图层拖入一个说话动画
-
覆盖混合
如果不设置权重,新图层是不会有效果的,如果我设置权重为0.5,说话动画就会执行一半,类似前面的混合动画,属于是站不好好站,说话说一半
如果把权重设置为1,则新图层的动画完全会覆盖旧图层的动画,即使我们跑起来而也不会有跑起来的动画效果(默认新图层会覆盖旧图层
)。 -
图层遮罩
那如果要实现新图层只控制手的效果,要怎么做呢?这时候就需要用到图层的遮罩
效果了
-
新建遮罩
点开遮罩->人形
,绿色表示那个地方需要播放动画,点击人形的附近会实现人形位置的全选和全不选
-
我们现在把手臂加进去即可;意思是我们只让他的手臂做动画。只有手臂的权重是1,红色的不影响还是走旧的图层
-
新图层选择我们新的遮罩
-
运行跑起来的效果,边跑边摆手
结果:图层也可以像子状态机一样;比如人物拿枪有一套动画,拿刀有一套动画,就可以创建两个图层,把不同的动画放到不同的图层里,通过修改权重为1,实现不同武器的切换,动画也进行切换。
专栏推荐
地址 |
---|
【零基础入门unity游戏开发——C#篇】 |
【零基础入门unity游戏开发——unity通用篇】 |
【零基础入门unity游戏开发——unity3D篇】 |
【零基础入门unity游戏开发——unity2D篇】 |
【制作100个Unity游戏】 |
【推荐100个unity插件】 |
【实现100个unity特效】 |
【unity框架/工具集开发】 |
完结
好了,我是向宇
,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!