我正在进行2D自上而下的比赛,当我放大/缩小并改变分辨率时我遇到了问题。
这是我用来操作图像的代码(精灵):
char = pygame.image.load('char.png')
char_size = 10
def set_res(self,window_h):
self.w = int(window_h * 1.2)#4:3
self.h = int(window_h * 0.9)#4:3
self.mode = (self.w, self.h)
self.screen = pygame.display.set_mode(self.mode)
self.zoom()
def zoom(self):
self.unit = self.h / self.board_units
self.char = pygame.transform.scale(self.char, (int(self.unit*self.char_size),int(self.unit*self.char_size)))
.
.
.
self.screen.fill(self.white)
self.screen.blit(self.char, (self.w/2-self.char_size*self.unit/2, self.h/2-self.char_size*self.unit/2))
pygame.display.update()
答案 0 :(得分:1)
这一行:
self.screen.blit(self.char, (self.w/2- self.char_size*self.unit/self.h/2-self.char_size*self.unit/2))
似乎在左侧和顶部之间的元组中缺少逗号:
self.screen.blit(self.char, (self.w/2- self.char_size*self.unit, self.h/2-self.char_size*self.unit/2))
此外,您已经缩放了字符,因此只需向char
询问其rect
的大小,以屏幕中心为中心:
self.screen.blit(self.char, self.char.get_rect(center=(self.w/2, self.h/2)))
答案 1 :(得分:0)
好的,我弄明白了什么是错的。我需要保留原始加载的图像,并在我想要缩放我的精灵时使用该图像,否则,如果我有20x20加载的图像并将其缩放到10x10然后再缩放到100x100,那么它将是一个10x10图像被拉伸到100x100。