Pygame鼠标点击与矩形交集

2024-04-19 19:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一个基于生存的游戏,我有困难让玩家从树上收集木材。在

下面的函数检查我的鼠标是否被按下,如果玩家与任何树矩形相撞,它们的木材计数增加一。我用记号来确保每九个记号只加一个木头。在

def check(self):
    global tick
    if pygame.mouse.get_pressed()[0]: 
        for tree in resources:
            tree_rect=tree.rect                                
            if self.rect.colliderect(tree_rect) and tick>=9:
                self.inventory['wood']+=1
                tick=0

然而,每当我点击时,木头有时会被添加,有时不会,不管我的玩家类是否与任何树相撞。在

我尝试使用pygame.sprite.spritecollide(),但结果是一样的。感谢任何帮助。在

完整代码:

^{pr2}$

Tags: 函数rectselftree游戏if玩家鼠标
1条回答
网友
1楼 · 发布于 2024-04-19 19:33:39

Tree.update方法中绘制rect,您将看到哪里出了问题。在

pygame.draw.rect(screen, (120, 50, 0), rect)

您使用x和{}(即topleft)坐标作为圆的中心点,因此矩形将位于树的右下象限。在

^{pr2}$

请改用centerxcentery坐标:

pygame.gfxdraw.filled_circle(screen, rect.centerx, rect.centery, 80, light_green)
pygame.gfxdraw.aacircle(screen, rect.centerx, rect.centery, 80, light_green)

相关问题 更多 >