Jste návštěvník číslo:

Chaser World Studio 2000 návod

 

 

Kapitola 10. - Dveře:

Pokud jste se ve čtení tutoriálu dostali až sem, je zřejmé, že vás tvorba map do Chasera skutečně zaujala a že se chcete dozvědět víc. To samozřejmě velmi rád slyším, a proto mi nezbývá nic jiného, než vás vřele přivítat u této další kapitoly. Ta již tentokrát spadá do takzvaného "Kurzu pro pokročilé", tudíž je zde předpoklad, že již směle ovládáte základy práce v editoru nastíněné v kapitolách předešlých. Bez nich se totiž rozhodně neobejdete. V následujících odstavcích a kapitolách se už budu věnovat pouze konkrétním věcem a rozebírat složitější funkce, takže pokud vám ještě nějaké úkony dělají problém, pořádně si je předem natrénujte. Vracet se tu k nim již nebudu.

Asi nejpoužívanější funkční věcí v mapě jsou bezesporu dveře, a právě proto jsem se rozhodl toto téma rozepsat v kurzu pro pokročilé jako první. Dveře jsou určitě skvělá věc, a my si dnes povíme, jak udělat jejich dvě nejzákladnější varianty. A to dveře posuvné, ovládané například nějakým tlačítkem, a pak dveře klasické.

 

Posuvné dveře

Posuvné dveře jsou na výrobu asi nejjednodušší, takže si je popíšeme jako první, abychom se obeznámili se základy. Vytvořte si jednoduchou mapu se dvěmi místnostmi oddělenými zdí a v ní udělejte otvor o velikosti budoucích dveří. Nezapomeňte do mapy vložit také startovní pozici hráče a světlo, aby bylo možné na závěr mapu otestovat přímo ve hře a vyzkoušet si její funkčnost v praxi.

Jelikož už od samého začátku na vás apeluji, abyste se naučili dělit mapy pomocí buněk, vytvořte rovněž v každé místnosti soustavu očí a oddělte je tenkým portálem vsazeným do průchodu ve zdi. Ten by neměl mít tloušťku větší, než plánované dveře! Viz. obrázek vpravo. (Kdo neví, k čemu jsou buňky a portály, ať se vrátí k 7. kapitole, kde se tomuto tématu věnuji podrobněji.) I když u takto malé mapy není zas tak nutné její dělení, u větších map je to nevyhnutelné a v souvislosti s dveřmi je s tím spojeno několik nezbytných úkonů. Proto je myslím dobré osvojit si to hned na začátku, aby se předešlo zbytečným problémům v budoucnu.

Teď, když už máme připravenou mapku se vším, co budeme potřebovat, se můžeme vrhnout na dveře samotné. Do otvoru, nebo chcete-li průchodu, vložte brush, který bude tvořit těleso dveří. Tento brush otexturujte ze všech viditelných stran nějakou vhodnou texturou, aby bylo jasné, že se jedná o dveře. V tomto případě přijde například vhod textura "trb_door07", kterou najdete v záložce "trb" a adresáři "trb_door". Nezapomeňte ale otexturovat i boční hrany dveří, které se odhalí, až se dveře otevřou! Stejně tak dejte pozor, aby na obou stranách byla textura na dveřích správně zarovnána. Některé textury jsou totiž udělané tak, že mají na jedné straně kliku a na druhé panty, takže je pak vždy nutné z jedné strany dveří texturu zrcadlově obrátit, aby panty i klika byly na správné straně. To platí i v případě, že děláte například dvoukřídlé dveře, kde je potřeba jednu polovinu opět zrcadlově otočit.

Dobrá, dveře jsou na místě. Ale co dál, aby je bylo možné otevřít? V prvé řadě brush dveří označte a klávesou "B" vyvolejte okno s nastavením. Zde je nutno zaškrtnout několik parametrů, aby vše fungovalo správně. Zaškrtněte "See Through", aby byly dveře pro oči buňky průhledné, neboť uvnitř se nachází portál a na ten musí z obou stran oči vidět. Jako druhý a poslední parametr zaškrtněte "Cross Portals", protože dveře křižují portál. Viz. obrázek vlevo. Pak nastavení uložte pomocí "Ok".

