Pygame规模搞乱精灵

时间:2016-05-04 12:04:06

标签: python pygame

我正在进行2D自上而下的比赛,当我放大/缩小并改变分辨率时我遇到了问题。

game start

zoom out

zoom in

这是我用来操作图像的代码(精灵):

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()

2 个答案:

答案 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。