如何从rect / line获取曲面

时间:2017-02-18 16:33:49

标签: python pygame

我试图找到一条线与我正在制作的arkanoid中的砖碰撞的点。我发现最合乎逻辑的方法是从线上获取掩码,并在返回点时使用collidemask。好吧,我试过这个:

linemask = pygame.mask.from_surface(pygame.draw.line(screen, (0,0,0), bola.line[0], bola.line[1], 2)) 

它给了我这个错误:

  

TypeError:参数1必须是pygame.Surface,而不是pygame.Rect

意味着输入(在这种情况下是行)不能是矩形但需要是表面。你知道如何从矩形或任何替代解决方案获得表面吗?

1 个答案:

答案 0 :(得分:0)

pygame.draw.line在Surface上绘制并以Rect对象的形式返回受影响的区域。

您使用的Surface是screen。所以你需要创建一个掩码screen。或者,创建一个使用pygame.draw的新Surface,并从中创建一个掩码。或者从屏幕的子表面创建一个遮罩(这样你就不必在整个屏幕上创建遮罩),如下所示:

rect = pygame.draw.line(screen, (0,0,0), bola.line[0], bola.line[1], 2)
surface = screen.subsurface(rect)
mask = pygame.mask.from_surface(surface)