Nyní je potřeba vytvořit mechanismus, který bude s našimi dveřmi hýbat, a nadefinovat mu pár nutných vlastností. K rozpohybování dveří slouží entita s názvem "basic_door", kterou najdete mezi ostatními entitami pod záložkou "doors". Tuto entitu vložte těsně ke dveřím na jejich okraj, nejlépe přímo do horního rohu. V jejím nastavení vyvoalném pomocí klávesy "E" je pak zapotřebí zadat následující parametry: "open_speed" a "close_speed", tedy rychlost otevírání a zavírání. Hodnoty můžete nastavit dle libosti a nebo ponechat na "64.00", což je taková standardní rychlost. Následující parametr "time_to_close" udává dobu, po jakou zůstanou dveře otevřené. Doporučují přepsat hodnotu na "3.00" vteřiny. Pokud byste nastavili "-1.00", znamenalo by to, že dveře zůstanou po aktivaci otevřené natrvalo. Parametr "time_to_reopen" pak určuje, jak dlouho zůstanou dveře po opětovném uzavření neaktivní. Zde hodnotu nastavte na "0.00".

Ostatní parametry ponechte tak, jak jsou. Nás budou zajímat už jen poslední čtyři řádky, které definují zvuky použité pro jednotlivé fáze pohybu dveří. To znamená, že parametr "open_sound" určuje zvuk přehrávaný při otevírání a následující parametr "close_sound" zvuk při zavírání. Další parametr "open_stop_sound" nám pak určuje, jaký zvuk se ozve při ukončení otevírání, kdy se dveře zastaví v otevřené pozici, a "close_stop_sound" samozřejmě udává zvuk zastavení při uzavření. Jednotlivé zvuky vyberete dvojím kliknutím myši na příslušný řádek, čímž zobrazíte okno s jednotlivými adresáři obsahujícími zvukové soubory. Vhodné zvuky pro dveře najdete v adresáři "Doors". Když se podíváte pozorně, jsou zde jednotlivé soubory většinou již připravené k použití pro konkrétní fáze, čemuž odpovídá jejich název. Možná se vám to zdá trochu složité, ale takto rozfázované zvuky nám poskytují jedinečnou možnost kombinovat různé zvukové soubory a tím docílit toho, že ne každé dveře v mapě musejí znít úplně stejně. Pro začátek můžete vybrat zvuky dle mého vzoru, viz. obrázek vpravo.

Teď, když máme entitu dveří na místě a nastavenou dle svých požadavků, je potřeba definovat dráhu, po níž se budou dveře pohybovat. To učiníme pomocí entity "target_position", kterou najdete mezi ostatními entitami v záložce "helpers". Tato entita nemá žádné parametry k nastavení a slouží proto výhradně jen k určování pozic v prostoru. V našem případě musíme s její pomocí stanovit, v jakém místě se vůči "basic_door" nachází pozice otevřených dveří, respektive kam se budou posouvat. Umístěte ji proto ve stejné výšce a rovině do vedlejšího rohu. Následně obě entity propojte linkou, a to ve směru "basic_door" - "target_position".

Tato linka představuje dráhu, po níž se bude entita "basic_door" pohybovat. Při aktivaci se tedy "basic_door" přesune na pozici "target_position" a po uplynutí nastaveného času se zase vrátí zpět do výchozí pozice. Aby se však s touto entitou pohybovaly i samotné dveře, je ještě potřeba je vzájemně propojit linkou, čímž je k sobě svážete. Linka je opět ve směru od "basic_door" k brushu dveří. Viz. obrázek vlevo. V praxi to vlastně znamená, že se všechny brushy, které jsou takto spojeny s "basic_door", budou s touto entitou pohybovat, jako kdyby byly její součástí. Pokud tedy vaše dveře tvoří více brushů, nezapomeňte je buď colapsnout a udělat z nich jeden celek, který následně připojíte k entitě, popřípadě k ní můžete každý brush nalinkovat i zvlášť.

