[英]pygame sprite collision on left
我想和pygame做特殊的碰撞。 我有一个Ball
精灵和一个Block
精灵,我想知道球撞到了哪一侧。
也许有可能与pygame.sprite.groupcollide()
和他们称之为自定义collided
。 但是我找不到这个问题的答案。 有什么办法吗?
对的,这是可能的。 你对碰撞的论证也是正确的。
你需要做的是编写一个函数,它将获取2个精灵并返回一个布尔值。
在此功能中,您可以检查它们碰撞的哪一侧,并通知精灵碰撞,或者甚至仅在发生某种类型的碰撞时返回true。
由于每个精灵都有一个rect属性,你可以检查它们的移动方式以及它们的位置,以查看它们碰撞的位置。
例如,如果我们有两个精灵,A,B一个向上,另一个向左,它们可以以两种方式发生碰撞。 您可以测试A是否从顶部发生碰撞,如果在碰撞后,第二个精灵高于A.
下面是我发现的pygame文档的链接:
如果您使用带搜索页面功能的浏览器搜索:
pygame.sprite.spritecollide()
我不太喜欢pygame,但了解基础知识。 我认为正确的功能是
pygame.sprite.collide_mask()
正如文档所说:
“返回掩码碰撞的掩码上的第一个点,如果没有碰撞,则返回None。
通过测试其位掩码是否重叠来测试两个精灵之间的碰撞。 如果精灵具有“掩码”属性,该属性用作掩码,否则将从精灵图像创建掩码。 打算作为碰撞回调函数传递给*碰撞函数。 精灵必须具有“rect”和可选的“mask”属性。
如果要多次检查碰撞,应该考虑在加载时为精灵创建一个遮罩。 这将提高性能,否则这可能是一个昂贵的功能,因为它会在每次检查碰撞时创建掩码。“
希望它有所帮助。
-Harry
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.