2017-04-16 7 views
0

背景が側面に沿ってスクロールすると、画像の端が伸び、画像の残りの部分は伸びた同じ丘には表示されません。その後、突然リセットされます。また、画像の一部(長方形)は、画像の残りの部分からずらされ、不均一になり、見えなくなるまでそのようにとどまります。ここで連続したサイドクロリングは、背景画像の表示に異常を作成します

Normal background

Elongated background

Displaced backgound

私の更新機能は、高さに対してbgX1とbgX2をチェックしていたように私は

import pygame, sys, time, random 
from pygame.locals import * 

class Background(pygame.sprite.Sprite): #Creates space background 
    def __init__(self, image_file, location): 
     pygame.sprite.Sprite.__init__(self) #call Sprite initializer 
     self.bgimage = pygame.image.load(image_file) 
     self.bgimage = pygame.transform.scale(self.bgimage, (1333, 600)) 
     self.rectBGimg = self.bgimage.get_rect() 

     self.bgY1 = 0 
     self.bgX1 = 0 

     self.bgY2 = 0 
     self.bgX2 = self.rectBGimg.width 

     self.movingUpSpeed = 5 

    def update(self): 
     self.bgX1 -= self.movingUpSpeed 
     self.bgX2 -= self.movingUpSpeed 
     if self.bgX1 <= -self.rectBGimg.height: 
      self.bgX1 = self.rectBGimg.height 
     if self.bgX2 <= -self.rectBGimg.height: 
      self.bgY2 = self.rectBGimg.height 

    def render(self): 
     screen.blit(self.bgimage, (self.bgX1, self.bgY1)) 
     screen.blit(self.bgimage, (self.bgX2, self.bgY2)) 


pygame.init() 

FPS = 15 # frames per second setting 
clock = pygame.time.Clock() 

window_width = 1333 
window_height = 600 

# set up the window 
screen = pygame.display.set_mode((window_width, window_height)) 
pygame.display.set_caption('Deterred Journey') 

BackGround = Background('scrollingBackground.png', [0,0]) 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 


    #Adds images and text 
    BackGround.render() 
    BackGround.update() 
    pygame.display.flip() 
    pygame.display.update() 
    clock.tick(30) 

pygame.quit() 
sys.exit() 

答えて

0

サイドスクロールに使用したコードは、変位を引き起こして見えるされており、私は伸びを引き起こすself.bgY2 = self.rectBGimg.heightをセットした。それは垂直bgX2は幅に設定する必要がありますスクロールだから

更新機能は

def update(self): 
    self.bgX1 -= self.movingUpSpeed 
    self.bgX2 -= self.movingUpSpeed 
    if self.bgX1 <= -self.rectBGimg.width: 
     self.bgX1 = self.rectBGimg.width 
    if self.bgX2 <= -self.rectBGimg.width: 
     self.bgX2 = self.rectBGimg.width 
のようになります。
関連する問題