如何检测是否已在pygame中单击了精灵

uni*_*ice 7 python pygame sprite

我是pygame的新手,现在正在与精灵一起工作.我的问题是如何检测精灵是否被点击?当像精灵按钮一样点击精灵时,我想做点什么.

谢谢 :)

将帖子

斯蒂芬.另外还有一种方法可以知道被点击的精灵是谁吗?这是示例代码

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)
Run Code Online (Sandbox Code Playgroud)

例如,我点击位置[0,0]中的精灵,程序应该打印其颜色或其位置.再次感谢 :)

Ste*_*rry 7

我在Pygame做了很长时间,但是IIRC的基本想法是你的精灵应该有一个rect 属性来描述它在屏幕上的位置.当您收到鼠标单击事件时,您可以通过调用获得该位置pygame.mouse.get_pos().然后,您可以rect通过调用pygame.sprite.collide_rect()两个rect对象来检查鼠标位置居中与精灵矩形之间的碰撞.

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

  • 唉,示例链接不再有效。 (2认同)

nin*_*key 5

更简单: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!'
Run Code Online (Sandbox Code Playgroud)

RectSprite 中还有几个碰撞函数。看: