(pygame)空方块显示以前存在的副本而不是背景

时间:2013-05-28 14:13:11

标签: python pygame sprite rect

我用很多瓷砖精灵和一个玩家精灵制作了一个2D项目。我正试图让相机跟随播放器,而且大多数情况下它都在工作。但是,有一个问题:
如果你去地图的边缘,它会正常滚动,但它不是黑色背景,而是显示地图边缘上的精灵副本而不是背景(黑色)。如果我将一些正方形留空,则会出现同样的问题,当我移动时,它会显示之前存在的磁贴副本。

相机的工作原理如下:

  • 选择应该可见的精灵
  • 为他们做sprite.visible = 1,为所有其他精灵做sprite.visible = 0
  • 将所有精灵的位置sprite.rect设置为coords - offset
  • 更新屏幕(我使用flip(),因为相机每回合移动一次,所以每个回合都需要更新整个屏幕)

所有DirtySprites都有dirty = 2

有谁知道为什么它会在边缘而不是背景上显示精灵的副本?

帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

除非您手动清除屏幕表面,否则翻转不会改变其内容。

因此,如果你忽略了画到某个位置,它将保持不变。

如果你想摆脱这种通常被称为“镜子大厅”的效果,你必须跟踪屏幕的哪些部分尚未被绘制,并自己绘制。

在地图的轮廓周围定义背景精灵并阻止相机远离太远可能更容易。

由于您使用“脏/干净”方法仅重新绘制已更改的内容,因此在绘制框架之前,您将无法选择仅填充整个屏幕表面,因为这会覆盖任何保持不变的内容。最后一帧。