Jak už jste asi sami pochopili, vzájemná poloha obou entit "basic_door" a "target_position" udává směr, jakým se budou dveře pohybovat. Chcete-li tedy docílit jiného směru pohybu, stačí přesunout obě entity tak, aby vtvořily dráhu dle vašich požadavků. Takže pokud byste například dali "target_position" do dolního rohu, budou dveře zajíždět do podlahy. Když byste zase daly "basic_door" dolů a "target_position" nahoru, otevíraly by se dveře nahoru. Možností je spousta. Současná pozice však znamená, že se dveře budou otevírat z leva doprava.

Nyní máme dveře nastavené a připravené k použití. Poslední, co musíme udělat, je nějaký aktivátor, pomocí něhož bude hráč dveře ovládat. K tomu slouží triggery, které jsou v Chaserovi hned ve třech různých podobách. Najdete je mezi ostatními entitami v záložce "triggers". Trigger je v podstatě jakýsi aktivátor, jenž v sobě nese určitou informaci nebo skript. Po jeho aktivaci dojde k tomu, že se tato informace či skript v mapě spustí. V našem případě jde o zcela jednoduchý příkaz, a tím je aktivace dveří, respektive entity "basic_door", aby se dveře otevřely.

Pro náš účel bude asi nejvhodnější "key_trigger", což je aktivátor, který ve spojení s brushem vytvoří v mapě aktivní plochu, jenž musí hráč ve hře aktivovat příslušnou klávesou. Dají se tak dělat různá tlačítka či aktivní místa. Vyberte proto tento aktivátor z nabídky a vložte jej do mapy někde poblíž dveří, přičemž s ním propojte "basic_door" linkou ve směru k triggeru.

V nastavení triggeru je několik parametrů. Nás bude zatím zajímat jen pár z nich. První nastavte "inactivity_time", což je doba, po kterou bude trigger po aktivaci neaktivní. Zde je dobré zadat takový čas, aby do další aktivace stihly dveře provést celý svůj cyklus, což samozřejmě závisí na zvolených hodnotách v "basic_door". Takže dejme tomu, že dvě vteřiny trvá otevírání, tři čekání a další dvě opětovné zavírání. Dohromady tedy sedm, tudíž v našem případě hodnotu přepište na "7.00" vteřin.

Další parametr, který nás bude zajímat, je "activate_count". Ten udává počet možný aktivací. Pokud jde o dveře, vyplňuje se většinou hodnota "-1", což znamená nekonečno. Další parametr, "link_action", je doslova akce linky. To znamená, co se stane po aktivaci triggeru s objektem, který je k němu nalinkovaný, v našem případě "basic_door". Zde tedy nastavte "Activate", neboli aktivovat.

Jestliže chcete, aby při aktivaci triggeru zazněl nějaký zvuk, například stisknutí tlačítka nebo potvrzovací signál počítače, je možné takový zvuk přiřadit v řádku "activate_sound". Obdobně to funguje i u následujícího příkazu "disabled_sound", což je zvuk, který zazní zase tehdy, když se pokusíte aktivovat neaktivní trigger (třeba když jde o zamčené dveře). Nastavit můžete dle předlohy, viz. obrázek vpravo.

Poslední, co nás pro tuto chvíli bude zajímat, je řádek "activator". Zde nechte nastavené "Player", tedy hráč, nebo změňte na jinou hodnotu dle nabídky, pokud chcete, aby například mohl použít tento aktivátor i počítačem řízený nepřítel či jen konkrétní tým hráčů v multiplayeru. Ostatní parametry v triggeru ponechte na původních hodnotách a okno zavřete.

Nakonec zbývá jediné, a to nalinkovat "key_trigger" k nějakému brushu, kterým chceme dveře ovládat. Může to být například nějaké tlačítko vedle dveří a nebo dveře samotné. Klidně i oboje, záleží jen na vás. Já použiji dveře, abyste v tom už neměli moc velký zmatek. Linku veďte od triggeru směrem k brushu.

Samozřejmě k aktivaci dveří můžete použít i jiný trigger, například "radial_trigger". Ten stačí nastavit obdobně jako jsem popsal výše, jen s tím rozdílem, že se tentokrát nepropojuje s žádným brushem. K jeho aktivaci totiž dochází tak, že se hráč dostane do jeho blízkosti. Dá se tak tedy vytvořit ovládání dveří podobné fotobuňce a dosah se reguluje pomocí parametru "range".

