获取与曲面碰撞的像素



现在,我在pygame中有一个碰撞检测,可以检查两个rctangles是否重叠......我试图做的是检查表面的透明度,如果 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中获取碰撞像素坐标?

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

overlap()

返回此掩码与其他掩码之间遇到的第一个交点.
[...]返回交点或None点(如果没有交点)。

overlap_mask()

返回一个掩码,大小与此掩码

相同,包含此掩码和其他之间的重叠集位。

可以从具有pygame.mask.from_surface()pyame.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")

最新更新