如何在pygame中将相机和英雄的位置重置为新的水平

时间:2019-07-06 11:08:54

标签: python pygame

注意:这个问题与其他问题完全不同-我已经指定了适当的详细信息,在该点发生问题,并把我的整个代码供参考

我正在开发游戏的第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

预先感谢

0 个答案:

没有答案