gpt4 book ai didi

python - 为什么我的程序在我添加旋转后变得非常迟钝,我该如何解决这个问题?

转载 作者:太空狗 更新时间:2023-10-30 00:58:16 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com