Autor | Zpráva | ||
---|---|---|---|
Tonny Profil * |
#1 · Zasláno: 22. 2. 2014, 18:21:33
Ahoj,
snažím se o vytvoření izometrického enginu v HTML5 (Canvas) a už mi to docela funguje, nicméně jsem narazil na problém, který zatím nejsem schopen vyřešit (ač jsem googlil): V tomto problému figurují dvě funkce. jednak drawAll(); pomocí které se vykreslí všechny dlaždice a potom pushHero();, která má za úkol správně umístit hrdinu na mapě. Funguje to správně v případě, že je hrdina v popředí a není třeba aby byl zastíněn nějakým blokem: ![]() V opačném případě to už tak dobrý není - kostka co je před ním by mu měla zakrývat kus těla (snad je to z toho obrázku trochu patrný): ![]() Chci se zeptat, je-li možné docílit správného překreslování, aniž bych modifikoval tu funkci drawAll(). (Bojím se, že není...) Máte-li někdo nějaký nápad, jak to řešit, budu vděčný za jakoukoli radu :) Díky moc Tonny |
||
Radek9 Profil |
#2 · Zasláno: 22. 2. 2014, 18:24:08
Tonny:
Asi ji nemusíš nějak extra modifikovat, ale pushHero bych volal před ní a až potom bych vykresloval bloky včetně postavičky. |
||
Tonny Profil * |
#3 · Zasláno: 22. 2. 2014, 18:40:55
Asi to dělám moc jednoduše, ale mám tyhle dvě funkce jsou zatím úplně odděleny a funguje to asi takhle:
dawAll() - postupně projde dvojrozměrné pole, ve kterém jsou uloženy instance s informacemi o dané buňce (obrázek, offset_x, offset_y), a na jejich základě je vkreslí do canvasu. potom volám pushHero(), která vezme souřadnice na kterých by měl být hrdina, přepočítá je do izometrického zobrazení a pak ho na tyto souřadnice vykreslí. Pokud bych funkce volal v opačném pořadí, hrdina by byl vždy překryt krajinou :( |
||
Radek9 Profil |
#4 · Zasláno: 22. 2. 2014, 22:51:17
Tonny:
Při volání pushHero zařaď postavičku na správnou pozici do onoho pole mezi buňky. Při vykreslování v drawAll pak rozlišuj, jestli jde o buňku, nebo postavičku. Jinak není nic potřeba měnit. |
||
Časová prodleva: 11 let
|
0