Я пытаюсь сделать мой фоновый список изображений, чтобы изменить себя, как только они попали в нижней части моего экрана ....Вертикальная прокрутка фона в Pygame
У меня есть объект Camera, который обновляет свой 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 *, чтобы сделать его двигаться медленнее, чем мой фактический сдвиг камеры.
Вот как я строить Б.Г. изображений перед моим большим основным циклом:
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)
Я ищу хорошие предложения о том, как заставить его работать гладко , Я попытался использовать инструкции if в моем Background.update(), но это делает его лаги и проблемы с tear & перекрывают линии из-за Int, float-конверсий.
Эта библиотека была для горизонтальной прокрутки, но я ее модифицировал и использовал, она работает как шарм! – Amzraptor
d'oh right, вертикальная прокрутка, он просто думал о слоях (у вас есть 1 bg изображение + спрайты переднего плана), они используют 3 bg изображения в своем примере, но я уверен, что замена x для y была довольно простой. –