左边的pygame sprite碰撞

时间:2014-01-20 20:09:04

标签: python pygame sprite collision

我想与pygame进行特殊的碰撞。我有一个Ball精灵和一个Block精灵,我想知道球撞到了哪一侧。

也许可以使用pygame.sprite.groupcollide()和自定义collided来调用它。但是我找不到这个问题的答案。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

是的,有可能。你对碰撞的论证也是正确的。

你需要做的是编写一个函数,它将获取2个精灵并返回一个布尔值。

在此功能中,您可以检查它们碰撞的哪一侧,并通知精灵碰撞,甚至只有在发生某种类型的碰撞时才返回true。

由于每个精灵都有一个矩形属性,你可以检查它们的移动方式和位置,以查看它们碰撞的位置。

例如,如果我们有两个精灵,A,B一个向上,另一个向左,它们可以以两种方式碰撞。您可以测试A是否从顶部发生碰撞,如果在碰撞后,第二个精灵高于A。

答案 1 :(得分:1)

这是我找到的pygame文档的链接:

pygame documentation

如果您使用带搜索页功能的浏览器搜索:

  

pygame.sprite.spritecollide()

我对pygame不太好,但要了解基础知识。我认为正确的功能是

  

pygame.sprite.collide_mask()

正如文档所说:

“返回掩码碰撞的掩码上的第一个点,如果没有碰撞,则返回None。

通过测试其位掩码是否重叠来测试两个精灵之间的碰撞。如果精灵具有“掩码”属性,该属性用作掩码,否则将从精灵图像创建掩码。打算作为碰撞回调函数传递给*碰撞函数。精灵必须具有“rect”和可选的“mask”属性。

如果要多次检查碰撞,您应该考虑在加载时为精灵创建一个遮罩。这将提高性能,否则这可能是一个昂贵的功能,因为它会在每次检查碰撞时创建掩码。“

希望它有所帮助。

-Harry