2013-04-13 91 views
0

我試圖讓我的背景圖像列表儘快重新定位自己,因爲他們打我的屏幕底部....垂直滾動背景中的Pygame

我有一個相機對象,更新其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轉換造成重疊行的撕裂問題。

回答

1

你可以試試: PyParallax看起來像它做你想要的東西加上更多。

+0

這個庫是爲了水平滾動,但我修改它,並使用它像一個魅力! – Amzraptor

+0

對了,垂直滾動,它只是想到了圖層(你有1個圖像+前景精靈),他們在他們的例子中使用3個圖像,但我確定交換x對於y很容易。 –