前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity动画☀️10. 扛起木头动画的播放和AvatarMask的作用

Unity动画☀️10. 扛起木头动画的播放和AvatarMask的作用

作者头像
星河造梦坊官方
发布2024-08-14 16:13:57
590
发布2024-08-14 16:13:57
举报
文章被收录于专栏:星河造梦坊专栏
1、设置扛起木头的动画Animation Clips

2、给Player新建Hold Log动画层,添加进抗木头Animation Clips,并将动画层权重Weight设置为1

两层不同的动画层都为动画控制器Animator Controller服务,权重为1意味着它对动画控制器产生100%影响,Base Layer权重 也为1。

在两个动画层权重都为1(第一个的权重值不支持修改),第二个Hold Log—Blending为Additive时,两个动画层都对动画产生完全影响,即各自动画层的效果完全展现,且两个动画层动画效果能同时运行。例:若动画层1、2都控制同一部位,权重值可影响动画实际效果受谁影响大;若动画层1、2分别控制不同部位,权重都为1可完美运行

第二个Hold Log—Blending为Override(覆写)时,若动画层2权重为1,则完全运行动画层2效果(层1被覆盖),若不为1,则 动画为层1的x%和层2(1-x)%的结合

此时我们想运行层2的手臂托举动画,但不想层2控制的其他部位的动画覆写影响到层1(层1用来运动跑步等,权重为1,覆写时 运行效果是完全运行层2动画,层1的跑步动画不再有作用),解决思路是:Avatar Mask,动画遮罩

Avatar Mask

作用:遮蔽部分骨骼,使这部分骨骼不对其他动画层造成影响

3、在AnimatorControllers文件夹下新建Masks文件夹,新建Avatar Mask,设置Humanoid,红色表示遮罩部分,不产生影响,并赋值给动画层的Mask选项框

4、此时动画运行时直接运行抗木头动作,我们需判断是否捡起木头,再执行HoldLog动画

HoldLog动画层新建空状态,并设置为默认状态,添加空状态到HoldLog动画转换条件,添加Bool参数IsHoldLog,通过它来判断是否执行HoldLog动画

PlayerC#补充:

代码语言:javascript
复制
private int isHoldLogID = Animator.StringToHash("IsHoldLog");
代码语言:javascript
复制
private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Log")
        {
            Destroy(other.gameObject);
            unityLog.SetActive(true);
            anim.SetBool(isHoldLogID, true);
        }
    }

动画展示:

大家还有什么问题,欢迎在下方留言!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档