Hrátky s Unreal Engine Část V: Trocha pohybu neškodí
Článek Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Aleš Ulm

Aleš Ulm

16. 7. 2010 03:00 27

Pátý díl seriálu o Unreal Development Kitu se tentokrát zaměří na další podstatnou součást balíku a tou je animační editor Matinee. Díky němu můžete rozpohybovat všechny možné i nemožné objekty a ze statických scén udělat zase něco o krůček víc profesionálního. Začneme s jednoduchými pohyby cíle a postupně náš záběr rozšíříme.

Reklama
Reklama

První díl série Hrátky s Unreal Engine - Část I: První krok do nereálna najdete zde.
Druhý díl Hrátky s Unreal Engine - Část II: Příběh dvou místností najdete zde.
Třetí díl Hrátky s Unreal Engine Část III: Konec modrobílých kachlíků najdete zde.
Čtvrtý díl Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet najdete zde 
Pátý díl Hrátky s Unreal Engine Část V: Trocha pohybu neškodí najdete zde
Šestý díl Hrátky s Unreal Engine VI: Kamera, akce, jedem… najdete zde
Sedmý díl Hrátky s Unreal Engine VII: Klid před bouří najdete zde

V minulém díle jsme se poprvé podívali na zoubek Kismetu a v naší úrovni se začalo konečně dít něco zajímavého. Připravili jsme si primitivní obdobu cíle pro střelbu a ten pak vesele likvidovali. Bohužel jsme už poměrně brzy narazili na zásadní problém a totiž to, že nám tak nějak chyběly animace. Nebylo by fajn, kdyby se náš cíl pohyboval úrovní tak, jak je to obvyklé na střelnicích? Kdyby po zásahu nezmizel, ale efektně se složil k zemi? A protože odpověď na tyhle otázky je celkem jasná, máme v tomto díle stejně jasný úkol – připravit nějaké vlastní animace, což znamená seznámit se s animačním editorem

Matinee

.

Matinee je poměrně mocný nástroj, který má dost široké možnosti využití – od úplně základního rozpohybování modelů v úrovni až po připravení komplexní cutscény. Aby však nedošlo k omylu, musíme si nejdříve říci, o jakých animacích to vlastně mluvíme. I když se to tak na první pohled může zdát, tento animační editor neslouží jen k animování pohyblivých objektů. Animovat, tedy nějakým způsobem upravovat v čase, tu lze opravdu podstatně více vlastností objektů než pouze jejich pozici a rotaci. Co třeba měnit průběžně chování emitoru částic? Barvu světla? Jednotlivé klipy ve kterých animujete, můžete pouštět z Kismetu a naopak z klipů můžete spouštět akce, které si v Kismetu připravíte. S Matinee je prostě radost pracovat.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí


Výherce 4. místa v soutěži Make Something Unreal Contest - třtí fáza, kategorie: Best New Character Customization Pack

Začneme… od začátku. Vytvořením nového klipu Matinee. Protože s klipem se pracuje v rámci Kismetu, tam ho také vytvoříme. Otevřete si editor Kismet (pokud náhodou nevíte jak, zkuste si projít předchozí díl). Do volného místa klikněte pravým tlačítkem myši a zvolte New Matinee. Jsme na dobré cestě něčím pohnout – váš první klip je totiž na světě. Zkuste schválně vytvořit o kousek vedle ještě jeden. Když teď v editoru kliknete na ikonu filmové klapky (Open UnrealMatinee), uvidíte seznam existujících klipů – v tuto chvíli tedy naše dva. Bohužel se skrývají za poměrně obludnými jmény, které by vám později, až budete mít klipů výrazně více, rozhodně orientaci neusnadnili. Na to však existuje jednoduché řešení, které se nám navíc bude hodit i jinde.

V Kismetu označte váš klip a podívejte se do jeho vlastností. Naleznete tam položku Obj Comment. Zkuste tam vepsat třeba Otoceni desky. Jakmile zmáčknete enter, objeví se tento text nad objektem klipu v Kismetu. Toto pole, tedy komentář k danému objektu, mají všechny objekty, které v Kismetu vytvoříte (tedy i ty, se kterými jsme pracovali minule). Když ho vyplníte, komentář se vypíše nad příslušným objektem a vše je rázem přehlednější. Když pracujete s klipy Matinee, objevují se u nich právě tyto komentáře. Zkuste teď znovu kliknout na režijní klapku. Vidíte? U jednoho z klipů přibyl náš popis a hned se s ním bude pracovat lépe. Byla by škoda nezmínit ještě jednu zásadní vychytávku, kterou tyto komentáře umožňují. Protože UDK ve svém základu neumožňuje za běhu programu sledovat, jaká část kódu se právě provádí, jakou má která proměnná právě hodnotu atp., je nejjednodušším způsobem, jak mít alespoň zásadní představu o tom, co se děje uvnitř programu, vypisování textů na obrazovku (slyšíte ty rány? To se programátoři jali tlouct hlavami do zdi). Později se v Kismetu a samozřejmě hlavně v tom „opravdovém“ skriptování dostaneme k vytváření nejrůznějších podmínek a stavů, kde je tento postup víceméně nutný, ale využití najde i v podstatně jednodušších případech. Třeba v minulém díle – střelili jste do terče a on nezmizel? Možná jste v Kismetu udělali chybu, možná někde zapomněli napojit nějakou vazbu… ale kde? A v tuhle chvíli přichází právě ta zmiňovaná vychytávka. V nastavení objektu v Kismetu je pod položkou obsahující námi vepsaný komentář ještě zaškrtávátko nazvané Output Obj Comment To Screen. Pokud ho zaškrtnete a tento objekt má vyplněný nějaký komentář, zobrazí se tento text na obrazovce v momentě, kdy do něj program vstoupí. Tak můžete snadno zjistit, kam až program „došel“ a tam zjišťovat, proč nepokračoval dál tam, kam měl.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Ale zpět k našemu klipu. Otevřete ho buď jeho výběr ze seznamu vyvolaného tlačítkem s klapkou nebo double clickem na jeho objekt v Kismetu. Jako obvykle se nás nové prostředí pokusí k smrti vyděsit přehršlí různých tlačítek a oken, ale protože jsme přece jen s UDK už leccos zažili, tak většina z nás zůstala jen u lehkého zalapání po dechu a je připravena začít s novým prostředím zápasit (těch, kteří po otevření Matinee dostali infarkt, je nepochybně pouze zanedbatelné množství). Nicméně legrace stranou – prostředí Matinee vám bude tím povědomější, čím větší máte zkušenosti s jakýmkoliv animačním programem.

Jako obvykle se musíme ještě před tím, než začneme opravdu pracovat, o něčem nepatrně poučit. A to o tom, že statický model, nemusí být vždy statický. V Matinee dnes začneme animováním upraveného modelu kostky. Je to stejná kostka, jakou jsme použili už v minulém díle (případně použijte přímo vámi vytvořené objekty z minulého dílu). A stejně jako v minulém díle, ji musíme do scény vložit poměrně specifickým způsobem. Uživatelé UDK dělají poměrně často tu chybu, že nadšeni z jednoduchosti, s jakou se dá leccos přetáhnout z Content Browseru, často vezmou statický model, „pustí“ ho do scény a pak jsou překvapeni, že se nechová tak, jak by měl. To proto – a minule už jsme to nakousli – že takhle vložený statický model považuje engine za model skutečně statický. Na druhou stranu pokud statický model vložíme jako druh objektu (třídu) InterpActor, engine u takového modelu počítá s tím, že se může hýbat a že s ním jde vůbec dělat lecjaká neplecha. Celkem častá otázka pak zní, proč je to tak komplikované. Proč musíme dopředu enginu říkat, jestli se model bude hýbat nebo ne. Důvodů je víc, ale ten hlavní je výkon. Engine musí každý frejm zkontrolovat obrovské množství věcí. Čím kvalitnější engine je, tím více toho „stíhá“ a tím více objektů (a komplexnějších) může ve hře být, než se její běh zpomalí za hranici únosnosti. Engine je rád za jakékoliv usnadnění práce, které mu poskytnete. S objekty, o kterých ví, že se jejich tvar ani pozice v čase nemůže změnit, je schopný pracovat podstatně rychleji a lépe, než s těmi, u kterých musí provádět nejrůznější kontroly a propočty.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Takže se pustíme do animovaní. Protože na straně jedné někteří z vás již mají za sebou nějaké vlastní animované pokusy v Maxu či Maye a jiní, na straně druhé, nemají sebemenší tušení, co je to například klíč, vezmu to zlatou střední cestou a tedy základy animování v textu zmíním, ale opravdu jen bleskově.


