所以我正在尝试制作一个格斗游戏,我已经修好了所以我可以跳跃等等,让我的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
答案 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 ...