In Flugrichtung ausrichten
Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 7 von 36.
Das Schiff zeigt in seiner Datei nach oben. Mit rotate(ship, -90) gedreht, zeigt es nach rechts, was zu einem seitwärts fliegenden Schiff passt. Wenn es nach links fliegt, sollte es nach links zeigen.
pygame.transform.flip(image, flip_x, flip_y) liefert dir eine gespiegelte Kopie. True, False spiegelt es von links nach rechts; False, True spiegelt es von oben nach unten.
ship_right = pygame.transform.rotate(ship, -90)
ship_left = pygame.transform.flip(ship_right, True, False)Beide Bilder werden einmal vor der Schleife erstellt. Das Spiel merkt sich dann in einer Variablen, welches davon angezeigt werden soll, und die Tasten ändern dies:
if keys[pygame.K_LEFT]:
ship_rect.x -= 5
image = ship_leftZeichne image in jedem Frame. Wenn keine Taste gedrückt wird, behält image seinen letzten Wert, sodass das Schiff weiterhin in die Richtung zeigt, in die es zuletzt geflogen ist.
Aufgabe
Mittel- Erstelle vor der Schleife
ship_left:ship_right, horizontal gespiegelt. - Setze vor der Schleife
image = ship_right. - Wenn du die linke Pfeiltaste gedrückt hältst, wird
image = ship_leftgesetzt; wenn du die rechte Pfeiltaste gedrückt hältst, wirdimage = ship_rightgesetzt. Die Bewegung bleibt unverändert. - Zeichne
imagean der Position vonship_rect.
Probier es selbst
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Face the Way You Fly")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_right = pygame.transform.rotate(ship, -90)
ship_rect = ship_right.get_rect(center=(320, 240))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 5
if keys[pygame.K_RIGHT]:
ship_rect.x += 5
ship_rect.clamp_ip(screen.get_rect())
screen.fill((20, 22, 40))
screen.blit(ship_right, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Sprites und Bilder
1Bilder laden
Ein Bild ladenMit einem Rect platzierenDas Bild bewegenEinen Hintergrund kachelnTransparente Pixel2Drehen, Spiegeln, Skalieren
Um den Mittelpunkt drehenIn Flugrichtung ausrichtenEin Bild skalierenVom Original aus drehen3Klassen für Spielobjekte
Deine erste KlasseMethodenSelf ist das ObjektEine Liste von ObjektenObjekte mit BildernEine Unterklasse6Animation mit Sprite Sheets
Ein Sprite Sheet zuschneidenEin Frame-ZählerMit Zeit animierenEine einmalige ExplosionÜbe selbstständig: Pygame-Playground