Skocz do zawartości

napis animowany nad wrogiem po zabiciu go


pankracy

Rekomendowane odpowiedzi

Cześć

 

Mam wroga i po zabiciu wroga losowo dostaje jakiś element,który daje mi daną ilość punktów score,no i teraz np chciałbym żeby to efektowniej wyglądało,że po zabiciu wroga pojawi się na chwilę nad nim napis np +100 i po chwili napis uniesie się delikatnie do góry i zniknie nad wrogiem.Jak coś takiego wykonać?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

nowy obiekt obj_floating_txt

 

create:

 

GML
txt = "";

yspeed = 0;

 

step:

 

GML
y += yspeed;

image_alpha -= 0.05;

if( image_alpha <= 0 )

instance destroy();

 

 

u wroga przy umieraniu:

 

GML
z = instance_create(obj_floating_txt,x,y-10);

z.txt = string( "+" + pointvalue); //opcjonalnie po prostu +100 wpisz

z.yspeed = -4;

Odnośnik do komentarza
Udostępnij na innych stronach

nowy obiekt obj_floating_txt

 

create:

 

GMLtxt = "";

yspeed = 0;

 

step:

 

GMLy += yspeed;

image_alpha -= 0.05;

if( image_alpha <= 0 )

instance destroy();

 

 

u wroga przy umieraniu:

 

GMLz = instance_create(obj_floating_txt,x,y-10);

z.txt = string( "+" + pointvalue); //opcjonalnie po prostu +100 wpisz

z.yspeed = -4;

 

Serdeczne dzięki ANtY ;) niech moc będzie z Tobą;)

Odnośnik do komentarza
Udostępnij na innych stronach

Serdeczne dzięki ANtY ;) niech moc będzie z Tobą ;)

 

 

 

Dobra stworzyłem sobie ten obiekt

następnie dałem go na planszy

a,we wrogu tam,gdzie ginie

dałem tak:

 

GML
z = instance_create(obj_floating_txt,x,y-10);

z.txt = string( "+100" + pointvalue); //tu wywala mi błąd odnośnie tej linijki jak już wroga zabije.

z.yspeed = -4;

 

 

z.txt = string( "+100" + pointvalue); //tu wywala mi błąd odnośnie tej linijki jak już wroga zabije.

 

tak się zastanawiam,bo to odczytuje z pliku txt,czyli tworzy,czy mam stworzyć plik txt,myślałem,że to w draw się to ustawia i ustala się nazwę też czcionki.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Txt to po prostu skrót od text i nazwa zmiennej, nie zewnętrzny plik, Anty Sobie go tak nazwał po prostu

Odnośnik do komentarza
Udostępnij na innych stronach

Txt to po prostu skrót od text i nazwa zmiennej, nie zewnętrzny plik, Anty Sobie go tak nazwał po prostu

 

 

 

A już myślałem,że potrzebuje stworzyć zewnętrzy plik z takim rozszerzeniem,dzięki za odpowiedź.

 

Mam problem tu,bo wywala błąd odwołując się do tej linijki w kodzie...

 

 

GML
z.txt = string( "+100" + pointvalue); //tu wywala mi błąd odnośnie tej linijki jak już wroga zabije.
Odnośnik do komentarza
Udostępnij na innych stronach

A już myślałem,że potrzebuje stworzyć zewnętrzy plik z takim rozszerzeniem,dzięki za odpowiedź.

 

Mam problem tu,bo wywala błąd odwołując się do tej linijki w kodzie...

 

 

GML
z.txt = string( "+100" + pointvalue); //tu wywala mi błąd odnośnie tej linijki jak już wroga zabije.</span>

 

GML
z.txt = "+" + string(pointvalue)
Odnośnik do komentarza
Udostępnij na innych stronach

GMLz.txt = "+" + string(pointvalue)

 

No dobra teraz błędu nie wywala,ale napisu po zabiciu wroga nie ma...czyli w tym przypadku powinno się pojawić +100

 

GML
z = instance_create(obj_floating_txt,x,y-10);

z.txt = "+100" + string(global.punkty);//mam zmienna global.punkty

z.yspeed = -4;

 

 

obj_floating_txt mam umieszczony na planszy,więc powinno być dobrze

 

create

 

GML
txt = "";

yspeed = 0;

 

 

step

 

GML
y += yspeed;

image_alpha -= 0.05;

if( image_alpha <= 0 )

instance_destroy();

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

napisu nie musisz meic na planszy, za to upewnij sie ze w create przeciwnika masz

 

