IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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:

Tvorba 3D hier v Unity

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".


 

Predchádzajúci článok
3D strieľačka v Unity - Animácie zbrane pri chôdzi
Všetky články v sekcii
Tvorba 3D hier v Unity
Preskočiť článok
(neodporúčame)
3D strieľačka v Unity - Ovládanie animácií
Článok pre vás napísal Tomáš Brabec
Avatar
Užívateľské hodnotenie:
2 hlasov
Hodně zdaru programátoři všeho druhu,doufám ,že nikdy nezažijete nudu.
Aktivity