Hrátky s Unreal Engine IX: Svět tam někde za zdí
i Zdroj: PCTuning.cz
Hry Článek Hrátky s Unreal Engine IX: Svět tam někde za zdí

Hrátky s Unreal Engine IX: Svět tam někde za zdí | Kapitola 11

Aleš Ulm

Aleš Ulm

12. 11. 2010 03:00 4

Seznam kapitol

1. Svět za zdí 2. Není terén jako terén 3. Malujeme po terénu 4. Jak rozdělat oheň 5. Nastavujeme emitor 6. Částice a materiál
7. Částice a klíče 8. Skriptařův koutek 9. Pitváme kameru 10. Naše vlastní kamera 11. Experimentujeme

V dnešním díle se s naším hrdinou podíváme do širých šedomodrých kostkovaných polí obestírajících jeho příbytek, společně rozděláme svůj první oheň a v části věnováné skriptování si začneme hrát s kamerou. A nebojte se, pořád pěkně jednoduše a doufejme pro většinu čtenářů i pochopitelně!

Reklama

Jestli se chcete teď v editoru (v příštím díle si ukážeme možnosti, jak pouštět hru rovnou, bez editoru) podívat, jestli se tohle opravdu děje (samozřejmě si můžete zadat jiné než nulové hodnoty pro pozici a rotaci kamery), musíte ho zrestartovat. Při startu se objeví hláška, že ve skriptu došlo ke změnám a zda chcete rekompilovat. Potvrďte. Proběhne rekompilace a pokud je výsledek v pořádku, můžete editor už konečně spustit. Pokud ne ( v konzoli se zuřivě začervená), nastal ve skriptu problém. Já jsem, jak je vidět na obrázku, ve své verzi úmyslně zapomněl středník, který je pro engine důležitý, protože mu jednoznačně ukazuje, kde končí jeden blok instrukcí a začíná další (což nemudí být nutně dáno přechodem na další řádek). Na dalším obrázku můžete vidět, jak mě engine v konzoli upozorňuje, kde nastala chyba.

Hrátky s Unreal Engine IX: Svět tam někde za zdí
i Zdroj: PCTuning.cz

Všimněte si, že nápověda enginu nezní „na konci řádku chybí středník“ a navíc jako místo chyby udává až následující řádek. To proto, že instrukce na řádku 3013 jsou fakticky správně. Protože ale na konci chybí středník, engine nepovažuje instrukce z 3013 za uzavřené a pokusí se na ně napojit ty z řádku 3014. To mu ale nedává smysl. Proto zahlásí, že před out_CamLoc chybí středník – v tomhle případě na konci předchozího řádku.

Pokud se vše správně provede a vy hru v editoru otestujete, bude se dívat směrem, který jste zadali. Postavu hráče však můžete normálně ovládat dál, protože není na kameře závislá. S největší pravděpodobností ho však neuvidíte (nebo maximálně jeho zbraň). To proto, že hra startuje ve firstperson pohledu. V tomto pohledu engine nepředpokládá, že by kamera mohla (či spíše měla) hráčovu postavu vidět a proto je její renderování potlačeno. Pokud si chcete užít vámi nastaveného pohledu na svou postavu, musíte se nejdřív přepnout do thirdperson kamery.

Pozicovat ale kameru na pevně dané souřadnice opravdu není žádná velká zábava, takže přidáme trochu dynamiky. V této funkci můžeme použít proměnnou Location a Rotation, které obsahují aktuální pozici a rotaci hráče.

Náš script tedy můžete zkusit nahradit tímto (a spuštěním editoru skript znovu zkompilovat):

out_CamLoc = Location;
out_CamRot = Rotation;

return true;

To způsobí, že se kamera v každém frejmu nastaví na pozici hráče (resp. jeho pivotu, proto bude „v něm“) a bude stejně natočená jako hráč. Můžete si všimnout, že jsem použil out_CamLoc = Location; a tím do CamLoc převedl všechny složky (X,Y,Z) proměnné Location. Je to to samé, jako kdybych napsal

out_CamLoc.x = Location.x;
out_CamLoc.y = Location.y;
out_CamLoc.z = Location.z;
out_CamRot = Rotation;
return true;

Pokud tohle nastavení vyzkoušíte, budete se pohybovat s hráčem – pohyb kamery bude přesně kopírovat pohyb jeho modelu.

Co můžeme udělat dál? Třeba tohle:

out_CamLoc.x = Location.x;
out_CamLoc.y = Location.y;
out_CamLoc.z = Location.z + 150;
out_CamRot = Rotation;
return true;

Je to skoro stejné, jako předchozí příklad, až na ten poslední řádek. Ten říká, že pozice kamery v ose z se bude rovnat (tedy bude stejná) jako pozice hráče v ose z plus 150 jednotek. Tím posuneme kameru nad hráčovu hlavu.

CamLoc.x = Location.x;
CamLoc.y = 0;
CamLoc.z = Location.z;
return true;

A tohle? Tím jsme zamkli kameru v ose y na hodnotu 0. Kamera tedy s hráčem bude jezdit po ose X, ale v ose Y se nebude hýbat. Všimli jste si, že nenastavujeme rotaci kamery? Díky tomu s ní v tomhle případě budeme moci volně otáčet a naši postavu sledovat (v thirdperson pohledu).

Tím jsme bohužel již zcela vyčerpali náš dnešní prostor. V příštím díle práci s kamerou dokončíme – povíme si něco ke sledování hráče, jeho zamykání v určitých osách a ukážeme pár triků.

Předchozí
Další
Reklama
Reklama

Komentáře

Nejsi přihlášený(á)

Pro psaní a hodnocení komentářů se prosím přihlas ke svému účtu nebo si jej vytvoř.

Rychlé přihlášení přes:

Google Seznam
Reklama
Reklama