Začneme tím, že necháme náš cíl z minulého dílu přejíždět místností z jedné strany na druhou. Označte v úrovni objekt, který chcete animovat. Pokud nemáte otevřený editor Matinee, otevřete ho tak, jak bylo popsáno výše. Klikněte pravým tlačítkem myši do tmavěšedé oblasti v levé části Matinee a vyberte Add New Empty Group. Tím vytvoříte novou prázdnou skupinu, kterou pojmenujte třeba JizdaCile. Skupina je určitý logický celek, který sdružuje různé tracky (stopy). Tím se nám vkradl do našeho textu další neznámý pojem a proto si bleskově vysvětlíme, na jakém základě tento (a většina ostatních) animačních editorů funguje.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Animační editor pracuje s objekty, jako je třeba náš cíl. Přestože jsme si řekli, že animování neznamená jen pohyb v prostoru, použijeme teď pohyb jako příklad. Představte si, že chcete, aby se náš cíl na začátku animace nacházel v jednom z rohů místnosti. Tam zůstal vteřinu a pak se dalších pět sunul do rohu protilehlého. Aby tohle engine s naším objektem udělal, musíme mu jasně ukázat, kde se má objekt v jaký čas nacházet. Na časové ose uděláme tzv. klíč – bod v čase, u kterého je uvedeno (mimo jiné), kde se objekt v tuto chvíli nachází. Když se pak naše animace začne přehrávat, engine začne přepočítávat pozici objektu vždy mezi dvěma sousedními klíči. Představte si náš příklad – do bodu 0.00 (tzn. v čase nula sekund – tedy na začátku animace) umístíme klíč, ve kterém má objekt pozici v rohu 1. Na pozici 6.00 (tedy do šesté sekundy animace) umístíme klíč, ve kterém se objekt nachází v rohu 2. Když pak animaci pustíme, objekt vyjede z rohu jedna, v polovině času bude přesně napůl cesty mezi oběma rohy a po šesti sekundách zastaví v rohu druhém. A co to úvodní vteřinové čekání, které jsme chtěli? Prostě do času 1.00 umístíme klíč se stejnými hodnotami, jako má klíč v bodě 0.00. Když se animace pustí, engine bude v první vteřině „přepočítávat“ pozici objektu mezi prvním a druhým klíčem a protože mají identické hodnoty pozice, objekt se nepohne. Teprve mezi druhým a třetím klíčem se objekt rozjede. To je v kostce podstata základů animování. Stejně si to můžete představit třeba u animování průhlednosti objektu nebo jeho jiných vlastností. K animování by se toho dalo napsat podstatně víc (těhle pár řádek z vás excelentní animátory nejspíš neudělá), ale na to jsou za prvé podstatně povolanější uživatelé, než jsem já a za druhé bychom už zabíhali zbytečně do hloubky. Pokud by vás animování snad zaujalo více a zajímalo vás třeba jak dosáhnout při animaci zpomalování či zrychlování při rozjezdu nebo nebo dojezdu animace, nebo jak získat obecně větší kontrolu nad jejím průběhem, podívejte se na tutoriál k jakémukoliv animačnímu programu. Základy, které se tam dočtete (tedy kontrolování interpolace pomocí křivek, jejich nastavování pomocí tangent atp.) v Matinee nepochybně zúročíte.

