Skocz do zawartości

Jak sprawdzić, jak długo istnieje instancja?


Sutikku

Rekomendowane odpowiedzi

Stara metoda polega na stworzenie licznika w Create żądanego obiektu, np.

 

GML
timer = 0

 

Natomiast Step:

 

GML
timer += 1

 

Z każdą klatką nalicza się licznik, to daje synchronizację z czasem gry. Jeżeli jednak potrzebujemy czasu systemowego, w Create wpisujemy:

 

GML
timer = current_time

 

Różnica

 

GML
current_time - timer

 

zwraca żądany czas.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Alarmy to akurat do tego są najmniej odpowiednie. Bo alarm służy do tego, aby zdarzenie się wykonało po jakimś tam czasie, a nie do liczenia. Zliczanie to się robi dodając a nie odejmując i tylko powyższy post zalecam jako rozwiązanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Są tylko 2 odpowiednie sposoby. Pierwszy podał Jakim, i jest to stworzenie licznika wewnątrz obiektu który będzie rósł co step. I to zazwyczaj wystarcza.

Drugim sposobem (wg mnie bardziej uniwersalnym, szybszym i lepszym!) jest stworzenie przy create zmiennej przechowującą aktualny czas jako czas narodzin. Potem gdy trzeba sprawdzić wiek wystarczy jednorazowo odjąć nowy aktualny czas od narodzin.

 

Jest 2014

Urodziłeś się w 2001

Masz 13 lat.

 

Aktualny czas może być sekundami (current_time), milisekundami od początku gry (get_timer();) albo globalną zmienną którą będziesz zwiększał co step w jakimś kontrolerze (#polecam).

Odnośnik do komentarza
Udostępnij na innych stronach

Nie lubię mieć w każdym obiekcie licznika, którego jedynym zadaniem jest dodawanie liczby co każdą klatkę. Zamiast tego tworzę jeden, globalny licznik (nazwijmy go global.counter) w obiekcie-kontrolerze; w Create każdego obiektu zapisujemy:

GML
spawnTime = global.counter;

W Step kontrolera:

GML
global.counter ++;

Żeby sprawdzić, ile istnieje dany obiekt, wystarczy wykonać zwykłe odejmowanie (można dokonać tego w dowolnym momencie gry):

GML
time = global.counter-spawnTime

Jak masz 600 obiektów na planszy jednocześnie, to robi się to całkiem przydatne, a w dodatku dezaktywowanie obiektu nie powoduje zatrzymywania się licznika w czasie. Poza tym wszelkie efekty, jakie będziesz chciał dodać do gry i manipulujące upływem czasu, nie będą naruszały wieku obiektów w nieprzewidziany sposób - wystarczy manipulacja globalnym licznikiem.

Edit: sorry Threef, jest późno i nie doczytałem całego tematu : (

Przynajmniej myślimy podobnie

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