Game Maker - Health Bar

Ostatní jazyky GameMaker Ostatní Game Maker - Health Bar

Vítejte u mého prvního návodu. Bude o častém problému, healthbar přes sprit.

První si namalujeme 2 obrázky. jeden pro pozadí ukazatele, a druhý pro aktuální stav zdraví. Měli by mít oba stejný tvar. Je taky důležité aby byl začátek a konec spritu přímo u okrajů, jinak by ukazatel nemusel nízké zdraví zobrazovat. Pro příklad, pozadí může vypadat takto:

a popředí, které se bude zobrazovat jenom ta část odpovídající zdraví

Teď vytvoříme objekt, který bude vykreslovat healthbar. Do eventu Create vložíme kod

zdravi=100
maxzdravi=100

Proměnná zdravi udává zdraví na začátku, proměnná maxzdravi maximální hodnotu zdraví.

Dále vytvoříme event Draw a vložíme tento kod:

draw_sprite(sprite1,-1,x,y) //vykreslí pozadí ukazatele (sprite1)
draw_sprite_part(sprite0,-1,0,0,(sprite_get_width(sprite0)/maxzdravi)*zdravi,sprite_get_height(sprite0),x,y) //vykreslí aktuální zdraví (sprite0)

první kod vykresluje pozadí healthbaru (sprite1), druhý část zbývajícího zdraví (sprite0)

To je všechno, pro doplnění můžeme přidat do drawu tento kód:

draw_text(x-50,y+20,zdravi) //zobrazí aktuální zdraví

A zobrazí se textově hodnota aktuálního zdraví. (souřadnice x a y je si upravte podle vašich potřeb. Nakonec přikládám GMK soubor, kde najdete celý příklad


 

Stáhnout

Staženo 492x (14.22 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal Satik64
Avatar
Autor se věnuje základům game designu, programování her v Game Makeru a Unity a práci v grafických nástrojích. Občas tvoří módy do jiných her.

Jak se ti líbí článek?
Celkem (6 hlasů) :
4.833334.833334.833334.833334.83333


 


Miniatura
Všechny články v sekci
GameMaker - Ostatní
Miniatura
Následující článek
Práce s INI soubory v Game makeru

 

 

Komentáře
Zobrazit starší komentáře (14)

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Ano, to se tu řeší stále, je to výchozí chování GM, viz event Draw zde: http://www.itnetwork.cz/…nts-udalosti

Odpovědět  +1 19.10.2012 10:13
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Planeswalker_CZ:

Já mám jeden objekt, ale ten se v roomu má objevit vicekrat. A pro každý potřebuju zdraví, které se bude vázat jen na svuj objekt. vcetne vykresleni zdravi pod tento objekt.

Odpovědět 19.10.2012 17:46
Nikdy neříkej, že to nejde, protože se naje blbec, který neví, že to nejde, a udělá to.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Planeswalker_CZ
TomBen:

Žádný problém - použiješ instance toho objektu.
Jen musíš mít zdraví jako lokální proměnnou a vyhnout se vestavěnému health.

Odpovědět 19.10.2012 17:59
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
steve2MC
Člen
Avatar
steve2MC:

Ahoj, super tutorial ale potřeboval bych pomoc. Potřebuji aby hp bar ubýval obraceně, zleva do prava... Pls jak to jde udělat?

 
Odpovědět 25.9.2013 19:42
Avatar
Satik64
Redaktor
Avatar
Odpovídá na steve2MC
Satik64:

Zdravím, napadá mě jednoduché řešení, vykreslit healthbar zrcadlově změnou proměnné image_xscale na zápornou hodnotu

draw_sprite_ext(sprite1,-1,x,y,-1,1,0,c_white,1); //vykreslí pozadí ukazatele (sprite1)
draw_sprite_part_ext(sprite0,-1,0,0,(sprite_get_width(sprite0)/100)*zdravi,sprite_get_height(sprite0),x,y,-1,1,c_white,1);
Editováno 25.9.2013 22:11
Odpovědět  +3 25.9.2013 22:11
Bůh neobdarovává lidi sny, aniž by jim nedal sílu je uskutečnit.
Avatar
steve2MC
Člen
Avatar
Odpovídá na Satik64
steve2MC:

Dik, funguje mi to az na to, ze mi to otoci cely sprite ale ja potrebuju jen aby ten hp bar sel obracene...

Editováno 26.9.2013 9:45
 
Odpovědět 26.9.2013 9:44
Avatar
TomBen
Redaktor
Avatar
Odpovídá na steve2MC
TomBen:

Při použití zrcadlového -1 scale si ty sprity předem otoč.
Vždycky mě pobaví, jak někdo zcopypastuje tutoriál a pak řekne
něco jako: "To je hezký mistře, a teď bych prosil tu Monu Lisu
ještě trochu pootočit."

Co takhle se snažit trochu sám?

Odpovědět  ±0 26.9.2013 10:36
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
steve2MC
Člen
Avatar
Odpovídá na TomBen
steve2MC:

Když pominu 30 min hraní si s 2 řádky kódu a další půl hodinou googlení tak máš pravdu, nesnažil jsem se. Jinak dík za nápad...

 
Odpovědět 26.9.2013 16:28
Avatar
TomBen
Redaktor
Avatar
Odpovídá na steve2MC
TomBen:

No, abys neřek, že jsem tě ošidil. Jde to udělat snadno
i bez úpravy spritu čistě kódem.

t=sprite_get_width(sprite0)*(1-(zdravi/100));
draw_sprite(sprite1,-1,x,y);
draw_sprite_part(sprite0,-1,t,0,sprite_get_width(sprite0)-t,sprite_get_height(sprite0),x+t,y);

Není to nijak hezký kód, ale dělá co má.

Odpovědět 26.9.2013 23:05
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Honza Šebek
Člen
Avatar
Honza Šebek:

Je to dobře udělané,ale mám problém to dát k objeku, aby to ubíralo když nastane kolize s hráčem.

 
Odpovědět 19. dubna 20:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 24. Zobrazit vše