AnimationCurve
класс в UnityEngine
Выполнено в:UnityEngine.CoreModule
Описание
Представляет изменение значения во времени. AnimationCurves обычно используются для анимации значения свойств Component в AnimationClip, но вы можете использовать их для динамического управления любым плавающим значением.
Класс AnimationCurve — один из основных компонентов системы анимации Unity.
Чтобы построить простую AnimationCurve из кода, используйте один из следующих статических вспомогательных методов:
- Используйте AnimationCurve.EaseInOut для кривой, которая плавно переходит от одного значения к другому.
- Используйте AnimationCurve.Linear для кривой, которая линейным образом переходит от одного значения к другому.
- Используйте AnimationCurve.Constant для кривой, которая сохраняет постоянное значение на протяжении всей своей продолжительности.
Чтобы построить комплекс AnimationCurve, используйте AnimationCurve.AnimationCurve и AnimationCurve.AddKey.
После построения комплекса, используйте AnimationCurve для анимирования следующих свойств:
- Свойства GameObject положения, вращения, масштаба или компонента в AnimationClip.
- Свойства ParticleSystem или VisualEffect.
- Свойства вашего собственного MonoBehaviour со временем.
Следующий пример иллюстрирует, как использовать AnimationCurve для постепенного изменения интенсивности Light.
using System.Collections; using UnityEngine; /// <summary> /// Increases or decreases light intensity based on an ease-in-ease-out curve. /// </summary> [RequireComponent(typeof(Light))] public class SmoothLight : MonoBehaviour { float m_MaxIntensity; AnimationCurve m_LightCurve; float m_CurrentTime; public float m_Direction; Light m_Light; void Start() { m_Light = GetComponent<Light>(); m_MaxIntensity = m_Light.intensity; m_LightCurve = AnimationCurve.EaseInOut(0, 0, 1, m_MaxIntensity); //Initialize the current time to represent the ratio between 0 and max intensity var currentIntensity = Mathf.Clamp(m_Light.intensity, 0.0f, m_MaxIntensity); m_CurrentTime = currentIntensity / m_MaxIntensity; } //Use this method to bring the light back to the maximum intensity over one second. public IEnumerator TurnUp() { //Increase the intensity until we reach MaxIntensity or a TurnDown call is made. m_Direction = 1.0f; while (m_Direction > 0.0f && m_CurrentTime < m_MaxIntensity) { m_CurrentTime += Time.deltaTime; m_Light.intensity = m_LightCurve.Evaluate(m_CurrentTime); yield return null; } } //Use this method to bring the light back to zero intensity over one second. public IEnumerator TurnDown() { //Decrease the intensity until we reach MaxIntensity or a TurnDown call is made. m_Direction = -1.0f; while (m_Direction < 0.0f && m_CurrentTime > 0) { m_CurrentTime -= Time.deltaTime; m_Light.intensity = m_LightCurve.Evaluate(m_CurrentTime); yield return null; } } }
Свойства
| Свойство | Описание |
|---|---|
| keys | Все ключи определены в кривой анимации. |
| length | Количество ключей в кривой. (только для чтения) |
| postWrapMode | Поведение анимации после последнего ключевого кадра. |
| preWrapMode | Поведение анимации перед первым ключевым кадром. |
| это[int] | Получает ключ в индексе. (Только чтение) |
Конструкторы
| Конструктор | Описание |
|---|---|
| AnimationCurve | Создает кривую анимации из произвольного количества ключевых кадров. |
Открытые методы
| Метод | Описание |
|---|---|
| AddKey | Добавить новый ключ к кривой. |
| ClearKeys | Удаляет все KeyFrame из этого экземпляра AnimationCurve. |
| CopyFrom | Копирует ключи и свойства указанного объекта AnimationCurve в этот экземпляр класса AnimationCurve. |
| Evaluate | Оценка кривой во времени. |
| GetHashCode | HashCode для кривой анимации, рассчитанной с использованием всех индивидуальных ключевых кадров. |
| GetKeys | Получить все ключи, определенные в AnimationCurve. |
| MoveKey | Перемещает ключ в индексе в key.time и key.value. |
| RemoveKey | Удаление ключа. |
| SetKeys | Устанавливает все ключи, определенные в AnimationCurve. |
| SmoothTangents | Сглаживание входящих и исходящих каскадов ключевого кадра на индексе. |
Статические методы
| Метод | Описание |
|---|---|
| Constant | Создает постоянную "кривую", начинающуюся на timeStart, заканчивающуюся на timeEnd, и устанавливает значение на значение. |
| EaseInOut | Создает кривую плавного входа и выхода, начинающуюся в timeStart, valueStart и заканчивающуюся в timeEnd, valueEnd. |
| Linear | Прямая линия, начинающаяся в timeStart, valueStart и заканчивающаяся в timeEnd, valueEnd. |