Unity - Animator Avatar Mask
Avatar Mask允许你丢弃的一些动画数据,只允许某些部位的动画起作用。很经典的例子是一边播Run、Walk、Idle动画时一边挥手。
创建Avatar Mask
像创建脚本、材质的步骤一样。Humanoid里点击设置遮罩的部位,红色为剔除。如果动画没有Humanoid,或者需要控制更多细节,需要使用下面的Transform。
创建好后在Animator的Layers中设置。注意,也可以在运行时创建和设置Avatar Mask,参考:
AnimationLayerMixerPlayable.SetLayerMaskFromAvatarMask
比如我们按上图设置BaseLayer中的AvatarMask,该层的任何动画只会改变两个胳膊的位置:
另一个Layer
所以要实现一边播Run、Walk、Idle动画时一边挥手,我们需要加另外一层Wave Layer,将挥手的动画移到这一层中。即Base Layer播放普通动画,Wave Layer播放遮罩后的挥手动画,然后两者按Layer的Weight混合。
效果: