精灵是如何工作的。精灵碰撞?

How works sprite. spritecollide?

想要创建一个包含 10 张图片的群组。稍后屏幕上的图像不应重叠。我尝试使用 sprite.spritecollide 进行检查。某处/不知何故图像消失了。可能错误地使用了 Spritecollide。

ii = -1
while ii < 10:
      ii+=1   
      img = pygame.image.load(f"Bilder/Gegenstaende/geg{ii}.png")    
      img = pygame.transform.scale(img,(100,100))  
      m = Landschaft(img) 
      zzz = 0          
      hits = pygame.sprite.spritecollide(m,land,True)        
      if len(hits) >=1:
        for hit_sprite in hits:
            zzz +=1 
            ii = ii -zzz          
      else: 
        land.add(m)

pygame.sprite.spritecollide() has a doKill argument. If the parameter is True, all pygame.sprite.Sprite objects that collide will be removed from the pygame.sprite.Group.

你必须将 False 传递给 doKill:

hits = pygame.sprite.spritecollide(m,land,True)

hits = pygame.sprite.spritecollide(m, land, False)        

请注意,如果屏幕上没有 space,您将陷入无限循环。使用应用程序循环一次添加一张图像:

desired_number = 10

while run:

    if len(land) < desired_number:

        ii = len(land)   
        img = pygame.image.load(f"Bilder/Gegenstaende/geg{ii}.png")    
        img = pygame.transform.scale(img,(100,100))  
        m = Landschaft(img) 
      
        if not pygame.sprite.spritecollide(m, land, False):
            land.add(m)

    # [...]