如何检测pygame中精灵是否被点击

7 投票
2 回答
17026 浏览
提问于 2025-04-16 19:36

我刚开始学习pygame,现在正在研究精灵(sprites)。我想知道怎么判断一个精灵是否被点击了?我想在点击精灵的时候做一些事情,就像点击按钮一样。

谢谢。

[编辑]

谢谢你,Stephen。还有没有办法知道被点击的是哪个精灵?这里有一段示例代码:

boxes = pygame.sprite.Group()
for color, location in [([255, 0, 0], [0, 0]),
                        ([0, 255, 0], [60, 60]),
                        ([0, 0, 255], [120, 120])]:
    boxes.add(UpDownBox(color, location)

比如我在位置[0,0]点击了一个精灵,程序应该打印出它的颜色或者位置。

再次感谢。

2 个回答

6

更简单的方法是使用:Rect.collidepoint(x,y)

主循环

#in event handling:
if event.type == MOUSEMOTION: x,y = event.pos

for box in boxes:
    if box.rect.collidepoint(x,y): print 'yay!'

RectSprite中还有更多的碰撞检测函数。你可以查看以下链接:

9

我很久没用Pygame了,但如果我没记错的话,基本的想法是你的精灵(sprite)应该有一个叫做rect的属性,这个属性用来描述它在屏幕上的位置。当你收到鼠标点击事件时,可以通过调用pygame.mouse.get_pos()来获取鼠标的位置。接着,你可以通过调用pygame.sprite.collide_rect()来检查一个以鼠标位置为中心的rect和你的精灵的rect之间是否发生了碰撞。

一个很好的例子可以在这里找到。

撰写回答