[ Web Proxy ]
URL:
Viewing: https://docs.unity3d.com/ScriptReference/Keyframe.html [Back]  [Original]

Unity - Scripting API: Keyframe
Version: Unity 6.5 (6000.5)
    • Supported
    • Legacy
    LanguageEnglish
    • C#

    Keyframe

    struct in UnityEngine

    Suggest a change

    Success!

    Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

    Close

    Submission failed

    For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

    Close
    Your name Your email Suggestion* Submit suggestion

    Cancel

    Description

    A keyframe that can be injected into an AnimationCurve.

    Keyframes are used to control how the value of an AnimationCurve changes over time. Each Keyframe is determined by its position in the AnimationCurve through the Keyframe.time (horizontal axis) and Keyframe.value (vertical axis) properties. You can control how interpolation is handled between different Keyframes and the AnimationCurve slopes through the Keyframe.inTangent, Keyframe.outTangent, Keyframe.weightedMode, Keyframe.inWeight and Keyframe.outWeight properties. Note that unlike what the Keyframe.time property name might imply, it is not actually tied to time and can simply be thought of as a position on the horizontal axis of a two-dimensional space.

    Hermite Segment

    When both keyframes weightedMode are set to WeightedMode.None, the curve segment is interpolated using a Hermite curve algorithm. Hermite evaluates faster than Bezier and is the default weightedMode for a Keyframe.

    Bezier Segment

    Setting weightedMode will change how the neighbouring segments are interpolated. Weighted segments are interpolated using a Bezier curve algorithm. For a given weighted keyframe, the interpolating function uses the Keyframe.outWeight value and the next keyframes Keyframe.inWeight alongside both keyframes values to calculate the curve. If no weight is set (when either keyframe Keyframe.weightedMode is set to WeightedMode.None), then a weight value of 1/3 is used.

    Additional resources: AnimationCurve.AddKey, AnimationCurve.keys, AnimationCurve.Evaluate.

    using UnityEngine;

    //This script makes the GameObject move back and forth from -5 to +5 on the x-axis public class KeyFrameExample : MonoBehaviour { AnimationCurve animCurve = null;

    void Start() { Keyframe[] ks = new Keyframe[2];

    ks[0] = new Keyframe(0f, -5f); //Create a Keyframe at time 0 with a value of -5f

    ks[1] = new Keyframe(1f, 5f); //Create a Keyframe at time 1 with a value of 5f

    animCurve = new AnimationCurve(ks); animCurve.postWrapMode = WrapMode.PingPong; //Set the WrapMode to PingPong in order to make the GameObject go back and forth }

    void Update() { if (animCurve != null) transform.position = new Vector3(animCurve.Evaluate(Time.time), 0.0f, 0.0f); } }

    Properties

    Property Description
    inTangentSets the incoming tangent for this key. The incoming tangent affects the slope of the curve from the previous key to this key.
    inWeightSets the incoming weight for this key. The incoming weight affects the slope of the curve from the previous key to this key.
    outTangentSets the outgoing tangent for this key. The outgoing tangent affects the slope of the curve from this key to the next key.
    outWeightSets the outgoing weight for this key. The outgoing weight affects the slope of the curve from this key to the next key.
    timeThe time of the keyframe.
    valueThe value of the curve at keyframe.
    weightedModeWeighted mode for the keyframe.

    Constructors

    Constructor Description
    KeyframeCreates a keyframe with a Keyframe.weightedMode defaulting to WeightedMode.None.

    Web Proxy Viewer  |  New URL  |  Original Page