Wyswietlenie sprita raz na 10 sekund

0

Jak zrobic w metodzie update odliczanie ze raz na 10 sekund przez sekunde bedzie sie jedna linia wykonywala od rysowania.

3
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?

0

Możesz użyć clock = pygame.time.Clock() i clock.tick() to ci pomoże z wyliczeniem czasu.

0

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.

1

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

1

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

Dzieki spine. Nie myslalem w tym kierunku xd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1