python - Sprite 是如何工作的。 Sprite 碰撞?

标签 python pygame

<分区>

想要创建一个包含 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()有一个 doKill 参数。如果参数为 True,所有 pygame.sprite.Sprite碰撞的物体将从 pygame.sprite.Group 中移除.

您必须将 False 传递给 doKill:

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

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

请注意,如果屏幕上没有空间,您将得到一个无限循环。使用应用程序循环一次添加一个图像:

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)

    # [...]

关于python - Sprite 是如何工作的。 Sprite 碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70121558/

相关文章:

python - SQLAlchemy 表之间的多种关系

python - Pygame - 经过一段时间后删除/杀死 Sprite ,无需轮询

python - 椭圆路径中的动画pygame Sprite

python - 在 PyGame 中获取图形轮廓作为多边形

python - 将使用 pygame 的 python 程序编译为可执行文件

python - 如何获取字符串中某个子字符串之前和之前的所有内容?

python - 我必须仅使用 min() 和 max() 函数对数字进行排序

python - Pygame:Sprite 动画理论 - 需要反馈

python - Numpy:创建 block 矩阵的函数

python - Django 'File' 对象没有属性 'content_type'