Pravidla Ucet
Nepřihlášen

Článek

Menu

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

Třetí díl v pořadí vám přinese jednoduchý model domu, hradby, otvírající se brána, věž a řecká akademie.¨Tentokrát to nebudu tolik popisovat, pouze vám řeknu jaké textury jakých velikostí, hodím vám sem kódy. Osamostatněte se! Modely si už můžete vytvářet sami!

Než se do toho pustíme, chtěl bych vám zdůraznit, že zatím k těmto nadcházejícím modelům nepoužívám Marzipan, ale přímo je vykresluji v Game Makeru..

Obj_house - Dům

Ano, známý krychlovitý domek s nakloněnou střechou a komínem.Opět, půdorys čtvercový sprite (126x126) a několik textur, konkrétně čtyry. Pro bok domu (126x64), střechu(64x64), štít(126x64) a komín(32x32). Napřed si získáme textury v create:

tex=background_get_texture(bck_roof)
tex2=background_get_texture(bck_wood)
tex3=background_get_texture(bck_wood_roof)
tex4=background_get_texture(bck_chimney)

A vykreslování (Draw):

d3d_draw_block(x,y,0,x+126,y+126,-64,tex2,1,1) //Blok domu
d3d_draw_wall(x,y,-64,x+126,y,-128,tex3,1,1) //Štít domu
d3d_draw_wall(x,y+126,-64,x+126,y+126,-128,tex3,1,1) //Štít domu
d3d_draw_floor(x,y,-64,x+64,y+126,-126,tex,1,1) //Střecha domu
d3d_draw_floor(x+64,y,-126,x+126,y+126,-64,tex,1,1) //Střecha domu
d3d_draw_block(x+88,y+16,-48,x+104,y+32,-128,tex4,1,4) //Blok komínu
d3d_draw_floor(x+88,y+16,-128,x+104,y+32,-128,tex4,1,1) //Vršek komínu

To by byl dům.. Není to těžké, jen si musíte dát pozor na souřadnice..


Obj_foritfication - Opevnění

Jednoduché opevnění s hradbami. Potřebujete pouze jeden dlouhý sprite pro kolizi (256x32), který bude zároveň horní textura pro dřevěnou konstrukci, rovnou ho tu máte:

Mimo to bude potřeba textura kamene o velikosti 64x64 (backgrounds). Teď vám ukáži ten kód pro vykreslení opevnění s hradbami:

Create:
tex=background_get_texture(bck_stone)
tex2=sprite_get_texture(spr_fortification,0)
Step:
d3d_draw_block(x,y,0,x+256,y+32,-48,tex,8,1) //Opevnění
d3d_draw_floor(x,y,-48,x+256,y+32,-48,tex2,1,1) //Podlaha

for (xx=0;xx<256;xx+=16) //Smyčka pro množství
d3d_draw_block(x+xx,y,-48,x+xx+8,y+8,-52,tex,1,1) //Hradby
for (yy=0;yy<256;yy+=16) //Smyčka pro množství
d3d_draw_block(x+yy,y+24,-48,x+yy+8,y+32,-52,tex,1,1) //Hradby

To bylo opevnění horizontální. Obdobný kód je i pro vertikální hradby:

d3d_draw_block(x,y,0,x+32,y+256,-48,tex,8,1) //Opevnění
d3d_draw_floor(x,y,-48,x+32,y+256,-48,tex2,1,1) //Podlaha

for (xx=0;xx<256;xx+=16) //Smyčka pro množství
d3d_draw_block(x,y+xx,-48,x+8,y+xx+8,-52,tex,1,1) //Hradby
for (yy=0;yy<256;yy+=16) //Smyčka pro množství
d3d_draw_block(x+24,y+yy,-48,x+32,y+yy+8,-52,tex,1,1) //Hradby

Určitě jste si všimli smyčky for, je to užitečná věc, díky které nemusíte každou hradbu otrocky vypisovat..

Obj_tower - Věž

