0

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

相机的工作原理是这样的:

  • 选择应该可见的精灵
  • sprite.visible = 1为他们和sprite.visible = 0所有其他精灵做
  • sprite.rect将所有精灵的位置设置为coords - offset
  • 更新画面(我用flip()的是 ,因为摄像机每转一转,所以每转都要更新整个画面)

都有。DirtySprites_dirty = 2

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

帮助将不胜感激!

4

1 回答 1

1

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

因此,如果您忽略绘制到某个位置,它将保持不变。

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

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

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

于 2013-05-28T16:54:56.450 回答