5. diel - 3D strieľačka v Unity - Príprava animácií
V minulej lekcii, 3D strieľačka v Unity - Animácie zbrane pri chôdzi , sme sa naučili pracovať s animáciami modelov a pridali sme animáciu zbrane pri chôdzi.
Dnes si pridáme prechody medzi animáciami a podmienky, za ktorých môžu nastať. Budeme tak môcť zo skriptu zapínať ďalšie animácie, konkrétne animácie zbrane pri behu, spätného rázu po výstrele a tiež schovanie zbrane, mierenie a prezeranie zbrane. Poďme teda na to.
Príprava parametrov a prechody jednotlivých animácií
Najprv rozbalíme objekt Assault_Rifle_01_FPSController
tak, aby
sme videli jednotlivé podobjektoch a klikneme ľavým tlačidlom na objekt
arms_assault_rifle_01
. Akonáhle sa nám zobrazí
Inspector tohto objektu, mali by sme vidieť komponent
Animator. Klikneme dvakrát na obdĺžnik s názvom
Controller s vpísaným textom
assault_rifle_01
:
Zobrazí sa nám všetky animácie a mali by sme sa nachádzať v záložke Animator.
Ovládanie v záložke Animator
V animátore sa pohybujeme pomocou držania kolieska myši a hýbáním myšou. Ak klikneme pravým tlačidlom, zobrazí sa nám možnosti, čo môžete tvoriť, napríklad nový prechod alebo animácia. Ľavým tlačidlom myši si vyberáme jednotlivé animácie či prechod, ktorý chceme ďalej upravovať.
Práca s animáciami
Pozrime sa na všetky naše parametre, teda tie, ktoré máme k dispozícii pre animácie od autora modelu. Máme tu parametre:
Shoot
- Streľba,Inspect
- Prehliadanie si zbrane.
Tieto parametre sú trigger. To znamená, že je z nášho
skriptu môžeme aktivovať a ony spustí
animáciu. Spustí ju iba raz a potom sa vráti do východzieho
stavu na rozdiel od ďalších parametrov typu bool
, ktoré
animáciu stále opakujú. To znamená, že hodnota triggeru
bude v tomto prípade opäť nulová.
Ďalej tu máme ďalšie klasické parametre typu bool
, ako
sú:
Holster
- Puzdro zbrane,Run
- Beh,Aim
- Zameranie,Walk
- Chôdza.
Nastavovanie Walk
sme si už naprogramovali. Ešte predtým,
než budeme môcť programovať, musíme nastaviť našu animáciu pre
streľbu.
Tvorba prvého prechodu
Potrebujeme vytvoriť prechod (transition) medzi animácií Idle
a Fire
. Prechody nám umožňujú zmeniť jednu animáciu v druhú
tak, aby bola zmena plynulá. Prechod vytvoríme kliknutím pravým tlačidlom
na animáciu Idle
(to je stav, keď zbraň len držíme a stojíme)
a potom na možnosť Make Transition:
Potom, čo sme klikli na Make Transition, nám z kurzora
vychádza "biele vlákno". Prejdeme kurzorom na pozíciu našej animácie
Fire
a klikneme ľavým tlačidlom priamo na animáciu:
Teraz klikneme na biele vlákno vychádzajúce z animácie Idle
smerom k animácii Fire
a deaktivujeme mu možnosť Has
Exit Time. Tým animácie môže byť kedykoľvek prerušená.
Pridanie parametra prechodu
Idle
-> Fire
Teraz pridáme nášmu prechodu podmienku na parameter Shoot
.
Vďaka tomu sa prechod aktivuje len vtedy, keď je aktívna tento parameter.
Klikneme ľavým tlačidlom na prechod z Idle
k Fire
.
Potom sa nám ukážu vlastnosti prechodu v záložke
Inspector. Tu môžeme vidieť malé okienko s nápisom
Conditions (podmienky). V ňom sa nám vždy budú ukazovať
naše parametre potrebné na spustenie prechodu. My tu klikneme na tlačidlo so
znamienkom plus. Pridá sa nám parameter v našom okienku. Necháme ho ako je,
pretože už má ako predvolenú hodnotu zvolený parameter
Shoot
:
Keďže sme nastavili podmienku, za aké sa nám spustí animácia pre streľbu, môžeme ju pomocou parametrov už jednoducho vyvolať zo skriptu. To si však ukážeme až ďalej v kurze.
Vybraný prechod je vždy na obrázku modro zvýraznený. Toto zvýraznenie
robí samotný Unity Editor. Šípka na vlákne vždy
naznačuje, aký smer má daný prechod. U prechodu z Fire
smerom k
Idle
tiež vypneme Has Exit Time.
Menšie vysvetlenie animácií mierenie
Animácií súvisiacich s mierením je viac a určite si žiadajú aspoň krátke vysvetlenie:
Aim In
je animácia, keď si hráč akoby priťahuje zbraň k telu, aby mohol lepšie mieriť.Aim Fire
je animácia výstrelu pri mierení (keď má hráč zbraň blízko pri tele).Aim Fire Pose
je animácia, ktorá nasleduje po výstrele, keď pri ňom mierime. Umožňuje nám vystreliť viackrát za sebou, bez toho aby sme prestávali mieriť.Aim Out
je oddialenie zbrane od tela, kedy sa hráč vráti z mieriace pozície späť.
Poďme si nastaviť prechody medzi týmito animáciami.
Prechod Aim in
->
Aim Fire
Teraz prejdeme na animácie mierenie a výstrelu počas mierenie. Klikneme
pravým tlačidlom na animáciu Aim in
a zas zvolíme možnosť
Make Transition. Myšou ťaháme na miesto animácie Aim Fire
a
klikneme na ňu ľavým tlačidlom. Týmto sme si vytvorili
prechod medzi týmito animáciami. Teraz opäť musíme pridať
podmienku na parameter, za ktoré sa nám zmenia animácia.
Keby sme nechali prechod bez podmienok, tak okamžite čo skončí animácia
Aim in
, sa spustí animácia Aim Fire
. Alebo je tu
malá šanca, že sa animácia zasekne a neprepne vôbec.
Parameter nastavíme zas kliknutím na prechod medzi
animáciami Aim in
a Aim Fire
, ktoré sme vytvorili. V
záložke Inspector, v kolónke s názvom
Conditions, vždy uvidíme všetky parametre
(podmienky) rozkliknutého (označeného) prechodu. Opäť pridáme
novú podmienku tlačidlom plus. Mal by sa zobraziť parameter nazvaný
Shoot
. Opäť vypneme možnosť Has Exit Time:
Ak klikneme na náš parameter Shoot
, rozroluje sa menu so
všetkými možnosťami parametrov, ktoré môžeme tomuto prechodu zvoliť.
Klikneme opäť na možnosť Shoot
. Týmto úkonom sme nastavili,
že akonáhle z nášho skriptu aktivujeme parameter Shoot
a máme
spustenú animáciu Aim In
, tak sa nám spustí naše animácie pre
výstrel počas mierenie, Aim Fire
.
Pridanie parametra
prechodu Aim Fire
-> Aim Fire Pose
Teraz potrebujeme ešte nastaviť, aby akonáhle vystrelíte, bol aktivovaný
prechod medzi Aim Fire
a Aim Fire Pose
. Zas klikneme
ľavým tlačidlom na prechod medzi Aim Fire
a
Aim Fire Pose
, do kolónky Conditions pridáme
nový parameter Shoot
a vypneme možnosť Has Exit
Time:
Prechod Aim Fire Pose
-> Aim Fire
Potom vytvoríme prechod medzi Aim Fire Pose
a
Aim Fire
. Klikneme pravým tlačidlom na animáciu
Aim Fire Pose
, potom vyberieme možnosť Make
Transition a ťaháme myšou na miesto animácie Aim Fire
a už len ľavým tlačidlom klikneme na animáciu Aim Fire
. Aj tu
vypneme Has Exit Time. Akonáhle to máme, zas pomocou
znamienka plus v oblasti Conditions a pridáme aj tomuto
prechodu parameter Shoot
, pretože sa má spustiť
len keď strieľame:
Prechod Aim Fire
->
Aim out
Teraz musíme vytvoriť prechod medzi animáciami Aim Fire
(zameranie sa streľbou) a Aim out
(oddialenie zameriavača) a
pridať mu parameter Aim
. Tento parameter je typu
bool
, čo znamená, že mu musíme nastaviť ešte či sa má
prechod aktivovať či je hodnota bool
pravdivá alebo nepravdivá.
My nastavíme hodnotu na false
, pretože chceme, aby sa nám vypla
animácie mierenie, akonáhle prestaneme mieriť ,. Toto sme vytvorili z
dôvodu, že keby sme vystrelili a pustili pravé tlačidlo, tak aby sa nám
animácie Aim Fire
nezasekla:
Prechod Walk
->
Fire
Teraz už nám chýba len pridať prechod z animácie Walk
k
animácii Fire
, aby sme mohli strieľať, aj keď ideme. Klikneme
pravým tlačidlom na animáciu Walk
a vyberieme možnosť
Make Transition. Ťaháme myšou na miesto animácie
Fire
a klikneme na túto animáciu. Potom klikneme na tento prechod
ľavým tlačidlom. Mala by sa nám zobraziť záložka
Inspector. Nájdeme okienko Conditions a
pridáme, kliknutím na tlačidlo so znamienkom plus, parameter
Shoot
. Deaktivujte mu možnosť Has Exit Time:
Tu to dnes ukončíme. Máme totiž hotové všetky zatiaľ potrebné prechody a na nich dané podmienky na parametre.
V budúcej lekcii, 3D strieľačka v Unity - Ovládanie animácií , si upravíme náš skript Move.cs
tak, aby ovládal všetky animácie, ktoré chceme. Napríklad prezretí zbrane
pri stlačení klávesy "T".