Pygame如何用PNG和矩形检测碰撞?
我之前问过这个问题,不过只得到了一个回答,而且那个回答对我来说解释得不够清楚。我需要检查两个物体之间是否发生碰撞。一个是以PNG格式加载的图片,加载方式如下:
bird = pygame.image.load("bird.png").convert_alpha()
另一个是用pygame创建并绘制的矩形,绘制方式如下:
pipeTop = pygame.draw.rect(screen, (0,200,30), Rect((scrollx,0),(30,height)))
有人告诉我,最好的方法是把我的鸟做成一个精灵,使用class Sprite:
。但这对我帮助不大,因为我找不到任何关于如何创建或将图片转换为精灵的教程。我也不太清楚需要用到哪些方法,不过我猜我只需要__init__
(因为格式问题,我漏掉了第二个下划线),而在init
方法中我不知道该放些什么。谢谢你们能给我的任何帮助;不过很遗憾,我对Pygame和面向对象编程都很陌生,所以任何额外的细节和解释都非常感谢。
编辑: 我目前尝试了这个:
if bird.colliderect(pipeTop):
但它只是抛出了以下错误:
AttributeError: 'pygame.Surface' object has no attribute 'colliderect'
1 个回答
0
你可以使用 pygame.Surface.get_rect()
来获取一个矩形,用于碰撞检测。不过,注意文档里提到的内容:
这个矩形的起始位置总是从(0, 0)开始,宽度和高度和图片的大小是一样的。
你可能需要调整这个矩形的位置,以便把图片放到你想要显示的地方。
一般来说,你可能会想要了解一下 精灵(sprites),这样可以让这个过程变得更简单。精灵可以同时管理图片和位置,把这些功能放在一个对象里,这样做类似的任务就容易多了。