Python Pygame碰撞检测与PNG和rect?

Python Pygame碰撞检测与PNG和rect?,python,pygame,collision-detection,Python,Pygame,Collision Detection,我最近确实问了这个问题,但我只得到了一个答案,这并没有给我足够的解释。我需要检查两个物体之间是否有碰撞。一个是以以下方式加载的PNG图像: bird = pygame.image.load("bird.png").convert_alpha() pipeTop = pygame.draw.rect(screen, (0,200,30), Rect((scrollx,0),(30,height))) 另一个是通过以下方式创建和绘制的pygame矩形: bird = pygame.image

我最近确实问了这个问题,但我只得到了一个答案,这并没有给我足够的解释。我需要检查两个物体之间是否有碰撞。一个是以以下方式加载的PNG图像:

 bird = pygame.image.load("bird.png").convert_alpha()
pipeTop = pygame.draw.rect(screen, (0,200,30), Rect((scrollx,0),(30,height)))
另一个是通过以下方式创建和绘制的pygame矩形:

 bird = pygame.image.load("bird.png").convert_alpha()
pipeTop = pygame.draw.rect(screen, (0,200,30), Rect((scrollx,0),(30,height)))
有人告诉我,最好的方法是在
类Spirte:
中将我的鸟变成精灵,这对我没有帮助,因为我找不到任何关于创建/转换图像为精灵的教程。我也不会真的不知道我需要什么方法,尽管我可能会假设我只需要
\uuuu init\uuu
(由于格式原因,我错过了第二个下划线),并且在
init
方法中,我不知道我会放什么。谢谢你能给予的任何帮助;然而不幸的是,我对Pygame和OOP都是新手,因此非常感谢您提供任何额外的细节和/或解释

编辑: 我目前尝试了以下方法:

 if bird.colliderect(pipeTop):
但这只会引发以下错误:

 AttributeError: 'pygame.Surface' object has no attribute 'colliderect'
您可以使用获取用于碰撞的矩形,但是请注意以下文档:

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

您可能需要将其位置更改为要在屏幕上绘制图像的位置


一般来说,您可能希望研究如何使用来简化此过程。精灵在一个对象中管理图像和位置,使这样的任务更容易完成。

似乎
pygame.draw.rect
它不会返回一个矩形对象或一个可以“碰撞”的对象@DanielSanchez,
pygame.image.load()
没有。@DanielSanchez我想我是在创造一个不会碰撞的物体。然而,我认为这可能是一只看起来像是曲面而不是矩形的鸟?@Lattyware很抱歉,在我键入我的时,你的评论一定出现了:D你知道我如何才能将其更改为矩形吗?@Harvey,据我所知(我在一年多前使用了pygame)我觉得
Sprite
有碰撞功能,谢谢回复!如何使用此功能?在我的代码里它会去哪里?没关系!我用我的老朋友谷歌!我现在就接受你的回答。@Harvey,这完全取决于你的代码的其余部分-顺便说一句,就是用
bird.get_rect()
替换
bird,但是,除非你只在
0,0
处绘制图像,否则这可能不会像预期的那样起作用,如上所述。您需要根据需要修改代码。