Імпорт Spine 2D анімації в Unity 3D і прив'язка ефектів до кісток з використанням 2D Toolkit

Тут буде описано, як можна спростити імпорт Spine анімації в Unity проект, і що потрібно зробити для прив'язки довільного об'єкта (візуальний ефект, коллайдер і т.д.) до самої анімації або окремим її кісткам.
 
Розглянемо на прикладі доступною в Unity редакторі системі частинок .
В кінці статті додаються готова анімація і тестовий проект, результат в якому буде виглядати приблизно так:
 
 image
 
Отже, що знадобиться для реалізації задуманого:
 
 
     
  1. Безкоштовна версія редактора Unity (v 4.5.3f3 на момент написання статті).
  2.  
  3. 2D Toolkit (v 2.4.0 на момент написання статті).
  4.  
  5. Редактор Spine анімацій.
  6.  
  7. Csharp бібліотека, яку можна скачати тут (але в доданому проекті вона вже є).
  8.  
Імпорт анімації з редактора Spine, вручну, описаний в нескладної відео інструкції , проте у разі, коли над проектом працюють кілька людей, це може викликати деякі труднощі. Тому було написано вікно для імпорту, в яке досить перетягнути папку експорту анімації з редактора Spine і натиснути «OK».
 
Сам процес створення анімації тут описуватися не буде, на сайті розробника є відмінна документація з цього приводу.
 
 

Почнемо з експорту

Кожен Spine проект, це власне папка з використовуваними зображеннями і файл з настройками проекту (* .spine файл). Нам крім цього знадобиться ще JSON файл, генерований редактором при експорті. Налаштування експорту показані на малюнку нижче. Важливо тут не забути вказати, що нам НЕ потрібен атлас при експорті (поле «Create atlas»). Далі в якості шляху вказуємо "[шлях в папку Spine проекту] / Export", і тиснемо кнопку експорту.
 
 image
 
В результаті маємо папку проекту Spine з тим, що там вже було, плюс необхідний JSON файл. Готова папка експорту з ісходником є ​​в архіві "necr_2.zip", який можна знайти в кінці цієї статті.
Якщо ісходник анімації з якої причини не бажано передавати разом з папкою, то це не принципово, файл "* .spine" для імпорту не потрібно.
 
Тепер створюємо новий 2D проект в Unity, імпортуємо в нього пакет "2D Toolkit" і вміст файлу "spine_test.unitypackage", який теж можна скачати в кінці цієї статті.
В отриманому проекті можна відкрити і запустити вже готову сцену, вона лежить в папці "ExampleEffects". У цій сцені перед камерою літає анімований привид з прикріпленим до однієї з кісток рук ефектом, якщо його можна так назвати.
 
Але повернемося до імпорту анімації.
Щоб відкрити вікно імпорту в нашому проекті Unity, потрібно у верхньому меню знайти пункт «Window» і в випадаючому списку вибрати «Spine Import Window», як показано на малюнку нижче.
 
 image
 
У підсумку побачимо подібне вікно:
 
 image
 
Тепер нам знадобиться файл "necr_2.zip", він містить експорт анімації з проекту Spine. Разархивируем його і перетягнемо вийшла папку у велике поле & quot; & gt; & gt; Drag the folder export character here. & Lt; & lt; & quot ;. У підсумку бачимо згенерований атлас і пару налаштувань, як на малюнку нижче.
 
 image
 
В поле «Pack method» вибираємо найбільш оптимальний варіант, тобто той при якому значення «Atlas size» менше. Поле «Padding» визначає проміжок між текстурами в атласі, при значенні 1 артефактів не виникало. «Max atlas size» існує тільки для налагодження, там завжди потрібно максимальне значення. А «Max texture size» задає якість текстури в Unity, рекомендується так само максимальне значення.
Має значення і верхнє поле «Set person name». Так як всі імпортовані анімації будуть зберігатися в одному місці, то ім'я має бути унікальним, в іншому випадку вікно покаже попередження внизу замість кнопки «OK». Натисканням цієї кнопки імпорт анімації і завершується.
До речі, для створення атласу використовувався скрипт MaxRectsBinPack , з невеликою надбудовою.
 
В процесі створення і лінкування необхідних префабов, в консолі Unity може з'явиться кілька повідомлень про помилку, але вони ніяк не впливають на остаточний результат. А в результаті у нас є папка з зазначеним при імпорті ім'ям, що містить ресурси та префаб з назвою "animation".
 
 image
 
Витягуємо його на сцену, натискаємо «Play» і спостерігаємо анімованого примари. Правда, щоб анімація включалася автоматично, не забудьте в показаному на картинці нижче компоненті виставити схожі налаштування («Time Scale» зменшений для наочності).
 
 image
 
 

Залишається прив'язка об'єктів до кісток

Для тесту можна скористатися префабов «fx1_pref» і «fx2_pref» з папки «ExampleEffects». Знаходимо в інспекторові об'єкта компонент «Spine Person» і виставляємо настройки, як показано на малюнку нижче.
 
 image
 
В поле «Prefab» вибирається об'єкт типу «GameObject», тобто практично будь-який ігровий об'єкт, в нашому випадку це контейнер, що містить Particle system .
Але головне поле тут, це «animation». Варіант «simple» означає звичайний вбудований об'єкт, не прив'язаний не до якоїсь кістки. Вибравши значення «withbone» з'явиться можливість вибрати кістка зі списку, до якої буде прив'язаний об'єкт. У випадку з привидом назви кісток вельми не оригінальні, тому можна поекспериментувати.
Поле «Free Z pos» з'явилося внаслідок того, що в якості деяких ефектів використовувався двомірний аналог освітлення, який завжди повинен був знаходитися між інтерфейсом і ігровим полем. Так що якщо зняти цю галочку, то z координата ефекту завжди дорівнюватиме параметру fixed_z (який з'явиться в інспекторові).
Використовуючи поля «Pivot», «Rotation», «Scale» можна налаштувати положення, розворот і розмір ефекту щодо кістки (в нашому випадку масштабування значення не має).
Після того, як настройки виставлені, можна запустити сцену, потягати об'єкт за різними координатам і подивитися на результат.
 
Що з усього цього може вийти демонструє дане відео.
 релізной ролик проекту  
 
В скрипті SpinePerson.cs є ще пара функцій, які можливо будуть корисні комусь:
 
 SpinePerson.setSpineImageActive
SpinePerson.replaceSpineImage

 
Використовуючи ці функції, можна приховати / показати або замінити конкретну текстуру в анімації.
Всі скрипти знаходяться в папці "SpineImport / scripts", при бажанні їх не складно змінити під потреби конкретного проекту.
 
Нижче додається проект Unity і архів з анімацією:
 - spine_test.unitypackage ;
 - necr_2.zip .

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.