Lekce 6 - 3D střílečka v Unity - Příprava animací
V minulé lekci, 3D střílečka v Unity - Animace zbraně při chůzi, jsme se naučili pracovat s animacemi modelů a přidali jsme animaci zbraně při chůzi.
V dnešním Unity 3D tutoriálu si přidáme přechody mezi animacemi a podmínky, za kterých mohou nastat.
Budeme tak moci ze skriptu zapínat další animace. Budou to animace zbraně při běhu, zpětného rázu, po výstřelu a také schování zbraně, míření a prohlížení zbraně. Pojďme tedy na to.
Příprava parametrů a přechody jednotlivých animací
Nejprve rozbalíme objekt Assault_Rifle01_FPSController
tak, abychom viděli jednotlivé podobjekty. Klikneme levým tlačítkem na
objekt arms_assault_rifle01. Jakmile se nám zobrazí
záložka Inspector tohoto objektu, uvidíme komponentu
Animator. Klikneme dvakrát na obdélník s názvem Controller
s vepsaným textem assault_rifle_01
:
Zobrazí se nám všechny animace záložky Animator.
Ovládání v záložce Animator
V záložce Animator se pohybujeme pomocí držení kolečka myši a hýbáním myši. Pokud klikneme pravým tlačítkem, zobrazí se nám možnosti pro tvorbu, například nový přechod nebo animace. Levým tlačítkem myši si vybíráme jednotlivé animace či přechod, který chceme dále upravovat.
Práce s animacemi
Kliknutím na tlačítko Parameters se přepneme do parametrů. Podívejme se na všechny naše parametry, tedy ty, které máme k dispozici pro animace od autora modelu. Máme zde tyto parametry:
Shoot
- střelba,Inspect
- prohlížení zbraně.
Tyto parametry jsou typu trigger. To znamená, že je z našeho skriptu můžeme aktivovat a ony spustí animaci.
Animace typu trigger spustí animaci pouze
jednou a pak se vrátí do výchozího stavu. Oproti tomu animace typu
bool
se stále opakují.
Dále zde máme další klasické parametry typu bool
, jako
jsou:
Holster
- pouzdro zbraně,Run
- běh,Aim
- zaměření,Walk
- chůze.
Parametr Walk
jsme si již naprogramovali ve skriptu Move.cs.
Ještě předtím, než budeme moci programovat, musíme nastavit přechody mezi
animacemi.
Přechod Idle
->
Fire
Potřebujeme vytvořit přechod (transition) mezi animací
Idle
a Fire
.
Přechody nám umožňují změnit jednu animaci v druhou tak, aby byla změna plynulá.
Přechod vytvoříme kliknutím pravým tlačítkem na animaci
Idle
, která představuje stav, kdy zbraň jen držíme a stojíme.
Pak klikneme na možnost Make Transition:
Poté, co jsme klikli na Make Transition, nám z kurzoru vyjde
bílé vlákno. Najedeme kurzorem na pozici naší animace
Fire
představující střelbu a klikneme levým tlačítkem
přímo na animaci:
Nyní klikneme na bílé vlákno vycházející z animace Idle
směrem k animaci Fire
a deaktivujeme mu možnost Has Exit
Time. Tím animace může být kdykoliv přerušena.
Přidání parametru přechodu
Idle
-> Fire
Nyní přidáme našemu přechodu podmínku na parametr Shoot
.
Díky tomu se přechod aktivuje jen tehdy, když je aktivní tento parametr.
Klikneme levým tlačítkem na přechod z Idle
k Fire
.
Poté se nám ukáží vlastnosti přechodu v záložce Inspector. Zde
můžeme vidět malé okénko s nápisem Conditions (podmínky). V něm
se nám vždy budou ukazovat naše parametry nutné k spuštění přechodu. My
zde klikneme na tlačítko se znaménkem +. Do okénka se nám přidá
parametr. Necháme jej jak je, jelikož už má jako výchozí hodnotu zvolený
parametr Shoot
:
Jelikož jsme nastavili podmínku pro spuštění animace pro střelbu, můžeme ji pomocí parametrů už jednoduše vyvolat ze skriptu. To si ale ukážeme až dále v kurzu.
Vybraný přechod je vždy na obrázku zvýrazněn modře .
Toto zvýraznění dělá samotný Unity Editor. Šipka na vláknu vždy
naznačuje, jaký směr má daný přechod. U přechodu z Fire
směrem k Idle
odškrtneme Has Exit Time.
Animace míření zbraně
Animace souvisejících s mířením zbraně jsou následující:
Aim In
- přitáhnutí zbraně k tělu pro přesnější míření,Aim Fire
- výstřel,Aim Fire Pose
- po výstřelu, když po něm míříme. Umožňuje nám vystřelit vícekrát za sebou, aniž bychom přestávali mířit.Aim Out
- oddálení zbraně od těla, kdy se hráč vrátí z mířící pozice zpět.
Pojďme si nastavit přechody mezi těmito animacemi.
Přechod Aim in
->
Aim Fire
Nyní přejdeme na animaci míření Aim In
a výstřelu
Aim Fire
. Klikneme pravým tlačítkem na animaci
Aim in
a zvolíme možnost Make Transition. Myší
táhneme na místo animace Aim Fire
a klikneme na ni levým
tlačítkem. Tímto jsme si vytvořili přechod mezi
těmito animacemi.
Nyní opět musíme přidat podmínku na parametr, za které
se nám změní animace. Kdybychom nechali přechod bez podmínek, tak po
ukončení animace Aim in
by se spustila animace
Aim Fire
.
Parametr nastavíme kliknutím na přechod mezi animacemi
Aim in
a Aim Fire
, které jsme vytvořili. V záložce
Inspector, v kolonce s názvem Conditions, vždy
uvidíme všechny parametry (podmínky) rozkliknutého
(označeného) přechodu. Opět přidáme novou podmínku tlačítkem
+. Zobrazí se parametr nazvaný Shoot
. Opět odklikneme
možnost Has Exit Time:
Pokud klikneme na parametr Shoot
, rozroluje se menu se všemi
možnostmi parametrů, které můžeme k tomuto přechodu zvolit. Klikneme opět
na možnost Shoot
. Tímto úkonem jsme nastavili parametr
Shoot
. Pokud z našeho skriptu aktivujeme tento parametr a
zároveň máme spuštěnou animaci Aim In
, spustí se animace
Aim Fire
pro výstřel během míření.
Přechod Aim Fire
->
Aim Fire Pose
Nyní potřebujeme nastavit, aby po výstřelu byl aktivován přechod mezi
Aim Fire
a Aim Fire Pose
. Klikneme levým tlačítkem
na přechod mezi Aim Fire
a Aim Fire Pose
. Do kolonky
Conditions přidáme nový parametr Shoot
a vypneme možnost Has Exit Time:
Přechod Aim Fire Pose
-> Aim Fire
Dalším přechodem je přechod mezi Aim Fire Pose
a
Aim Fire
. Klikneme pravým tlačítkem na animaci
Aim Fire Pose
. Vybereme možnost Make Transition a
táhneme myší na místo animace Aim Fire
. Levým tlačítkem
klikneme na animaci Aim Fire
. I zde vypneme Has Exit Time.
Jakmile to máme, pomocí znaménka plus v oblasti Conditions přidáme
tomuto přechodu parametr Shoot
, protože se má
spustit jen když střílíme:
Přechod Aim Fire
->
Aim out
Posledním přechodem animace zbraně bude přechod mezi animacemi
Aim Fire
(zaměření se střelbou) a Aim out
(oddálení zaměřovače). Přechodu přidáme parametr
Aim
. Tento parametr je typu bool
, musíme mu tedy
nastavit, kdy se má aktivovat. My mu nastavíme aktivaci při hodnotě
false
, tedy nastavíme hodnotu na false
, aby se
animace míření vypnula, jakmile přestaneme mířit:
Přechod Walk
->
Fire
Teď už nám chybí jen přidat přechod z animace Walk
k
animaci Fire
, abychom mohli střílet při chůzi. Klikneme pravým
tlačítkem na animaci Walk
a vybereme možnost Make
Transition. Táhneme myší na místo animace Fire
a klikneme
na tuto animaci. Poté klikneme na tento přechod levým tlačítkem. Měla by
se nám zobrazit záložka Inspector. Najdeme okénko
Conditions a přidáme, kliknutím na tlačítko se znaménkem
plus, parametr Shoot
. Deaktivujte mu možnost Has Exit
Time:
To je pro dnešní lekci vše. Máme hotové všechny zatím potřebné přechody a na nich vázané podmínky na parametry.
V příští lekci, 3D střílečka v Unity - Ovládání animací, si upravíme náš skript Move.cs
tak, aby ovládal naše animace, např. prohlédnutí zbraně.