Unity Mecanim Как воспроизвести анимацию при нажатии клавиши

Mecanim — это управляемый состоянием инструмент для Unity, который предоставляет разработчикам расширенные возможности управления анимацией и многофункциональный редактор.

Отличительными особенностями Mecanim являются смешивание анимации и ретаргетинг анимации.

Смешивание анимации — это автоматический процесс создания плавных переходов между анимациями.

Ретаргетинг анимации — это процесс перепрофилирования существующих анимаций для работы с несколькими персонажами, устраняющий необходимость создания новых анимаций для каждого нового персонажа.

В этом уроке я покажу, как анимировать куб и воспроизводить анимацию при нажатии клавиши с помощью Mecanim.

Шаги

Чтобы анимировать куб в Unity, выполните следующие действия:

  • Создайте новый куб (GameObject -> 3D-объект -> Куб)

  • Выберите «Куб», затем откройте окно «Анимация» (Окно -> Анимация -> Анимация).
  • В окне «Анимация» нажмите "Create", что создаст новую анимацию, новый контроллер аниматора и прикрепит компонент аниматора к кубу.
  • Назовите новую анимацию "SpinAnimation"

  • В окне анимации нажмите «Добавить свойство» -> «Преобразовать» -> «Поворот».
  • Эта анимация будет иметь 2 кадра: начало и конец.
  • Для первого кадра мы устанавливаем вращение на (0, 0, 0).

  • Для последнего кадра мы устанавливаем вращение на (0, 360, 0).

Анимация готова.

Совет: Чтобы создать больше анимаций, просто щелкните имя анимации в окне «Анимация», затем нажмите "Create new Clip...".

Чтобы настроить контроллер Mecanim Animator, выполните следующие действия:

  • Дважды щелкните ресурс Animator Controller, созданный с помощью анимации.

  • Появится новое окно под названием "Animator", которое должно выглядеть примерно так:

  • Вы заметите стрелку, указывающую от "Entry" к "SpinAnimation". Это означает, что анимация будет воспроизводиться, как только запустится сцена, но это не то, что нам нужно, мы хотим воспроизводить анимацию только при нажатии клавиши.

Поскольку Mecanim требует наличия анимации входа, мы можем создать новое состояние Empty и сделать его записью:

  • Щелкните правой кнопкой мыши окно Animator -> Создать состояние -> Пусто:

  • Выберите состояние входа -> щелкните его правой кнопкой мыши -> установить состояние StateMachine по умолчанию, затем укажите "New State":

Последнее, что осталось сделать, это осуществить переход к SpinAnimation, но мы хотим выполнить переход только после того, как будет выполнено определенное условие, тогда появится вкладка «Параметры»:

  • Перейдите на вкладку «Параметры» в окне Animator, затем щелкните символ (+):

Вы заметите, что доступно несколько типов, но сейчас мы выберем Trigger, он похож на bool, но в отличие от bool, после завершения анимации ему автоматически присваивается значение false, что полезно для однократных анимаций.:

  • Назовите параметр "spinTrigger"

  • Наконец выберите "Any State" -> Щелкните правой кнопкой мыши -> Сделать переход, затем укажите SpinAnimation:

  • Нажмите на стрелку перехода и в режиме инспектора в разделе «Условия» нажмите (+) и убедитесь, что выбран параметр spinTrigger.

  • По умолчанию для анимации, созданной с помощью Unity, включен цикл, но поскольку мы хотим воспроизводить анимацию только один раз, нам нужно выбрать анимационный клип в представлении «Проект», а затем снять флажок «Время цикла»:

Чтобы иметь возможность управлять параметрами Mecanim из скрипта, нам нужно будет использовать специальные функции, проверьте код ниже:

  • Создайте новый скрипт, назовите его "AnimationTest", удалите из него все, а затем вставьте в него приведенный ниже код:

AnimationTest.cs

using UnityEngine;

public class AnimationTest : MonoBehaviour
{

    Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        //Get Animator component
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //Play spin animation on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            animator.SetTrigger("spinTrigger");
        }
    }
}
  • Прикрепите скрипт AnimationTest.cs к кубу с компонентом Animator:

Теперь давайте проверим это:

Sharp Coder Видео проигрыватель

Все работает как положено, нажатие Q воспроизводит анимацию.

Рекомендуемые статьи
Создание системы интерактивного меню в Unity
Как импортировать анимацию в Unity
Как рисовать деревья на местности в Unity
Как выбрать подходящую фоновую музыку для вашей игры в Unity
Выбор подходящего Skybox для вашей среды в Unity
Как создать игру в стиле FNAF в Unity
Необходимые ресурсы общего назначения для Unity