python - 如何检测矩形对象、图像或 Sprite 何时被单击

标签 python pygame collision-detection

我试图判断何时单击某个 Sprite ,该 Sprite 必须属于特定组 (pygame.sprite.Group())。目前,我尝试创建一个 Sprite ,它只是鼠标位置并且完全不可见,将其添加到自己的组中,并使用以下代码:

clickedList = pygame.sprite.spritecollide(guess1, mouse, False)

其中,guess1 是被点击的 Sprite ,mice 是包含具有鼠标位置的 Sprite 的组。

当我尝试此操作时,我被告知“组没有属性矩形”。我该去哪里?

最佳答案

如果您有一个 Sprite (my_sprite),并且想要验证鼠标是否位于该 Sprite 上,那么您必须获取以下属性的 .rect pygame.sprite.Sprite对象并通过 .collidepoint() 测试鼠标是否在矩形区域内:

mouse_pos = pygame.mouse.get_pos()
if my_sprite.rect.collidepoint(mouse_pos):
    # [...]

pygame.sprite.Group 中的 Sprite 可以迭代。所以测试可以循环完成:

mouse_pos = pygame.mouse.get_pos()
for sprite in mice:
    if sprite.rect.collidepoint(mouse_pos):
        # [...]

或者获取组内 Sprite 的列表,其中鼠标位于其上。如果 Sprite 不重叠,则列表将包含 0 或 1 个元素:

mouse_pos = pygame.mouse.get_pos()
clicked_list = [sprite for sprite in mice if sprite.rect.collidepoint(mouse_pos)]

if any(clicked_list):
    clicked_sprite = clicked_list[0]
    # [...]

关于python - 如何检测矩形对象、图像或 Sprite 何时被单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58917346/

相关文章:

python - 格式化 Unicode 的 Unicode 表示?

python - 解析 CSV 文件并聚合值

algorithm - 找到最接近某个位置的非碰撞矩形的有效方法是什么

python - 如何在pygame中不让文本相互重叠?

dynamic - 物体间高效碰撞检测的最佳算法

javascript - 我的游戏中的碰撞检测不准确

c# - 如何在 C# 中创建 TensorProto?

python - Pandas - 通过所有独特的组合组合两个系列

python - 如何让我的递归函数返回以继续递归其他单元格

python - 如何在pygame中控制单个子弹