Skocz do zawartości

Tlen w wodzie


Rekomendowane odpowiedzi

Cześć wszystkim skorzystałem z przykładu z forum...A dokładnie kiedy wchodzę do wody ubywa mi tlen,jak tlen osiągnie wartość zerową,to ubywa mi energia..jak energia osiągnie wartość zerową tracę życie..

Ok brzmi prosto,ale problem w tym,że chciałbym aby pasek tlenu pojawiał się dopiero,kiedy znajdę się bohaterem w wodzie,a nie żeby był non stop..i teraz kwestia,czy lepiej użyć draw_sprite_ext? czy może draw_sprite_part? Ewentualnie jak idealnie nanieść pasek tlenu w miejscu paska energii bohatera? ale tylko,żeby pokazywał się ja jestem w wodzie,a nie non stop..

 

niżej kod mojego tlenu w wodzie..

 

w create bohatera dodałem zmienną

 

GML
tlen=10;//poczatkowa ilosc tlenu

 

 

 

w stepie bohatera

 

 

GML
//Zanurzamy sie

if tlen<10

{if distance_to_object(obj_woda)>1

{tlen+=0.2}}

//jesli nie ma tlenu energia ucieka i bohater potem traci zycie

if tlen<0.1

{global.hp-=0.2}

if global.hp<0

{

global.life -= 1;

}

 

 

 

i teraz w draw gui ten pasek tlenu

 

GML
draw_sprite_ext(spr_tlen,0,2,2,obj_player.tlen*10,1,0,image_blend,1)//rozsciagnal mi sie po calosci pasek tlenu

 

draw_sprite_part(spr_hp_bar,1,1,0,180/maxHpHUD*hpHUD,130,90,14);//to akurat pasek hp energi bohatera

draw_set_color(c_white);

 

 

 

tu kolizja obj wody z graczem

 

GML
if tlen>0

{tlen-=0.1}

Odnośnik do komentarza
Udostępnij na innych stronach

GMLif distance_to_object(obj_woda)<1 draw_sprite_ext(spr_tlen,0,2,2,obj_player.tlen*10,1,0,image_blend,1);

Zależy. Ext po prostu rozciąga pasek, natomiast part ucina go. Jak jest cały jednolisty w poziomie, to żadna różnica ;)

 

 

No właśnie to nic nie pomaga,pasek się wcale nie pojawia;)

 

 

step bohatera

GML
//nabieranie powietrza

if tlen<10

{if distance_to_object(obj_woda)>1 draw_sprite_ext(spr_tlen,0,2,2,obj_player.tlen*10,1,0,image_blend,1);

{tlen+=0.2}}

//jesli nie ma powietrza energia ucieka i bohater potem traci zycie

if tlen<0.1

{global.hp-=0.2}

if global.hp<0

{

global.life -= 1;

}

 

 

On się pojawi jak wrzucę go do drąw gui,ale chce żeby się tylko i wyłącznie pokazywał jak jestem wyłącznie w wodzie...

Odnośnik do komentarza
Udostępnij na innych stronach

Wyrzuć to ze stepa i zrób jak threef napisał.

W Draw:

GMLif tlen<10 draw_sprite_ext(spr_tlen,0,2,2,obj_player.tlen*10,1,0,image_blend,1);

Wszystkie funkcje z draw_* wstawiaj tylko do draw.

 

 

No działa dzięki;) tylko nie wiem,czemu mi sprita tlenu rozciąga:/

może zamiast draw_sprite_ext użyć draw_sprite_part??

Odnośnik do komentarza
Udostępnij na innych stronach

GMLobj_player.tlen*10

To powoduje że ci rozciąga, a chcesz żeby ci robił twoja grafikę jako repeat czy po prostu ją skracać w zależności od ilości tlenu?

 

Wystarczy,żeby mi tylko skracał w zależności od tlenu..mam jednego właśnie sprita do tlenu... o wymiarach 208x33

 

 

Kurcze...jak ustawić tego sprita tlenu żeby nie zapierdzielał jak głupi,tylko powoli tlen ubywał a,i nie był tak rozciągnięty ten pasek

Odnośnik do komentarza
Udostępnij na innych stronach

GMLdraw_sprite_ext(spr_tlen,0,2,2,tlen/10,1,0,image_blend,1);

 

 

Prosta matma, musisz dzielić a nie mnożyć :P

 

I to draw jest w bohaterze? W takim razie nie musisz pisać obj_player.

 

Tak Kaktus mam w draw bohatera,no fakt nie trzeba pisać obj_player

 

ale teraz nic nici wyświetla amba brak paska ;)

 

GML
if tlen<10 draw_sprite_ext(spr_tlen,0,2,2,tlen/10,1,0,image_blend,1);
Odnośnik do komentarza
Udostępnij na innych stronach

W Drawie też mogłeś mieć.

 

Różnica jest taka, że Draw_GUI pokazuje zawsze widoczny widok(masło maślane), w sensie, że pozycje są ustalone od obecnego ustawienia viewu.

W Draw pokazuje w pozycjach rooma. Jeśli chcesz, żeby było zawsze widoczne, to piszesz np: x+view_xview[0].

Odnośnik do komentarza
Udostępnij na innych stronach

W Drawie też mogłeś mieć.

 

Różnica jest taka, że Draw_GUI pokazuje zawsze widoczny widok(masło maślane), w sensie, że pozycje są ustalone od obecnego ustawienia viewu.

W Draw pokazuje w pozycjach rooma. Jeśli chcesz, żeby było zawsze widoczne, to piszesz np: x+view_xview[0].

 

Ok faktycznie po dopisaniu x+view)xview[0] wszystko jest widoczne

 

mam tak w draw tym razem dodałem,ale powiedzcie mi...dlaczego jest tak,że jak wskaźnik tlenu mi się zmniejsza,to zamiast z jednej strony,czyli z prawej się zmniejszać,to on się z dwóch stron zmniejsza taki efekt zwężania..

 

GML
if tlen<10 draw_sprite_ext(spr_tlen,1,view_xview+150,view_yview+120,tlen/10,1,0,image_blend,1);
Odnośnik do komentarza
Udostępnij na innych stronach

Masz ustawione orgin na środku.(Jak masz nazwę sprite i tam go edytujesz). Jeśli ustawisz x na 0, to będzie git ;)

 

No kurcze wycentrowałem sprita gamoń ze mnie;) dzięki wszystko jest dobrze;) a ja już myślałem,że coś popierdzieliłem w tym draw;)

Kaktus ,Threef dziękuje chłopaki;)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...