Unity 6.3
0 онлайн 63 гостей 3 в системе
Вход

Keyframe

структура в UnityEngine

Выполнено в:UnityEngine.CoreModule

Описание

Ключевой кадр, который может быть введен в AnimationCurve.

Ключевые кадры используются для управления изменением значения AnimationCurve со временем. Каждый ключевой кадр определяется его позицией в AnimationCurve через свойства Keyframe.time (горизонтальная ось) и Keyframe.value (вертикальная ось). Вы можете управлять интерполяцией между различными ключевыми кадрами и наклонами AnimationCurve через свойства Keyframe.inTangent, Keyframe.outTangent, Keyframe.weightedMode, Keyframe.inWeight и Keyframe.outWeight. Обратите внимание, что в отличие от того, что может подразумевать название свойства Keyframe.time, оно не связано со временем и может просто рассматриваться как положение на горизонтальной оси двухмерного пространства.

Сегмент Эрмита

Когда оба ключевых кадра weightedMode установлены на WeightedMode.None, сегмент кривой интерполируется с помощью алгоритма кривой Эрмита. Hermite оценивает быстрее, чем Безье и является по умолчанию weightedMode для Keyframe.

Сегмент Безье

Настройка weightedMode изменит интерполяцию соседних сегментов. Взвешенные сегменты интерполируются с помощью алгоритма кривой Безье. Для данного взвешенного ключевого кадра интерполирующая функция использует значение Keyframe.outWeight и следующего ключевого кадра Keyframe.inWeight вместе с обоими ключевыми кадрами values для вычисления кривой. Если вес не установлен (когда любой из ключевых кадров Keyframe.weightedMode установлен на WeightedMode.None), то используется вес 1/3.

Дополнительные ресурсы: 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); } }

Свойства

Свойство Описание
inTangentЗадает входящий тангенс для этого ключа. Входящий тангенс влияет на наклон кривой от предыдущего ключа к этому ключу.
inWeightЗадает вес входящих ключей для этого ключа. Вес входящих ключей влияет на наклон кривой от предыдущего ключа к этому ключу.
outTangentУстанавливается выходная касательная для этого ключа. Выходная касательная влияет на наклон кривой от этого ключа к следующему.
outWeightЗадает вес исходящего сигнала для этого ключа. Вес исходящего сигнала влияет на наклон кривой от этого ключа к следующему.
timeВремя ключевого кадра.
valueЗначение кривой на ключевом кадре.
weightedModeВзвешенный режим для ключевого кадра.

Конструкторы

Конструктор Описание
KeyframeСоздает ключевой кадр с Keyframe.weightedMode по умолчанию WeightedMode.None.