Unity Mecanim Як відтворювати анімацію при натисканні клавіші

Mecanim — це керований станом інструмент для Unity, який надає розробникам розширений контроль анімації та багатофункціональний редактор.

Видатними функціями Mecanim є змішування анімації та перенацілювання анімації.

Змішування анімації — це автоматичний процес створення плавних переходів між анімаціями.

Перенацілювання анімації — це процес перепрофілювання наявних анімацій для роботи між кількома системами персонажів, усуваючи необхідність створювати нові анімації для кожного нового персонажа.

У цьому підручнику я покажу, як анімувати куб і відтворювати анімацію під час натискання клавіш за допомогою Mecanim.

Кроки

Щоб анімувати куб у Unity, виконайте наведені нижче дії.

  • Створити новий куб (GameObject -> 3D Object -> Cube)

  • Виберіть Куб, а потім відкрийте вікно анімації (Вікно -> Анімація -> Анімація)
  • У вікні «Анімація» натисніть "Create", що створить нову анімацію, новий контролер аніматора та приєднає компонент аніматора до куба.
  • Назвіть нову анімацію "SpinAnimation"

  • У вікні анімації натисніть AddProperty -> Transform -> Rotation
  • Ця анімація матиме 2 кадри, початковий і кінцевий.
  • Для першого кадру ми встановили обертання (0, 0, 0)

  • Для останнього кадру ми встановили обертання (0, 360, 0)

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

Порада: щоб створити більше анімацій, просто клацніть назву анімації у вікні анімації, а потім натисніть "Create new Clip...".

Щоб налаштувати Mecanim Animator Controller, виконайте наведені нижче дії.

  • Двічі клацніть ресурс Animator Controller, створений за допомогою анімації

  • З’явиться нове вікно з назвою "Animator", яке має виглядати приблизно так:

  • Ви помітите, що є стрілка, яка вказує від "Entry" до "SpinAnimation", що означає, що анімація відтворюватиметься, як тільки почнеться сцена, але це не те, чого ми хочемо, ми хочемо відтворювати анімацію лише після натискання клавіші.

Оскільки Mecanim вимагає анімації входу, ми можемо створити новий стан Empty і зробити його Entry:

  • Клацніть правою кнопкою миші вікно Animator -> Create State -> Empty:

  • Виберіть Entry state -> Клацніть правою кнопкою миші на ньому -> Set StateMachine Default State, потім наведіть курсор на "New State":

Останнє, що залишилося зробити, це здійснити перехід до SpinAnimation, але ми хочемо зробити перехід лише після виконання певної умови, тоді з’явиться вкладка «Параметри»:

  • Натисніть вкладку «Параметри» у вікні «Аніматор», а потім натисніть символ (+):

Ви помітите, що є кілька доступних типів, але наразі ми виберемо 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 до Cube з компонентом Animator:

Тепер перевіримо:

Sharp Coder Відеоплеєр

Усе працює належним чином, натискання Q запускає анімацію.

Рекомендовані статті
Створення інтерактивної системи меню в Unity
Як імпортувати анімацію в Unity
Як малювати дерева на місцевості в Unity
Підручник з Unity Cinemachine і Timeline
Вибір відповідного Skybox для вашого середовища в Unity
Як створити гру на основі FNAF в Unity
Як вибрати правильну фонову музику для гри в Unity