Tím jsou dveře plně funkční a vy si je nyní můžete vyzkoušet. Před kompilací mapy však ještě  nezapomeňte přiřadit "basic_door" k buňce, v níž se nachází, a to nalinkováním k nejbližšímu oku. Tato entita to totiž vyžaduje pro správnou kompilaci!

 

Klasické dveře

Sice jsem psal, že posuvné dveře jsou nejednodušší, což je pravda, ale jak sami vidíte, popsat všechny důležité aspekty bylo celkem náročné a pro vás nepochybně vyčerpávající čtení. Sám bych nečekal, že to bude tolik textu, a to šlo prosím jen o jediný typ dveří. Na řadě jsou další - dveře klasické - a ty jsou ještě o něco složitější. Tato kapitola rozhodně patří k těm nejdelším, ale doufejme, že o to víc vám pomůže ve vaší budoucí práci.

K vytvoření klasických dveří využijeme naši stávající mapu. Než však začneme, odstraňte z našich posuvných dveří všechny entity. Tedy jak "basic_door", "target_position", tak i samotný "key_trigger". U našich dalších dveří totiž tyto entity budou fungovat tak trochu jinak a jejich nastavení i rozmístění nebude stejné, proto bude daleko lepší vytvořit si je pěkně znovu a od začátku. Můžete rovněž také dveře přetexturovat na nějaký vhodnější vzhled, aby bylo jasné, že se nejedná o dveře posuvné. Například textura "snp_door05" v záložce "miscellaneous" a podsložce "snp_door" je celkem pěkná. Opět nezapomeňte texturu na dveřích řádně zarovnat a z jedné strany zrcadlově obrátit, aby část s klikou byla z obou stran na stejné straně dveří. Nastavení samotného brushu pak ponechte totožné jako u dveří posuvných, tam není třeba nic měnit.

Nyní si z nabídky entit vyberte nový "basic_door" a vložte jej do mapy. Funkce této entity však tentokrát bude poněkud odlišná než u předchozí varianty dveří. Zde nám bude udávat střed jejich otáčení, čemuž samozřejmě odpovídá i umístění. To se nachází na úplné hraně dveří, tedy tam, kde chceme mít jakési virtuální panty. Entitu tedy vezměte a přesuňte ji přesně na toto místo, výškově asi tak někde do půlky dveří. Následně ji vytvořením linky propojte s dveřmi, neboť i zde platí, že co je takto s "basic_door" propojeno, bude se s touto entitou pohybovat jako jeden celek. Směr linky opět směřujte od entity na brush, viz. obrázek vpravo.

Teď se přesuňte do nastavení "basic_door", protože je potřeba správně nakonfigurovat některé parametry. První "open_speed" a druhý "close_speed" zde opět určují rychlost, s jakou se dveře budou otevírat a zavírat. Jaké hodnoty vyplníte, to záleží na vás. Já většinou nechávám u "open_speed" hodnotu na "64.00" a u "close_speed" pak nastavím rychlost dvounásobnou, tedy "128.00", aby zavírání bylo rychlejší.

Následující řádek "time_to_close", jak už víte z minula, stanovuje dobu, po kterou zůstanou dveře otevřené. Hodnotu klidně ponechte na "2.00", protože si myslím, že dvě vteřiny jsou dostatečně dlouhá doba na to, aby hráč prošel skrze dveře. Pokud byste snad chtěli, aby naopak dveře zůstaly otevřené natrvalo, pak, jak už jsem zmínil u dveří posuvných, stačí změnit hodnotu na "-1.00". Parametr "time_to_reopen" přepište jako minule na "0.00".

Na rozdíl od posuvných dveří nás teď budou zajímat i některé další parametry. Prvním z nich je "open_opposite", který určuje, jakým způsobem se dveře budou chovat při otevírání. Pokud ponecháte přednastavené "TRUE", znamená to, že se dveře vždy budou otevírat směrem od hráče. Pokud však hodnotu změníte na "FALSE", dveře se již budou otevírat pouze jedním směrem bez ohledu na to, z jaké strany je otevíráte. Pak je ale třeba správně určit osu otevírání, což někdy přináší menší problémy. Naštěstí ale většinou není potřeba, aby se dveře otevíraly jen jedním směrem, a tak doporučuji tuto funkci ponechat zapnutou, tedy na "TRUE".

