7.pyagem-游戏背景
作者:互联网
背景交替滚动
游戏启动后,背景图像不断的向下移动
在视觉上产生角色不断向上移动的错觉
游戏背景不断变化,游戏主角的位置报错不变
实现方案
- 创建两张背景图
- 第一张完全和屏幕重合,第二章在屏幕的正上方
- 两种图像一起向下运动,当当前角色的 rect.y>=屏幕高度时,说明已经移动到欧美下方
- 将移动到屏幕下方的这张图像,设置到屏幕的正上方,rect.y = -rect.height,以此循环
"""游戏背景精灵"""
class Background(GameSprite):
def update(self):
# 调用父类的update方法实现移动
super().update()
# 重写父类update方法,判断是否移出屏幕
if self.rect.y >= SCREEN_RECT.height:
#如果移出屏幕,将图像设置到屏幕上方
self.rect.y = -self.rect.height
背景图像的交替实现
#plane_main.py
# 私有方法-创建精灵、精灵组
def __create_sprites(self):
# 创建两个背景精灵
background_1 = Background('./images/background.png', 1)
background_2 = Background('./images/background.png', 1)
# 将第二个背景精灵的y值设置为图片的高度
background_2.rect.y = background_2.rect.height
# 将背景精灵加入精灵组,实现循环滚动
self.back_group = pygame.sprite.Group(background_1,background_2)
# 私有方法-更新精灵组
def __update_sprites(self):
self.back_group.update() # 更新精灵组所有精灵
self.back_group.draw(self.screen) # 绘制精灵组图像
利用初始化方法,简化背景精灵的创建
"""游戏背景精灵""" class Background(GameSprite): def __init__(self, is_alt=False): # 调用父类方法,完成精灵的创建 super().__init__('./images/background.png', 1) # is_alt字段判断是否是交替图像,如果是,需要设置初始位置 if is_alt: self.rect.y = -self.rect.height def update(self): # 调用父类的update方法实现移动 super().update() # 重写父类update方法,判断是否移出屏幕 if self.rect.y >= SCREEN_RECT.height: # 如果移出屏幕,将图像设置到屏幕上方 self.rect.y = -self.rect.height
class Background(GameSprite):
def __init__(self, is_alt=False):
# 调用父类方法,完成精灵的创建
super().__init__('./images/background.png', 1)
# is_alt字段判断是否是交替图像,如果是,需要设置初始位置
if is_alt:
self.rect.y = -self.rect.height
# 私有方法-创建精灵、精灵组
def __create_sprites(self):
# 创建两个背景精灵加入精灵组,实现循环滚动
background_1 = Background()
background_2 = Background(True) # 设置True表示交替背景,设置位置
self.back_group = pygame.sprite.Group(background_1,background_2)
标签:__,游戏,背景,self,精灵,update,pyagem,background,rect 来源: https://www.cnblogs.com/Mickey-7/p/16296779.html