Hlavní stránka Multimédia Hry a zábava 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í
autor: Aleš Ulm , publikováno 12.11.2010
Hrátky s Unreal Engine IX: Svět tam někde za zdí

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ě!


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í

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.

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

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;

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

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ů.



Tagy: UDK  Unreal  Unreal Engine  Unreal Development Kit  programování  hry  engine  tutoriál  návod  seriál  


 
Komentáře k článku
RSS
Pouze registrovaní uživatelé mohou přidat komentář!
12.11.2010 12:43:40   90.178.124.xxx 360
Na jednu stranu bych se do toho rád pustil, ale když si vzpomenu kolik hodin jsem strávil nad úpravama map v Tactical Ops (MOD pro Unreal Tournament) tak už si říkám, že využiju čas jinak. Každopádně pro lidi, který jsou třeba na střední a nevědí do čeho píchnout tak jako já dřív tak je to ideální pomůcka pro to si "něco dokázat" něco vytvořit. Byl to krásný pocit si s kamarády zahrát mapu, která byla upravená přesně tak jak jsme si to představovali. No nic konec nostalgie :-)
20.11.2010 17:03:05   82.100.3.xxx 20
Supér díl, už se zas moc těším na další a doufám, že se alespoň z části zas budete věnovat kameře a případnému ovládání postavy.
Např. fixní zaměřovací kříž, který by reagoval na myš, klasické RPG s fixní rotací kamery. Opacity objektů, které kolidují s kamerou - stromy, střecha domu atp.

Moje parametry herní kamery:
Kód:
out_CamLoc.x = Location.x - 250; 
out_CamLoc.y = Location.y + 20;
out_CamLoc.z = Location.z + 250;
out_CamRot.yaw = - 2731;
out_CamRot.pitch = - 8192;
out_CamRot.roll = 0;
21.11.2010 09:26:36   82.100.3.xxx 10
Napadlo mě ještě např. funkce použití žebříku atp.
16.4.2011 17:53:27   78.99.41.xxx 00
po dlhšom čase som konečne spustil moj web o UDK http://www.udk-site.tym.sk

Redakce si vyhrazuje právo odstranit neslušné a nevhodné příspěvky. Případné vyhrady na diskuze(zavináč)pctuning.cz

95 čtenářů navrhlo autorovi prémii: 46.7Kč 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.