Pygame使用Sprite组时blob图像未在目标位置显示仅出现在左上角无报错
问题原因
Pygame精灵组的draw()方法默认读取精灵对象的rect属性作为绘制坐标,你在Enemy类的初始化逻辑中仅将坐标赋值给了自定义的self.x、self.y变量,没有同步更新到self.rect的坐标上。get_rect()方法返回的矩形默认坐标为(0, 0),因此所有怪物都固定显示在屏幕左上角。
修复方案
修改Enemy类的初始化代码,将传入的坐标直接赋值给rect属性即可:
class Enemy(pygame.sprite.Sprite): def __init__(self, x, y): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load('img/blob.png') self.rect = self.image.get_rect() # 直接给rect赋值坐标,不需要额外维护自定义x/y变量 self.rect.x = x self.rect.y = y
如果后续需要开发怪物移动逻辑,直接修改self.rect.x、self.rect.y的数值即可。
内容的提问来源于stack exchange,提问作者Ankur Rawat
相关产品推荐
相关产品推荐

