总的来说,我对 Pygame 和 Python 还比较陌生,所以希望这不是太陌生。
我正在制作一个自上而下的 RPG,并且我有两个 Sprite 对象,其图像看起来(例如)如下所示:

使用不代表整个图像的矩形:
class NPC(pygame.sprite.Sprite):
def __init__(self, image, pos, *groups):
super().__init__(*groups)
self.image = pygame.load(image)
self.rect = self.image.get_rect()
self.collisionRect = pygame.Rect(self.rect.left, self.rect.top + 12, self.image.get_width(), self.image.get_width())
#12 is the number of pixels that will overlap in the y-dimension
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我希望 NPC 的顶部几个像素与其他精灵重叠。collisionRect每当我检测到碰撞时,都会使用每个对象中的,rect以便我可以创建这种效果。
但是,我需要一种方法在 update() 函数中重新绘制它们,以便一个根据彼此之间的相对位置绘制另一个。
因此,当一个 NPC 位于另一个 NPC 上方时,它看起来像这样:
但是,当情况相反时,它应该看起来像这样:
这意味着需要以不同的顺序绘制图像,具体取决于哪个精灵位于另一个精灵的“下方”。
我考虑过可能将精灵切割成单独的精灵,然后最后绘制“头部”精灵,但我想知道是否有一种更简单(或至少可靠)的方法来检测精灵是否应该最后绘制或否,取决于它是否与另一个精灵重叠并且在 y 维度中紧邻其下方。
如果这个问题太宽泛或需要更多背景信息,我深表歉意;如果需要的话可以提供。