Skocz do zawartości
unnem

HP nie jest przyklejone do potworkow.

Rekomendowane odpowiedzi

Czesc.

 

Mam maly problem z paskami zycia. sciaglem sobie jakis tutorial z tej strony i zrobilem wg. niego moje wlasne skrypty.

Wszystko ladnie dziala ale jak ustawiam zeby potwory sie poruszaly to paski zycia stoja w miejscu. probowalem zaznaczyc "relative" ale nic sie nie dzialo.

 

i jeszcze jedno pytanie co do skryptu (chcialbym poprostu go lepiej zrozumiec)

 

(event - kolizja z obiektem) other.hpbar=hp; (co to znaczy i co to robi?)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

jesli ten pasek hp jest obiektem to porostu ustaw

 

obj_hpbar , step

GML
x = obj_potworek.x

y = obj_potworek.y + wysokość // liczba okreslona</span>

 

 

PS: Daj link do tego przykładu może wtedy więcej ci pomoge bo tak na "sucho" to się nie da ;) .

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jak najbardziej zgadzam się z przedmówcą. Wstaw nam tu linka, albo kod który masz. I chyba już wiem w czym problem. Skrypt rysowania hp tylko raz jest wywoływany. Jeśli każdy wróg/obiekt/kosmiczny jeździeć, ma oddzielny pasek, to daj ten skrypt w draw, a potem dodaj taki kod

GML
draw_sprite_ext(jakieś_argumenty_sprawdź_je)
Jak chcesz mogę Ci wysłać cały kod na rysowanie hp. Tylko powiedz czy to tylko kwadracik, czy specjalny sprite.

EDIT:

(event - kolizja z obiektem) other.hpbar=hp; (co to znaczy i co to robi?)

Przy kolizji z obiektem, zmienna hpbar other (other - czyli obiekt z którym masz aktualnie kolizję), ustawia się na zmienną hp. Nie wiem czemu to ma służyć.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

zrobilem tak jak mowiliscie i dziala ale tylko 1 z 10 potworkow ma ten HP bar.

dodalem oba kody do tego zeby sprawdzic obie opcje naraz :P i sprite i draw a hor. gradient sa tylko na jednym z nich.

 

http://www.speedyshare.com/dGgfw/test.gmk

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Błąd już znalazłem ;x

W obj_ghost

GML (create)
bar=instance_create(x,y,hpvisible);

bar.rodzic=id

hp=100;

a w Step hpvisible

GML (step)
x = rodzic.x

y = rodzic.y

EDIT: Zdublowało, przepraszam ;c Zapomniałem, żeby nie klikać dwa razy wyślij.

Od razu wytłumaczę w czym był problem. W hpvisible był taki kod

GML
x=obj_ghost.x;

y=obj_ghost.y

Skąd ten obiekt ma wiedzieć do którego obj_ghost ma się przywiązać? Wybrał ten o najmniejszym id, tak zrobiły wszystkie. A other.hpbar=hp oznacza, że jak ktoś weźmie hp TEMU JABŁKU, to hp tego jabłka będzie twoje. Ale ogólnie ten sposób hp, mi się strasznie nie podoba, jak coś napisz, to Ci coś mogę zrobić.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Błąd już znalazłem ;x

W obj_ghost

GML (create)
bar=instance_create(x,y,hpvisible);

bar.rodzic=id

hp=100;

a w Step hpvisible

GML (step)
x = rodzic.x

y = rodzic.y

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

hmm.. z draw a horizontal gradient raz dziala raz nie dziala. tzn mam 10 mobkow i raz wlacze gre to maja tylko 2 z nich te HP a wlacze drugi/3 raz to znowu wiecej/mniej ma ten pasek.

sprite kazdy z nich ma.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Każdy z obiektów potworów powinien mieć kod rysowania paska HP w swoim Draw. Pamiętaj, żeby zamiast draw_cośtam(200,200,itd.), co będzie rysowało te paski dokładnie w tej pozycji w roomie, pisać draw_cośtam(x+liczba,y+liczba,itd.), spowoduje to, że te paski będą rysowane w stałej odległości od danego obiektu.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

dobra dziala wszystko ladnie :) ale mam teraz 2 pytania wiecej.

co teraz dopisac zeby to HP znikalo?

probowalem wpisywac

(event collide) hp-=10;

albo hpbar-=10 ale nie dziala. (tak nazywa sie ten caly pasek hp i hpbar)

probowalem tez wpisac tam nazwe obiektu ktory maluje ten pasek ale mi wyskoczyl blad przy uruchamianiu gry.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

nie wiem co ty tam masz ale powinno byc tak

w objekcie miecza, pocisku, czy co go tam rani

w collision z tym co ma ranic

 

GML
with(other)

{

//dopiero teraz odejmuj

}

/*jezeli to jest pocisk to fanie jak by go zniszczyc

instance_destroy()

*/

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

cos tam zadzialalo i potworek umarl ale wyskoczyl odrazu taki blad

ERROR in
action number 1
of Draw Event
for object hpvisible:

Error in expression:rodzic.x
position 8: Unknown variable x

 

tutaj mam moj test

http://speedy.sh/694Xv/test.gmk

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

nie wie co to zmienna x

sa 2 opcje:

-chciałeś zmienną od złego obiektu

-właśnie usunąłeś ten obiekt

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

no bo on wlasnie umar na smierc. ale jak zrobic zeby hpvisible znikal albo przestal dzialac wraz ze smiercia bytu?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
no bo on wlasnie umar na smierc
Naprawdę?

Ustaw, że jeśli ma mniej (obj_ghost) hp niż 1, to wtedy

GML
if(hp<=0)

{

instance_destroy();

with(bar){instance_destroy();}

}

A HP odejmujesz w serduszku, a nie w bohaterze.

To samo możesz zrobić w serduszku, ale wtedy mała zmiana

GML
if(hpbar<=0)

{

instance_destroy();

with(rodzic){instance_destroy();}

}

Tylko nie pamiętam jakie miałeś zmienne, hp albo hpbar w serduszku.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Naprawdę?

Ustaw, że jeśli ma mniej (obj_ghost) hp niż 1, to wtedy

GML
if(hp<=0)

{

instance_destroy();

with(bar){instance_destroy();}

}

A HP odejmujesz w serduszku, a nie w bohaterze.

To samo możesz zrobić w serduszku, ale wtedy mała zmiana

GML
if(hpbar<=0)

{

instance_destroy();

with(rodzic){instance_destroy();}

}

Tylko nie pamiętam jakie miałeś zmienne, hp albo hpbar w serduszku.

błąd

najpierw usun wszystko inne a na koncu samego siebie, nie wiem czy w gm:s by twoj sposob dzialal, w poprzednich na pewno nie

wiec...

GML
with(rodzic){instance_destroy();

instance_destroy();

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pewnie masz rację, ale on ma GM 8, więc tak napisałem ;p

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×