0

我正在尝试让我的背景图像列表在它们到达我的屏幕底部后立即重新定位......

我有一个相机对象,它将其 self.state 更新为我移动球的位置。

这是我的背景课程:

class Background(pygame.sprite.Sprite):
def __init__(self, x, y):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.image.load('images/clouds.jpg').convert()
    self.x = x
    self.y = y
    self.rect = self.image.get_rect()
    self.rect.left, self.rect.top = self.x, self.y   

def update(self,cam):
    self.rect.left = self.x + (0.2*cam.state.left)
    self.rect.top = self.y + (0.2*cam.state.top)

0.2* 是为了让它比我的实际相机移动速度慢。

这是我在大主循环之前构建 bg 图像的方法:

all_backgrounds = pygame.sprite.Group()
#building bg images
for i in xrange((WIDTH+BG_WIDTH)/BG_WIDTH):
    for j in xrange((HEIGHT+BG_HEIGHT)/BG_HEIGHT):
        all_backgrounds.add(Background(BG_WIDTH*i,BG_HEIGHT*j))

然后在我的主循环中:

......
all_backgrounds.update(cam)
......
all_backgrounds.draw(screen)

我正在寻找有关如何使其顺利运行的好建议。我尝试在我的 Background.update() 中使用 if 语句,但由于 Int、float 转换,它使它变得滞后并且出现撕裂和重叠线的问题。

4

1 回答 1

1

您可以尝试一下: PyParallax看起来可以满足您的需求以及更多功能。

于 2013-04-13T00:54:50.423 回答