我正在 Pygame 中制作一个平台游戏,我有一个我喜欢的墙壁纹理,但是当我在不同大小的墙壁上使用它时,它只是拉伸图像(图像是 4 行砖块)。我希望它以与原始图像相同的比例显示相同的图像,但它“循环”图像以便多次显示它。抱歉英语不好。
我尝试了简单的transform.scale函数,我希望它能做到我之前所说的,但它拉伸了相同的图像。
它处于 for 循环中,因为我有一个墙壁坐标、长度和高度的列表。篮球现在是球员:
代码:
wall_img = []
for i in range(len(wall_x)):
wall_img.append(pygame.Surface((1080, 1080)))
wall_img[i].blit(spritesheet_wall, (0, 0))
wall_img[i] = pygame.transform.scale(wall_img[i], (WALL_WIDTH[i], WALL_HEIGHT[i]))
您需要在大墙面上多次
blit
墙砖图像:
for i in range(len(wall_x)):
wall_img.append(pygame.Surface((WALL_WIDTH[i], WALL_HEIGHT[i])))
(tile_width, tile_height) = spritesheet_wall.get_size()
for x in range(0, WALL_WIDTH[i], tile_width):
for y in range(0, WALL_HEIGHT[i], tile_height):
wall_img[i].blit(spritesheet_wall, (x, y))