title: self.kill() not removing sprite after Collision between Shot out Bullet and PowerUP
body: <p>I'm trying to shoot out bullets right now and have them collide with a powerup successfully. Right now, I expect to do this because my bullet class has a checkCollision function. I also have called bullet.update in my update class in the GameScreen, so I'm not sure what's happening. </p>
  
  <p>Here is my Bullet class:</p>
  
  <pre><code>class Bullet(Image):
  
      def __init__(self, screen_size, width, height, filename, color = (255, 0, 0)):
  
          super().__init__(screen_size, width, height, filename, color = (255, 0, 0))
  
      def checkCollision(self, powerup):
  
          return pygame.sprite.collide_mask(self, powerup)
  
      def removeBullet(self, powerup):
          if self.checkCollision(powerup):
              self.kill()
  
      def update(self, powerup):
          self.rect.centerx += 3
          self.removeBullet(powerup)
  </code></pre>
  
  <p>Here is my PowerUp Class</p>
  
  <pre><code>class PowerUp(Image):
  
  
      kill_time = 0
      def __init__(self, screen_size, width, height, filename,  color = (255, 0, 0)):
  
          super().__init__(screen_size, width, height, filename, color = (255, 0 , 0))
  
  
          _centerx = random.randint(20, 1100) 
          self.radius = 10
          self.rect = pygame.Rect(_centerx-self.radius,
                                  _centery-self.radius,
                                  self.radius*2, self.radius*2)
  
      def update(self):
  
          pass 
  </code></pre>
  
  <p>And here is where I run everything:</p>
  
  <pre><code>class GameScreen(SceneBase):
  
      randomNumber = random.randint(0, 2)
      def __init__(self):
          SceneBase.__init__(self)
          self.bg = pygame.image.load("images/asianbackground.jpg")
          self.my_font = pygame.font.SysFont("Arial", 50)
  
          self.bullets_group = pygame.sprite.Group()
          self.powerup_group = pygame.sprite.Group()
          self.player_paddle = classes.PlayerPaddle(screen_size, 40, 100, SceneBase.player1_character, self.bullets_group)
  
          self.ai_paddle = classes.AIPaddle(screen_size, 40, 100, SceneBase.characterlist[GameScreen.randomNumber])
          self.pong = classes.Pong(screen_size, 20, 20, "images/pokeball.png")
  
          self.now1 = pygame.time.get_ticks()
  
  
  
      def ProcessInput(self, events, pressed_keys):
          for event in events:
              self.player_paddle.handle_event(event)
  
      def Update(self):
          self.player_paddle.update() 
          self.ai_paddle.update(self.pong, self.player_paddle) 
          self.pong.update(self.player_paddle, self.ai_paddle)
  
  
          # if someone reaches a score of 2, then exit the game 
          if self.player_paddle.score == 2 or self.ai_paddle.score == 2:
              SceneBase.is_game_over = True 
              self.SwitchToScene(GameOverScreen())
  
          time_difference1 = pygame.time.get_ticks() - self.now1
  
  
          current_time = pygame.time.get_ticks()
  
          if time_difference1 &gt;= 2000:
              powerup = classes.PowerUp(screen_size, 40, 40, "images/ramen.png")
              powerup.kill_time = current_time + 5000
              self.powerup_group.add(powerup)
              self.now1 = pygame.time.get_ticks()
  
  
          current_time = pygame.time.get_ticks()
  
          for powerup in self.powerup_group:
              for bullet in self.bullets_group:
                  bullet.update(powerup)
              if powerup.kill_time &lt;= current_time:
                  self.powerup_group.remove(powerup)
  
  
  
      def Render(self, screen):
          screen.blit(self.bg, (0, 0))
          self.bullets_group.draw(screen)
          self.powerup_group.draw(screen)
          self.player_paddle.draw(screen)
          self.ai_paddle.draw(screen)
          self.pong.draw(screen)
  
          #Make the text for the user 
  
          player_text = "Player 1" + ":" + str(self.player_paddle.score)
          player_text_image = self.my_font.render(player_text, True, GREEN)
          screen.blit(player_text_image, (screen_size[0] //4, screen_size[1] * 0.8))
  
          #Make the text for the AI
          ai_text = "Player 2" + ":" + str(self.ai_paddle.score)
          ai_text_image = self.my_font.render(ai_text, True, GREY)
          screen.blit(ai_text_image, (3* screen_size[0] // 4, screen_size[1] * 0.8))
  
      def SwitchToScene(self, next_scene):
          self.next = next_scene
  </code></pre>