Udělali jsme si opevnění, ale na rozích to nevypadá moc hezky, buďto tam hodíme vyšší koncovou hradbu, nebo rovnou věž, jak si teď ukážeme. Budou potřeba opět další textury, jedna pro okna věže (128x48) a pro střechu věže (80x64), mimo to ještě budeme potřebovat naší kamenitou texturu. Kolizní sprite bude mít 48x48. Tak, až vše budeme mít připravené, tak hoďte do create:

tex=background_get_texture(bck_stone)
tex2=background_get_texture(bck_tower)
tex3=background_get_texture(bck_roof_tower)
A teď draw:
d3d_draw_block(x,y,0,x+48,y+48,-128,tex,1,2)
d3d_draw_cylinder(x-12,y-12,-128,x+60,y+60,-160,tex2,2,1,1,8)
d3d_draw_cone(x-20,y-20,-160,x+68,y+68,-182,tex3,1,2,1,36)

Obj_gate - Brána

Aby se do objektu dalo vstoupit, potřebujeme bránu. Textury nám budou stačit tři, dvě už máme, horní dřevo, kámen a teď si ještě nakreslíme mříže pro vchod. (256x128). Dále potřebujeme dva kolizní sprity, jeden, když je brána zavřená (postačí spr_fortification) a druhý pro otevřenou:

Pokud máte verzi Game Makeru 7 a nižší, musíte u spritu nastavit černou jako transparentní. Až budete mít vše připravené, tak si získáme textury v Create:

tex=background_get_texture(bck_stone)
tex2=background_get_texture(bck_gate)
tex3=sprite_get_texture(spr_fortification,0)

z=0

Určitě jste si všimli, že jsme deklarovali proměnnou "z", která bude určovat nadzvednutí mříží. Aby se tak dělo, musíme dát do stepu:

if z<-84 z=-84
if z>0 z=0
if distance_to_point(obj_camera.x,obj_camera.y)<150 z-=1 else z+=1

if z<-42 sprite_index=spr_open_gate else sprite_index=spr_fortification

To nám zajistí při přiblížení hráče k bráně, že se sama otevře (středověká automatika) :D Jde se vykreslovat bránu v eventu draw:

d3d_draw_block(x,y,0,x+42,y+32,-128,tex,1,1) //První blok
d3d_draw_block(x+214,y,0,x+256,y+32,-128,tex,1,1) //Druhý blok
d3d_draw_wall(x+42,y+16,z,x+214,y+16,z-84,tex2,1,1) //Vrata
d3d_draw_block(x,y,-84,x+256,y+32,-128,tex,8,2) //Příčný blok
d3d_draw_block(x+38,y+12,-84,x+46,y+20,-160,tex,1,1) //Podpůrný levý blok
d3d_draw_block(x+210,y+12,-84,x+218,y+20,-160,tex,1,1) //Podpůrný pravý blok
d3d_draw_floor(x,y,-128,x+256,y+32,-128,tex3,1,1)

for (xx=0;xx<256;xx+=16) //Smyčka pro množství
d3d_draw_block(x+xx,y,-128,x+xx+8,y+8,-136,tex,1,1) //Hradby
for (yy=0;yy<256;yy+=16) //Smyčka pro množství
d3d_draw_block(x+yy,y+24,-128,x+yy+8,y+32,-136,tex,1,1) //Hradby

Obj_academy - Akademie

Řecká budova, tak jak ji všichni znají. bude potřeba textura pro bílý kámen (32x32), pro štít:

Dále bude třeba textura pro sloupy:

To všechno přijde do backgrounds, kolizní maska bude normální, jako pro obyčejnou budovu. Získejme si textury v create:

tex=background_get_texture(bck_white_stone)
tex2=background_get_texture(bck_greece)
tex3=background_get_texture(bck_white_stone_roof)

A jde se vykreslovat:

d3d_draw_block(x,y,0,x+126,y+126,-4,tex,1,1) //První schod
d3d_draw_block(x+4,y+4,-4,x+122,y+122,-8,tex,8,8) //Druhý schod

