Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public bool Play(PlayMode mode = PlayMode.StopSameLayer);

public bool Play(string animation, PlayMode mode = PlayMode.StopSameLayer);

Описание

Воспроизводит анимацию без смешивания.

Если имя не указано, будет воспроизводиться анимация по умолчанию. В случаях, когда анимация не может быть воспроизведена (например, когда нет анимации по умолчанию или анимации с указанным именем), функция вернет false. Необязательный параметр PlayMode позволяет выбрать, как эта анимация повлияет на другие, уже играющие.

Если указанная анимация уже воспроизводится, другие анимации будут остановлены, но анимация не будет перематываться к началу. Когда будет достигнут конец анимации, она будет автоматически остановлена ​​и перемотана к началу, если для PlayMode не установлено значение «Цикл». Если Animation.Play вызывается для объекта во время обновления кадра, когда объект также деактивирован тогда вызов будет фактически отменен. Анимация не начнет воспроизводиться, когда объект будет повторно активирован. Однако, если вызов на следующем кадре (пока объект все еще неактивен), то анимация начнет воспроизводиться после повторной активации.

Чтобы использовать Animation.Play, данные анимации должны быть видны в окне Inpsector. Это окно содержит все анимации для GameObject в виде массива. Например, две анимации прыжок и вращение хранятся в списке анимаций. Animation.Play может воспроизводить каждую из этих анимаций. Анимация также может комбинировать анимации. Для этого используется (неподдерживаемый и недокументированный) AnimationState.слой. Например, оставив jump на нулевом уровне и переместив spin на уровень 123, вы сможете воспроизводить их вместе.

Анимации должны быть помечены как «Устаревшие» в Инспекторе, чтобы анимации можно было найти с помощью этого метода. Этот параметр появляется после переключения окна инспектора на «Отладка».

using UnityEngine; // Пример Animation.Play. Пусть клавиши S и J начнут // анимация вращения или прыжка. Пусть Пробел воспроизведет вращение и // прыгаем одновременно. Пусть Z поиграет и попрыгает с // скорость вращения удвоилась. // // Вращение: вращаем куб на 360 градусов за половину или одну секунду // Прыжок: отскок вверх на 2 единицы и вниз за одну секунду // // Примечание: AnimationState.layer больше не поддерживается, но все еще существует. public class ExampleScript : MonoBehaviour { private Animation anim; void Start() { anim = gameObject.GetComponent<Animation>(); anim["spin"].layer = 123; } // удвоить скорость вращения, если true private bool fastSpin = false; void Update() { // оставить вращение или прыжок до завершения перед изменением if (anim.isPlaying) { return; } if (Input.GetKeyDown(KeyCode.S)) { Debug.Log("Spinning"); anim.Play("spin"); } if (Input.GetKeyDown(KeyCode.J)) { Debug.Log("Jumping"); anim.Play("jump"); } // сочетаем прыжок и вращение if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("Jumping and spinning"); anim.Play("jump"); anim.Play("spin"); } // вернуть скорость отжима к 1,0 секунде if (fastSpin == true) { anim["spin"].speed = 1.0f; fastSpin = false; } if (Input.GetKeyDown(KeyCode.Z)) { Debug.Log("Jumping and spinning in half a second"); anim.Play("jump"); anim["spin"].speed = 2.0f; anim.Play("spin"); // мы использовали вращение со скоростью два, теперь отмечаем // скорость отжима, чтобы вернуться к единице fastSpin = true; } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3