Не работает анимация

Уже не один день бьюсь над проблемой, вроде как всё в программе игра работает но вот анимация ни как. Вот есть класс buh().

#Класс отвечает за взрывы сломанных ведроидов и не только
class buh(pygame.sprite.Sprite):
    def __init__(self, center, size):
        pygame.sprite.Sprite.__init__(self)
        self.size = size
        self.image = buh_droid_anim[self.size][0]
        self.rect = self.image.get_rect()
        self.rect.center = center
        self.frame = 0
        self.last_update = pygame.time.get_ticks()
        self.frame_rate = 50

    def update(self):
        now = pygame.time.get_ticks()
        if now - self.last_update > self.frame_rate:
            self.last_update = now
            self.frame += 1
            if self.frame == len(buh_droid_anim[self.size]):
                self.kill()
            else:
                center = self.rect.center
                self.image = buh_droid_anim[self.size][self.frame]
                self.rect = self.image.get_rect()
                self.rect.center = center

вот есть сами картинки анимации.

#Анимация взырвов ведройдов
    droid_bah = []
    droid_list = ['droid_bah_0.png','droid_bah_1.png','droid_bah_2.png','droid_bah_3.png','droid_bah_4.png',
                  'droid_bah_5.png','droid_bah_6.png','droid_bah_7.png','droid_bah_8.png','droid_bah_9.png',
                  'droid_bah_10.png','droid_bah_11.png','droid_bah_12.png','droid_bah_13.png']
    for img in droid_list:
        droid_bah.append(pygame.image.load(path.join(img_dir, img)).convert())

    
    buh_droid_anim = {}
    buh_droid_anim['lg'] = []
    for i in range(14):
        filename = 'droid_bah_{}.png'.format(i)
        img = pygame.image.load(path.join(img_dir, filename)).convert()
        img.set_colorkey(BLACK)
        img_lg = pygame.transform.scale(img, (80, 120))
        buh_droid_anim['lg'].append(img_lg)

Вот само событие которое и формирует эту анимация

        hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
        if hits:
            score = score + 1
            if basta == 1: #Число поподанив моба
                trus = True
                #Событие вызывающие спрайт взрвыва

                expl = buh(hit.rect.center, 'lg')
                all_sprites.add(expl)
                GeneratorMob()
                
            else:
                trus = False

В общем событие само по себе как понимаю работает так как “ведроиды” исчезают после того как спрайты пуль в них попадают. Но вот после того как спрайт ведроида исчез спрайт анимации взрыва на включается по чему уже затерялся в догадках на столько что понять не могу как так получается.

Вот сама игра полностью что бы было картина целиком понятна.

    WIDTH = 1400  # Длина сцены
    HEIGHT = 750 #Ширина сцены
    FPS = 60

    WHITE = (255, 255, 255)
    BLACK = (0, 0, 0)
    RED = (255, 0, 0)
    GREEN = (0, 255, 0)
    BLUE = (0, 0, 255)
    YELLOW = (255, 255, 0)
    
    from os import path
    #папки с медия файлами
    img_dir = path.join(path.dirname(__file__), 'img')
    snd_dir = path.join(path.dirname(__file__), 'snd')

    pygame.init()
    #pygame.mixer.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Игра!")
    clock = pygame.time.Clock()

    font_name = pygame.font.match_font('arial')


        #Функция отрисовки
