Объявление
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, изменяется текущее время состояния. |
layer | Индекс слоя. Если слой равен -1, он воспроизводит первое состояние с заданным именем состояния или хэшем. |
normalizedTime | Смещение времени между нулем и единицей. |
Описание
Воспроизведение состояния.
Когда вы указываете имя состояния или строку, используемую для создания хэша, она должна включать имя родительского слоя. Например, если у вас есть состояние Bounce
в Base Layer
, имя будет Base Слой.Отскок
.
Параметр normalizedTime
может принимать значения от 0 до 1. Если этот параметр оставить равным нулю, Play будет работать должным образом. Можно указать другую отправную точку. Например, для normalizedTime
установлено значение 0,5, что означает, что анимация начинается на полпути. Если переход из одного состояния переключается в другое, он может быть смешанным, а может и не быть. Если переход начинается с 0,75, он будет смешиваться с другим состоянием. Если переход не настроен, Play будет продолжаться до версии 1.0 без изменений.

У этого куба есть два состояния аниматора, называемые Rest
и Bounce
. Пустая анимация воспроизводится в состоянии Rest
. При нажатии клавиши пробел куб переходит в состояние Bounce
. Это заставляет куб прыгать вверх и вниз дважды. Затем куб возвращается в состояние Rest
. Поскольку Bounce
выбран из сценария Animator.Play, переход не требуется. Однако возврат из Bounce
в Rest
имеет переход. Отметьте Has Exit Time
, чтобы Bounce
длился одну секунду. Прикрепите этот скрипт к игровому объекту, который вы хотите анимировать.
using UnityEngine;
// Press the space key in Play Mode to switch to the Bounce state.
public class Move : MonoBehaviour
{
private Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (anim != null)
{
// play Bounce but start at a quarter of the way though
anim.Play("Base Layer.Bounce", 0, 0.25f);
}
}
}
}