NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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_FPSCon­troller tak, abychom viděli jednotlivé podobjekty. Klikneme levým tlačítkem na objekt arms_assault_ri­fle01. 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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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:

Tvorba 3D her v Unity

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


 

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
Přeskočit článek
(nedoporučujeme)
3D střílečka v Unity - Ovládání animací
Článek pro vás napsal Tomáš Brabec
Avatar
Uživatelské hodnocení:
38 hlasů
Hodně zdaru programátoři všeho druhu,doufám ,že nikdy nezažijete nudu.
Aktivity