pygame找到一个解决方案,阻止瞳孔溢出眼外

时间:2018-04-04 23:13:54

标签: python pygame

我尝试用pygame创建椭圆眼,我有问题:我的瞳孔溢出眼睛: my problem

我搜索得到这个结果

my wish

我的代码是这样的:

self.lastrect = self.display.fill((0,0,0),self.lastrect)
leftEye = pygame.draw.ellipse(self.display, (255, 255, 255), [int(self.startx -self.startx/2-self.eyeRadius),int(self.starty-self.eyeRadius*self.eyeRatio), self.eyeWidth,self.eyeHeight], 0)
rightEye = pygame.draw.ellipse(self.display, (255, 255, 255), [int(self.startx +self.startx/2-self.eyeRadius),int(self.starty-self.eyeRadius*self.eyeRatio), self.eyeWidth,self.eyeHeight], 0)
leftPupil = self.display.blit(self.pupil,(self.x-self.startx/2-self.rad,self.y-self.rad))
rightPupil = self.display.blit(self.pupil,(self.x+self.startx/2-self.rad,self.y-self.rad))

pygame.display.update([leftPupil,leftEye,rightPupil,rightEye,self.lastrect])
你可以帮我找到一个解决办法来阻止瞳孔溢出眼外吗?

2 个答案:

答案 0 :(得分:0)

虽然毫无疑问,面具会是更好的方式,但我会做一些与众不同的事情(和笨蛋)。简而言之,我会给屏幕一个白色背景,blit瞳孔,然后blit脸(在你的图片中它是黑色背景没有眼睛插槽。这可能听起来令人困惑所以考虑创建相同的确切图像,但与白色背景。

然而,如果将它应用于具有其他形状和图像的程序,则会有很多负面因素,因此您可能希望坚持使用屏蔽。但这可能有效

答案 1 :(得分:0)

我这样做了:

    mask = pygame.Surface(self.size, pygame.SRCALPHA)
    mask.fill((254, 195, 172))
    pygame.draw.ellipse(mask, (0, 0, 0), [
                        self.leftEllipseX, self.leftEllipseY, self.eyeWidth, self.eyeHeight], 0)
    pygame.draw.ellipse(mask, (0, 0, 0), [
                        self.rightEllipseX, self.rightEllipseY, self.eyeWidth, self.eyeHeight], 0)

    self.display.blit(mask, (0, 0), None, pygame.BLEND_RGB_MAX)