Keyframe
A keyframe that can be injected into an AnimationCurve.
Read time 3 minutesLast updated 2 days ago
Definition
- Type: Struct
- Namespace: UnityEngine
- Assembly: UnityEngine.CoreModule
public struct Keyframe
Remarks
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 , the curve segment is interpolated using a Hermite curve algorithm. Hermite evaluates faster than Bezier and is the default weightedMode for a Keyframe.
WeightedMode.NoneBezier 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 keyframe’s Keyframe.inWeight alongside both keyframes values to calculate the curve. If no weight is set (when either keyframe Keyframe.weightedMode is set to ), then a weight value of 1/3 is used.
WeightedMode.NoneExamples
using UnityEngine;//This script makes the GameObject move back and forth from -5 to +5 on the x-axispublic 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); }}
Constructors
Constructor | Description |
|---|---|
| Keyframe(System.Single,System.Single) | Creates a keyframe with a Keyframe.weightedMode defaulting to WeightedMode.None. |
| Keyframe(System.Single,System.Single,System.Single,System.Single) | Creates a keyframe with a Keyframe.weightedMode defaulting to WeightedMode.None. |
| Keyframe(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) | Creates a keyframe with a Keyframe.weightedMode defaulting to WeightedMode.Both. |
Properties
Property | Description |
|---|---|
| inTangent | Sets the incoming tangent for this key. The incoming tangent affects the slope of the curve from the previous key to this key. |
| inWeight | Sets the incoming weight for this key. The incoming weight affects the slope of the curve from the previous key to this key. |
| outTangent | Sets the outgoing tangent for this key. The outgoing tangent affects the slope of the curve from this key to the next key. |
| outWeight | Sets the outgoing weight for this key. The outgoing weight affects the slope of the curve from this key to the next key. |
| time | The time of the keyframe. |
| value | The value of the curve at keyframe. |
| weightedMode | Weighted mode for the keyframe. |