Jak zrobic w metodzie update odliczanie ze raz na 10 sekund przez sekunde bedzie sie jedna linia wykonywala od rysowania.
Wyswietlenie sprita raz na 10 sekund
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
onizuka napisał(a):
Jak zrobic w metodzie update odliczanie ze raz na 10 sekund przez sekunde bedzie sie jedna linia wykonywala od rysowania.
A można prosić o zadanie tego samego pytania tylko w języku polskim?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1135
Możesz użyć clock = pygame.time.Clock() i clock.tick() to ci pomoże z wyliczeniem czasu.
- Rejestracja: dni
- Ostatnio: dni
Udalo mi sie cos takiego zrobic.
def update(self,surface):
self.current_time = time.time()
print(self.current_time)
if self.current_time - self.last_time_displayed >= 10:
surface.blit(self.animation_frames[self.animation_frame], (self.rect.x - 32, self.rect.y - 32))
pygame.time.delay(1000)
self.last_time_displayed = self.current_time
print(self.last_time_displayed)
Ale nie zadowala mnie to bo gra sie przycina na ta jedna sekunde. Jakis inny pomysl jak to rozwiazac? Zalezy mi na tym by raz na 10 sekund przez 1s pokazywala sie animacja.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6968
Tak samo jak zrobiłeś 10 sekund.
def update(self,surface):
self.current_time = time.time()
if self.current_time - self.last_time_displayed >= 10:
surface.blit(self.animation_frames[self.animation_frame], (self.rect.x - 32, self.rect.y - 32))
if self.current_time - self.last_time_displayed >= 11: # zamiast pygame.time.delay(1000)
self.last_time_displayed = self.current_time
Jakbyś pisał w Unity 3D to mógłbyś taki pygame.time.delay(1000) zrobić za pomocą Coroutine i nie robiłoby to pauzy..
https://docs.unity3d.com/ScriptReference/WaitForSeconds.html
- Rejestracja: dni
- Ostatnio: dni
Nie możesz podmieniać: self.last_time_displayed = self.current_time
Ponieważ trochę czasu minęło.
Nie możesz spać w wątku: pygame.time.delay(1000)
Ponieważ zatrzymujesz na 1sek process co ma działać co 10ms.
update ma być wołany co najmniej w cyklu 3ms oraz:
if self.last_time_displayed + 10 <= time.time():
self.last_time_displayed+=10
...
- Rejestracja: dni
- Ostatnio: dni
Dzieki spine. Nie myslalem w tym kierunku xd.