我对pygame相当陌生,正在开发我的第一款游戏。 (对不起,如果我问一个愚蠢的问题)我试图使游戏的标题像呼吸效果一样缓慢地增加和减小大小,以使主屏幕在视觉上更具吸引力。
这里是我要导入图像的内容:
name = self.dir_path + "pixeltitle.png"
self.pixeltitle = pg.image.load(name)
self.pixeltitlerect = self.pixeltitle.get_rect()
self.pixeltitlerect.center = (250,120)
self.screen.blit(self.pixeltitle,self.pixeltitlerect)
我有一个while循环,其中我在增加rect的大小,但是它会向右和向下移动。有什么方法可以增加尺寸并使直肠的中心保持在同一位置吗?还有没有办法使大小的增加/减少更平滑?这是其余的代码:
clicked = False
grow = 0
mode = 'grow'
while not clicked:
if grow>40:
mode = 'shrink'
if grow<1:
mode = 'grow'
self.pixeltitle = pg.transform.scale(self.pixeltitle,(400,400))
if mode == 'grow':
grow+=1
else:
grow-=1
xsize=400+int(grow)
ysize=400+int(grow)
self.pixeltitle = pg.transform.scale(self.pixeltitle,(xsize,ysize))
self.pixeltitlerect.center = (250,120)
self.screen.blit(self.pixeltitle,self.pixeltitlerect)
pg.display.flip()
缩放表面后,您错过了更新self.pixeltitlerect
的大小:
self.pixeltitle = pg.transform.scale(self.pixeltitle,(xsize,ysize))
# size of surface has been changed get the new rectangle
self.pixeltitlerect = self.pixeltitle.get_rect()
self.pixeltitlerect.center = (250,120)
self.screen.blit(self.pixeltitle,self.pixeltitlerect)
或更短(请参见pygame.Surface.get_rect()
):
pygame.Surface.get_rect()
不缩放原始Surface。如果原始的Surface缩放了比例,它将变形。保留原始图像self.pixeltitle = pg.transform.scale(self.pixeltitle,(xsize,ysize))
self.pixeltitlerect = self.pixeltitle.get_rect(center = (250,120))
self.screen.blit(self.pixeltitle,self.pixeltitlerect)
并缩放原始图像:
self.pixeltitleorig
请参见示例:
self.pixeltitle = pygame.transform.scale(self.pixeltitleorig,(xsize,ysize))