如何对不可迭代平台进行碰撞?

How to make collision to not iterable platform?

Player有能力站在可迭代平台上,但他不能站在不可迭代平台上——Platform4。如何解决这个问题?

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)

platform4 是一个 pygame.sprite.Sprite 对象。对于 2 Sprite objets 的碰撞你必须使用 pygame.sprite.collide_rect:

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

hits_4 = pygame.sprite.collide_rect(player, platform4)