注意:这个问题与其他问题完全不同-我已经指定了适当的详细信息,在该点发生问题,并把我的整个代码供参考
我正在开发游戏的第3个级别。当第3级开始时,“摄影机”和“英雄”位置将获得与第2级在终点处留下的相同值。我无法找到一种方法来重置摄像机和英雄位置值并以0坐标开始级别。
以下是有关此问题的简短视频-https://www.youtube.com/watch?v=KtEW4cbpT5A
到目前为止我尝试过的,
在游戏中,当玩家击中第2级末尾出现的隧道时-level变量的值更改为3,以便可以加载第3级数据
# This function works for Tunnel Only
def tunnelHit_or_not_2(self, hero, tunnel):
hit = pygame.sprite.collide_rect(hero, tunnel)
if hit:
self.level = 3
self.hero.x = 0
self.CameraX = 0
我已经将self.CameraX值设置为0,但是当玩家进入3级时,它不会随着玩家移动而更新CameraX值。 self.hero.x值也是如此。它也不更新。它适用于第一级和第二级,但不适用于第三级
这是负责更新摄像机和hero.x位置的代码,
if self.noBorderCross:
self.hero.x += self.hero.velocity
if self.noCameraCross:
if self.level == 3:
# Moving Coins
self.updateCoinPos(self.coin_forest)
# Moving Platform_sky
self.updatePlatformPos(self.platform_forest)
self.updateEnemyPos(self.enemy_forest)
# For moving enemies dead bodies in lvl 2
for e in self.enemy_forest:
if e.enemyDead:
e.x += self.hero.velocity
if self.hero.x >= startScrollingPos_forest:
self.noBorderCross = False
self.coordinates = 3700
# Updating rect of Platform_sky
self.updatePlatformRect(self.platform_forest)
self.updateCoinRect(self.coin_forest)
self.CameraX += self.hero.velocity
if self.CameraX >= self.coordinates:
self.noCameraCross = False
if self.hero.x < 890 - self.hero.velocity - self.hero.width:
self.hero.x += self.hero.velocity
#self.level = 2
任何人都可以帮助我如何在第三级重置摄像机和英雄的位置,当玩家在屏幕上移动时会更新该位置。
这是我的完整代码(主类)链接-https://pastebin.com/CuGF9pQM
the_sprites 0-https://pastebin.com/VCiskCJB
设置-https://pastebin.com/eceBgyxt
预先感谢