我正在使用 pygame 制作游戏,并且我有一个小行星类。当我将旋转添加到更新方法并运行程序时,小行星移动得非常缓慢和滞后,甚至它们的图像看起来也比以前更糟。
我不确定如何解决这个问题以及为什么会发生这种情况。这是类(class):
class enemy(pygame.sprite.Sprite):
def __init__(self, x, y, width, height):
pygame.sprite.Sprite.__init__(self)
self.width = width
self.height = height
self.speedx = random.randrange(-3,3)
self.speedy = random.randrange(5,15)
self.image = random.choice(meteor_image)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.rotation = 0
self.rotation_speed = random.randrange(-8,8)
self.last_update = pygame.time.get_ticks()
def draw(self,win):
win.blit(self.image,(self.rect.x,self.rect.y))
def rotate(self):
time_now = pygame.time.get_ticks()
if time_now - self.last_update > 50:
self.last_update = time_now
self.rotation = (self.rotation + self.rotation_speed) % 360
new_meteor_image = pygame.transform.rotate(self.image, self.rotation)
old_center = self.rect.center
self.image = new_meteor_image
self.rect = self.image.get_rect()
self.rect.center = old_center
def update(self):
self.rotate()
self.rect.y += self.speedy
self.rect.x += self.speedx
在我添加旋转功能并在更新功能中添加“self.roatate()”之前,它很好,之后,它真的很卡。如何解决?
最佳答案
您正在拍摄原图,旋转它,然后旋转旋转后的图像。不要那样做。旋转过程会丢失信息,因此您每次都希望从原始的、未修改的版本开始旋转。
旋转也是一个繁重的操作。我建议创建一个缓存来存储旋转的图像,在开始时构建它,然后在需要显示时从该缓存中提取。
关于python - 为什么我的程序在我添加旋转后变得非常迟钝,我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715025/