BLACK FRIDAY! Slevy až 80 % jsou všude. Tak je nepropásni a přejdi do rostoucího IT oboru!
BF Sales

Lekce 5 - 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.

Dnes 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, konkrétně 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_Rifle_01_FPSController tak, abychom viděli jednotlivé podobjekty a klikneme levým tlačítkem na objekt arms_assault_rifle_01. Jakmile se nám zobrazí Inspector tohoto objektu, měli bychom vidět 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 a měli bychom se nacházet v záložce Animator.

Ovládání v záložce Animator

V animátoru se pohybujeme pomocí držení kolečka myši a hýbáním myší. Pokud klikneme pravým tlačítkem, zobrazí se nám možnosti, co můžete tvořit, 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

Podívejme se na všechny naše parametry, tedy ty, které máme k dispozici pro animace od autora modelu. Máme zde parametry:

  • Shoot - Střelba,
  • Inspect - Prohlížení si zbraně.

Tyto parametry jsou trigger. To znamená, že je z našeho skriptu můžeme aktivovat a ony spustí animaci. Spustí ji pouze jednou a pak se vrátí do výchozího stavu na rozdíl od dalších parametrů typu bool, které animaci stále opakují. To znamená, že hodnota triggeru bude v tomto případě opět nulová.

Dále zde máme další klasické parametry typu bool, jako jsou:

  • Holster - Pouzdro zbraně,
  • Run - Běh,
  • Aim - Zaměření,
  • Walk - Chůze.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Nastavování Walk jsme si již naprogramovali. Ještě předtím, než budeme moci programovat, musíme nastavit naši animaci pro střelbu.

Tvorba prvního přechodu

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 (to je stav, kdy zbraň jen držíme a stojíme) a pak na možnost Make Transition:

Poté, co jsme klikli na Make Transition, nám z kurzoru vychází "bílé vlákno". Najedeme kurzorem na pozici naší animace Fire 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 plus. Přidá se nám parametr v našem okénku. Necháme jej jak je, jelikož už má jako výchozí hodnotu zvolený parametr Shoot:

Jelikož jsme nastavili podmínku, za jaké se nám spustí 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 modře zvýrazněn. 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 také vypneme Has Exit Time.

Menší vysvětlení animací míření

Animací souvisejících s mířením je více a určitě si žádají alespoň krátké vysvětlení:

  • Aim In je animace, když si hráč jakoby přitahuje zbraň k tělu, aby mohl lépe mířit.
  • Aim Fire je animace výstřelu při míření (když má hráč zbraň blízko u těla).
  • Aim Fire Pose je animace, která následuje po výstřelu, když při něm míříme. Umožňuje nám vystřelit vícekrát za sebou, aniž bychom přestávali mířit.
  • Aim Out je 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 animace míření a výstřelu během míření. Klikneme pravým tlačítkem na animaci Aim in a zas 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 okamžitě co skončí animace Aim in, se spustí animace Aim Fire. Nebo je tu malá šance, že se animace zasekne a nepřepne vůbec.

Parametr nastavíme zas 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 plus. Měl by se zobrazit parametr nazvaný Shoot. Opět vypneme možnost Has Exit Time:

Pokud klikneme na náš parametr Shoot, rozroluje se menu se všemi možnostmi parametrů, které můžeme tomuto přechodu zvolit. Klikneme opět na možnost Shoot. Tímto úkonem jsme nastavili, že jakmile z našeho skriptu aktivujeme parametr Shoot a máme spuštěnou animaci Aim In, tak se nám spustí naše animace pro výstřel během míření, Aim Fire.

Přidání parametru přechodu Aim Fire -> Aim Fire Pose

Nyní potřebujeme ještě nastavit, aby jakmile vystřelíme, byl aktivován přechod mezi Aim Fire a Aim Fire Pose. Zas 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

Poté vytvoříme přechod mezi Aim Fire Pose a Aim Fire. Klikneme pravým tlačítkem na animaci Aim Fire Pose, poté vybereme možnost Make Transition a táhneme myší na místo animace Aim Fire a už jen levým tlačítkem klikneme na animaci Aim Fire. I zde vypneme Has Exit Time. Jakmile to máme, zas pomocí znaménka plus v oblasti Conditions a přidáme i tomuto přechodu parametr Shoot, protože se má spustit jen když střílíme:

Přechod Aim Fire -> Aim out

Nyní musíme vytvořit přechod mezi animacemi Aim Fire (zaměření se střelbou) a Aim out (oddálení zaměřovače) a přidat mu parametr Aim. Tento parametr je typu bool, což znamená, že mu musíme nastavit ještě jestli se má přechod aktivovat jestli je hodnota bool pravdivá nebo nepravdivá. My nastavíme hodnotu na false, protože chceme, aby se nám vypnula animace míření, jakmile přestaneme mířit,. Toto jsme vytvořili z důvodu, že kdybychom vystřelili a pustili pravé tlačítko, tak aby se nám animace Aim Fire nezasekla:

Přechod Walk -> Fire

Teď už nám chybí jen přidat přechod z animace Walk k animaci Fire, abychom mohli střílet, i když jdeme. 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:

Zde to dnes ukončíme. Máme totiž hotové všechny zatím potřebné přechody a na nich dané 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 všechny animace, které chceme. Například prohlédnutí zbraně při stisknutí klávesy "T".


 

Předchozí článek
3D střílečka v Unity - Animace zbraně při chůzi
Všechny články v sekci
Tvorba 3D her v Unity
Článek pro vás napsal Tomáš Brabec
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Hodně zdaru programátoři všeho druhu,doufám ,že nikdy nezažijete nudu.
Aktivity (6)

 

 

Komentáře

Avatar
Dominik Němeček:10. srpna 20:41

Díky za super článěk. :-)

 
Odpovědět
10. srpna 20:41
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Tomáš Brabec
Brigádník
Avatar
Odpovídá na Dominik Němeček
Tomáš Brabec:17. srpna 9:23

Jsem rád, že se článek líbil :)

 
Odpovědět
17. srpna 9:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.