Takže jsme vytvořili skupinu, do které můžeme vkládat jednotlivé stopy (v našem případě bude zatím jedna) obsahující klíče, na základě kterých bude engine v čase měnit různé vlastnosti objektu (v našem případě pozici). To, že jsme měli v momentě vytváření skupiny označený náš objekt cíle, nebylo náhodou – editor teď ví, jaký objekt bude v této stopě animovat. Že tomu tak je, vyzkoušíte snadno. Klikněte někam do scény, aby se zrušil výběr našeho objektu. Pak klikněte na skupinu JizdaCile, kterou jsme před chvíli vytvořili a náš objekt by se měl sám znovu vybrat.

Protože u objektu budeme animovat jeho pohyb, musíme v této skupině vytvořit pohybovou stopu. Klikněte proto pravým tlačítkem na naši skupinu a vyberte Add New Movement Track.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Pojďme se teď trochu v Matinee zorientovat. Síť obdélníků, které vidíte v jeho horní části, nás teď nebude zajímat – tam se později přesunou ti zkušenější z vás, aby si animace detailněji dolaďovali podle svého gusta pomocí zmíněných křivek. Nás zajímá spíše časová osa pod ní. Když zmáčknete tlačítko myši a pojedete s ním po číslech 0.00,0.50,1.00, budete se přesouvat v čase animace a pokud bychom už měli něco naanimovaného, mohli byste jednoduše „přehrávat“ animaci libovolnou rychlostí i směrem. Pokud vám zobrazený výřez časové osy nestačí, můžete ho posouvat tažení myši v oblasti nad vypsanými časy, nebo výřez zvětšovat či zmenšovat kolečkem myši.


Teď si vytvoříme klíče, které budeme potřebovat. Řekněme, že začneme u jedné stěny a cíl necháme šest vteřin jet ke stěně druhé. Klíč v čase 0 připraví vždy engine sám – to je ten tmavě červený trojúhelník v čase nula na pohybové stopě. Přesuňte ukazatel času na šestou vteřinu (abyste s ukazatelem pohybovali přesněji, můžete si zapnout funkci Snap). Máme tu ale hned drobný problém. Editor vás s ukazatelem nepustí za pátou sekundu animace. To proto, že standardně vytvořil stopu dlouhou pět vteřin. Snadno ji zvětšíte tak, že chytnete myší světle červený trojúhelník označující konec stopy a tažením délku stopy zvětšíte nebo zmenšíte. Dejte si ale pozor. Tímto krokem nastavujete, jak dlouhá bude stopa (resp. klip) bez ohledu na jeho obsah. Pokud byste například nastavili délku stopy na osm vteřin a v něm připravili jen šest vteřin dlouhou animaci pohybu, engine bude animaci považovat za skončenou po těch osmi vteřinách. To může způsobit nesprávné chování, pokud si například nastavíte nějakou akci tak, aby se pouštěla po dohrání vaší animace – v tomto případě by se pustila až dvě vteřiny poté, co by na obrazovce vaše animace dojela.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Když máte ukazatel na šesté vteřině (zkontrolujte si to podle zelených čísel na levé straně editoru Matinee) a vybranou pohybovou stopu, vytvořte klíč buď pomocí ikony vlevo nahoře (Add Key) nebo zmáčknutím klávesy enter. Tím máme dva klíče – první (vytvořený automaticky) a poslední. Teď jim musíme přiřadit hodnoty – tedy říct, na jaké pozici se v nich má náš objekt nacházet. Klikněte myší na první klíč a pak do scény na objekt. V levém dolním rohu obrazovky byste měli vidět Adjust Key 0 (v textu zmiňuji sice první a druhý klíč, nicméně engine počítá klíče od nuly, takže z jeho pohledu jsou to klíče 0 a 1). Tím nám říká, že mu máme ukázat, jakou hodnotu animované vlastnosti (v našem případě polohy) má objekt v tomto časovém bodě. Proto ve scéně vezmeme náš objekt a posuneme ho k jedné ze stran místnosti. Pak označíme druhý klíč (text na obrazovce se změní na Adjust Key 1) a stejným způsobem ho posune na stranu opačnou. Pokud jste vše udělali správně, uvidíte ve scéně žlutou trasu objektu, která znázorňuje, jak se bude animovat.

