Unity3D用c#脚本修改Animator controller的weight值

您所在的位置:网站首页 3DMax动画层修改 Unity3D用c#脚本修改Animator controller的weight值

Unity3D用c#脚本修改Animator controller的weight值

2023-08-11 07:33| 来源: 网络整理| 查看: 265

      unity3d可以通过拖拉拽的方式创建animator controller,也可以通过c# 脚本创建(显然和拖拉拽调用的底层是一致的)。本文介绍如何通过脚本修改Animator controller的layer中的weight值

原理分析:

      用脚本创建animator controller将在另一篇文章中描述。我们知道animator controller可以是multi - layer的结构,用于更加精细的控制object的运动(例如在本项目中,是将形象的面部表情和身体分成了两层)。在非default层中存在可调节的weight参数,用于控制该层的动作叠加(这里统称,其实是分为addictive和override两种模式)在之前层次上的比重。 在这里插入图片描述

以下是踩坑部分:       在最初的代码中,我们采用如下的方式添加新层和设置weight:

controller.AddLayer("faceController"); controller.layers[1].defaultWeight = 1.0f;

      但是生成的animator controller中并没有生效,weight值始终为0,需要手动调节。查询了一番后,给出以下方案:

解决方案:

      在初始化layer的时候定义好名字和defaultWeight等参数。

var layer = new UnityEditor.Animations.AnimatorControllerLayer { name = "faceController", defaultWeight = 1f, stateMachine = new UnityEditor.Animations.AnimatorStateMachine() };

      再将改层添加到controller中

controller.AddLayer(layer);

      此时生成的animator controller 的weight已被修改为1f。

参考 https://forum.unity.com/threads/animator-controller-layer-and-default-weight.527167/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3