pygame随着时间的推移旋转图像

时间:2016-11-24 09:30:53

标签: python pygame

我正在尝试使用一个类在图像创建后随时间旋转但我一直收到错误:

  

“pygame.error:宽度或高度太大”。

game_display=pygame.display.set_mode((display_width,display_height))
    display_rect=game_display.get_rect()
    forest_img=pygame.image.load("forest.jpg")
    game_display.blit(forest_img,(0,0)
    kunai=pygame.image.load("Kunai.png")
    kunai=pygame.transform.scale(kunai, (13,55))
    kunai_rect=kunai.get_rect(center=display_rect.center)
    angle = 0
    done = False

    global done
    global kunai
    global angle
    global kunai_rect

    class Knife():
        def __init__(self, vx):
            self.x=display_width//2+30
            self.y=int(ground+65)
            self.vx=vx
        def update(self):
            self.x+=self.vx

        def draw(self):
            global done
            global kunai
            global angle
            global kunai_rect

            while not done:
                kunai=pygame.transform.rotate(kunai, angle)
                kunai_rect=kunai.get_rect(center=kunai_rect.center)
                game_display.blit(kunai, kunai_rect)
                clock.tick(60)
                angle+=1

    knifes=[]
    while True:
        for event in pygame.event.get():
            if event.type==pygame.KEYDOWN:
               if event.key == pygame.K_SPACE:
                    knifes.append(Knife(20))
        for knife in knifes:
            knife.draw()
            knife.update()

有人可以帮助我吗?感谢。

1 个答案:

答案 0 :(得分:0)

您旋转的曲面kunai是一个全局变量。旋转后,它将再次存储到同一个变量中:

kunai=pygame.transform.rotate(kunai, angle)

每次旋转曲面时,它都会变大。你可以想象旋转一个矩形,如果你想将旋转的矩形存储在一个未旋转的矩形中,你在大多数情况下都必须使未旋转的矩形变大。

所以会发生的是kunai矩形对于每次迭代变得越来越大。您可以尝试打印尺寸以查看此内容。

您应该改为旋转原始图像。