Druhým parametrem, který nás bude nově zajímat, je řádek "open_angle", neboli úhel otevírání. Jedná se v podstatě o úhel, o jaký se dveře otočí, respektive otevřou. Standardně je přednastavena hodnota "90.00", která odpovídá 90°, což v našem případě klidně můžete ponechat. V praxi to pak znamená, že až dveře aktivujete a ony se otevřou, bude to přesně do pravého úhlu.

Poslední, co nám zbývá nastavit, jsou zvuky, které dveře budou vydávat. V případě dveří klasických zpravidla stačí nastavit jen "open_sound", tedy zvuk otevírání, a pak "close_stop_sound", kdy se dveře zase zaklapnou. Pokud dvakrát kliknete na příslušný řádek, vyskočí vám okno se strukturou adresářů, v níž se nacházejí veškeré zvuky hry. Ty, které jsou určeny pro dveře, samozřejmě naleznete v adresáři jménem "Doors". Jak už jsem uvedl dříve, většina zvukových souborů je zde již určena pro konkrétní fáze a roztříděna dle názvů. Není tedy nijak těžké si vybrat ty správné kombinace, které k sobě pasují nejlépe. Na zkoušku můžeme použít například "lin_door_open18.wav" pro "open_sound" a k němu nejvhodnější "lin_door_close18.wav" pro "close_stop_sound". Viz. obrázek vlevo.

Na řadu teď přichází "target_position", což je další důležitá součást hybného mechanismu dveří. V tomto případě však nebude sloužit k určení dráhy pohybu, nýbrž k tomu, abychom s jeho pomocí definovali osu rotace. Vložte tedy tuto entitu přesně pod "basic_door" a spojte je linkou, která opět povede od "basic_door" k "target_position". Linka mezi nimi teď znázorňuje osu, kolem které se budou dveře otáčet.

Tím to ovšem nekončí. Jelikož u této varianty dveří plní "basic_door" a "target_position" funkci jakéhosi pantu a vzájemně určují osu otáčení, je tudíž ještě potřeba nějak definovat výchozí pozici dveří, z níž bude celý proces otevírání vycházet. K tomu slouží entita s názvem "pivot". Najdete ji podobně jako "target_position" v záložce "helpers". Tuto entitu následně vložte do mapy a umístěte ji do dveří hned vedle "basic_door" s tím, že zachováte i stejnou výšku od podlahy. Nakonec opět obě entity propojte, a to ve směru od "basic_door" k "pivot". Viz. obrázek vpravo.

To je, co se alespoň hybného mechanismu týče, vše. Jak asi teď správně tušíte, poslední, co je potřeba udělat, je aktivátor. Zde je postup prakticky zcela totožný s předchozí variantou dveří. Vezměte tedy "key_trigger" a vložte ho do mapy někde poblíž dveří. Následně vytvořte linku od "basic_door" k triggeru a poté v jeho nastavení nastavte následující parametry: "inactivity_time" je čas, jak dlouho má zůstat po aktivaci trigger neaktivní, což by nikdy nemělo být méně, než je doba celého cyklu otevření a zavření dveří. V tomto případě by dle nastavených údajů měla dostačovat hodnota "5.00" vteřin. Parametr "activate_count", neboli počet možných aktivací, chceme v našem případě neomezený, takže hodnotu přepište na "-1". Následují "activate_sound" a "disable_sound", k nimž můžete přiřadit určitý zvuk, který se ozve při aktivaci triggeru. Zde může jít například o zvuk stlačení kliky. Na řádku "link_action" nastavte "Activate" a parametr "activator" upravte dle toho, komu chcete umožnit tento trigger a s ním i celé dveře používat.

Na závěr nalinkujte trigger k brushu dveří, což nám z nich učiní aktivační plochu, skrze kterou se budou otevírat. Nezapomeňte také nalinkovat "basic_door" k nejbližšímu oku buňky, v níž se nachází, aby při kompilaci hra tuto entitu k ní přiřadila a nedocházelo tak k nějakým zbytečným chybám. Tím je tvorba klasických dveří u konce a vy si je tak nyní můžete vyzkoušet.

 

