获取与Surface碰撞的像素

时间:2013-12-21 03:51:23

标签: python pygame collision-detection

现在,我在pygame中进行了碰撞检测,检查两个rctangle是否重叠......我要做的是检查曲面的透明度,如果alpha值小于10,停止播放器从走进去......

目前,我这样做:

for i in range(0,self.rect.w):
    for j  in range(0,self.rect.h):
        if player.rect.collidepoint((i,j)) and self.image.get_at((i,j))[3]<10:
            #STOP PLAYER

但这对处理器来说真的很痛苦。还有另一种方法来获取pygame中的碰撞像素坐标吗?

1 个答案:

答案 0 :(得分:0)

使用 pygame.mask.Mask 对象和 overlap()overlap_mask()

overlap() :

<块引用>

返回此 maskothermask 之间遇到的第一个交点。
[...]
如果没有交点,则返回交点或 None

overlap_mask()

<块引用>

返回一个Mask,与这个mask的大小相同,包含这个maskothermask之间的重叠设置位em>.

可以使用 pyame.Surface-

pygame.mask.from_surface() 创建掩码

例如:

player_mask = pygame.mask.from_surface(player.image)
self.mask = pygame.mask.from_surface(self.image)
offset = (player.rect.x - self.rect.x), (player.rect.y - self.rect.y)
first_intersection_point = self.mask.overlap(player_mask , offset)
if first_intersection_point:
    print("hit")