繁体   English   中英

如何使用 pygame spritegroups 绘制部分精灵图像?

[英]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 update 方法肯定会调用更新,并且视口矩形正在正确更新,并且在游戏中我有:

self.all_sprites.draw(screen)

我将如何使用 pygame spritegroups 来实现这一点? 此外,没有一个精灵有绘制方法。

您可以使用 subsurface 方法定义直接链接到源表面的subsurface

subsurface(Rect) -> Surface

返回一个与其新父级共享其像素的新 Surface。 新 Surface 被视为原始 Surface 的子级。 对任一表面像素的修改将相互影响。

在构造函数中创建次表面一次或在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.Spriteimagerect属性来绘制对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM