如何使用 pygame 精灵组绘制精灵图像的一部分?
How do I draw part of the sprite image using pygame spritegroups?
我想画出精灵图的一部分慢慢显露出来。如果我处理平局,我会这样做:
def draw(self, screen):
screen.blit(self.image, self.rect, self.viewport)
并在对象更新方法中更改视口大小。我尝试将其添加到代码中,但它只显示了整个图像。更新肯定是由 spritegroup 更新方法调用的,视口矩形正在正确更新,在游戏抽奖中我有:
self.all_sprites.draw(screen)
如何使用 pygame 精灵组实现此目的?此外,none 个精灵具有绘制方法。
您可以使用方法 subsurface
:
定义直接链接到源表面的次表面
subsurface(Rect) -> Surface
Returns a new Surface that shares its pixels with its new parent. The new Surface is considered a child of the original. Modifications to either Surface pixels will effect each other.
在构造函数中创建一次 subsurface 或在 update
方法中连续创建。例如:
class SpriteObject(pygame.sprite.Sprite):
def __init__(self, image):
# [...]
self.complete_image = image
def update(self):
self.image = self.complete_image.subsurface(self.viewport)
现在您不再需要 draw
方法,可以使用 self.all_sprites.draw(screen)
,因为 image
属性是整个图像的次表面。 pygame.sprite.Group.draw()
使用包含的 pygame.sprite.Sprite
的 image
和 rect
属性来绘制对象。
我想画出精灵图的一部分慢慢显露出来。如果我处理平局,我会这样做:
def draw(self, screen):
screen.blit(self.image, self.rect, self.viewport)
并在对象更新方法中更改视口大小。我尝试将其添加到代码中,但它只显示了整个图像。更新肯定是由 spritegroup 更新方法调用的,视口矩形正在正确更新,在游戏抽奖中我有:
self.all_sprites.draw(screen)
如何使用 pygame 精灵组实现此目的?此外,none 个精灵具有绘制方法。
您可以使用方法 subsurface
:
subsurface(Rect) -> Surface
Returns a new Surface that shares its pixels with its new parent. The new Surface is considered a child of the original. Modifications to either Surface pixels will effect each other.
在构造函数中创建一次 subsurface 或在 update
方法中连续创建。例如:
class SpriteObject(pygame.sprite.Sprite):
def __init__(self, image):
# [...]
self.complete_image = image
def update(self):
self.image = self.complete_image.subsurface(self.viewport)
现在您不再需要 draw
方法,可以使用 self.all_sprites.draw(screen)
,因为 image
属性是整个图像的次表面。 pygame.sprite.Group.draw()
使用包含的 pygame.sprite.Sprite
的 image
和 rect
属性来绘制对象。