如何阻止我的角色穿越地面

时间:2017-06-01 20:32:59

标签: python-3.x pygame

所以我正在尝试制作一个格斗游戏,我已经修好了所以我可以跳跃等等,让我的y速度+ = 1每帧让它像重力一样,当我按下跳跃键时y速度 - = 14。但是当我使用高于 - = 14例如 - = 20时,角色会通过地面剪辑。

我正在使用这种类型的collison检测

collisions = pygame.sprite.spritecollide(self, object_list, False)
    for col in collisions:
        if type(col) == Solid:
            if (self.rect.top < col.rect.bottom and self.rect.bottom > 
                col.rect.bottom):
                self.rect.top = col.rect.bottom

            if (self.rect.bottom > col.rect.top and self.rect.y < col.rect.top):
                self.rect.bottom = col.rect.top
                self.yspeed = 0
                self.jump = False

1 个答案:

答案 0 :(得分:0)

我猜你的战斗机下降得太快,以至于它在循环的一次更新中通过了平台......

有几种方法可以解决这个问题,最简单的方法是多次更新其位置并每次检查碰撞......

#example ...
for i in range(4): # split the change into smaller steps ...
    self.rect.y += self.velocity_y /4.0
    collisions = pygame.sprite.spritecollide(self, object_list, False)
    ... #all your collisions checks here ...