Unity3D用c#脚本修改Animator controller的weight值 |
您所在的位置:网站首页 › 3DMax动画层修改 › Unity3D用c#脚本修改Animator controller的weight值 |
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 |