现在,我在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中的碰撞像素坐标吗?
答案 0 :(得分:0)
使用 pygame.mask.Mask
对象和 overlap()
或 overlap_mask()
。
返回此 mask 和 othermask 之间遇到的第一个交点。
[...]
如果没有交点,则返回交点或 None
。
返回一个Mask,与这个mask的大小相同,包含这个mask和othermask之间的重叠设置位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")