Pravidla Ucet
Nepřihlášen

Článek

Menu

Top down 3D - 1. část
Napsal: NicharCZ
Přidáno: 24.07. 2010

Zdravím vás. Jestli chcete, aby Vaše hra nabyla na zajímavosti přidáním třetího rozměru, tak jste tu správně. Předvedeme si GM 3D z ptačí perspektivy...

Ze všeho nejdřív si objasníme rozdíl





Jak vidíte, hra dostala třetí rozměr, díky texturám, které si sami nakreslíte...

Nové funkce


Pro získání textury ze sprite:
tex=sprite_get_texture(sprite,subimg)

A pro získání textury z background:
tex=background_get_texture(background)

• Další funkce jsou typu d3d_draw_... a ty si níže popíšeme...
• Později si jistě všimnete, že hodnoty třetího rozměru, tedy "z" jsou záporné...

Obj_camera - Náš hrdina

Nejprve si vytvoříme našeho hrdinu. Bude to obyčejná koule. Do složky sprites si udělejte texturu koule o velikosti 32x32. Textura bude čtvercová, nikoliv kruhová, protože se využijí všechny pixely z obrázku. K objektu přiřadíme ten sprite textury, pro lepší orientaci v room editoru.


Dále do create vložíme následující kód:

d3d_start();
draw_set_color(c_white);
tex=sprite_get_texture(spr_camera,0);

• d3d_start(); // Připravíme GM na třetí rozměr
• draw_set_color(c_white); // Osvětlíme vykreslování, nebo bude vše černé
• tex=sprite_get_texture(spr_camera,0); // Textura pro našeho hrdimu

Aby se hrdina pohyboval, tak dáme do stepu:

if (place_free(x,y+8) && keyboard_check(vk_up)) {y+=8;}
if (place_free(x,y-8) && keyboard_check(vk_down)) {y-=8;}
if (place_free(x+8,y) && keyboard_check(vk_right)) {x+=8;}
if (place_free(x-8,y) && keyboard_check(vk_left)) {x-=8;}

• To nám zajistí pohyb, hned, jak kód zkontroluje, jestli je pozice, na kterou chce náš hrdina vstoupit volná.

Vykreslíme hrdinu ve drawu:

d3d_draw_ellipsoid(x,y,0,x+32,y+32,-32,tex,1,1,24)

• Ellipsoid není ve skutečnosti koule, ale 3D elipsa. Když budeme chtít kouli, musíme zadat stejné rozměry pro délku, šířku a výšku.
• Co je hrepeat a texid vám popíšu níže u budovy

Našeho "dokonalého" kulatého hrdinu bychom měli, teď se podíváme na kostkovité budovy


Obj_building - Barák


Na barák budeme potřebovat tentokrát dvě textury, jedna pro střechu (128x128) (sprite, pro lepší orientaci v room editoru) a druhou pro okna a stěny (128x128), background. Až je budeme mít nakreslené, tak se můžeme pustit dál.


Nyní získáme v create textury střechy a oken:

tex=background_get_texture(bck_building); tex2=sprite_get_texture(spr_building,0);

• Získávání textur již ovládáme, jde se na vykreslení budovy, a la kostky a střechy, budeme používat následující funkce:
d3d_draw_block(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)
d3d_draw_floor(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)

• texid je vaše textura, hrepeat a vrepeat je opakování textur, tedy, kolikrát se vykreslí na stěnách vašeho modelu.
• U předchozího případu koule byl přítomen ještě jeden argument, tedy steps, která má hodnotu většinou 24 a nese "detailněší" zobrazování rotačního modelu.

Ve finále vykreslování budovy bude vypadat následovně:

d3d_draw_block(x,y,0, x+128,y+128,-256, tex,2,2) d3d_draw_floor(x,y,-128, x+128,y+128,-128, tex2,1,1)

• Všimněte si, že pro délku a šířku budovy byly použity stejné hodnoty, jako má rozměr vaší textury střechy, aby se neopakovala, proto má hrepeat a vrepeat hodnotu 1, že se tam vejde jednou.
• Výšku budovy si můžete zvolit jakou chcete, jen si dejte pozor na opakování textur.
• Budo je hotová, ještě zaškrtněme solid, aby hrdina neprocházel zdmi.

Co nás čeká příště?
• Model stromu
• Model zdi
• Gmk. a .gm6 příklad


Opět děkuji za komentáře...
Created by NicharCZ
Ostatní díly seriálu:
[24.07. 2010] - Top down 3D - 3. část
[24.07. 2010] - Top down 3D - 2. část
Klíčová slova: top down 3D ptačí perspektiva rozměr
 

Komentáře:

Napsal: NicharCZ
Přidáno: 25.07. 2010

Dneska večer by tu měl být druhý díl, budou tam stromy, zdi a ještě k tomu keříky :) Přihodím funkční zdroják (GM8 PRO). Neslibuji nižší verze, ale ještě uvidím...

Trvalý odkaz

Napsal: jackm
Přidáno: 25.07. 2010

Těším se na příklad, protože jsem si to zkoušel, a nešlo mi to. :)

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 24.07. 2010

Nebo, no, kladný. To si nejsem jistej. Prostě ten horní obdélník musí bejt připoutanej na ten objekt a ten dole musí bejt ten, co se hejbe no...

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 24.07. 2010

Jednoduše, jen zadáš do Zetek míso záporných hodnot kladný, a podle mě by to mělo fungovat ;). Nebo pokud nechceš chodit do 3D módu, počkej si na poslední mýho tutoriálu na 2.5D plošinovku - http://www.velkejchytrak.cz/index.php?str=read&id=12 .

Trvalý odkaz

Napsal: Mikefiser
Přidáno: 24.07. 2010

To je paráda :) Nikdo se nemusí sr....patlat s žádnýma 3D objektama,ale stačí takovýto 3D efekt :) Díky moc ,jen by mě zajímalo,jak to udělat z plošinovky....

Trvalý odkaz

Velkej Chytrák
Copyright (c) 2001-2010