Animator的小记

前阵子在做动画相关的内容,整理一下Animator。

1.动画切换

1.1状态之间的切换,在状态间连线(Make Transition),并且设置触发条件,代码里调用SetTrigger、SetBool等进行触发。

1.2Transition的属性

Has Exit Time:勾选表示需要播完动画才能退出

Exit Time:动画退出的时间,例如0.8表示播放80%的动画就可以转换到下一个状态。

Fixed Duration:勾选表示固定时间,不勾选表示百分比。

Transition Time:过渡时间

Transition Offset:目标状态开始的时间,0.2表示是20%开始播放。

Interruption Source和Ordered Interruption我也没用过。。。只是看过一篇关于这个的文章http://www.manew.com/thread-142391-1-1.html

Conditions:可以设置N个跳转的条件。

1.3动画融合的函数

CrossFade函数,CrossFade(string stateName, float normalizedTransitionDuration, int layer, float normalizedTimeOffset)

stateName:目标状态的名字

normalizedTransitionDuration:过渡的时间为百分比,和上面的Transition Time相似

layer:层级,-1和0都是BaseLayer

normalizedTimeOffset:目标动画开始的偏移量,和上面的Transition Offset相似

CrossFadeInFixedTime(int stateHashName, float fixedTransitionDuration, int layer, float fixedTimeOffset)函数,第二个和第四个参数表示具体时间。其他和CrossFade一样

当crossfade的参数和上面连线的Transition参数一样时,可以获得一样的过渡效果。

1.4play函数

play函数,直接播放动画,没有融合。

2.子状态机

可以把相关状态的做成一个状态集合,比如一个防御状态集合下面有普通防御、防御格挡、防御反击的子状态。可以使逻辑更清晰。

3.Blend Tree混合树

最适合做移动动画的混合树,把前后左右移动的动画混合,通过参数的具体数值表现不同的混合动画。

4.layer动画层级

baselayer可以用来处理基本的动作切换,层级更高的动画可以做附加的一些动画用于混合,比如表情。

新建层级

weight:层的权重

Mask:身体遮罩(下图表示只显示头部动画)

Blending:override表示覆盖,addtive表示叠加

sync:表示与某个层(source layer里选择)的状态机同步,但是可以替换其中的动画。可以用在受伤时或者其他类似的情况。

Timing:勾选就是按复制层播放,不勾选就是按source层播放

IK pass:使用IK(反向动力学)动画,根据骨骼节点推算其父节点的位置。

想到之前的游戏有硬直打断感觉与Animator息息相关,又能说好些东西,之后捋一捋发吧。。。

猜你喜欢

转载自www.cnblogs.com/pj2933/p/11397594.html