我从这个网站上获取了滚动源代码 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))
反转移动速度只会显示奇怪的伪像,我还不够了解。
答案 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))