是否可以在运行时通过Unity3d中的脚本从剪辑更改关键帧值? (非旧版)
我想更改“ Body> arm”的值-rotation.z。普通剪辑处有3个关键帧,我想将唯一的第二个关键帧值更改为120f。
在下面的屏幕截图中,您可以看到我的“ RightArm”属性(第一个关键帧值为0)。结果必须是,当我举起鼠标(position.y可能也是120)时,手臂必须在动画剪辑中跟随他。
我希望我对问题的描述足够多,以便您能理解。每个Google解决方案和许多代码示例都不起作用...
谢谢!
我的Unity版本:2019.2.8
答案 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
注意:
不幸的是,不可能获得一条现有曲线(至少不平凡),因此您总是必须从头开始设置一条曲线。