Думаю тут хорошо подойдут методы по работе со временем самого pygame:
pygame.time
Для вашей задачи существуют 2 способа.
Приведу небольшие примеры на срабатывание каждые 5 секунд, чтобы было понятнее как легко масштабировать на любое время.
1 способ. Использовать таймер.
# при выстреле ставим запрет на следующий выстрел
self.timer = 0 # обнуляем начальное значение для отсчета
pygame.time.set_timer(pygame.USEREVENT, 1000) # запускаем таймер (в милисекундах) на срабатывание каждую секунду
затем в обработчике событий:
for event in pygame.event.get():
if event.type == pygame.USEREVENT:
self.timer += 1 # считаем количество пройденных секунд
if self.timer == 5: # если прошло 5 секунд
pygame.time.set_timer(pygame.USEREVENT, 0) # отключаем таймер
# даем разрешение на следующий выстрел
2 способ. Использовать тики для отсчета времени.
# при выстреле ставим запрет на следующий выстрел
self.start_ticks = pygame.time.get_ticks() # запоминаем начальное значение тиков в милисекундах
затем в обработчике событий:
for event in pygame.event.get():
if event.type == ...: # тут какое-то ваше событие на выстрел
seconds= (pygame.time.get_ticks() - self.start_ticks)/1000 # вычисляем сколько прошло секунд
if seconds > 5: # проверяем что прошло 5 секунд
# даем разрешение на следующий выстрел