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 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作