unity学习45:Animator 的动画层layer

目录

1 Animator 动画层layer

1.1 base layer 默认动画图层

1.2 每个图层layer里包含的内容

2 用layer进行动画的融合,类blend tree的效果

2.1 两个图层layer里包含的动作融合的效果

2.1.1 设置2个图层

2.1.2 因为权重的原因导致只播放base layer的,base layer默认权重=1

2.1.3 如果把 new layer的权重从0越调越大

2.1.4 测试效果

扫描二维码关注公众号,回复: 17551490 查看本文章

2.1.5 如果把 new layer的权重从0越调越大到1

2.2 总结:layer的优先级有2个(高优先级的遮盖低优先级的)

3 图层属性:权重

4 图层属性:blending 混合

5 图层属性:遮罩 mask

5.1 创建遮罩 Avatar mask

5.2 修改遮罩并挂到new layer上去

5.3 测试:让身体的不同部分,播放不同的动画


1 Animator 动画层layer

1.1 base layer 默认动画图层

  • base layer 默认动画图层
  • 可以新建图层

1.2 每个图层layer里包含的内容

  • 默认状态 state : entry   /  any state   /exit 
  • 其他状态 state

2 用layer进行动画的融合,类blend tree的效果

2.1 两个图层layer里包含的动作融合的效果

  • 这里动画的融合
  • 是融合2个layer内部的动作的效果。

2.1.1 设置2个图层

  • 除了默认的,再新建1个
  • 每个图层里只设置1个默认动作

2.1.2 因为权重的原因导致只播放base layer的,base layer默认权重=1

  • base layer默认权重=1
  • new layer默认权重=0  所以完全播放不了

2.1.3 如果把 new layer的权重从0越调越大

  • 如果把 new layer的权重从0越调越大
  • 那么,new layer的动作的成分就越开越大,可运行着unity边改边测试

2.1.4 测试效果

2.1.5 如果把 new layer的权重从0越调越大到1

  • 如果权重调整为1
  • 会覆盖,且滑步只播放高级的,权重低的动画放不出来
  • 就会发现 base layer的播放不出来了
  • 因为  W base layer = W new layer =1 ,权重相等了,但是new layer 在下方,优先级更高
  • 如果base layer是移动类的,移动角色就会发现 base layer播放不出来,角色滑步了

2.2 总结:layer的优先级有2个(高优先级的遮盖低优先级的)

  • layer优先级1:权重大小
  • layer优先级2:越在下面(越新建)的 layer 的优先级越高

3 图层属性:权重

见上面

4 图层属性:blending 混合

blending2个属性

  • override  覆盖
  • additive   增加,同时生效?

5 图层属性:遮罩 mask

  • 默认没有遮罩

5.1 创建遮罩 Avatar mask

  • 直接右键创建遮罩mask 
  • Avatar mask

5.2 修改遮罩并挂到new layer上去

5.3 测试:让身体的不同部分,播放不同的动画