GML
pointvalue = 100;
Odnośnik do komentarza
Udostępnij na innych stronach

napisu nie musisz meic na planszy, za to upewnij sie ze w create przeciwnika masz

 

GMLpointvalue = 100;

 

 

Tak właśnie dodałem w create przeciwnika

 

GML
pointvalue=100;

 

w umieraniu przeciwnika dałem

 

GML
z = instance_create(obj_floating_txt,x,y-10);

z.txt = "+100" + string(pointvalue);

z.yspeed = -4;

 

 

nadal nie wyświetla tego napisu

 

może trzeba w draw tego obiektu obj_floating_txt dodać czcionkę i kolor??

Odnośnik do komentarza
Udostępnij na innych stronach

już tak też zrobiłem w draw dałem tak w tym obiekcie obj_floating_text

 

 

GML
draw_set_colour(c_red);

draw_set_font(fnt_Arial11);

 

draw_text(txt,x,y);

 

dodałem i kolor i czcionkę,bo może to było powodem,że się napis nie wyświetlał z punktami,no,ale dalej się nie wyświetla..

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

po pierwsze to draw_set_color (ale to chyba powinno errory spowodować?)

 

po drugie to co moze być nie tak, musiałeś coś źle zrobić skoro ci się nigdzie to nie wyświetla

Odnośnik do komentarza
Udostępnij na innych stronach

po pierwsze to draw_set_color (ale to chyba powinno errory spowodować?)

 

po drugie to co moze być nie tak, musiałeś coś źle zrobić skoro ci się nigdzie to nie wyświetla

 

 

po pierwsze to draw_set_color (ale to chyba powinno errory spowodować?)

 

po drugie to co moze być nie tak, musiałeś coś źle zrobić skoro ci się nigdzie to nie wyświetla

 

Raczej bledu nie zrobilem tzn mam rozne obiekty,gdzie sie tekst pojawia bezproblemowo.

 

Obstawiam,ze blad jest w draw tego obiektu ,bo to mi nie pasuje cos,czyli

 

GML
draw_text(txt,x,y)

 

 

Bledu nie wywala,wiec problem jest z wyswietleniem tego napisu punktow

Odnośnik do komentarza
Udostępnij na innych stronach

Może obiekt obj_floating_text ma zły depth?

 

Ok mam rozwiązanie:

GML
draw_text(x,y,txt)

 

Piszę to tylko po to aby nie było offtopu a chcę głównie odpowiedzieć na to:

po pierwsze to draw_set_color (ale to chyba powinno errory spowodować?)

YoYoGames to ciągle Wielka Brytania. Fish & Chips, petrol no i colours.

Są 2 funkcje. z i bez U

Odnośnik do komentarza
Udostępnij na innych stronach

Może obiekt obj_floating_text ma zły depth?

 

Ok mam rozwiązanie:GMLdraw_text(x,y,txt)

 

Piszę to tylko po to aby nie było offtopu a chcę głównie odpowiedzieć na to:

 

YoYoGames to ciągle Wielka Brytania. Fish & Chips, petrol no i colours.

Są 2 funkcje. z i bez U

 

tak są dwie funkcje Threef ma racje...

 

depth głębokość mam standard na zero,więc tu nawet nic nie grzebałem...

 

 

cały kod teraz wygląda tak:

 

obj_floating_txt

 

create

 

GML
txt = "";

yspeed = 0;

 

 

step

 

GML
y += yspeed;

image_alpha -= 0.05;

if( image_alpha <= 0 )

instance_destroy();

 

 

draw

 

GML
draw_set_color(c_yellow);

draw_text(x,y,txt);

 

no i klocek z ustawioną czcionką i wycentrowaną

 

 

natomiast we wrogu jest w

 

create

 

GML
pointvalue = 100;

 

 

i w umieraniu wroga

 

 

GML
z = instance_create(obj_floating_txt,x,y-10);

z.txt = "+" + string(pointvalue);

z.yspeed = -4;

 

No niestety nadal po zabiciu wroga nie wyświetla mi tego napisu +100

zastanawiam się,gdzie jest błąd...

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
Do niczego ten przykład,bo jest pod 8.1 ja mam studio.

No ale weź chociaż uszanuj, że specjalnie napisałem dla Ciebie przykład. No i to .gmk, które z tego co kojarze można odtworzyć w gms

Odnośnik do komentarza
Udostępnij na innych stronach

Twój problem jest tu:

instance_create(obj_floating_txt,x,y-10);

 

