3. diel - 3D strieľačka v Unity - Práca s Asset Store a model zbrane
V minulej lekcii, 3D strieľačka v Unity - Otáčanie kamery pomocou myši , sme sa naučili ovládať pohľad herné postavy pomocou myši, zároveň definovať herný objekt novým spôsobom a pridávať silu v aktuálnom smere osí.
Teraz sa vrhneme na zbrane a streľbu. Aby sme mohli začať so streľbou, potrebujeme modely zbrane.
Unity Asset Store
Vďaka Unity Asset Store máme veľa možností, z ktorých môžeme vyberať. Obchod Unity je plný modelov ako zadarmo, tak aj platených. Budeme ale vyberať pozorne, niektoré zbrane nemusia obsahovať napríklad animácia nabíjania alebo spätného rázu. Ja som nám už pre náš projekt vybral vhodný balík z Asset Store, ktorý je zadarmo, obsahuje všetky animácie a nám sa bude do projektu hodiť. Teraz si ukážeme, ako ho dostať do nášho projektu.
Import balíka z Unity Asset Store
Najskôr zo všetkého klikneme na záložku Asset Store, ktorá sa nachádza hneď vedľa záložky Scene. Následne sa nám zmení okno Scene na okno Unity Asset Store:
Stiahnutí balíčka
Do okna s nápisom Search for assets napíšeme:
Low Poly FPS Pack – Free (Sample)
:
Klikneme na miniatúru obrázku balíčka. Po otvorení uvidíme v pravej časti okna modré tlačidlo Download. Klikneme na neho.
Ak vám balík z Unity nejde stiahnuť, máte ho umiestnený v prílohe tohto článku.
Import balíčka do projektu
Až sa nám balík stiahne, uvidíme modré tlačidlo Import na rovnakom mieste ako pred chvíľou Download. Opäť klikneme. Po chvíľke sa otvorí vyskakovacie okno s nápisom Import Unity Package:
Všetko necháme ako je a klikneme na tlačidlo import, ktoré sa v danom okne nachádza vpravo dole. Následne sa bude balíček nejaký čas importovať do nášho projektu. Po naimportovaní klikneme na záložku Scene a uvidíme zas svoju scénu a projekt.
V záložke Project máme novú zložku s názvom
Low Poly F…
. To je náš importovaná balíček. Dvakrát na
priečinok klikneme:
Obsah balíka
Balík, ktorý sme si stiahli a importovali, obsahuje úplne všetko, čo
potrebujeme a budeme ešte potrebovať k tvorbe FPS strieľačky. Mžete si
otvoriť súbor s názvom Assault_Rifle_01.Demo
, ktorý sa
nachádza v Assets
-> Low Poly FPS PACK
->
Demo_Scenes
-> Weapon_Demo_Scenes
->
Assault_Rifle_01_Demo
. Otvorí sa vám už hotová demo scéna, kde
stačí len stlačiť tlačidlo pre zapnutie hry a môžete hrať. Všetko, čo
je v deme obsiahnuté, je z nášho naimportovaného balíčka. Balíček
obsahuje aj skripty pre pohyb a ovládanie, ktoré ale budeme odstraňovať,
pretože sa učíme programovať vlastné logiku hry a nie ju lepiť z cudzích
skriptov:)
Vloženie objektu z balíčka na scénu
Nás bude zaujímať objekt rukou so zbraňou. Nebudeme vkladať celú postavu hráča, pretože by aj tak nebola z pohľadu prvej osoby našej hry vidieť.
V Hierarchy, v priečinku balíčku, klikneme na Prefabs. Potom na Example_P ... -> Arms -> Assault_Rif .... Zobrazí sa nám miniatúra obrázka a v ňom ruke so zbraňou. Pod ním je nápis Assault_Rif .... Na tento súbor klikneme ľavým tlačidlom myši a držíme, ťaháme myšou so súborom do okienka Hierarchy a následne tlačidlo pustíme. Týmto sa nám súbor presunie na scénu:
Deaktivácia starého hráča (kapsule)
Teraz klikneme na objekt Capsule
a odklikneme štvorček vedľa
kocky:
Týmto úkonom sme deaktivovali daný objekt. Ale nebojte, nerobili sme všetko v minulých lekciách zbytočne. Kapsulu sme robili hlavne kvôli našim skriptom, ktoré môžeme použiť na akýkoľvek objekt.
Odstránenie skriptov
Klikneme na objekt s názvom Assault_Rifle 01 _FPSController, ktorý sa nachádza v záložke Hierarchy. V pravej časti okna sa nám zobrazí záložka Inspector. Uvidíte už predpripravený skript autora balíčka. Skript sa volá Fps Controller LPFP (Script). Tento skript zmažeme a to tak, že klikneme na červeno vyznačenú oblasť na obrázku:
Potom sa rozroluje zoznam činností, ktoré sa skriptom môžeme urobiť, my zvolíme Remove Component. Vďaka tomuto úkonu na našu hru nebude mať tento skript žiadny vplyv.
Rozbalenie Prefab
Stiahnutý objekt hráča je vytvorený ako prefab. V záložke Hierarchy klikneme opäť na objekt Assault_Rifle 01 _FPSController, tentoraz pravým tlačidlom. Rozroluje sa nám menu s možnosťami, kde zvolíme Unpack Prefab Completely. Týmto sa nám zo vzorového objektu, ktorý sme si importovali, stal náš vlastný objekt s vlastnosťami vzorového, ktoré môžeme ľubovoľne meniť:
Umiestnenia hráča na terén
Keď už máme tento objekt rozkliknutí, zmeníme mu polohu, aby sa
nachádzal na teréne. Zmeníme mu súradnice v záložke
Inspector, podzáložka Transform. Súradnice
si zvolíme ľubovoľne. Ja som napríklad zvolil v poradí x, y, z, hodnoty
5
; 1.4
; 5
.
Odstránenie skriptov
Než pripojíme k hernému objektu svojej skripty pre pohyb, musíme vymazať posledný skripty, ktoré objekt má. Klikneme na ľavú šipičku hneď vedľa nášho herného objektu Assault_Rifle 01 _FPSController. Tým sa nám rozbalí podobjektoch, ktoré sú v spojení s naším hlavným objektom Assault_Rifle 01 _FPSController. Po rozbalení klikneme na šipičku podobjektoch Assault_Rifle 01 _Arms. Potom klikneme pravým tlačidlom na objekt nazvaný Player Canvas a vyberieme možnosť Delete:
Akonáhle toto máme hotové, klikneme ľavým tlačidlom na objekt arms_assault_rifle 01 a zmažeme skript umiestnený na tomto objekte. Skript má názov Automatic Gun Script LPFP (Script).
Pretiahnutia objektu na kameru
Posledné, čo potrebujeme urobiť, než budeme môcť aplikovať naše skripty, je kliknúť ľavým tlačidlom na objekt arms_assault_rifle 01 a držať. Objektom ťaháme na miesto objekte Gun Camera (to je kamera nad zbraňou, ktorá už bola v balíčku). Vedľa objektu Gun Camera sa nám ukáže šipička a po kliknutí sa nám ako podobjektoch zobrazí práve ťahaný objekt arms_assault_rifle 01. Až budeme otáčať kameru, bude sa nám s ňou teraz otáčať aj zbraň. Pretože ak otočíme objektom, jeho podobjektoch sa otočí tiež:
Aplikácie našich skriptov na objekt
Máme hotovo, poďme použiť naše skripty na nový objekt a hru sprevádzkovať.
Otáčanie hráča
Ako prvý klikneme na objekt Gun Camera. Ak si spomínate,
na našej kameru sme umiestnili náš skript CameraMove
. Teraz je
Gun Camera našou kamerou, a preto na nej umiestnime náš
skript. Klikneme na tlačidlo Add Component. Do
vyhľadávacieho poľa napíšeme CameraMove
a mali by sme vidieť
náš skript:
Akonáhle skript pridáme, musíme opäť definovať, kto je náš Player. Klikneme na koliesko v pravej časti poľa s nápisom None (Game Object) a vyberieme objekt s názvom Assault_Rifle 01 _FPSController:
Ak si teraz hru spustíme, malo by sa nám dariť otáčať hráčom pomocou
myši. Keďže sme si deaktivovali kapsulu (hráčov), tak sa nám deaktivovala
aj naša stará kamera, ktorá je podobjektoch kapsule. Tým pádom sa nám bude
zobrazovať obraz "natáčaný" novú Gun Camera. Táto kamera bola už v
súbore Assault_Rifle_01_FPSController
.
Pohyb hráča
Teraz už nám zostáva len pohyb hráčov. Klikneme ľavým tlačidlom na
objekt Assault_Rifle 01 _FPSContoller a pridáme mu komponent
(skript) s názvom Move
, ako sme pred chvíľou pridali skript na
otáčanie kamery na Gun Camera. Tento skript nám zabezpečuje
pohyb hráčov. Keďže tento objekt už má na sebe Rigidbody,
nemusíme zariaďovať nič iné, než pridať skript.
Dostali sme sa do stavu ako na začiatku, ale máme nové modely. Všimnite si, že hráč sa pohybuje ako chceme, ale nemáme žiadne animácie, ktoré by naznačovali pohyb.
V budúcej lekcii, 3D strieľačka v Unity - Animácie zbrane pri chôdzi , sa naučíme pracovať s animáciami modelov a pridáme animáciu zbrane pri chôdzi.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 425x (25.06 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#