Как сделать анимацию 2D персонажа в Unity 5

В сегодняшнем уроке мы разберем, как сделать анимацию 2D персонажа в Unity 5. Продолжим мы с предыдущего урока, на котором остановились. Для начала нам необходимо навесить на нашего персонажа компонент Animator, а так же в папке, в которой хранится информация о данном объекте (желательно хранить информацию об объектах структурированно, чтоб не запутаться) создать ПКМ -> Create -> Animator Controller и соединить её со св-вом Controller в Animator у персонажа.
На данный момент к нашему персонажа привязан его контроллер, по которому он будет выбирать себе анимации. Для того, чтоб у персонажа была анимация необходимо несколько последовательных спрайтов персонажа в различных положениях, которые мы будем чередовать последовательно.

Создадим в папке с аниматором еще 4 Animation, и переименуем их соответствующе сторонам передвижения UpAnimation, DownAnimation, LeftAnimation, RightAnimation. Откроем наш Animator Controller (Я его переименую в PlayerAnimator). Перед нами будет такое окно:

Окно аниматора Unity 5 для создания анимаций

Выделив все 4 анимации перенесем их в темную зону. Появятся 4 новых элемента, кликнув на один из них и перейдя в окно Animation(либо открыв через Window -> Animation) мы попадем в окно управления этой анимацией. Желательно это окно удобно расположить, чтоб в быстрой доступности была вкладка Scene и Inspector (для этого я выношу его в отдельное окошко).

Окно создания анимаций

Красная полоска справа отвечает за то, в какой момент времени произайдет определенное действие. А Samples - отображает кол-во кадров. Увеличение этого числа увеличит скорость анимации. Я поставлю себе 30 кадров.

Теперь при нажатии на красный кружок Unity начнет записывать ваши действия относительно объекта (не забудте его выбрать на сцене), на который навешан аниматор с данной анимацией (кнопки управления сверху меняют свой цвет для того, чтоб не забыть выключить запись). Нам необходимо только менять 2D спрайты нашего персонажа. Теперь перемещая красный указатель по кадрам выставляем необходимые спрайты. У меня получилось что-то такое

Последовательность 2D спрайтов для анимации

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

Теперь проделайте такие-же действия для каждой анимации. Теперь удаляем эти 4 объекта из темной зоны аниматора. Наша анимация лежит просто в папке, В левом верхнем углу мы выбираем Parameters и нажатием на "+" добавляем 2 float значения x и y.

Параметры аниматора

В темной зоне мы создаем при помощи ПКМ -> CreateState -> FromNewBlendTree (BlendTree за нас сам будет выбирать нужную для воспроизведеня анимацию) и кликаем по нему дважды, открываются внутренности BlendTree и в правом верхнем углу инспектора выбираем BlendType 2D Simple Directional. А в Parameters ставим x и y. Это значит, что за наш BlendTree будет отвечать 2 параметра. Так же необходимо добавить 4 новых Motion через + -> AddMotionField. Для каждой Motion мы выбираем соответствующую анимацию из папки и значение направления x и y. У меня получилось так

Настройки BlendTree Unity 5

Далее необходимо нажать на каждую анимацию в папке и поставить галочку напротив LoopTime. Это нужно для того, чтоб анимация шла бесконечно. Наш BlendTree теперь готов, но если выбрать его постоянным он будет вечно идти. Чтоб это исправить необходимо открыть аниматор и создать там Empty, который мы установим стандартным и переименуем в Idle. Для этого необходимо нажать на него ПКМ и выбрать Set as Layer default state. Теперь нажмем на Idle ПКМ и выберем Make Transition и укажем на Blend Tree, обратное действие надо сделать и на BlendTree. Теперь необходимо добавить новый bool параметр в аниматоре, который назовем IsWalking.

Нажав ЛКМ по соединению необходимо убрать галочку с Has Exit Time и в Conditions добавить новое условие, выбрав IsWalking и поставив необходимое значение. В другом соединении нужно сделать тоже самое, только вместо true сделать false. И теперь, когда наш параметр IsWalking будет поставлен в true, то 2D персонаж будет анимировать свое движение, а как движение прекратится, то он перестает анимироваться.

Законченный вид аниматора Unity 5

Теперь необходимо сделать включение передвижения и изменение параметров в скрипте для анимации. В PlayerController необходимо написать:

public class PlayerController : MonoBehaviour {

    Rigidbody2D rigidBody2d;
    Animator anim;
    private void Start()
    {
        rigidBody2d = GetComponent();
        anim = GetComponent();
    }
    bool NeedToGo=false;
    public float Speed=0.05f;
    Vector2 worldPos;
	void Update () {
		if (Input.GetMouseButtonUp(0)==true)
        {
            Vector2 mousePos = Input.mousePosition;
            worldPos = Camera.main.ScreenToWorldPoint(mousePos);
            NeedToGo = true;
            //Вычисляем разницу позиций
            Vector3 diff = worldPos - (Vector2)transform.position;
            //И нормализуем её (приводим к значению от -1 до 1)
            diff.Normalize();
            //Заносим её в наши x и y
            anim.SetFloat("x", diff.x);
            anim.SetFloat("y", diff.y);
            //Устанавливаем значение походки в аниматоре
            anim.SetBool("IsWalking",true);
        }
        if (NeedToGo)
        {
            rigidBody2d.MovePosition(Vector2.MoveTowards(transform.position,worldPos,Speed*Time.deltaTime));
            
            if (Vector2.Distance(transform.position, worldPos) < 0.01)
            {
                NeedToGo = false;
                //Останавливаем анимацию когда дошли
                anim.SetBool("IsWalking", false);
            }
        }
	}
}

В итоге данного урока мы разобрали как Как сделать анимацию 2D персонажа в Unity 5

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Adblock
detector