Unity - употреба включили анимация (наследство)

Системата за анимация в Unity ви позволява да създадете красиви анимирани герои. Тя поддържа смесване, смесване, добавяне на анимация синхронизация походка цикъл, анимация слоеве, контрол на всички аспекти на възпроизвеждане (време, скорост, тегло смесване) одиране отвори с 1, 2 или 4 костите в горната част, а също и въз основа на парцал кукли физика ( парцалени кукли) и процесуално анимация. За най-добри резултати, се препоръчва да прочетете за практическите подходи и принципи за създаване на герои с оптимална производителност в единство на страница оптимизиран за моделиране герои.

Можете да опитате от примерите, които показват на готовите анимационни герои. По-късно, когато се научиш основните неща, можете да погледнете в описанието на класа Animation.

Смесване анимация

В днешните мачове, анимация смесване е необходима функция, за да се осигури нормалното анимации характер. Аниматори създават отделни анимации, например разходка цикъл, цикъл тече, анимацията при условие почивка или стрелба. Във всеки един момент по време на игра, трябва да могат да отидат с анимацията на спокойствието в цикъл разходка и обратно. Естествено, вие искате да направите този преход е гладка и без резки тласъци в движението.

В този случай, смесване анимация става полезно. В единство може да има произволен брой анимации, които се играят в един и същи знак. Анимацията смесва или прибавя заедно за създаването на крайния анимацията.

Първо се плавен преход между анимации спокойни и пеша. За да се улесни работата на написването на сценария, първо трябва да се промени анимация Wrap режим на Loop. След това е необходимо, за да изключите стартира автоматично, за да се уверите, че никой друг от нашия скрипт няма да играе на анимацията.

Първата ни сценарий за анимация характер е съвсем проста; имаме нужда от начин да се определи скоростта на движение на героя, а след това направи преход между анимации и ходи на почивка. ние ще тества за тази лесна за използване стандартни входни ос: -

За да използвате този скрипт на Вашия проект: -

След като кликнете върху бутона за възпроизвеждане, характера започва да ходи на място, докато държите натиснат стрелка нагоре, и се връща в положение на изчакване, когато го освобождават.

анимационни слоеве

Слоеве е невероятно полезна концепция, която позволява анимация за класифициране и приоритизират тегло.

Unity анимация система може да се слее множество анимации, в зависимост от вашите желания. Можете да зададете на тежести ръчно или просто да използвате animation.CrossFade (). които ще анимирате теглото автоматично.

Тегло смесване винаги се нормализира преди употреба

Да предположим, че имате една разходка цикъл и тичам цикъл с тегло, равно на 1 (100%). Когато Unity генерира крайния анимация, нормализират теглото, т.е. приноса на цикъла на ходене ще бъде 50% от анимацията, както и приноса на писта цикъл и ще бъде 50%.

Обикновено, вие ще искате да се определи кои анимация получава по-голяма тежест, когато загубите две анимации. Разбира се, можете ръчно да се уверите, че теглото добавя до 100%, но това е по-лесно просто да се използва за този слой.

Пример на слоевете

Като пример, можете да използвате стрелбата анимации, очакванията и цикличен разходка. Анимация разходка и очакванията са смесени, в зависимост от скоростта на играча, но когато играчът трябва да стреля, която искате да играете само на изпичане анимацията. Така че, всъщност, стрелят анимация има по-висок приоритет.

Най-лесният начин да направите това е само за да продължи да играе анимации ходят и почивка по време на снимките. За да направите това, трябва да се уверите, че анимацията на снимане е в най-горния слой над анимациите за почивка и разходка, което означава, че анимацията на изпичане ще получите тегло смесване на първо място. Анимация разходка и почивка ще получи теглото само, когато се снима анимация не използва всички 100% от теглото. Така че, когато преходът започва в стрелбата анимации, теглото ще започне от нулата, и за кратко време ще бъде 100%. Първоначално слой от разстояние, а останалите все още ще получите теглото, но когато напълно завършен преходът към анимацията на изпичане - те няма да се теглото на всички. И това е точно това, от което имаме нужда!

По подразбиране animation.Play () и animation.CrossFade () или да спре плавно да се отстрани в един анимация са същия слой. Това е нещо, което се изисква в повечето случаи. В нашия пример, стрелба, мир и бягане, джогинг и игра до края няма да се отрази анимации на снимане, както и обратното (ако е необходимо, това поведение може да се променя по желание функция animation.CrossFade параметър).

Смесване анимация

Смесване анимация ви позволява да намалите броя на анимации, които искате да създадете за играта си. Това се постига от факта, че някои от анимациите засегне само част от тялото. Това означава, че като анимация може да се използва съвместно с други анимация в различни комбинации.

Добавянето трансформация анимация смесване се извършва чрез извикване на метод AddMixingTransform () на разположение AnimationState.

Пример смесване

Като пример за смесване може да доведе до нещо като махна с ръка анимация. Вие може да искате да се направи махна с ръка или когато знакът е в покой, или когато той отива. Без смесване анимации, че ще трябва да се направят някои махна с ръка анимация до състояние на покой и разходка. Но ако добавите трансформацията на раменете като трансформация на смесване в махна с ръка анимация, то ще имате пълен контрол само на раменната става на ръка. От останалата част на тялото, няма да бъдат повлияни от анимация махна с ръка, той ще продължи да играе анимация на почивка или разходка. В резултат на това ще отнеме само една анимация, която да направи ръка маха, докато останалата част от тялото ще използва анимация за почивка или разходка.

