【问题标题】:Unable to fix collision bug in pygame [duplicate]无法修复pygame中的碰撞错误[重复]
【发布时间】:2020-07-11 19:59:29
【问题描述】:

我正在尝试学习如何在 pygame 中使用 sprites 和 rect,并且我制作了一个简单的程序,让玩家可以站在平台上。但是当它在一个平台下跳跃时,它会穿过平台,当它开始往回下降时,它会突然移动到它所接触的平台顶部。我想让玩家在跳下平台时与平台发生碰撞而不会通过。

这是使玩家与平台发生碰撞的游戏类中的代码

def update(self):
  self.all_sprites.update()
    
  hits = pg.sprite.spritecollide(self.player, self.platforms, False)
  if self.player.vel.y > 0:
    if hits:
      self.player.pos.y = hits[0].rect.top + 0.5 #le joueur se retrouve sur l'objet percuté
      self.player.vel.y = 0

这是播放器类中使其跳转的代码

def jump(self):
  self.rect.y += 1
  hits = pg.sprite.spritecollide(self, self.game.platforms, False)
  self.rect.y -= 1
  if hits:
    self.vel.y = -10

【问题讨论】:

  • @martineau 我理解您对问题和 heres/here's 的编辑,但是很好并感谢您的帮助是一个问题吗?在寻求帮助后,我认为感谢会帮助或帮助我的人很重要
  • bappi:显然你是这么想的。但是,您发布问题的事实意味着您在寻求帮助时如此明确地说出多余的内容,虽然在日常交流中说谢谢是一种礼貌,但这不是这里的工作方式——人们通过以下方式得到他们的感谢让他们的答案(和问题)“投票赞成”(在前者的情况下也可能“接受”)。
  • @martineau 我们可以提前说声谢谢……但我才 19 岁,与你的职业相去甚远,所以我不能教你这样的东西。我明白你的回答,所以谢谢你,祝你有美好的一天

标签: python pygame sprite rect


【解决方案1】:

我认为问题可能出在您使用的碰撞功能上。如果平台不是精灵而只是一个单独的表面,我建议使用pygame.sprite.spritecollideany()。 可以在此处找到有关不同类型碰撞的文档: https://www.pygame.org/docs/ref/sprite.html

【讨论】:

  • 谢谢@Max,我会试试这个?
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
相关资源
最近更新 更多