Unity-如何在运行时更改AnimationClip KeyFrame值

时间:2019-10-15 14:55:44

标签: unity3d

是否可以在运行时通过Unity3d中的脚本从剪辑更改关键帧值? (非旧版)

我想更改“ Body> arm”的值-rotation.z。普通剪辑处有3个关键帧,我想将唯一的第二个关键帧值更改为120f。

在下面的屏幕截图中,您可以看到我的“ RightArm”属性(第一个关键帧值为0)。结果必须是,当我举起鼠标(position.y可能也是120)时,手臂必须在动画剪辑中跟随他。

我希望我对问题的描述足够多,以便您能理解。每个Google解决方案和许多代码示例都不起作用...

谢谢!

我的Unity版本:2019.2.8

Screenshot

1 个答案:

答案 0 :(得分:1)

您可以使用AnimationClip.SetCurve(string relativePath, Type type, string propertyName, AnimationCurve curve)

其中

  

relativePath   
曲线适用于游戏对象的路径。 File fl = new File("d:/chipper/msg/msg.txt"); textToChipper = fl; chipper(); 的格式类似于路径名,例如relativePath。如果"root/spine/leftArm"为空,则表示附加了relativePath / GameObject组件的Animation

您的情况可能类似于Animator

  

类型   
动画组件的类类型。

以您的情况"Body/RightShoulder/RightArm"

  

属性名称   
要设置动画的属性的名称或路径。

请注意,对于Unity内置组件,属性名称有时与Inspector中显示的名称不同!始终参考API。

在您的情况下typeof(Transform)

  

曲线   
动画曲线。

(已修改)文档中的示例:

localRotation

另请参见KeyframeAnimationCurve


注意:

不幸的是,不可能获得一条现有曲线(至少不平凡),因此您总是必须从头开始设置一条曲线。