Když teď zkusíte tahat myší po časové ose, měli byste vidět, jak se animovaný objekt pohybuje. Pokud pohyb nevidíte, zkontrolujte, zda máte v editoru zapnutý Real Time Mode (viz minulý díl). Zapnout ho můžete buď příslušnou ikonou nebo pomocí klávesové zkratky CTRL-R. Pokud chcete animaci teď pro test pustit, použijte tlačítka pro přehrávání v horní části editoru (Play) nebo klávesu space když je okno editoru Matinee aktivní.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

A je to! Máme hotovou první animaci. Teď jak ji ještě pustit… V Kismetu vytvořte Event typu Level Startup, který se zavolá při startu úrovně. Jeho výstup propojte se vstupem Play námi vytvořeného klipu Matinee a spusťte hru. Cíl se rozjede od jedné stěny ke druhé, kde už ale zůstane. To není přesně to, co bychom chtěli. Kdybychom teď ve vlastnostech našeho klipu v Kismetu zaškrtnuli položku Looping, animace by se zacyklila. Cíl by dojel k protější stěně a animace by se pustila znovu, takže by se vlastně dostal skokem zpět, odkud by znovu vyjel. Pokud chcete, můžete si to vyzkoušet, ale uvidíte, že to také není ono. Správně bychom měli vytvořit druhou animaci, ve které by cíl jel obráceně, z výstupu Completed prvního klipu vytvořit spojení do vstupu Play klipu druhého a z jeho výstupu Completed spojení do vstupu Play klipu prvního. Tím bychom docílili toho, že po dokončení přehrávání každého z klipů, by se pustil od začátku klip druhý. To je ale zbytečná práce navíc, protože UDK má jako obvykle připraveno nějaké to zjednodušení.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Z výstupu Completed (tedy toho, odkud bude engine pokračovat po dokončení klipu) vytvořte spojení do vstupu Reverse toho samého klipu. Tento vstup donutí engine přehrát klip pozpátku. A aby se kruh uzavřel, vytvořte spojení z výstupu Reversed (to samé co Completed, ale v případě, že je klip přehráván pozpátku) do vstupu Play. Takže postup teď bude spuštění úrovně → přehrání klipu → dokončení přehrávání → přehrání klipu pozpátku → dokončení přehrávání klipu pozpátku → přehrání klipu atd. atd.

Pusťte hru. Vidíte? Přesně tohohle jsme chtěli dosáhnout! No řekněte, nebyla to zábava? Jestli jste zvyklí se za dobře odvedenou práci poplácat po zádech nebo se dojít pochlubit rodičům/přítel­kyni/domácímu zvířectvu/náhodným kolemjdoucím, tak teď je ta správná chvíle, protože jste si vedli opravdu výborně…


