Ich habe ein Sprite, das 180 breit und 90 hoch ist. Es zeigt 2 Ansichten einer Rakete - eine mit Triebwerken und eine mit nicht feuernden Triebwerken. Ich muss in der Lage sein, nur eine Ansicht des Schiffes zu zeigen und es gleichzeitig in einen beliebigen Winkel zu drehen. Ich kann das gesamte 180 x 90-Sprite in jedem beliebigen Winkel darstellen, aber ich kann nicht herausfinden, wie ich das linke oder rechte Bild in ein 90x90-Rechteck kopieren soll, bevor ich es rotiere und blitze. Hier ist mein Code. ship_image ist das 180x90 Sprite mit 2 Schiffen drin, mein transform.chop soll ein neues 90x90 Bild von nur einem Schiff in ship3_image erstellen und der Rest des Codes dreht es und zeigt es an (ich habe absichtlich meine Anzeigefläche nicht gelöscht zeige, dass sich mein Sprite wirklich um seine Mitte dreht). Also warum bekomme ich kein 90 x 90 Sprite aus dem Chop oder welchen Befehl verwende ich um ein 90 x 90 Sprite zu bekommen?So kopieren Sie einen Teil eines Sprites Ich muss in Pygame drehen
Vielen Dank für Ihre Hilfe/Ideen! 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)