Hlavní stránka Multimédia Hry a zábava Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet
Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet
autor: Aleš Ulm , publikováno 25.6.2010
Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet

Ve čtvrté části seriálu o Unreal Development Kitu si posvítíme na skriptovací editor Kismet. Díky němu lze ve hře vytvářet nejrůznější události, určovat jak budou objekty reagovat na vaše počínání a vůbec určovat, jak bude hra fungovat. Je to mocný nástroj, který je ale překvapivě jednoduchý i díky přehlednému vizuálnímu zpracování vazeb.


Kostka, kterou jsme do scény vložili, slouží jen jako jakýsi pomocný model, proto není ani nijak pořádně otexturovaná. Přestože u těchto importovaných statických modelů se texturování provádí v externím editoru (Max, Maya), můžeme texturu upravit i tady, byť to není úplně čisté řešení. V Content Browseru si najděte nějaký materiál, jehož textura se vám bude líbit a pusťte ho do scény na model kostky. Její textura se změnila. Výsledek zřejmě vypadá sice relativně dobře, ale to jen proto, že náš statický model je úplně primitivní. U jakéhokoliv komplikovanějšího objektu by výsledek nebyl nijak zvlášť pěkný. Pro teď nám to ale postačí.

Pokud máte desku stále ještě označenou, vstupte do Kismetu pomocí pravého tlačítka a vytvořte event tímto způsobem: New Event Using InterpActor_0 → Take Damage. Tento event se aktivuje v momentě, kdy způsobíme objektu nazvanému InterpActor_0 (tedy naší desce) nějaké poškození. A protože už umíme udělat akci, která něco vypíše na obrazovku, tak toho hned využijeme. Vytvořte ji, vložte do ní nějaký text („Deska zasažena!“ atp.) a napojte na výstup eventu Out. Jediný výstup se u tohoto eventu jmenuje Out a nikoliv třeba Damage Taken právě proto, že je jediný – event se aktivuje vždy pouze způsobením poškození, takže má jediný výstup. Teď se ještě podíváme na nastavení našeho nového eventu. Předně tam opět vidíme Max Trigger Count s hodnotou 1. Díky tomu by deska na zásah zareagovala pouze poprvé. Změníme hodnotu na 0. Druhou editací, kterou provedeme, je snížení položky Damage Treshold. Tato položka udává velikost poškození, které je třeba, aby se event aktivoval. Protože ale v tuhle chvíli nevíme, jaké poškození naše výstřely způsobují, raději hodnotu snížíme na 1.

Když tohle máme, vyzkoušíme si náš výtvor hned naživo. Spusťte hru a střelte do desky. A protože život by byl příliš nudný, kdyby všechno fungovalo hned a samo, tak se nic neděje. Někteří z vás si i možná všimli proč. Střela deskou prolétá. To proto, že objekty třídy IntepActor nemají defaultně zapnuté kolize a když střela do desky nenarazí, ani ji „nezraní“. Otevřete okno s vlastnostmi desky a v oddílu Collision změňte Collision Type z COLLIDE_NoCo­llision (objekt nekoliduje s ničím) na COLLIDE_BlockWe­apons (objekt koliduje pouze se střelami). Znovu desku otestuje pořádnou dávkou ze své energetické zbraně. Pěkné, ne?

Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet

Co dál? Když už jsme tak zběhlí ve skriptování Kismetu, mohli bychom třeba nechat desku po zásahu zmizet a po nějaké době objevit. Když uděláme pak takových desek víc, budeme mít vlastně už základ takové malé střelnice.

Vstupte do Kismetu a vytvořte akci New Action → Toggle → Toggle Hidden. Tím vznikne trochu komplikovaně vyhlížející akce, který umožňuje zobrazovat a skrývat objekty v úrovni. Pokud nám v tuhle chvíli eventy a akce různě „přelézají“ přes sebe tak nezapomeňte, že pomocí držení CTRL si v nich můžete udělat rychle pořádek.

Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet

Vytvořte vazbu z výstupu z eventu do vstupu Hide naší nové akce. Díky tomu se po aktivaci eventu nejen vypíše naše hlášení, ale objekt se zároveň skryje. Tedy – měl by se skrýt, ale nestane se to. Problém je v tom, že program dorazí v nějaký moment do akce, která mu říká „skryj objekt“, jenže bohužel netuší, jaký objekt máme na mysli. Ano, do akce vstoupil z eventu, který vyvolalo střelení do desky a tento event „ví“ jaký objekt ho aktivoval. Jenže program nemůže tušit, že chceme skrýt právě tenhle objekt. Co kdybychom třeba střelením do desky chtěli nechat zmizet něco úplně jiného?



 
Komentáře naleznete na konci poslední kapitoly.
92 čtenářů navrhlo autorovi prémii: 46Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.