Co ještě navíc předvést trochu vlastní invence? Dokázali byste nechat cíl stát u každé ze stěn třeba vteřinu? Jsou nejméně dva způsoby jako toho docílit. Pokud to nezvládnete, nápovědu naleznete v obrázku. A nebo ještě složitěji – co nechat u každé stěny náš cíl čekat nějakou náhodně určenou dobu? Všechny tohle byste měli být schopní (s pomocí minulého dílu) dokázat…

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Stejně tak by pro vás mělo být jednoduché donutit desku, aby po zásahu padla na podlahu a po čase se zvedla. Můžete to zkusit sami, dám vám jen pár rad. Předně si (zvlášť pokud začínáte s čistou úrovní) přečtěte minulý díl, protože jinak se snadno zaseknete na něčem, co jste zapomněli zapnout či nastavit – i když díky vypisování půběhu akcí v Kismetu, které jsme se dnes naučili, by mělo být lehké takový problem odhalit. Rotace se dělá stejně jako pohyb – pomocí pohybové stopy, pouze na klíčích neposunujete objektem, ale rotujete. Tam můžete narazit na první problém.

Když máte označený v editoru některý z objektů, zobrazuje se vám jeho pivot. Pivot je v podstatě střed objektu. Nemusí být (a často ani není) středem geometrickým – může být umístěn v libovolné části objektu či dokonce úplně mimo něj. Právě v pivotu se zobrazuje transformační pomocník a jedním z jeho účelů je, že pokud začnete objektem rotovat, bude se otáčet kolem něj. To ale v případě naší desky není úplně žádoucí. Chceme docilit toho, aby deska po zásahu padla tak, jako by byla přimontovaná k podlaze pantem umístěným na své spodní hraně. Určitě jste už takhle se chovající terče viděli. Problém je, že k tomu bychom potřebovali, aby se se deska otáčela kolem osy vedoucí její spodní hranou a ne středem (stejně jako se třeba dveře neotáčejí ve svém středu ale kolem pantů na kraji). Umístění pivotu je nedílnou součástí modelu, který jste do scény vložili a o jeho umístění rozhodl s největší pravděpodobností ten, kdo ho připravoval v některém z modelovacím programů. Editor ale naštěstí obsahuje možnost, jak si pozici pivotu doupravit podle svých potřeb. V podstatě máme dvě možnosti – pivot přemístit, udělat operaci kterou potřebujeme (tedy rotací položit desku na zem ve druhém klíči na časové ose) a pak nechat engine, aby pivot vrátil na původní místo, nebo si novou pozici pivotu uložit. Doporučuji použít druhou možnost, protože zmíněnou rotaci můžete testovat poměrně často a zbytečně byste museli pivot stale přenastavovat.

Jak tedy upravit tu pozici pivotu? Nejrychlejší, byť často nepřesnou cestou je kliknout na místo, kde chcete nový pivot mít, pravým tlačítkem vyvolat kontextovou nabídku a zvolit Pivot → Move Here (případně Move Here Snapped pro přichycení pivotu k objektu). Teď můžete provést třeba právě onu rotaci. Kdybyste ale objekt odznačili, vámi přesunutý pivot by byl zapomenut. Proto si ho můžete uložit pomocí Pivot → Save Pivot to PrePivot. Kdybyste ho chtěli vrátit na původní místo, stačí zvolit Pivot – > Reset PrePivot.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Druhou a podstatně přesnější metodou je numericky nastavit přímo jakým způsobem je tento náš pivot (označovaný PrePivot) posunutý oproti původnímu pivotu. To můžete, pokud si zobrazíte vlastnosti objektu a vstoupíte do sekce Display → Pre Pivot a tam nastavíte příslušné hodnoty. Pokud budete tedy chtít například posunout pivot dolů, zadejte záporné číslo do osy Z. Takto vytvořený PrePivot si engine pamatuje automaticky a pokud ho chcete zrušit, prostě zadaná čísla vynulujte.

Jakmile budete mít animaci hotovou, napojte ji na event Take Damage, který jsme vytvářeli minule. Když pak desku strefíte, měla by si “lehnout”.


