微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反转垂直滚动

如何解决反转垂直滚动

我从这个网站上获取了滚动源代码 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))

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

解决方法

您需要将移动速度添加到 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.bgY))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。