一、layer和weight 的概念
动画层和layermask没有关系,它是一个只和动画有关的东西。这也是unity本身的一套东西,别的引擎上没有层的概念,正因为这个动画系统在unity里面很灵活,有人说已经有animator,没有人用旧版的动画系统了,其实不然,animator就像一套编好的动画系统,而animation都是用代码控制很灵活,所以很多公司根本没用animator.言归正传,层和权重是分不开的。
所有动画的播放其实是由权重控制的,而权重是怎么分配的呢?是按层分配的,举个例子:move动画 layer=0; attack动画 layer=1;这时候同时播放动画会出现什么?只会出现attack动画,因为权重全被第一层占了。但是如果这样呢?attack.layer=1,attack.weight=0.5; move.layer=0;move的权重让他默认,猜猜move的权重会是多少?是0.5,所以权重的分配是按层。一共是1,先分配最高层,剩下来的才轮到下面的再分配。所以总结来说,层是用来计算权重的,而权重是动画融合播放的根本因素。
animation里面有很多方法接口:我们举几个例子。第一个是play(),这个方法基本不用,只有特定的动画才用。而这个方法的原理就是权重分配,将撒谎能够一个动画的权重变为0,要播放的动画的权重变为1,然后将上一个动画的enable=false,要播放的动画enable=true;所以这方法其实是执行了这两个步骤。
第二个是crossfade()这个是渐变的,和play()唯一