如何复制我需要在Pygame中旋转的精灵的一部分

时间:2016-04-12 19:06:07

标签: rotation sprite crop

我有一个180宽90高的精灵。它显示了火箭的2个视图 - 一个发动机发射,一个发射不发射。我需要能够只显示一个船的视图,同时也可以将其旋转到任何角度。我可以以任何角度显示整个180 x 90精灵,但无法弄清楚如何在旋转和blitting之前将左手或右手图像复制到90x90矩形。这是我的代码。 ship_image是包含2个船只的180x90精灵,我的transform.chop用于在ship3_image中创建一个只有一艘船的新90x90图像,其余代码将其旋转并显示它(我故意不清除我的显示表面表明我的精灵真的围绕它的中心旋转)。 那么为什么我没有从chop中获得90 x 90精灵或者我用什么命令来获得90 x 90精灵?

感谢您的帮助/想法! screen shot of ships rotating

center=(200,200) #Store pos by center
angle = 0
while True:
    ship2_image = ship_image  #copy entire 2 ship image
    ship3_image = pygame.transform.chop(ship2_image,[0,0,90,90])#left hand image
    ship3_image=pygame.transform.rotate(ship_image,angle)  # Rotate whole image
    size=ship3_image.get_size() #Store size of rotated rect

    hSize=[n/2 for n in size] #Half the size
    pos=(center[0]-hSize[0]+200,center[1]-hSize[1])  #Subtract half the size
    #from the center
    frame.blit(ship3_image,pos) 
    angle += 1
    pygame.display.update()
fpsClock.tick(FPS)

1 个答案:

答案 0 :(得分:0)

我的猜测:

ship2_image = ship_image.convert() # do this to all images to speed up processing
ship3_image=pygame.transform.scale(ship_image,(90,90)) # changes the size