Dvoukřídlé dveře

Dveře samozřejmě nemusí tvořit jen jeden brush. Lze udělat i takové dveře, které se budou skládat ze dvou čí více pohyblivých částí. Není na tom nic zas tak složitého, jak by se na první pohled mohlo zdát. Postup je totiž prakticky totožný s tím, co jsem vám popsal výše, stejně jako princip fungování. A to se týká jak dveří posuvných, tak klasických.

U dvoukřídlých dveří se vlastně jedná o dvoje dveře, jen s tím rozdílem, že jedny jsou včetně hybného mechanismu zrcadlově obrácené a tvoří druhou polovinu celku. Princip je ovšem zcela stejný. Každá polovina má svůj "basic_door", který s ní pohybuje dle nastavené dráhy či rotace. Výsledkem jsou pak dveře, jenž se otevírají na obě strany. Vše pak ovládá opět jeden trigger, jenž přes linku či skript aktivuje oboje dveře jako celek.

Nastavení všech entit zůstává stejné jako u dveří jednokřídlých, nicméně upravit si ho můžete dle libosti. Je však nutné dodržet shodné hodnoty u obou hybných částí, aby nedocházelo k tomu, že by se vám třeba jedna polovina dveří pohybovala rychleji než ta druhá. Rozdílné hodnoty mají svou logiku jen tehdy, chcete-li vzbudit dojem rozbitých dveří, kde odlišná rychlost pohybu obou polovin má své opodstatnění. Doporučuji rovněž ponechat nastavené zvuky pouze u jedné strany, neboť jinak může docházet ke zdvojování zvuku vlivem dvou "basic_door". Pokud tomu tedy chcete předejít, zvuk nastavte jen u jedné z těchto entit.

Více se tu o tom rozepisovat nebudu, protože jde o stejný a pouze zdvojený postup, jako jsem popsal výše. Pokud vás to ale zajímá víc, můžete se podívat na obrázky vpravo a vlevo, kde je ukázka dvoukřídlých dveří. Snad vám to pomůže udělat si představu o tom, jak to celé jednoduše funguje.

 

Pohyblivá klika na dveřích

Aby dveře byly o něco zajímavější, je možné jim udělat také funkční kliku. Jedná se v podstatě o stejný mechanismus, který pohybuje se samotnými dveřmi, akorát je trochu jinak nastavený a propojený tak, aby nejprve došlo k pohybu kliky a teprve po jeho dokončení k celkovému otevření. Není to nic extra složitého, nicméně si to už žádá trochu zručnosti a představivosti. To by snad ale nemělo představovat žádný problém.

Abychom si to celé vyzkoušeli, bude asi nejednodušší, když použijeme naše hotové dveře, které jsme si již vytvořili v předchozí části kapitoly. Těm pouze dodělejte nějakou jednoduchou kliku, a to na místě, kde ji chcete mít. Pokud ji vytvoříte z více brushů, čemuž se pravděpodobně nevyhnete, pak si je po otexturování všechny označte a colapsněte klávesami "Alt + C". Tím se z kliky stane jeden objekt, což nám v příštích krocích trochu ulehčí práci.

Jak už jsem nastínil výše, s klikou hýbe obdobný mechanizmus jako se samotnými dveřmi. Opět je tedy potřeba vytvořit osu a výchozí pozici za použití stejných entit, jako jsme tomu učinili tam. To znamená, že vezmeme další "basic_door" a "target_position" a umístíme je na nejvhodnější místo v klice tak, aby společně vytvořily její osu otáčení. Poté je vzájemně spojte linkou od "basic_door" směrem k "target_position" a následně linkou propojte "basic_door" i s klikou samotnou. K určení výchozí pozice, z níž bude pohyb vycházet, využijeme samozřejmě "pivot", který pro změnu umístěte ve stejné výšce a rovině přímo do dveří, těsně vedle "basic_door". Obě tyto entity nakonec propojte, a to linkou směřující na "pivot", viz. obrázek vpravo.

