Unity3D--Mecanim动画系统(三)-动画层Layers

2020-06-02 17:11:09 浏览数 (3)

之前已经写过两套的动画系统,今天主要分享关于动画层的使用及注意事项

这个就是层的概念

1.为什么动画中会有层的概念

其实在新版的动画状态机中,大量的技巧已经让一般的小白晕头转向了。而且就目前来说:使用状态机的单一层动画就已经可以满足日常开发需要。那么为什么出现层的概念呢? 先来几张图,对比一下,你就会发现哪里好

其实我们已经可以发现这种好处了,类似项目管理

第一:分离动画组 第二:规范动画制作 第三:提供更丰富的动画制作 Ps:其实跟我们的动画融合树差不多。。。

2.如何使用层动画?

01-添加动画层

添加层

注意:同一时刻我们只能执行一个层的动画片段。 02-添加参数

Paste_Image.png

注意:参数是执行动画的触发条件

03-给第二层的触发线绑定参数

Paste_Image.png

绑定的过程中,其实我们会发现New State就代指第一层动画组,而参数帮助我们过渡了层。当然动画是显示不出来的,但是动画片段确实执行了。

3.注意点?

在动画层之间切换的过程中,其实主要是通过参数的满足与否来进行层动画执行操作,但是有一个前提就是层的权重 如下图:

权重问题决定动画能不能显示出来

如果不设置权重,你会发现即便分好层,而且在状态机中发现动画执行了,但是界面的角色并没有显示出来。

前面的分享已经提到过使用代码控制动画的参数,这里如何通过代码设置权重呢?

代码语言:javascript复制
    [SerializeField]
    private Animator ani;
    void Start () {
        // 表示设置动画第二层的权重为1
        ani.SetLayerWeight(1, 1);
    }

1 人点赞