使用PNG和rect进行Pygame碰撞检测?

时间:2014-03-04 17:44:53

标签: python pygame collision-detection

我最近问过这个问题,但是我只得到了一个答案,但对我来说并没有真正解释。我需要检查两个对象之间的碰撞。一个是以下列方式加载的PNG图像:

 bird = pygame.image.load("bird.png").convert_alpha()

另一个是以下列方式创建和绘制的pygame矩形:

pipeTop = pygame.draw.rect(screen, (0,200,30), Rect((scrollx,0),(30,height)))

有人告诉我,最好的方法是让我的小鸟成为class Spirte:的精灵。这对我没什么帮助,因为我无法找到关于创建/转换图像的教程。一个精灵。我也不会真的没有我需要的方法,虽然我可能认为我只需要__init_(由于格式化我错过了第二个下划线)而在init方法中我不知道我会想要什么放。感谢您提供任何帮助;然而不幸的是,我对Pygame和OOP都很陌生,因此非常感谢任何额外的细节和/或解释。

编辑: 我目前试过这个:

 if bird.colliderect(pipeTop):

但它只会引发以下错误:

 AttributeError: 'pygame.Surface' object has no attribute 'colliderect'

1 个答案:

答案 0 :(得分:0)

您可以使用pygame.Surface.get_rect()获取碰撞矩形,但请注意文档:

  

此矩形始终从0开始,宽度为0。和高度与图像大小相同。

您可能希望将其位置更改为您选择将图像绘制到屏幕的位置。

通常,您可能希望使用sprites来简化此过程。精灵管理单个对象中的图像和位置,使得更容易完成这样的任务。