Nyní si zpětně označte "basic_door" a otevřete si jeho nastavení. Pro parametry "open_speed" a "close_speed" doporučuji zadat hodnotu "128.00", což je dle mých zkušeností asi nejvhodnější rychlost. U následujícího parametru "time_to_close" zadejte "0.00", aby se klika vracela do své původní polohy okamžitě a zbytečně se tak neprodlužovala doba k otevření celých dveří. U "time_to_reopen" pak ponechte "1.00", případně to přepište, jestli tam máte něco jiného.

Řádek "open_opposite" je možné ponechat na hodnotě "TRUE". Musíte mít však na vědomí, že v tomto případě pak může klidně dojít k tomu, že při aktivaci dveří z přikrčené polohy se klika bude zvedat nahoru (tedy jakoby od hráče). To je u kliky samozřejmě poněkud divné, takže lze tuto funkci vypnout přenastavením hodnoty na "FALSE". Pak je ale rovněž potřeba správně určit směr osy otočení, případně úhel. Pokud se vám tedy bude klika ve výsledku zvedat náhle jen nahoru, tak v tom případě buď dodatečně "target_position" přesuňte na druhou stranu dveří, čímž osu otočíte, nebo zadejte záporný úhel otočení.

Nově nás tu bude zajímat parametr "close_link_action", kterému vybereme příkaz "Activate". To nám zajistí, že až dojde k pohybu kliky a jejímu následnému vrácení do původní polohy, aktivuje se skrze linku druhý "basic_door", jenž hýbe s dveřmi. Dále u "open_angle" nastavte úhel otočení na "30.00" nebo záporných "-30.00". Správná hodnota závisí na tom, zdá máte funkci "open_opposite", o které jsem se zmiňoval výše, zapnutou či vypnout a v jakém směru je vytvořena osa otáčení kliky. V případě dveří a nastavení, které mám na obrázku, je správná hodnota záporná, tedy "-30.00". Většinou je ale třeba nejprve konkrétní dveře vyzkoušet přímo ve hře, abyste zjistili, jak se klika otáčí, a dle toho úhel dodatečně upravili. Co se týče ostatních parametrů, ty ponechte beze změny tak, jak jsou na obrázku vlevo. Pouze u "open_sound" vyberte nějaký vhodný zvuk, který bude klika při pohybu vydávat. Pěkný je například "Sounds\chm03\klucka.wav".

Na závěr provedeme ještě několik zbývajících propojení, která jsou pro správný chod dveří s klikou nezbytná. V první řadě je potřeba natáhnout linku od "basic_door" dveří k brushu kliky, protože chceme, aby se i klika pohybovala při otevírání s dveřmi jako jeden celek. Poté vytvořte linku od "basic_door" kliky k "basic_door" dveří, aby mohlo dojít po stlačení kliky k aktivaci druhého hybného mechanismu. Nezapomeňte nový "basic_door" nalinkovat také na nejbližší oko! Následně ještě nalinkujte trigger na brush kliky, což nám i z ní udělá aktivační plochu k ovládání dveří. Nakonec zrušte linku mezi triggerem a "basic_door" dveří a naopak ji vytvořte směrem od "basic_door" kliky k triggeru. Tím docílíte toho, že trigger nejprve aktivuje kliku a klika poté celé dveře. A ještě jeden malý detail. Jelikož do celého cyklu otevírání dveří přibyla klika, bude teď samozřejmě celý cyklus o něco delší. Z toho důvodu upravte v triggeru dveří parametr "inactivity_time" ze současných pěti vteřin na "6.00", což by již mělo stačit.

Když už jsme v nastavení triggeru, zkontrolujte si také, zda nemáte u řádků "activate_sound" či "disable_sound" přiřazené nějaké zvuky, což můžete mít z minula. Pokud ano, zvuky anulujte tím, že místo nich vyplníte "sounds\*.wav". Všechny potřebné zvuky nám u těchto dveří totiž už nesou obě "basic_door", a tak není žádoucí, aby nějaké produkoval i trigger samotný. Výjimku pouze nese parametr "disable_sound", a to v případě, že se jedná o trigger schovaný, například u zamčených dveří. Ale o tom si povíme něco víc až na konci této kapitoly.

