如何检测pygame中精灵是否被点击
我刚开始学习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!'
在Rect和Sprite中还有更多的碰撞检测函数。你可以查看以下链接:
9
我很久没用Pygame了,但如果我没记错的话,基本的想法是你的精灵(sprite)应该有一个叫做rect
的属性,这个属性用来描述它在屏幕上的位置。当你收到鼠标点击事件时,可以通过调用pygame.mouse.get_pos()
来获取鼠标的位置。接着,你可以通过调用pygame.sprite.collide_rect()
来检查一个以鼠标位置为中心的rect
和你的精灵的rect
之间是否发生了碰撞。
一个很好的例子可以在这里找到。