Scrolling zu einem Platformer in Pygame hinzufügen
In Platformer-Spielen navigieren Spieler durch Levels, während ihre Position auf dem Bildschirm zentriert bleibt. Dieser Effekt wird durch Scrollen erreicht, wodurch sich die Spielwelt unabhängig von der Position des Spielers bewegen kann.
Scrollen implementieren:
Um Scrollen in Pygame zu implementieren, verwenden Sie ein Kamera Klasse, die den Versatz zwischen der Spielwelt und der Position des Spielers definiert. Dieser Offset wird dann auf die Position aller Spielelemente angewendet, wenn sie auf dem Bildschirm gezeichnet werden.
Erstellen der Kameraklasse:
class Camera: def __init__(self, camera_func, width, height): self.camera_func = camera_func self.state = Rect(0, 0, width, height) def apply(self, target): return target.rect.move(self.state.topleft) def update(self, target): self.state = self.camera_func(self.state, target.rect)
Kamerafunktionen:
Es gibt verschiedene Möglichkeiten, die camera_func:
Zentrierung der Spieler:
def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l + HALF_WIDTH, -t + HALF_HEIGHT, w, h)
Levelgrenzen beibehalten:
def complex_camera(camera, target_rect): x = -target_rect.center[0] + WIN_WIDTH/2 y = -target_rect.center[1] + WIN_HEIGHT/2 camera.topleft += (pygame.Vector2((x, y)) - pygame.Vector2(camera.topleft)) * 0.06 # add some smoothness coolnes camera.x = max(-(camera.width-WIN_WIDTH), min(0, camera.x)) camera.y = max(-(camera.height-WIN_HEIGHT), min(0, camera.y)) return camera
Scrollen anwenden zu Entitäten:
Um Scrollen anzuwenden, instanziieren Sie die Kameraklasse und rufen Sie die Update- und Apply-Methoden innerhalb der Hauptspielschleife auf:# Create the camera camera = Camera(complex_camera, total_level_width, total_level_height) # Update the camera camera.update(player) # Apply scrolling to all entities for e in entities: screen.blit(e.image, camera.apply(e))
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWie implementiert man reibungsloses Scrollen in Pygame-Plattformspielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!