代码之家  ›  专栏  ›  技术社区  ›  Tom

Unity3D-是否可以通过脚本设置动画片段的属性?

  •  2
  • Tom  · 技术社区  · 7 年前

    我有一个立方体。当它繁殖时,它会从0的比例设置动画,到5的比例,使其具有增长的效果。

    我有大约100个立方体正在生成到我的场景中。我希望每个立方体的最大比例是不同的大小(有点不同),但由于附加到我的立方体预制的动画剪辑,立方体的最大大小将是5(见图)。

    有没有办法通过代码或其他方式将动画的缩放特性设置为随机的?我试过使用 Animator , AnimationClip Animation 但他们没有设置属性大小的方法或变量。

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  5
  •   Community CDub    4 年前

    是的,但不是。

    这里的“是”是指您可以拨打一系列电话来获取数据并进行修改, 但是 仅允许作为编辑器脚本进行修改:不能在运行时播放器环境中修改值。

    参见文档: https://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

    注意:SetCurve仅在运行时适用于传统动画剪辑。对于非传统AnimationClips,它是一个仅用于编辑器的功能。

    下面的脚本示例显示了如何使用动画片段为游戏对象位置设置动画。使用SetCurve()将动画曲线设置到AnimationClip上。此示例将x偏移从1.0向下移动到0.0。

    using UnityEngine;
    using System.Collections;
    
    [RequireComponent(typeof(Animation))]
    public class ExampleClass : MonoBehaviour {
        public Animation anim;
        void Start() {
            anim = GetComponent<Animation>();
            AnimationCurve curve = AnimationCurve.Linear(0.0F, 1.0F, 2.0F, 0.0F);
            AnimationClip clip = new AnimationClip();
            clip.legacy = true;
            clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
            anim.AddClip(clip, "test");
            anim.Play("test");
        }
    }