7. Анимация в Unity3d

7. Создание анимации в Unity3d на C#

7.1. Создание аниматора

Добавим куб к сцене. Далее нам нужен контроллер анимации, сама анимация, а также скрипт C#. В представлении активов внизу сцены давайте создадим все, что нам нужно, щелкнув правой кнопкой мыши на панели, затем:

Create -> Animation controller

Create -> Animation

Create -> C# Script


Как только они появятся в нашей сцене, все должно выглядеть так, как показано на рисунке.

Что мы хотим сделать? Мы создадим нашу сцену, используя 3D-объект в центре - наш куб, а также мы хотим, чтобы куб вращался по левому нажатию кнопки мыши.

Во-первых, мы создадим состояние, которое из кода, заставит вращаться объект. Чтобы создать это состояние, дважды щелкните по контроллеру анимации. После этого у вас будет примерно такой вид.

Два состояния, которые уже созданы, называются состояниями «Normal» и «MouseDownState». Чтобы создать состояние, необходимо щелкнуть правой кнопкой мыши, затем нажать «Create State», а затем «Empty».

Теперь, если вы посмотрите между двумя созданными состояниями, мы увидим две соединяющие белые линии со стрелками на них. Они называются Tranisations, и для их создания щелкните правой кнопкой мыши состояние и выберите «Make Transition». Далее надо немного отредактировать: нажмите переход и снимите флажок «Has Exit Time». На рисунке показан пример того, что вы увидите.

Если убрать галочку с опцией «Выйти», это не позволит автоматически перейти на «Нормальное» состояние «MouseDownState». Теперь, когда у нас есть базовый макет нашего контроллера, давайте создадим анимацию. Но, прежде чем мы отходим от представления контроллера анимации, нам нужно добавить анимацию в «MouseDownState».

Выбрав состояние, перетащите анимацию, созданную в assets, в поле «Motion», показанное на инспекторе. Вернитесь к нашему представлению сцены, выберите куб в сцене; затем перетащите контроллер анимации на куб. Сделайте то же самое для сценария. А теперь - при выбранном кубе - нажмите кнопку «add component» внизу панели инспектора. Когда появится диалоговое окно компонентов, нажмите «Physics», затем выберите «Box collider». Этот коллайдер поможет нам определить, действительно ли произведен щелчок мышью на 3D-объекте.

Если все вышеперечисленное было сделано, то вы должны увидеть эти компоненты в списке инспекторов, которые у вас есть как показано на рисунке 10 Теперь мы готовы создать простую анимацию вращения. В меню в верхней рабочей области нажмите «Window», а затем «Animation». Комбинация клавиш для этого - Ctrl + 6. Если у вас нет выбранного куба, сделайте это сейчас. Как только вы это сделаете, вы должны увидеть, что окно анимации становится активным, с выбранной анимацией. Взгляните на рисунок, а затем добавьте свойство для анимации вращения.

Если вы нажмете кнопку «Add Property», вы увидите всплывающее окно, которое у нас есть. Оттуда добавьте свойство вращения; теперь давайте приступим к созданию ключевого кадра, который завершит анимацию. Сначала разверните свойство и переместите маркер текущего времени в позицию по вашему выбору (красная линия), а затем отредактируйте одну из позиций x, y или z так.

 

После того, как вы добавили ключевые кадры во временную строку, теперь мы можем перейти к скрипту C# и заставить наш куб вращаться, когда нажмем на него.

7.2. Код на C#

// Используйте это для инициализации

void Start() { }

 

// Обновление вызывается один раз за кадр

void Update()

{

    // Определить, нажата ли левая кнопка мыши

    if (Input.GetMouseButtonDown(0))

    {

        var ray = Camera.main.ScreenPointToRay

            (Input.mousePosition);

        RaycastHit raycastHit;

 

        if (Physics.Raycast(ray, out raycastHit, 100))

        {

            // получаем коллайдер, на который щелкнули

            var colliderHit = raycastHit.collider;

            // получить объект игры, к которому привязан коллайдер

            var gameObjectHit = colliderHit.gameObject;

 

            // получить аниматор gameObjects

            var animator =

                GameObjectHit.GetComponent<Animator>();

 

            // воспроизведение анимации

            animator.Play("MouseDownState");

        }

    }

}

Из кода видно, что можно получить многие объекты, свойства и все остальное, что нам нужно для построения нашей игры/приложения. Если вы затем запустите сцену и щелкните 3D-объект, мы увидим вращение.

 Анимации

 Анимации

Комментарии

Популярные сообщения из этого блога

Лабораторные работы

О курсе...