Друг пример за използване на пътища.

Добавка (добавка) анимация

Добавка анимация и анимация технология смесване може да се намали общия брой на анимации, които трябва да се създаде за играта си, както и тези техники също са важни за създаване на лицева анимация.

Да предположим, че иска да създаде герой, който е наклонен на една страна по време на завой, когато се ходи или работи. Това води до четири комбинации (отидете-постно наляво-отивам-постно десен навечерието постно наляво, бягай, се наведе и да вдясно), всяка от които се нуждаят от анимация. Създаване на отделна анимация за всяка комбинация, очевидно, води до много допълнителна работа, дори и в този прост случай. Но броят на комбинациите се увеличава с всяка добавена ефект. За щастие, добавяне на анимация и смесване се избягва необходимостта от създаване на отделни анимации за комбинации от прости движения.

Пример добавка анимация

Добавка анимационни ефекти ви позволяват да приложите същата анимация на върха на всички други работещи анимации. Когато генерираната анимация Освен това единство изчислява разликата между първия и текущия кадър анимация клипа. След това разликата ще се прилага на върха на всички останали стават анимирани.

Позовавайки се на предишния пример, бихте могли да създадете анимация за пистите в дясно и от ляво, и единство ще бъде в състояние да ги налагат на разходка цикъл, останалата част или протичане. Това може да се постигне чрез използване на кода, както следва: -

Съвет: При използване на добавки анимация, важно е също така да играе някои други адитивни анимация на всяка трансформация, която се използва и като анимация добавка. В противен случай, анимацията ще бъде добавен в горната част на резултатите от последния кадър. Това не е точно това, което ви трябва.

Процедурни анимационни герои

Понякога трябва да анимирате костите на вашия характер процедурно. Например, искате главата на вашия характер търси в определен момент в 3D пространството. Това действие се постигне най-добре с един скрипт, който проследява целевата точка. За щастие, единството го една много проста задача прави, тъй като костите са просто трансформации, които контролират кожа (кожа на окото). Можете да контролирате костите на героя от сценария, както и трансформации GameObject.

Един от най-важните неща, които трябва да знаете е, че системата за анимация актуализира трансформацията след (функцията за актуализация). и LateUpdate () функция. Ето защо, ако трябва да се обадите функция LookAt (). трябва да го направите в LateUpdate (). уверете се, че всъщност замени анимацията.

Парцалена кукла (Ragdolls) са създадени по същия начин. Ти просто трябва да добавите абсолютно твърдо тяло компоненти, Character ставната капсула колайдер и различните кости. Това ви позволява да създавате анимации на вашия характер въз основа на физика.

Възпроизвеждане и анимация cemplirovanie

В този раздел се говори за това как се случва в Unity анимация за вземане на проби по време на възпроизвеждане на двигателя.

Игри обикновено работят с променлива скорост на кадрите. брой кадри в секунда на вашия компютър може да бъде по-висока от другите, и може също така да варира в зависимост от сложността на оказване на обекти в полезрението на камерата. По принцип, това означава, че не можем да се правят предположения, с честота на кадрите на играта ще работи. Това означава, че дори ако анимацията е създаден за 60 кадъра в секунда, това може да се играе и на други честоти на кадрите - например, 56.72 или 83.14 кадъра в секунда, или нещо такова.

В резултат на това единство трябва да се вземе проба на анимация с различни честоти на кадрите, както и не може да гарантира скоростта на кадрите, на които се създава анимация. За щастие, анимации за 3D графики не се състоят от отделни кадри и на непрекъснати криви. Така че, ако играта осигурява по-голяма скорост на кадрите от скоростта на кадрите на анимацията, анимацията ще изглежда по-гладка в играта, това, което изглеждаше като в анимация софтуер.

За повечето практически приложения, е възможно да се пренебрегне факта, че Unity проби за анимация на плаващия курс рамка. Въпреки това, ако има логика игра, която се основава на анимации, които вдъхват живот на трансформацията и свойства в една много специфична конфигурация - което трябва да знаете, че зад кулисите се използва повторно взимане на проби. Например, ако имате анимация, която се върти на обекта от 0 до 180 градуса в продължение на 30 кадъра, а вие искате да знаете от кода, когато половината е преминал пътя, не трябва да направите това с условен израз в кода, който проверява, че токът въртенето е 90 градуса. От Unity проби анимацията на плаващ курс рамка на играта, пробата може да бъде взето, когато въртенето малко по-малко от 90 градуса, а на следващата проба - когато въртенето малко по-голям от 90 градуса. Ако искате да получите известие, когато в определена точка на анимацията, използвайте бе постигнато AnimationEvent (Анимация събитие).

Също така имайте предвид, че в резултат на плаващ лихвен процент кадър анимация, която се играе с помощта WrapMode.Once. Вземането на проби не може да бъде най-точното време на последния кадър. В една сцена на играта, анимацията може да бъде вземане на проби точно преди края на анимацията, и на следващия кадър, времето би трябвало да върви по дължината на анимацията, след анимацията е забранена, и вече няма да се вземат проби. Ако това е много важно за вас до последния кадър от анимацията извадката точно, използвайте режима WrapMode.ClampForever. който ще продължи да се вземе проба последния кадър за неопределено време, докато не спрете анимацията.