我目前正在PyGame中制作2D横向滚动run'n'jump平台游戏。大多数的东西工作正常,事实上 - 我利用快速pyGame Sprite对象组。Pygame:使用滚动级别更新Reces
我想知道的是人们通常如何处理滚动游戏的Rects。我显然有一个比可见区域大得多的等级,玩家,敌人,子弹等都有自己的(x,y)坐标来描述他们在关卡中的位置。
但是现在,由于我们使用“spriteGroup.draw(surface)”调用,它不会将它们显示在正确的位置,除非每个对象Rects已经被调整,以便右边的部分显示在屏幕上。换句话说,每次玩家/敌人/子弹/其他任何更新时,都需要传递相机信息,以便更新其Rect。
这是最好的方法使用?它可以工作,但我并不喜欢在每次更新时将相机信息传递给每个对象以抵消Rects。很明显理想的方法(我认为)是使用具有“真实”坐标的Rects,将所有事物都投射到与水平相同的缓冲区,然后将可见部分投射到屏幕上,但在实践中会减慢比赛下来很多。
任何意见/见解将不胜感激。
谢谢
我从不超过地图的极限运动使用Pygame,但我假设你可以使用翻译矩阵将所有内容保存在“真实”坐标中,而无需创建像关卡一样巨大的缓冲区。 – Doggett 2010-11-01 23:41:58
嗯,不是真的,这是重点。 Pygame可以让你一次画出许多精灵,但不会让你转换它们的坐标。 – RedCap 2010-11-02 02:30:56
[添加滚动到平台游戏中的pygame]可能的重复(http://stackoverflow.com/questions/14354171/add-scrolling-to-a-platformer-in-pygame) – sloth 2015-09-11 07:33:16