Skip to content

Instantly share code, notes, and snippets.

@to-osaki
Last active April 17, 2022 12:29
Show Gist options
  • Save to-osaki/96fd967838804e5a83e2b383575accd2 to your computer and use it in GitHub Desktop.
Save to-osaki/96fd967838804e5a83e2b383575accd2 to your computer and use it in GitHub Desktop.
create animation clip by script

transform

var pos = AnimationCurve.Linear(0f, 0f, 2f, 3f);
var rotate = AnimationCurve.Linear(0f, 0f, 2f, 45f);
var scale = AnimationCurve.Linear(0f, 0f, 2f, 2f);
var clip = new AnimationClip();
clip.SetCurve("", typeof(Transform), "m_LocalPosition.x", pos);
clip.SetCurve("", typeof(Transform), "localEulerAnglesRaw.y", rotate);
clip.SetCurve("", typeof(Transform), "m_LocalScale.z", scale);

component enable/disable

var enable = new AnimationCurve(
    new Keyframe(0f, 1f, float.PositiveInfinity, float.PositiveInfinity),
    new Keyframe(1f, 0f, float.PositiveInfinity, float.PositiveInfinity),
    new Keyframe(2f, 1f, float.PositiveInfinity, float.PositiveInfinity),
    new Keyframe(3f, 1f, float.PositiveInfinity, float.PositiveInfinity));
var clip = new AnimationClip();
clip.SetCurve("", typeof(MeshRenderer), "m_Enabled", enable);

image

blendshape

string shapeName = "blendshape_eye";
AnimationCurve curve = AnimationCurve.Constant(0f, 1f, value);
var clip = new AnimationClip();
clip.SetCurve("", typeof(SkinnedMeshRenderer), "blendShape." + shapeName, curve);

manipulate child object

var curve1 = AnimationCurve.EaseInOut(0f, 1f, 2f, 5f);
var curve2 = new AnimationCurve(
    new Keyframe(0f, 1f, float.PositiveInfinity, float.PositiveInfinity),
    new Keyframe(1f, 0f, float.PositiveInfinity, float.PositiveInfinity));

var clip = new AnimationClip();
clip.SetCurve("Cube", typeof(BoxCollider), "m_Center.y", curve1);
clip.SetCurve("Cube/Sphere", typeof(GameObject), "m_IsActive", curve2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment