Pygame横向滚动:平台继续向相反方向移动,朝向位置0

时间:2017-02-03 11:53:32

标签: python python-3.x pygame

我无法使用pygame为平台游戏实现功能侧向滚动:每当玩家没有水平居中时,我希望世界(即平台)滚动。

我相信主循环中的相关代码部分是:

if self.player.rect.center[0] != WIDTH/2:
    self.player.pos.x -= self.player.vel.x
    for pl in self.platforms:
        pl.rect.x -= self.player.vel.x

但是,会发生什么

  • 当玩家向左移动时,x位置的所有平台< 0以恒定速度向右移动,但直到x = 0;
  • 当玩家向右移动时,x位置的所有平台&gt; 0以恒定速度向左移动,但直到x = 0。

有时平台在x = 0之前不会一直移动。我相信当玩家速度几乎为0时它们会停止。

Hopefully this makes it more clear. The platforms should not move relative to each other. (Sorry about the artifacts)

我错过了什么?我真的不明白为什么平台表现得如此奇怪。

1 个答案:

答案 0 :(得分:0)

我很确定这是因为你在self.player.pos.x和p1.rect.x上都使用了(+ = velocity)方法。这会导致多个问题,因为玩家只能在不在中心时移动(这意味着一旦它在中心它没有出来),并且平台以相同的速度和相同的方向移动球员应该是。这就是导致这些奇怪效果的原因。 (你需要将速度分成两半,否则你的移动速度会快两倍!)

self.player.pos.x -= self.player.vel.x/2
if self.player.rect.center[0] != WIDTH/2:
    for plat in self.platforms:
        plat.rect.x += self.player.vel.x/2