Unity中的Avatar Mask

一:前言

Avatar Mask可以实现播放动画时让身体的某些部位不起作用(即不播放动画)
Unity可以通过Avatar Mask创建一个身体遮罩来控制身体的某一部分是否受动画的影响,称为动画混合


二:使用场景

例如人物有两个动画,走路和挥手,一般走路动画包括上半身动作和下半身动作,使用Avatar Mask可以实现下半身播放走路动画的同时上半身播放只播放挥手动画而不播放走路动画


三:实现步骤——上半身播放挥手动画的同时下半身播放走路动画

——创建Avatar Mask
Project—Create—Avatar Mask



——设置Avatar Mask
Mask可以控制的部位包括:头部,左臂,右臂,左手,右手,左腿,右腿和跟关节以及手和脚切换IK状态
单击某一部分来开启或关闭动画的控制,红色则表示不播放当前层此部位的动作,绿色则表示播放当前层此部位的动作
Unity中的Avatar Mask_经验分享



——设置Mask参数
创建新的层单独控制挥手的上半身动作,将权重设置为1,遮罩选择为刚创建的Avatar Mask,Blending选择Override
Unity中的Avatar Mask_经验分享_02
注意Blending一般情况下选择Override覆盖模式,Additive叠加模式仅适用于每个层控制单独部位的动画


——设置两个层的动画机参数,Base Layer的状态切换参数为IsWalk,Body_Up Layer的状态切换参数为IsWave
Unity中的Avatar Mask_经验分享_03
Unity中的Avatar Mask_经验分享_04



——编写代码

登录后复制


using UnityEngine;

public class AvatarMaskTest : MonoBehaviour
{
    private Animator ani;

    private void Awake()
    {
        ani = GetComponent<Animator>();
    }

    private void Update()
    {
        //播放走路动画
        float v = Input.GetAxisRaw("Vertical");
        if (v > 0)
        {
            ani.SetBool("IsWalk", true);
        }
        else
        {
            ani.SetBool("IsWalk", false);
        }

        //播放挥手动画
        if (Input.GetKey(KeyCode.A))
        {
            ani.SetBool("IsWave", true);
        }
        else if (Input.GetKeyUp(KeyCode.A))
        {
            ani.SetBool("IsWave", false);
        }
    }
}




——最终实现上半身播放挥手动画的同时下半身播放走路动画
Unity中的Avatar Mask_经验分享_05



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空