for (xx=0;xx<126;xx+=16) //Smyčka pro množství
d3d_draw_cylinder(x,y+xx,-8,x+8,y+xx+8,-72,tex2,1,1,1,36) //Vykreslení sloupů
for (_xx=0;_xx<126;_xx+=16) //Smyčka pro množství
d3d_draw_cylinder(x+118,y+_xx,-8,x+126,y+_xx+8,-72,tex2,1,1,1,36) //Vykreslení sloupů
for (yy=0;yy<126;yy+=17) //Smyčka pro množství
d3d_draw_cylinder(x+yy,y,-8,x+yy+8,y+8,-72,tex2,1,1,1,36) //Vykreslení sloupů
for (_yy=0;_yy<126;_yy+=17) //Smyčka pro množství
d3d_draw_cylinder(x+_yy,y+112,-8,x+_yy+8,y+120,-72,tex2,1,1,1,36) //Vykreslení sloupů

d3d_draw_block(x,y,-72,x+126,y+126,-80,tex,4,4) //Horní blok
d3d_draw_wall(x,y+4,-80,x+126,y+4,-144,tex3,1,1) //Štít akademie
d3d_draw_wall(x,y+122,-80,x+126,y+122,-144,tex3,1,1) //Štít akademie
d3d_draw_floor(x,y,-64,x+64,y+126,-126,tex4,2,2) //Střecha akademie
d3d_draw_floor(x+64,y,-126,x+126,y+126,-64,tex4,2,2) //Střecha akademie

Tak, to bychom měli, tohle byl poslední díl, pokud ještě nějaký bude, tak ohledně importu modelů z Marzipanu. Děkuji všem za ozkoušení tutoriálu.



• D3D (GM8 Pro)
• D3D (GM6 Pro)

Tutoriál byl dělán v GM8, nevím, jak to bude fungovat po přeformátování..


Komentáře vždy potěší... :)
Ostatní díly seriálu:
[29.07. 2010] - Top down 3D - 2. část
[29.07. 2010] - Top down 3D - 1. část
Klíčová slova: top down 3D ptačí perspektiva rozmÄ›r GM3D
 

Komentáře:

Napsal: DDL Blue
Přidáno: 20.04. 2011

Cooty: Uklidni se ;). Mě nevadí, co říkáš (dalo by se říct, že z velký části souhlasím), ale kopírovat to pod každej článek o 3D, to už je spamování. Ostatní komentáře mažu, tendle jeden ti samozřejmě nechám...

Trvalý odkaz

Napsal: Quadman
Přidáno: 20.04. 2011

Nemusíš to písať do každého článku o 3D...

Trvalý odkaz

Napsal: Cooty125
Přidáno: 19.04. 2011

Ten kdo začne dělat 3D hru v GM a myslí to vážně, tak je to "blázen" :) Ultimate3D je jeden z nejhůře zpracovaných 3D enginů! Jeho náročnost je na úrovni cryenginu, a po grafické stránce sotva na úrovni quake 3. Tímto jsem chtěl ríci: ,,naučte se něco užitečného jako např: XNA C#, nebo D3D či OpenGL v C++", protože GM ve 3D nemá užití. ;)

Trvalý odkaz

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

Jo aha ono je to přeformátovano, tak proto to nejde...

Trvalý odkaz

Napsal: Tronf
Přidáno: 29.07. 2010

Super a čo bude v ďalšej časti ? :)

Trvalý odkaz

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

Tak jsem stáhl to GM6, a nejde to otevřít píše to File was created in newer version.. tak něco.

Trvalý odkaz

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

Link opraven, jinak díky.. :)

Trvalý odkaz

Napsal: Satik64
Přidáno: 29.07. 2010

V GM8 verzi nejsou nové modely, ale jinak pěkné, v příštím díle by mohli být i světla, zkoušel jsem je tam dat ale nějak mě to moc dobře nešlo :D

Trvalý odkaz

Velkej Chytrák
Copyright (c) 2001-2010