- PVSM.RU - https://www.pvsm.ru -
Наверняка вы заметили, что создав новую анимацию в Unity 5 сразу размещается ссылка на спрайт компонента SpriteRenderer. Unity так и зовёт выделить заготовленные кадры и перетащить их в окно Animation.
Пара движений мышкой и новая анимация украшает вашу игру. Но на 1 секунду ролика нужно 12 — 30 кадров. А если персонаж выполняет десяток различных движений: бегает, читает, сажает, поливает, играет, загорает, и т. д. то продолжительность всех анимаций переваливает за минуту, а кадров за тысячу. А персонаж не единственный анимированный объект на уровне. Вот мы и получили что не особо сложная сцена грузится дольше минуты, а Unity начинает слетать из-за перерасхода оперативной памяти. Да, конечно можно используя встроенный в Unity SpritePacker упаковать спрайты в атласы, но это даёт лишь незначительный результат и улучшение производительности на 10 — 20%.
Чтобы достичь более ощутимых результатов мы решили заменить покадровые анимации скелетными. Вместо прямоугольника на котором рисуется спрайт создаётся более сложная модель, на которой отрисовываются части персонажа из атласа.
Анимация получается за счет движений этой модели. Не пугайтесь, на самом деле всё просто! Есть несколько инструментов для создания скелетных 2d анимаций для юнити: Spine [2], DragonBones [3], Anima2D [4], Adobe Flash [5] и др.
Т.к. наш художник делал все анимации во Flash для нас лучше всего подходил GAF [6].
Анимации создаются автоматически, по разметке сделанной во Flash.
Для запуска нужных анимаций используем скриптинг:
using UnityEngine;
using GAF.Core;//Используем пространство имен GAF
public class Mouse : MonoBehaviour
{
//Объявляем и проставляем в инспекторе ссылку
[SerializeField] private GAFMovieClip GAFMovieClip;
void Update ()
{
if (Input.GetKeyDown(KeyCode.RightArrow))//При нажатии кнопки "вправо"
GAFMovieClip.setSequence("run", true);//Запускаем клип run циклично
}
}
В Pro-версии GAF [8] есть возможность использовать родной Unity-аниматор, что сделает разработку значительно проще. Однако нужно помнить что наш тип анимаций не поддерживает смешивание. Unity по умолчанию включает смешивание клипов. Так у нас анимации могут покорежиться на переходах между клипами. Чтобы анимации работали гладко отключаем смешивание клипов:
Если окажется что во Flash вы не создали нужных клипов их можно собрать прямо в Unity, вызывая функцию updateToFrameAnimator() и указывая в качестве параметра нужный кадр.
Автор: BoberUnity
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/unity3d/245318
Ссылки в тексте:
[1] Image: http://radikal.ru
[2] Spine: http://ru.esotericsoftware.com/
[3] DragonBones: http://dragonbones.com
[4] Anima2D: https://anima2d.com/
[5] Adobe Flash: https://www.adobe.com/ru/products/animate.html
[6] GAF: https://gafmedia.com/
[7] GAF из Unity AssetStore: https://www.assetstore.unity3d.com/en/#!/content/13593
[8] Pro-версии GAF: https://www.assetstore.unity3d.com/en/#!/content/26880
[9] Источник: https://habrahabr.ru/post/322280/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.