Skocz do zawartości

czekanie na akcje


Rekomendowane odpowiedzi

  • 3 miesiące temu...
a ja chcę zrobić coś takiego:

 

zmiana sprita

czekaj 1 sekundę

zmiana sprita

czekaj 1 sekundę

zmiana sprita

czekaj 1 sekundę

zmiana sprita

koniec

 

Jak to zrobić? :mellow:

2 Sposoby:

 

 

GML
sprite_index=spr_jakis //zmiana sprita

alarm[0] = 30;

 

//W ALARM 0

sprite_index=spr_costam

 

alarm[1] = 30;

 

//W alarm 1 to samo tylko że alarm[2]

//kończysz nie dodając linii alarm</span>

 

albo zrób animacje i daj w Create image_speed = 0.1 i alarm[0] = 90

 

a w alarm[0] image_speed = 0

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 lata później...

Ja mam podobny problem.

Jak zrobić coś takiego:

 

Gdy włącza się dany obiekt

Czeka 15 sekund

I zmienia ten obiekt na inny

 

W moim przypadku jest tak:

 

Bohater zderza się z ufo

Ufo jest zniszczone, a gracz przemienia swój obiekt na ufo

Po 15 sekundach znów jest bohaterem

 

Proszę o pomoc! Wszędzie tego szukałem, nawet poza forum!

Z góry dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

mozna tez cos takiego

GML
Information about object: o_hrac

 

Sprite: sprite0

Solid: false

Visible: true

Depth: 0

Persistent: false

Parent: <no parent>

Mask: <same as sprite>

 

Create Event:

execute code:

 

_timer=0;

_time_pause=1; // pause sec

 

Step Event:

execute code:

 

if (_timer<current_time) {_timer=-1; }; // reset timer

 

Mouse Event for Left Released:

execute code:

 

if (sprite_index==sprite0 && _timer==-1) {

_timer=current_time+_time_pause*1000;

sprite_index=sprite1;

}

else if (sprite_index==sprite1 && _timer==-1) {

_timer=current_time+_time_pause*1000;

sprite_index=sprite2;

}

else if (sprite_index==sprite2 && _timer==-1) {

_timer=current_time+_time_pause*1000;

sprite_index=sprite3;

}

else if (sprite_index==sprite3 && _timer==-1) {

_timer=current_time+_time_pause*1000;

sprite_index=sprite4;

};

Odnośnik do komentarza
Udostępnij na innych stronach

Źle mnie zrozumiałeś...

Jak patrzę na twoją odpowiedź widzę, że ma to działać tak:

Stoper mierzy czas, gdy dojdzie do końca zresetuje się i zmieni sprite, a ma być tak:

Bohater uderza w ufo, ufo się usuwa, a bohater zmienia OBIEKT na ufo <--- To już mam

Odlicza się 15 sekund i ufo zmienia OBIEKT na bohatera <--- I z tym czasem mam problem

Gdy spróbowałem zmienić twój skrypt, pojawił mi się błąd:

GML
ERROR in

action number 1

of Step Event

for object ufozbohaterem:

 

Error in code at line 1:

if _timer <= 1

^

at position 4: Unknown variable _timer

W create mam

GML
_timer=15;

_time_pause=1; // pause sec</span>

A w step mam:

GML
if _timer <= 1

{

object_index=o_bohater;

}

Umiesz coś z tym zrobić?

Odnośnik do komentarza
Udostępnij na innych stronach

zmienac v tej samej instancji jeden objekt za drugi moze miec sens, jezeli ma sie zmienic tez eventy.

do tego sama zmiana sprite niewystarczy.

 

fajne to moze byc jesli jest wiecej typow ufo a gracz tymcasowo przejmuje ich zdolnosci.

 

co do "Unknown variable _timer" poprostu mogles dla ufozbohaterem niedac zmiennej _timer.

sproboj zamiast instance_destroy+ instance_create uzyc instance_change, lub poprostu zadbaj by nowo zrobiona instancja miala potrzebne zmienne

GML
_idn=instance_create(x, y, ufozbohaterem);

_idn._timer=_timer;

 

obecnie ja ci pokazalem jak mozna i z timerem zrobionym v current_time, ale jak go aplikujesz w grze to czysto twoja sprawa :thumbsup:

 

jak dobrze zrobisz ufazbohaterem to niebezdzie problemu.

Odnośnik do komentarza
Udostępnij na innych stronach

O właśnie zrozumiałeś mnie! Oto mi w pytaniu chodziło! Tylko co do Danielus, obiekt nie chce się zmieniać, a zrobiłem wszystko jak napisałeś. W create

GML
alarm[0]=room_speed*15;
, a w evencie alarm 0 zmiana obiektu na bohatera, lecz jak mówiłem nie działa. I jeszcze jedno ereg, na początku jest tak:

Zderzenia bohatera z ufem

Istance destroy dla ufa

Istance change dla bohatera

Więc jednak jest tak jak myślisz ;)

Odnośnik do komentarza
Udostępnij na innych stronach

skoro nie chcesz zmieniac obiektu to nie zmieniaj.

Zamiast tego daj np

sprite_index=ufozbohaterem;

 

a gdy ma znowu wrócić do starej postaci:

sprite_index=normalnybohater;

 

Jeśli na dodatek mają się różnie zachowywać to tam gdzie masz kody akcji rob sobie warunki

