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

Animator.Play

Declaration

public void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
public void Play(int stateNameHash, int layer = -1, float normalizedTime = float.NegativeInfinity);

Параметры

Параметр Описание
stateName Имя состояния.
stateNameHash Хеш-имя состояния. Если stateNameHash равен 0, метод меняет время текущего состояния.
слой Индекс слоя. Если слой равен -1, воспроизводится первое состояние с заданным именем или хешем.
normalizedTime Смещение времени между нулем и одним.

Описание

Воспроизводит состояние.

Когда вы указываете имя состояния или строку, по которой формируется хеш, оно должно включать имя родительского слоя. Например, если у вас есть Bounce состояние в Base Layer, имя будет Base Layer.Bounce. Когда вы используете параметр stateName, этот метод вызывает Animator.StringToHash внутренне. Если вы часто используете этот метод с одним и тем же stateName, предварительно вычислите хэш и используйте параметр stateHashName для повышения производительности.

Параметр normalizedTime варьируется между 0 и 1. Если этот параметр оставлен на нуле, то Play будут работать как ожидалось. Можно дать другую начальную точку. Примером может быть normalizedTime, заданный как 0.5, означает, что анимация начинается с середины. Если переход из одного состояния переключается на другое, он может смешиваться, а может и нет. Если переход начинается на 0.75, он будет смешан с другим состоянием. Если переход не настроен, то Play будет продолжаться до 1.0 без изменений.


Следующий пример скрипта анимирует куб.

Этот куб имеет два состояния Animator, называемые Rest и Bounce. Пустая анимация воспроизводится в Rest состояние. При нажатии пробела куб переключается в Bounce состояние. Из-за этого куб дважды подпрыгивает вверх и вниз. Затем куб возвращается в Rest состояние. Поскольку Bounce выбран из скрипта Animator.Play, Transition не требуется. Однако возвращение из Bounce в Rest имеет Transition. Has Exit Time отмечен, чтобы Bounce продержался в течение одной секунды. Присоедините этот скрипт к GameObject, который вы хотите анимировать.

using UnityEngine;

// Press the space key in Play Mode to switch to the Bounce state.

[RequireComponent(typeof(Animator))]
public class AnimatorPlayExample : MonoBehaviour
{
    // The Animator component on the GameObject this script is attached to.
    Animator m_Animator;

    // Cache the hash of the bounce state.
    int m_BounceStateHash;

    void Start()
    {
        m_Animator = GetComponent<Animator>();
        m_BounceStateHash = Animator.StringToHash("Base Layer.Bounce");
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Play Bounce but start at a quarter of the way through
            m_Animator.Play(m_BounceStateHash, 0, 0.25f);
        }
    }
}

Дополнительные ресурсы: Animator.StringToHash для получения хэша из имени.