pygame rect碰撞小于图像

时间:2015-03-02 08:21:16

标签: python image pygame collision rect

如何在pygame中定义比图像小的矩形碰撞检测? 我希望像第二张图像一样有碰撞模式,但是当我尝试在方法rect中设置宽度和高度时,我会有切割图像。

enter image description here

当我尝试使用图像大小设置时,我有红色的碰撞检测

    self.rect = pygame.rect.Rect(location, self.image.get_size())

如果我使用宽度和高度设置尺寸,我只需要第三张图像

    self.rect = pygame.rect.Rect(location, (32, 150))

我真的不想使用像素完美碰撞,因为它是最慢的碰撞检测,所以有人知道如何使用Rect实现第二次图像碰撞方法?感谢。

2 个答案:

答案 0 :(得分:1)

您似乎正在使用sprite模块中内置的pygames。 (如果我错了,请纠正我)

您可能知道每个精灵都包含 image (在表面上绘制)和 rect对象(设置位置)和image的大小(!)。

正如Luke Taylor建议的那样,您可以在rect课程中创建 player对象......

self.collideRect =  pygame.rect.Rect((0, 0), (32, 150))

...并将其位置(根据您的图形)设置为

self.collideRect.midbottom = self.rect.midbottom

每当您更改player的位置时,您也必须调用此行,以便self.collideRect rect对象“移动”并启用player屏幕。

要测试点(例如鼠标坐标)是否在self.collideRect内,请调用

if self.collideRect.collidepoint(x, y) == True:
    print("You clicked on me!")

答案 1 :(得分:0)

尝试绘制一个与图像后面的图像分开的全新矩形,但是如果图像的位置经常设置为该位置。