我试图找到一条线与我正在制作的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
意味着输入(在这种情况下是行)不能是矩形但需要是表面。你知道如何从矩形或任何替代解决方案获得表面吗?
答案 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)