1

Player has ability to stand on iterable platforms, but he can't stand on the not iterable platform - Platform4. How to correct this problem?

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        pygame.sprite.Sprite.__init__(self)
       # [...]
    def update(self):
        hits_4 = pygame.sprite.spritecollide(player, platform4, False)
        if hits_4:
             self.pos.y = hits_4[0].rect.top + 1 
             self.vel.y = 0

class Platform4(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = platform_images4
        self.image.set_colorkey(WHITE1)
        self.rect = self.image.get_rect()
        self.rect.centerx = 300
        self.rect.centery = 500

    def update(self):
        self.rect.move_ip(-1, 0)
        if self.rect.right <= 0:
            self.kill()

platform4 = Platform4()
all_sprites = pygame.sprite.Group()
all_sprites.add(player, fire, platform4)
Rabbid76
  • 202,892
  • 27
  • 131
  • 174
Vildan
  • 131
  • 6

1 Answers1

1

platform4 is a pygame.sprite.Sprite object. For the collision of 2 Sprite objets you have to use pygame.sprite.collide_rect:

hits_4 = pygame.sprite.spritecollide(player, platform4, False)

hits_4 = pygame.sprite.collide_rect(player, platform4)
Rabbid76
  • 202,892
  • 27
  • 131
  • 174