if( sprite_index==normalnybohater )

{

//akcje

}

else if( sprite_index==ufozbohaterem )

{

///akcje

}

Odnośnik do komentarza
Udostępnij na innych stronach

@up: masz racje, ale jesli ma kazde ufo wiecej roznych eventow to czeka go dosyc roboty :)

niemowojc jesli bedzie dodawa nowe ufa i zmienac stare

 

sam zdecyduje jaki kod zwoli, ja tylko podpowiadam inne mozliwosci

Odnośnik do komentarza
Udostępnij na innych stronach

Nie bardzo rozumiem co masz na myśli.

W kolizji z ufo kasujesz linijkę object_change a dajesz przypisanie sprite_index=ufozbohaterem

Teraz przenoszisz cały kod z obiektu ufozbohaterem do normalnego bohatera tylko dajesz je w warunku że mają sie wykonywać jesli sprite_index==ufozbohaterem.

A kody które od początku były w normalnymbohaterze dajesz w if( sprite_index==normalnybohater )

 

Teraz masz tylko jeden obiket, którego nie zmieniasz ani nie kasujesz.

 

@up przy robieniu dziesiątek podobnych obiektów strasznie łatwo o błędy, zdecydowanie lepiej obsługiwać to wszystko z jednego

 

@down. Sokro już tak zrobiłeś to już się tego trzymaj, nie warto sie męczyć ze zmianami jeśli tego jest dużo. Na przyszłość staraj się robić wszystko na jak najmniejszej ilości obiektów z początku będzie trudniej, ale potem zaprocentuje.

Odnośnik do komentarza
Udostępnij na innych stronach

No właśnie chodzi o to, że:

 

1. Mam w nich już bardzo dużo eventów z wieloma skryptami

2. Trudno do nich włożyć ify

3. Długo będzie się kopiowało eventy z ufa do bohatera

4. Mam 56 obiektów i się w nich jeszcze nie pomyliłem :D

----------

@up Ok posłucham cię, ale masz jakiś skrypt do tego? Bo z tym już będzie trudno. W dodatku zrobiłem w create ustalenie alarmu 1 na 3, a w alarmie 1 dałem zmianę sprite i to nie wypaliło. O co tutaj chodzi?

Odnośnik do komentarza
Udostępnij na innych stronach

@Daniealus: mozna, ale jesli ma dobrze zorganizowane no wierze ze sie niepomyli, lub latwo znajdzie blad :)

 

@Opisek: niepiszes co niedzialalo s alarmami.

obecnie niema powodu dlaczego by niemialy dzalac:

1, Zderzenia bohatera z ufem

- zmien bohatera na ufobohatera (ufobohater v create ma ustaviony alarm na zmiane powrotno na bohatera)

2, Istance destroy dla ufa(robi sie jak jest v akcji 1, )

- znisc ufo

3, Istance change dla bohatera

- po uplywu czasu alarm v ufobohaterze odpala zmiane na bohatera

Odnośnik do komentarza
Udostępnij na innych stronach

Na to nie ma skryptu, po prostu trzymaj się zasady że jeden obiekt zawsze pozostaje jednym obiektem i trzeba tylko wymyślić jak to zrobić.

 

Jeśli każda wersja twojego bohatera ma inną grafikę to tylko sprawdzamy jaką ma obecnie grafikę i dawajemy warunki.

Powiedz mi najpierw ile masz różnych obiektów typu bohater. Tylko te dwa normalnybohater i ufozbohaterem?

Odnośnik do komentarza
Udostępnij na innych stronach

No właśnie w tym problem!

Alarm nie chce odpalać zmiany ufa w bohatera!

Mam tak:

fgmpzcwu.png

Z tym kodem w trzecim obrazku chodzi tylko o test. Chciałem sprawdzić czy zadziała stworzenie bohatera.

---------------------------------------

Ok, potem tutaj zajrzę, jeśli ktoś wpadnie na pomysł, bardzo proszę udzielić odpowiedzi.

Odnośnik do komentarza
Udostępnij na innych stronach

tu mas pokazane jak by moglo wyglodac:

GML
Information about object: o_bohater

 

Sprite: sprite0

Solid: false

Visible: true

Depth: 0

Persistent: false

Parent: <no parent>

Mask: <same as sprite>

 

Step Event:

execute code:

 

x=mouse_x;

y=mouse_y;

 

 

Collision Event with object o_ufo:

execute code:

 

instance_destroy();

instance_create(x,y, o_ufobohater);

with(other) {instance_destroy(); };

 

______________________________________________________

 

Information about object: o_ufo

 

Sprite: sprite1

Solid: false

Visible: true

Depth: 0

Persistent: false

Parent: <no parent>

Mask: <same as sprite>

______________________________________________________

 

Information about object: o_ufobohater

 

Sprite: sprite2

Solid: true

Visible: true

Depth: 0

Persistent: false

Parent: <no parent>

Mask: <same as sprite>

 

Create Event:

execute code:

 

alarm[0]=5*room_speed;

 

 

Alarm Event for alarm 0:

execute code:

 

// to same ale s instance change

//instance_destroy();

//instance_create(x,y, o_bohater);

instance_change(o_bohater,false);

 

 

Step Event:

execute code:

 

x=mouse_x;

y=mouse_y;

 

_______________________________________________

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