如何判断两个精灵在pygame中是否真正碰撞而不仅仅是“接触”?

1 投票
1 回答
530 浏览
提问于 2025-04-18 03:25

我正在尝试制作一个基本的平台游戏,但在理解如何检测碰撞和处理精灵(Sprite)这个超级类时遇到了困难。我之前是在学习一个更像回合制的游戏,他们使用了类似下面的代码:

world_hit_list = pygame.sprite.spritecollide(self, self.world, False)

来检测碰撞,然后把自己的精灵的矩形(rect)移动到和世界对象的底部/顶部/左侧/右侧对齐,以保持它们之间的距离。现在我遇到的问题是,如果你“碰到”另一个精灵(比如,站在一个平台上),这就算是碰撞,尽管实际上并没有重叠。我不太确定该如何解决这个问题,以便只检测玩家精灵是否真的重叠,而不是仅仅在旁边。我在想是否可以创建一个单独的碰撞矩形,这个矩形每边都小一像素,但精灵类的所有功能都是基于使用对象的self.rect,所以我不太明白如何在碰撞检测和绘制等方面使用不同的矩形。因此,我不确定我的想法是否正确。

1 个回答

1

我刚开始学pygame,对这个问题不是很明白,但我觉得你是想缩小碰撞区域:

self.rect.inflate(negative value x,nagative value y)

撰写回答