Pokud jste postupovali přesně podle toho, co jsem zde psal, měli byste nyní mít plně funkční dveře s klikou, jako jsou na obrázku vpravo. Jestli jste neudělali někde chybu si nejlépe můžete ověřit tím, že mapu zkompilujete a vyzkoušíte si ji. Toť vše.

 

Dveře na fotobuňku

Dveře, ostatně stejně jako cokoliv jiného, lze aktivovat mnoha způsoby. Základem je vždy trigger, který nese příkaz k vykonání určité operace. Krom tlačítka či nějaké aktivní plochy, na níž musí hráč ve hře použít příslušnou klávesu, lze nicméně udělat také jakousi virtuální fotobuňku. Díky ní dojde k aktivací pouhým vstupem do určité oblasti. To lze využít například v případě, že chcete, aby se dveře otevřely automaticky bez hráčovy interakce. K tomuto účelu slouží "radial_trigger". Ten nevyžaduje žádné propojení s brushem - k jeho aktivaci dochází pouze za pomoci jakéhosi zorného pole vymezeného samotným triggerem.

Abyste lépe pochopili tuto funkci, můžete si ji vyzkoušet na našich posuvných dveřích. U těch nejprve odstraňte "key_trigger" a místo něj vložte zmíněný "radial_trigger". V jeho nastavení pak následně upravte parametr "range" na hodnotu, která vám bude nejlépe vyhovovat pro daný účel. Právě tento parametr vymezuje samotný dosah triggeru, tedy jakýsi kruhový prostor kolem něj, který bude sloužit k aktivaci. Ten je sám o sobě znázorněný ve 2D pohledech editoru žlutou kružnicí. Upravte proto rovnou i polohu triggeru tak, aby byl pokud možno na obou stranách dveří tento prostor stejně velký. Jakmile totiž hráč do tohoto prostoru vstoupí, dveře se aktivují a otevřou. Je tedy dobré zachovat stejně velké zorné pole na všech stranách, k nimž se ke dveřím přistupuje a odkud se tedy i aktivují.

Následující parametr "inactivity_time" zde narozdíl od předchozí varianty dveří nastavte na "0.00", tedy bez zbytečné prodlevy, a "activate_count" samozřejmě na "-1" pro neomezenou aktivaci. Řádek "link_action" zůstává stejně jako minule na "Activate" a jako "activator" opět zvolte toho, komu chcete umožnit s dveřmi manipulovat. Nejčastěji tedy "Player", neboli hráč.

Nakonec nastavte nový parametr "check_always" na hodnotu "TRUE". To zajistí, že pokud zůstanete v zorném poli triggeru, bude neustále docházet k jeho opakované aktivaci, dokud zorné pole neopustíte. V praxi to znamená, že pokud zůstanete přede dveřmi, budou se neustále otevírat. Odpadne tak nutnost se po uzavření dveří vzdálit z jejich dosahu a následně k nim přijít zpět, aby se znovu otevřely.

Na úplný závěr je ještě potřeba tento trigger spojit s tím, co chceme s jeho pomocí aktivovat. V našem případě se tedy jedná o "basic_door". Trigger má nastavenou aktivační linku, takže stejně jako v předešlých situacích musí být linkou propojený s "basic_door" tak, aby linka vycházela od "basic_door" směrem k triggeru. Tím je výroba dveří na fotobuňku u konce. Viz. obrázek vpravo.

 

Nuže, touto kapitolou jsem vám velmi vyčerpávajícím způsobem pokusil vysvětlit, jak vytvořit několik základních typů dveří. Pokud vám snad stále není něco jasné, podívejte se do přiložené mapky, kde najdete všechny dveře, které jsem v rámci této kapitoly zmínil. Dveře si rozeberte a důkladně si prohlédněte jejich mechanismy. Určitě tak lépe vstřebáte dnešní lekci. Mapku najdete ke stažení přímo zde.

 

 

<< Zpět na úvod <<    >> Další kapitola >>

 

 

Autorovy stránky: Vixey.cz, Kamenitý vrch, DoomMap.

Stránku vytvořil Duke, 2010.