Kevin_meta 2022-11-14 01:17 采纳率: 12.5%
浏览 21
已结题

Unity动画状态机的层与遮罩

两个动画层,base和mask,如何实现在移动状态时使用遮罩动画,待机状态时使用同一个(没有遮罩)动画。
我的设想是在2个层中都加入这个动画,然后在代码中加入移动和非移动时SetLayerWeight(),
但是失败了,它始终只能播放base层的动画.

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-02-02 08:40
    关注

    在Unity中实现动画层的遮罩可以通过设置动画层的权重来实现。

    在两个动画层中分别添加你的动画,然后在代码中使用Animator.SetLayerWeight(layerIndex, weight)方法来设置动画层的权重,从而控制动画层的混合。在移动状态时,设置遮罩动画层的权重为1,设置base动画层的权重为0,在待机状态时,则相反。

    例如:

    Animator animator;
    int baseLayer = 0;
    int maskLayer = 1;
    
    void Update() {
        if (isMoving) {
            animator.SetLayerWeight(baseLayer, 0);
            animator.SetLayerWeight(maskLayer, 1);
        } else {
            animator.SetLayerWeight(baseLayer, 1);
            animator.SetLayerWeight(maskLayer, 0);
        }
    }
    
    

    请确保在Animator组件中的对应动画层的名称正确设置,并且每个动画层都设置为独立播放,而不是共享同一个状态机。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 11月14日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度