Siądź do dokumentacji i poczytaj choć trochę. Nie licz że ktokolwiek poda Ci rozwiązanie na tacy.

 

 

Racja gapa ze mnie...to ma być tak:

 

GML
z = instance_create(x,y-10,obj_floating_txt);

 

teraz działa jak należy...

 

dzięki za naprowadzenie;) Threef,a tak na marginesie uśmiechasz się czasem? ;]

 

No ale weź chociaż uszanuj, że specjalnie napisałem dla Ciebie przykład. No i to .gmk, które z tego co kojarze można odtworzyć w gms

 

Wszyscy mi pomogliście

Czołgu krymski tak zrobiłeś przykład..tak otworzyłem go w gms też..ale zabrzmiało to tak ironicznie nie chce cytować Twojej wypowiedzi,ale i tak Ci dziękuje za fatygę.

Anty Tobie największe podziękowania;) oraz dla Threefa,który jak zawsze zachowuje zimną krew i czuwa nad nami wszystkimi;)

Odnośnik do komentarza
Udostępnij na innych stronach

No ale weź chociaż uszanuj, że specjalnie napisałem dla Ciebie przykład. No i to .gmk, które z tego co kojarze można odtworzyć w gms

W sumie to od kilku wersji GM:S nie otwiera już nawet plików gm81. Wyrzuca chyba komunikat że są corrupted.

 

dzięki za naprowadzenie;) Threef,a tak na marginesie uśmiechasz się czasem? ;]
Staram się ograniczać jakiekolwiek emocje poza kontaktami twarzą w twarz bo po prostu nie da się ich okazywać. ;)
Odnośnik do komentarza
Udostępnij na innych stronach

W sumie to od kilku wersji GM:S nie otwiera już nawet plików gm81. Wyrzuca chyba komunikat że są corrupted.

 

Staram się ograniczać jakiekolwiek emocje poza kontaktami twarzą w twarz bo po prostu nie da się ich okazywać. ;)

 

 

Ale minka uśmiechnięta jest,więc zmierzasz w dobrym kierunku Threef;-)

 

Dobra jeszcze mam jedno pytanie odnośnie tego tematu.

Bo mam zmienną do punktów która sobie przypisałem czyli global.punkty

I teraz chciałbym.żeby mi sumowało po każdym zabitym wrogu,bo teraz jest tak,że po zabiciu wroga pokaże się napis +100 i doda mi punkty,potem zbiorę jakieś diamenty z planszy,gdzie dla nich ustawiłem 50pkt no i ładnie podsumuje a jak zabije kolejnego wroga,to mi global.punkty ustawi na 100 i tak za każdym razem.

 

Rozumiem,że to ma coś wspólnego z tym,że we wrogach mam teraz w create ustawioną tą zmienną pointvalue=100;

I tu bez różnicy jak ustawie na zero,to mi wtedy zeruje punkty.

Więc pomyślałem,że z wrogów wywalę tą zmienną pointvalue no i tak zrobiłem,a w umieraniu wroga mam tak

 

Czyli tu

 

GML
z = instance_create(x,y-10,obj_floating_txt);

global.punkty=100;

z.txt = "+" + string(global.punkty);

z.yspeed = -4;

 

No,ale to nic nie daje...zamiast sumować mi pkt po każdym zabitym wrogu,to mi je zeruje albo do zera albo do wartości 100.

 

 

A ja chce,że jak napis +100 pojawia się,to automatycznie dodaje mi tą wartość punktów,którą ustaliłem

Odnośnik do komentarza
Udostępnij na innych stronach

Nie, nie, nie. Ponownie wróć do pointvalue=100. To jest zmienna mówiąca ile punktów wart jest przeciwnik.

Teraz wystarczy Ci jedna linijka czyli zwiększenie global.punkty o pointvalue przy śmierci przeciwnika. Nic nie usuwaj, nie zmieniaj, tylko dopisz:

GML
global.punkty+=pointvalue
Odnośnik do komentarza
Udostępnij na innych stronach

Nie, nie, nie. Ponownie wróć do pointvalue=100. To jest zmienna mówiąca ile punktów wart jest przeciwnik.

Teraz wystarczy Ci jedna linijka czyli zwiększenie global.punkty o pointvalue przy śmierci przeciwnika. Nic nie usuwaj, nie zmieniaj, tylko dopisz:GMLglobal.punkty+=pointvalue

 

 

 

Dzięki;) działa teraz jak należy;)

 

A tak przy okazji chciałbym wam życzyć udanej zabawy sylwestrowej,oraz szczęśliwego Nowego Roku;)

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