#Функция отрисовки
    def draw_text(surf, text, size, x, y):
        font = pygame.font.Font(font_name, size)
        text_surface = font.render(text, True, WHITE)
        text_rect = text_surface.get_rect()
        text_rect.midtop = (x, y)
        surf.blit(text_surface, text_rect)

    #Функция отрисовки здоровья     
    def draw_shield_bar(surf, x, y, pct):
        if pct < 0:
            pct = 0
        BAR_LENGTH = 100
        BAR_HEIGHT = 10
        fill = (pct / 100) * BAR_LENGTH
        outline_rect = pygame.Rect(x, y, BAR_LENGTH, BAR_HEIGHT)
        fill_rect = pygame.Rect(x, y, fill, BAR_HEIGHT)
        pygame.draw.rect(surf, GREEN, fill_rect)
        pygame.draw.rect(surf, WHITE, outline_rect, 2)


    def GeneratorMob():
        m = clasiki.Mob()
        all_sprites.add(m)
        mobs.add(m)




    #Спрайт отвечате за взрыывы сломаных ведройдов и не только
    class buh(pygame.sprite.Sprite):
        def __init__(self, center, size):
            pygame.sprite.Sprite.__init__(self)
            self.size = size
            self.image = buh_droid_anim[self.size][0]
            self.rect = self.image.get_rect()
            self.rect.center = center
            self.frame = 0
            self.last_update = pygame.time.get_ticks()
            self.frame_rate = 50

        def update(self):
            now = pygame.time.get_ticks()
            if now - self.last_update > self.frame_rate:
                self.last_update = now
                self.frame += 1
                if self.frame == len(buh_droid_anim[self.size]):
                    self.kill()
                else:
                    center = self.rect.center
                    self.image = buh_droid_anim[self.size][self.frame]
                    self.rect = self.image.get_rect()
                    self.rect.center = center






    class Player(pygame.sprite.Sprite):
        def __init__(self):

            #Здоровье перса
            self.speedx = 0
            self.shield = hp
            
            pygame.sprite.Sprite.__init__(self)
            self.image = pygame.transform.scale(plai_dron_img, (80, 120))
            self.image.set_colorkey(BLACK)
            self.rect = self.image.get_rect()
            self.rect.centerx = WIDTH / 2
            self.rect.bottom = HEIGHT - 200
            self.speedx = 0

        def update(self):

            #Перемещение в пространсве перса
            self.speedx = 0
            keystate = pygame.key.get_pressed()
            
            if keystate[pygame.K_LEFT]:
                self.speedx = -8
            if keystate[pygame.K_RIGHT]:
                self.speedx = 8
            self.rect.x += self.speedx
        
            if keystate[pygame.K_DOWN]:
                self.speedy = +8
                self.rect.y += self.speedy                  # +
            if keystate[pygame.K_UP]:
                self.speedy = -8
                self.rect.y += self.speedy                  # +


                
    #Границы которые не может перс преодолеть
        #Левая правая старона
            if self.rect.right > WIDTH:
                self.rect.right = WIDTH
            if self.rect.left < 0:
                self.rect.left = 0

            #Верх низ
            if self.rect.top > HEIGHT:
                self.rect.top = HEIGHT
            
            if self.rect.bottom > HEIGHT :
               self.rect.bottom = HEIGHT

    #------------------------------------------------------
    #Функция выстрелов
               # Стрельба в верх
        def shoot(self):
            bullet = clasiki.Bullet(self.rect.centerx, self.rect.top)
            all_sprites.add(bullet)
            bullets.add(bullet)
    #--------------------------------------------------------

    #Важные переменные

#-----------------------------------------------------------
    score = 0 #Начальный счёт игры
    basta = 0 #Попадания в боса
    trus = False # Права жизни босса
    gol = 0
    hp = 100
    lastMove = 'right'
    
#----------------------------------------------------------


#Медяга
    plai_dron_img = pygame.image.load(path.join(img_dir, "plai_dron.png")).convert()

    clasiki.bot_dron_img = pygame.image.load(path.join(img_dir, "bot_dron.png")).convert()#####

    

    background = pygame.image.load(path.join(img_dir, 'otsek.png')).convert() #Изображенилакации
    
