繁体   English   中英

左边的pygame sprite碰撞

[英]pygame sprite collision on left

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

也许有可能与pygame.sprite.groupcollide()和他们称之为自定义collided 但是我找不到这个问题的答案。 有什么办法吗?

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

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

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

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

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

下面是我发现的pygame文档的链接:

pygame文档

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

pygame.sprite.spritecollide()

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

pygame.sprite.collide_mask()

正如文档所说:

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

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

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

希望它有所帮助。

-Harry

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM