python - Pygame:使用滚动级别更新 Rects

标签 python scroll 2d pygame

我目前正在 PyGame 中制作一款 2D 横向卷轴奔跑跳跃平台游戏。大多数东西工作正常,事实上非常好——我正在利用快速的 pyGame Sprite 对象和组。

我想知道人们通常如何处理卷轴游戏的 Rect。我显然有一个比可见区域大得多的关卡,玩家、敌人、子弹等都有自己的 (x,y) 坐标,描述了它们在关卡中的位置。

但是现在,由于我们使用了“spriteGroup.draw(surface)”调用,它不会将它们显示在正确的位置,除非每个对象的 Rects 已经被调整以便正确的部分显示在屏幕上。换句话说,每次更新玩家/敌人/子弹/其他任何东西时,都需要传递 Camera 信息,以便更新它们的 Rect。

这是最好的使用方法吗?它有效,但我真的不喜欢在每次更新时将相机信息传递给每个对象以偏移 Rects。

显然,理想的方法(我认为)是使用具有“真实”坐标的 Rects,将所有内容 blit 到与关卡一样大的缓冲区,然后只将可见部分 blit 到屏幕,但实际上这会减慢游戏速度下降了很多。

如有任何意见/见解,我们将不胜感激。

谢谢

最佳答案

您可以扩展 de Sprite.Group 以便它接收相机信息。 然后执行以下选项之一: A. 覆盖更新方法,更新每个 Sprite 的屏幕坐标。 B. 覆盖 draw 方法,更新每个 Sprite 的屏幕坐标,然后调用其父 draw 方法。

我认为它更简单、更干净。

关于python - Pygame:使用滚动级别更新 Rects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073928/

相关文章:

python - graphlab:如何将 gzip 压缩文件加载到 SFrame 中

c - 为什么要改变C语言中二维数组的值?

python - 数据帧单元格被锁定并用于运行余额计算,条件是同一行上另一个单元格的结果

python - Airflow 如何使用 Oracle Hook 执行查询

python - 如何在pandas数据框中每次满足特定条件时增加一个值

javascript - 滚动到 div - jquery - 特定位置

c++ - 使用坐标空间和变换滚动和缩放增强型 Windows 图元文件

javascript - 防止鼠标中键单击滚动

java - 如何沿着特定轨迹放置物体?

java.awt.Graphics ->graphics.drawImage 太慢,出了什么问题?