我尝试用pygame创建椭圆眼,我有问题:我的瞳孔溢出眼睛:
我搜索得到这个结果
我的代码是这样的:
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])
你可以帮我找到一个解决办法来阻止瞳孔溢出眼外吗?
答案 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)