#Анимация взырвов ведройдов
    droid_bah = []
    droid_list = ['droid_bah_0.png','droid_bah_1.png','droid_bah_2.png','droid_bah_3.png','droid_bah_4.png',
                  'droid_bah_5.png','droid_bah_6.png','droid_bah_7.png','droid_bah_8.png','droid_bah_9.png',
                  'droid_bah_10.png','droid_bah_11.png','droid_bah_12.png','droid_bah_13.png']
    for img in droid_list:
        droid_bah.append(pygame.image.load(path.join(img_dir, img)).convert())

    
    buh_droid_anim = {}
    buh_droid_anim['lg'] = []
    for i in range(14):
        filename = 'droid_bah_{}.png'.format(i)
        img = pygame.image.load(path.join(img_dir, filename)).convert()
        img.set_colorkey(BLACK)
        img_lg = pygame.transform.scale(img, (80, 120))
        buh_droid_anim['lg'].append(img_lg)

#-----------------------------------------------------------------------------

#Perehod_A
    background_rect = background.get_rect()

    all_sprites = pygame.sprite.Group()
##    
    mobs = pygame.sprite.Group()

    creepyK = pygame.sprite.Group()  #  
     
    bullets = pygame.sprite.Group()
    

    
    Perehod_B_K = pygame.sprite.Group()




    
   
    player = Player()
    
    all_sprites.add(player)

    #bullet = clasiki.bullet()

#---------------------------------------
    """
    bullet = clasiki.Bullet(self.rect.centerx, self.rect.top)
    all_sprites.add(bullet)
    bullets.add(bullet)    """
#-----------------------------------------

    for i in range(8): #колличество астеройдов
        GeneratorMob()
    
    for i in range(1): #Вызов стены жути  ( 1 штука)
        creepy = clasiki.creepy()
        all_sprites.add(creepy)
        creepyK.add(creepy)



    for i in range(1): #Вызов портала  ( 1 штука)
        K = clasiki.Perehod_B()
        all_sprites.add(K)
        Perehod_B_K.add(K)




# Цикл игры
    running = True
    while running:
        # Держим цикл на правильной скорости
        clock.tick(FPS)
        # Ввод процесса (события)
        for event in pygame.event.get():
            # проверка для закрытия окна
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.KEYDOWN:

                
                if event.key == pygame.K_SPACE:
                    player.shoot()

               

    #Приблизительно


    # Обновление
        all_sprites.update()

        """ Образец

        # проверьте, не попала ли пуля в моб
        hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
        for hit in hits:
            score += 50 - hit.radius
            random.choice(expl_sounds).play()
            expl = Explosion(hit.rect.center, 'lg')
            all_sprites.add(expl)
            newmob()


        """

        

        hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
        if hits:
            score = score + 1
            if basta == 1: #Число поподанив моба
                trus = True
                #Событие вызывающие спрайт взрвыва

                expl = buh(hit.rect.center, 'lg')
                all_sprites.add(expl)
                GeneratorMob()
                
            else:
                trus = False

        # Проверка, не ударил ли враг игрока
        hits = pygame.sprite.spritecollide(player, mobs, False)     
        if hits:
            #После удара отнимается житуха перса
            player.shield -= 1 
            #GeneratorMob()
            if player.shield <= 0:
                running = False





        
    # Проверка, не ударил ли перс жуть игрока

        hits = pygame.sprite.spritecollide(player, creepyK, False)
        if hits:
           running = False

           



    # Проверка, не ударил ли перс портал игрока

        hits = pygame.sprite.spritecollide(player, Perehod_B_K, False)
        if hits:
           game_2()   #Перекидывается на 2 сцену



    # Рендеринг
        screen.fill(BLACK)
        screen.blit(background, background_rect)
        all_sprites.draw(screen)
        #screen.blit(background, background_rect)
        all_sprites.draw(screen)

        #Отрисовка всякого
        draw_text(screen, str(score), 18, WIDTH / 1.1, 70)
        draw_shield_bar(screen, 5, 70., player.shield)
        draw_text(screen, str("1"), 20, WIDTH / 10, 95)
        draw_text(screen, str("Уровень"), 18, WIDTH / 10, 80)
        draw_text(screen, str("Жизнь"), 18, WIDTH / 10, 45)
        draw_text(screen, str("Очки уровня"), 18, WIDTH / 1.1, 45)

        
    # После отрисовки всего, переворачиваем экран
        pygame.display.flip()

# Новый урвень по достежению первго уровня