【发布时间】:2020-07-02 04:15:54
【问题描述】:
多精灵图像的像素完美碰撞
我想做像素完美的碰撞检查。我有一个带有透明背景的PNG格式的6帧精灵,但它们都在一个精灵表上。 (“敌人”精灵各有 2 帧。)我可以为它们设置动画并很好地移动它们。
如何仅从已加载图像的一部分制作 pygame 表面对象?我想我可以单独加载每个精灵帧,但这很费力,而且看起来不像是好的编码。
更多信息
我可以很容易地将整个 spritesheet 变成一个掩码,如下所示(最初在 spritesheet 类中,但在这里进行了简化):
# Load image
sheet = pygame.image.load("spritesheet.png")
# Create mask
sheet_mask = pygame.mask.from_surface(sheet)
我可以简单地使用当前帧的矩形来检测碰撞,但这会非常不令人满意,因为有时碰撞似乎会在没有接触的情况下发生。一个 pygame 有这个很棒的掩码对象来处理这类事情。
在主游戏循环的每个循环中,我想检查一个精灵的适当帧与另一个精灵的适当帧。我一直在尝试为每个帧创建一个蒙版,然后将它们存储在一个列表中。
【问题讨论】:
标签: python python-3.x pygame bitmask sprite-sheet