Python 如何确定鼠标是否在pygame精灵(不是矩形或圆形)上悬停/单击
所以我在做这个按钮,我需要找出两件事 1-用户何时在其上方悬停? 2-用户何时单击它? 正如你所看到的,这些形状很奇怪Python 如何确定鼠标是否在pygame精灵(不是矩形或圆形)上悬停/单击,python,pygame,Python,Pygame,所以我在做这个按钮,我需要找出两件事 1-用户何时在其上方悬停? 2-用户何时单击它? 正如你所看到的,这些形状很奇怪 我尝试过查看pygame论坛,但这些论坛只说明如何找出两个精灵是否发生碰撞。只需处理鼠标按钮下的事件,并对照每个精灵的rect检查事件。pos。如果发生碰撞,那就是单击的碰撞 这与悬停相同,只是您需要通过pygame.mouse.get_pos()函数获取每帧的鼠标位置 如果将所有按钮精灵放入精灵组,则执行这些检查将很容易 对于形状怪异的精灵,使用精灵面具可能会有所帮助。这是
我尝试过查看pygame论坛,但这些论坛只说明如何找出两个精灵是否发生碰撞。只需处理
鼠标按钮下的事件,并对照每个精灵的rect
检查事件。pos
。如果发生碰撞,那就是单击的碰撞
这与悬停相同,只是您需要通过pygame.mouse.get_pos()
函数获取每帧的鼠标位置
如果将所有按钮精灵放入精灵组
,则执行这些检查将很容易
对于形状怪异的精灵,使用精灵面具可能会有所帮助。这是在每像素级别进行的额外检查(在矩形碰撞显示为true之后)。因此,虽然鼠标可能在精灵的矩形范围内做了一些动作,但可能它并没有真正覆盖精灵图像的可见部分
幸运的是,PyGame Sprite库可以轻松创建一个掩码,如果定义了,它将自动用作碰撞检测的一部分
class MaskedSprite( pygame.sprite.Sprite ):
def __init__( self, image, x, y ):
pygame.sprite.Sprite.__init__( self )
self.image = image.convert_alpha()
self.mask = pygame.mask.from_surface( self.image ) # <<-- HERE
self.rect = self.image.get_rect()
self.rect.center = ( x, y )
class MaskedSprite(pygame.sprite.sprite):
定义初始化(自、图像、x、y):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=image.convert_alpha()
self.mask=pygame.mask.from_surface(self.image)#