Як уникнути спагетті в аніматорі?


9

Я працюю з анімаціями в Unity, і поки що я зробив лише чотири (вгору вліво і вправо), і моє вікно анімації виглядає наступним чином ... введіть тут опис зображення

Проблема полягає в тому, що якщо я рухався вгору, я хочу, щоб герой залишався дивитись вгору, не переходив до "нейтрального холостого ходу" (або як би він почав), але це означає, що у мене є 4 положення в режимі очікування ... і кожна з них може переходити вгору, вниз , Вліво або вправо, і вони йдуть експоненціально з кожною додатковою дією ...

Через що я відчуваю, що роблю щось не так ...

Чи є кращий спосіб здійснити переходи між різними діями?


Я давно намагаюся це зробити. На жаль, мій висновок, ви просто не можете. Аніматор ЗАВЖДИ перетворюється на павутинку спагетті, і ми маємо з цим жити. Погляньте на це відео, проте це допомагає youtube.com/…
Nevermind

Відповіді:


9

Ви можете вирішити цю проблему за допомогою BlendTrees (взагалі розумна ідея часто покладатися на дерева, що змішуються). Дерево накладання - це різновид мультианімаційного стану, який на основі параметрів (float) визначає, яка з анімацій, яку він містить, бути активною (або, як результат, анімація може бути сумішшю декількох анімацій). Навіть коли анімації не змішуються, а заміняються, підміна відбувається середньої анімації (тобто, якщо "виходить" анімація становить 35%, нова відтворюється з 35% вперед). Ззовні все це приховано так, ніби це один простий / єдиний стан.

Наприклад, у вас є змішане дерево з 8 спрайтовими анімаціями (в режимі очікування з 4 основними та 4 діагональними напрямками). У цьому дереві суміші є 2 параметри - "горизонтальний" та "вертикальний". І виходячи з цих 2 параметрів дерево суміші вирішить, яку анімацію відтворити. На основі параметра "горизонтальність" дерево змішування вибере між лівою / правою анімацією, а "вертикальний" параметр вирішить анімацію зверху / вниз. Тоді в поєднанні у вас буде всі 8 анімацій з діагоналями (це та сама ідея, що за джойстиками / джойстиками).

введіть тут опис зображення

Це трохи заплутано, навіть якщо StackExchange не любить посилання, я зв'язати короткий приклад відео, яке я зробив. Помітьте верхню праву частину екрана. Сірі крапки - це "стани" / анімації, а активна - ця закривається на червону крапку. Як було сказано на початку, може бути ще складніше, і кожна анімація може мати вплив / силу, виходячи з її відстані до червоної точки, в результаті чого відбувається поєднання декількох анімацій.

Ззовні його лише одне стан (змішане дерево), і коли ви застосовуєте ту саму концепцію для прогулянки та нападу, у вас буде пов'язано лише 3 стани.

Дерева змішань створюються клацанням правою кнопкою миші на порожній області аніматора Створення стану -> З нового дерева суміші. Звідти все в Інспекторі. За допомогою вибраного дерева суміші ви можете вибрати тип дерева суміші (1D, 2D тощо), додати анімацію, розмістити їх (щодо значень параметрів) та вибрати керуючі параметри.

Якщо ви хочете отримати більше інформації про Blend Trees, наступні - це відео з Unity - Unite 2016 та Unity Tutorials .


2

Проблема тут полягає в тому, що ви намагаєтеся зв'язати все разом, а не використовувати тригер для переключення між простоями. Вам слід вибирати неробочу анімацію, використовуючи умовний тип if-else або тип корпусу комутатора. Я створив схему, яка виглядає набагато акуратніше (припустимо, один із них є випадком за замовчуванням):

введіть тут опис зображення

Додаткова інформація:

Погляньте на Параметри анімації про те, як встановити параметри для розпізнавання аніматора, Державні машини для комбінування анімації разом, Поведінки стану машини, як перевірити встановлені вами змінні.


Привіт Джон, але як я насправді це роблю? Чому я б використовував тригер для переключення між простоями або взагалі перемикався між простоями? як я можу вибрати непрацюючий аніматон, використовуючи якщо ще Також на схемі, чому я перейшов би в режим холостого ходу, а потім вліво, а не вліво, і перейшов у режим очікування наступної дії, або це має бути навпаки?
Матас Вайткевічус

@MatasVaitkevicius Ви можете встановити та перевірити змінні в кінці або на початку анімації. Ви можете зробити порожню анімацію, яка нічого не робить, окрім перевірки справи, а потім перенаправити її на наступну частину або зробити з неї шар абстракції. Я включив кілька посилань на посібники для отримання додаткової інформації.
Джон Гамільтон

Тож як мені зробити, якщо інше з параметрами, які перемикали б переходи? Немає прикладу, щоб усі механізми, які ви пов’язали, просто виконували ручний перехід, як я це робив у питанні ....
Матас Вайткевічус

@MatasVaitkevicius Вам слід по-справжньому пошукати спершу: gamedev.stackexchange.com/questions/103611/…
Джон Гамільтон

Але саме так я це зробив. запускає пожежу на дію і запускає анімацію, тоді вона переходить у режим очікування для цього напрямку ... Тепер те, що ви говорите (якщо я вас правильно зрозумів), що я міг після анімації замість того, щоб простою в цьому напрямку, перейти до перемикання механізму, який вибрав би для мене відповідне простою ... але я такого механізму ніде не бачив, чи можете ви скопіювати його у свою відповідь, будь ласка ....
Matas Vaitkevicius
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.