【问题标题】:Pygame CollisionPygame 碰撞
【发布时间】:2011-11-29 04:37:02
【问题描述】:

如何使用pygame.sprite.collide_rect

我想制作一个游戏,如果女孩在冰上,她会slide,而当她在地面上时(这将是另一个sprite),她不会slide。我打算使用 pygame 的碰撞检测,但我不确定如何。

有人可以帮帮我吗?

非常感谢

【问题讨论】:

  • 啊哈!原来有一个摩擦系数,这是我不知道的。见stackoverflow.com/questions/8306471/sliding-sprites
  • 你解决了这个问题吗?如果任何答案对您有用,那么赞成/接受它们会很好! :)
  • 我通常不搞这个,我用数学方法检查碰撞。它不太复杂,通常可以让您的游戏运行得更快。

标签: python collision-detection pygame sprite


【解决方案1】:

你能发布你的代码吗?

据我所知,你想要的是这样的:

if pygame.girl.colliderect(ice.rect):
     girl.slide()
elif pygame.girl.colliderect(ground.rect):
     girl.notslide()

【讨论】:

  • 如果它很短,您可以将其发布到帖子本身,只需在每行前加上 4 个额外空格,这会告诉 StackOverflow 将其放入灰色框中并为某些单词着色,就像我上面的帖子一样.如果它很长,你可以把它放在一个粘贴网站上,比如pastebin.com,然后发布一个粘贴链接。
  • 另外,对于这样的事情,看看pygame网站上的示例代码总是好的,尤其是pygame.org/docs/tut/chimp/ChimpLineByLine.html
  • 我在其中写了一些还不能正常工作的东西,因为我假设了这些功能,所以可能会有错误和东西--- game.py (main) pastebin.com/DvaqHG9X character .py(这就是我为她制作动画的方式)pastebin.com/KWK5PvD2 这就是她走路的方式pastebin.com/uQkfNkV5
  • 我明天尽快看看,我现在要睡觉了。
  • 是的,您可能想要做的是在 check_bounds() 中包含一段内容: if pygame.girl.colliderect(ice.rect): slide = true;否则:幻灯片=假;然后,在步行部分,您将只包含一些动量部分,例如“如果停止按下键,继续前进直到经过一定时间”(也许使速度与自释放密钥以来已过去)。这行得通吗?
【解决方案2】:

在 pygame 中有多种检测碰撞的方法。包括矩形,带有精灵组等......为了找到一种特定的碰撞检测方式,只需查看您正在使用的代码即可。但是对于一个简单的精灵和矩形,你可以使用:

if pygame.sprite.collide_rect(girl_sprite, ice):
   slide()
else :
   continue_game()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多