A abychom si přidali ještě něco interaktivního, začneme počítat a vypisovat počet zásahů našeho cíle. S tím, co už umíme, by to nemělo být nic komplikovaného. V Kismetu si vytvoříme novou proměnnou typu Integer (tedy celé číslo) – New Variable → Int – > Int. Ta bude představovat počet zásahů. Dále vytvoříme novou akci, kterou při zásahu tuto proměnnou navýšíme o jedničku. New Action → Math → Add Int. Nejprve spojíme vstup do této akce s výstupem z objektu, který se aktivuje při zásahu cíle. Pokud používáte Kismet, který jsme si připravili minule, už vám z něj asi nějaký výstup vede, tak jen přidejte další. Když se podíváte na objekt akce Add Int, možná sami poznáte, co se v ní děje. Při spuštění se sečtou dvě proměnné – jedna vstupuje do akce přes vstup A, druhá přes vstup B. Výsledek se zapíše do proměnné, která je napojena na výstup IntResult. Vezmeme tedy námi vytvořenou proměnnou a napojíme ji do vstupu A. Teď vytvoříme stejným způsobem druhou proměnnou a připojíme ji na vstup B. Protože budeme přičítat vždy jedničku, nastavíme této proměnné v jejich vlastnostech úvodní hodnotu Int Value na 1 (ta už se dál měnit nebude). Tak a co s výsledkem? Vypustíme ho výstupem IntResult zpátky do naší první proměnné. Tím se po každém provedení akce navýší její obsah a do dalšího spuštění Add Int už bude vstupovat navýšená o jedničku.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Teď se nám sice už vnitřně počítá počet zásahů, ale zatím bychom ho nikde neviděli. Protože zobrazení informací v rámci grafického rozhraní je trochu komplikovanější a něco si k němu povíme až příště, použijeme jednoduchou akci Log (New Action – > Misc → Log), jejíž vstup napojíme na výstup z akce Add Int, takže se pustí hned, jak akce proběhne. Akce Log na první pohled nabízí jen možnost zobrazit text, který zadáme v jejích vlastnostech (v Obj Comment). Ve skutečnosti toho však umí podstatně víc – programátoři editoru nám ale některé její schopnosti skryli, aby nás zbytečně nemátli. Tato akce má totiž, stejně jako i některé jiné, navíc vstupy či výstupy, které nejsou standardně zobrazené. Klikněte na objekt akce pravým tlačítkem a vyberte Expose Variable → Int – Int. Tím se na akci ukáže nový vstup, do kterého můžeme napojit proměnou typu Integer – tedy třeba právě naše aktuální skóre. Když to uděláte, každý zásah se pak vypíše na obrazovce.

Hrátky s Unreal Engine Část V: Trocha pohybu neškodí

Tak to bychom měli. Teď už toho umíte v Kismetu i Matinee dost na to, abyste mohli udělat vlastní interaktivní úroveň. Jestli rádi plníte zadané úkoly (snažit se dosáhnout předem vytyčeného cíle je vždy přínosnější, než jen nahodilé testování), tak můžete zkusit následující. Vytvořte si objekt (stejným způsobem, jako jsme v minulém díle vytvářeli náš cíl – tedy desku z kostky), kterou použijte jako dveře pro hráče (ubezpečte se, že s ním kolidují – viz nastavování kolizí v minulém díle). Připravte trigger, jehož aktivace dveře po určité době otevře. V podstatě byste měli umět i začít po jeho aktivaci čas k otevření dveří odpočítávat (způsobů je hned několik)…

V příštím díle si ukážeme ještě pár dalších zajímavých vlastností Kismetu a posuneme se zase o kousek dál v našem poznávání UDK.

Reklama
Reklama
Reklama
Reklama

Byl detekován AdBlock

PCTuning je komunitní web, jehož hlavním příjmem je reklama. Zvažte prosím vypnutí AdBlocku, ať můžeme všem čtenářům i nadále přinášet kvalitní herní zpravodajství, články a videa.

Děkujeme!

Váš tým PCTuning