反转垂直滚动

时间:2021-05-11 08:12:52

标签: python pygame

我从这个网站上获取了滚动源代码 https://coderslegacy.com/python/pygame-scrolling-background/

不幸的是它向上滚动而不是向下滚动。我想反转滚动。这是相关代码:

class Background():
      def __init__(self):
            self.bgimage = pygame.image.load('AnimatedStreet.png')
            self.rectBGimg = self.bgimage.get_rect()
 
            self.bgY1 = 0
            self.bgX1 = 0
 
            self.bgY2 = self.rectBGimg.height
            self.bgX2 = 0
 
            self.moving_speed = 5
         
      def update(self):
        self.bgY1 -= self.moving_speed
        self.bgY2 -= self.moving_speed
        if self.bgY1 <= -self.rectBGimg.height:
            self.bgY1 = self.rectBGimg.height
        if self.bgY2 <= -self.rectBGimg.height:
            self.bgY2 = self.rectBGimg.height
             
      def render(self):
         DISPLAYSURF.blit(self.bgimage, (self.bgX1, self.bgY1))
         DISPLAYSURF.blit(self.bgimage, (self.bgX2, self.bgY2))

反转移动速度只会显示奇怪的伪像,我还不够了解。

1 个答案:

答案 0 :(得分:0)

您需要将移动速度添加到 y 坐标而不是减去它:

self.bgY1 -= self.moving_speed self.bgY2 -= self.moving_speed

self.bgY1 += self.moving_speed
self.bgY2 += self.moving_speed

此外,您可以简化代码。使用模 (%) 运算符计算 y 坐标:

class Background():
    def __init__(self):
        self.bgimage = pygame.image.load('AnimatedStreet.png')
        self.rectBGimg = self.bgimage.get_rect()
        self.bgY = 0
        self.bgX = 0
        self.moving_speed = 5
        
    def update(self):
        self.bgY = (self.bgY + self.moving_speed) % self.rectBGimg.height
                
    def render(self):
        DISPLAYSURF.blit(self.bgimage, (self.bgX, self.bgY - self.rectBGimg.height))
        DISPLAYSURF.blit(self.bgimage, (self.bgX, self.bgY))
相关问题